Compare commits
125 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5af4352cf | ||
|
|
14eddc7d46 | ||
|
|
a6550d5713 | ||
|
|
689083a748 | ||
|
|
a4186316ba | ||
|
|
f8ec661ff5 | ||
|
|
eba078fc47 | ||
|
|
75c291fc39 | ||
|
|
cded5e2205 | ||
|
|
b901fa9a6a | ||
|
|
525d1d6a94 | ||
|
|
4e5b9e31cb | ||
|
|
65c1a143c3 | ||
|
|
bb6de2105b | ||
|
|
9b7dfa2948 | ||
|
|
f6a7f469a9 | ||
|
|
79348dbbc0 | ||
|
|
1da9d1381f | ||
|
|
c598c4de27 | ||
|
|
2fa34b6422 | ||
|
|
9148644c1e | ||
|
|
09ce70821b | ||
|
|
455d62e38a | ||
|
|
8ba12766d1 | ||
|
|
c0740e046e | ||
|
|
ac28237e62 | ||
|
|
97c5bed84b | ||
|
|
5aa0860d0a | ||
|
|
cb031178c2 | ||
|
|
1c0d468d72 | ||
|
|
b7eb0c2d38 | ||
|
|
e8432bc5d5 | ||
|
|
aa18b85df5 | ||
|
|
71ace8ba8c | ||
|
|
6a239a1905 | ||
|
|
9c3279ddc3 | ||
|
|
c389ae8c44 | ||
|
|
048079f6da | ||
|
|
b834c3f23b | ||
|
|
6eb0bfd5bb | ||
|
|
c4a6fa3ead | ||
|
|
b1d4b03058 | ||
|
|
71cc1b12cd | ||
|
|
1ec32291c7 | ||
|
|
29b5938d79 | ||
|
|
ddd90672f2 | ||
|
|
201562401b | ||
|
|
e44b418125 | ||
|
|
00353b29c9 | ||
|
|
cb65fe17e9 | ||
|
|
9b16aa34b6 | ||
|
|
f622af0270 | ||
|
|
16403b02a0 | ||
|
|
fc90d8087a | ||
|
|
7b7a6f941b | ||
|
|
a99dcca177 | ||
|
|
3684ad83d1 | ||
|
|
402eb5b5a6 | ||
|
|
82d33354d0 | ||
|
|
e998305ff2 | ||
|
|
bd1dc5b1a6 | ||
|
|
26a3f486cc | ||
|
|
782345c9e6 | ||
|
|
2ab37c07a8 | ||
|
|
d0fa375629 | ||
|
|
f26a33d3a7 | ||
|
|
4611f7b656 | ||
|
|
d8648f7279 | ||
|
|
ed202035b1 | ||
|
|
a04ae0210b | ||
|
|
d673411ff2 | ||
|
|
342ae5f8aa | ||
|
|
d01f234ec1 | ||
|
|
7d93ae57f0 | ||
|
|
e9e4e30ee4 | ||
|
|
ac4ccb8e53 | ||
|
|
47eb32fc92 | ||
|
|
405ba5010d | ||
|
|
70a9273dcc | ||
|
|
2e9e7cb8e0 | ||
|
|
b9897ec27e | ||
|
|
68dbb58d51 | ||
|
|
6cc291da06 | ||
|
|
0ece393844 | ||
|
|
f06b3f529a | ||
|
|
dd989ec9ca | ||
|
|
f245e17ac7 | ||
|
|
06a604dc8e | ||
|
|
4f04efb760 | ||
|
|
dbd924f6a0 | ||
|
|
472f46e231 | ||
|
|
392ed90a9a | ||
|
|
95e8faa24f | ||
|
|
515da6ecdb | ||
|
|
6c203072fe | ||
|
|
89712b9f0e | ||
|
|
b8b7df29c4 | ||
|
|
b3e5789521 | ||
|
|
823f4f12b8 | ||
|
|
9ebb666b8c | ||
|
|
46e3978f73 | ||
|
|
c4b8783970 | ||
|
|
4255ba7ff4 | ||
|
|
0e57151c18 | ||
|
|
48677d7747 | ||
|
|
e2473fe438 | ||
|
|
ac1d379f3b | ||
|
|
ac9426bf54 | ||
|
|
9308c85a7e | ||
|
|
abac1c1aa6 | ||
|
|
13223921e0 | ||
|
|
9af18686c7 | ||
|
|
20b2365c5f | ||
|
|
e0b10ce95a | ||
|
|
0435abfaa1 | ||
|
|
4a5c1601bc | ||
|
|
3794d9b33c | ||
|
|
a2d87ba615 | ||
|
|
8b81a6b6e1 | ||
|
|
9f76adeed8 | ||
|
|
93f05b6d4c | ||
|
|
c68e64dac3 | ||
|
|
76826c24df | ||
|
|
4cae20c47a | ||
|
|
73a6e8dd20 |
8
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
8
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -13,7 +13,13 @@ body:
|
||||
please disclose it privately via mail to vim-security@googlegroups.com.
|
||||
(It's a private list read only by the maintainers,
|
||||
but anybody can post, after moderation.)
|
||||
|
||||
|
||||
If you find a problem with syntax, indent and other runtime files, **please
|
||||
first try to contact the maintainer directly**.
|
||||
Look in the header of the file for the name, email address, github handle and/or
|
||||
upstream repository. You may also check the MAINTAINERS file.
|
||||
If the maintainer **does not respond**, open an issue here.
|
||||
|
||||
To make it easier for us to help you please enter detailed information below.
|
||||
- type: textarea
|
||||
attributes:
|
||||
|
||||
13
.github/MAINTAINERS
vendored
13
.github/MAINTAINERS
vendored
@@ -22,6 +22,7 @@ runtime/autoload/typeset.vim @lifepillar
|
||||
runtime/autoload/xmlformat.vim @chrisbra
|
||||
runtime/autoload/dist/json.vim @habamax
|
||||
runtime/colors/blue.vim @habamax @romainl @neutaaaaan
|
||||
runtime/colors/catppuccin.vim @mao-yining
|
||||
runtime/colors/darkblue.vim @habamax @romainl @neutaaaaan
|
||||
runtime/colors/default.vim @habamax @romainl @neutaaaaan
|
||||
runtime/colors/delek.vim @habamax @romainl @neutaaaaan
|
||||
@@ -47,11 +48,13 @@ runtime/colors/torte.vim @habamax @romainl @neutaaaaan
|
||||
runtime/colors/wildcharm.vim @habamax @romainl @neutaaaaan
|
||||
runtime/colors/zaibatsu.vim @habamax @romainl @neutaaaaan
|
||||
runtime/colors/zellner.vim @habamax @romainl @neutaaaaan
|
||||
runtime/compiler/bash.vim @Konfekt
|
||||
runtime/compiler/biome.vim @Konfekt
|
||||
runtime/compiler/cabal.vim @mateoxh
|
||||
runtime/compiler/checkstyle.vim @dkearns
|
||||
runtime/compiler/cm3.vim @dkearns
|
||||
runtime/compiler/context.vim @lifepillar
|
||||
runtime/compiler/cppcheck.vim @Konfekt
|
||||
runtime/compiler/cucumber.vim @tpope
|
||||
runtime/compiler/dart.vim @dkearns
|
||||
runtime/compiler/dart2js.vim @dkearns
|
||||
@@ -74,9 +77,11 @@ runtime/compiler/icon.vim @dkearns
|
||||
runtime/compiler/javac.vim @dkearns
|
||||
runtime/compiler/jest.vim @dkearns
|
||||
runtime/compiler/jjs.vim @dkearns
|
||||
runtime/compiler/jq.vim @vito-c
|
||||
runtime/compiler/jshint.vim @dkearns
|
||||
runtime/compiler/jsonlint.vim @dkearns
|
||||
runtime/compiler/jq.vim @vito-c
|
||||
runtime/compiler/make.vim @Konfekt
|
||||
runtime/compiler/mypy.vim @Konfekt
|
||||
runtime/compiler/pandoc.vim @Konfekt
|
||||
runtime/compiler/perl.vim @petdance @heptite
|
||||
runtime/compiler/perlcritic.vim @petdance @dkearns
|
||||
@@ -84,6 +89,8 @@ runtime/compiler/php.vim @dkearns
|
||||
runtime/compiler/phpstan.vim @dietrichm
|
||||
runtime/compiler/podchecker.vim @petdance @dkearns
|
||||
runtime/compiler/powershell.vim @heaths
|
||||
runtime/compiler/pyright.vim @Konfekt
|
||||
runtime/compiler/pytest.vim @Konfekt
|
||||
runtime/compiler/raco.vim @benknoble
|
||||
runtime/compiler/racomake.vim @benknoble
|
||||
runtime/compiler/racosetup.vim @benknoble
|
||||
@@ -99,12 +106,14 @@ runtime/compiler/se.vim @dkearns
|
||||
runtime/compiler/shellcheck.vim @dkearns
|
||||
runtime/compiler/sml.vim @dkearns
|
||||
runtime/compiler/spectral.vim @romainl
|
||||
runtime/compiler/svelte-check.vim @Konfekt
|
||||
runtime/compiler/stylelint.vim @dkearns
|
||||
runtime/compiler/svelte-check.vim @Konfekt
|
||||
runtime/compiler/tcl.vim @dkearns
|
||||
runtime/compiler/tidy.vim @dkearns
|
||||
runtime/compiler/tombi.vim @Konfekt
|
||||
runtime/compiler/ts-node.vim @dkearns
|
||||
runtime/compiler/tsc.vim @dkearns
|
||||
runtime/compiler/ty.vim @Konfekt
|
||||
runtime/compiler/typedoc.vim @dkearns
|
||||
runtime/compiler/xmllint.vim @dkearns
|
||||
runtime/compiler/xo.vim @dkearns
|
||||
|
||||
9
.github/workflows/ci.yml
vendored
9
.github/workflows/ci.yml
vendored
@@ -47,7 +47,7 @@ jobs:
|
||||
extra: [nogui]
|
||||
- features: tiny
|
||||
compiler: gcc
|
||||
extra: [nogui]
|
||||
extra: [nogui, syn_test_execs]
|
||||
- features: tiny
|
||||
compiler: gcc
|
||||
extra: [nogui]
|
||||
@@ -106,6 +106,13 @@ jobs:
|
||||
# exit with an error code and list the missing entries.
|
||||
make -C ci -f hlgroups.make
|
||||
|
||||
- name: Report executable syntax tests
|
||||
if: contains(matrix.extra, 'syn_test_execs')
|
||||
run: |
|
||||
# Search and list all found executable syntax tests, and exit with
|
||||
# an error code.
|
||||
make -C runtime/syntax executables
|
||||
|
||||
- run: sudo dpkg --add-architecture i386
|
||||
if: matrix.architecture == 'i386'
|
||||
|
||||
|
||||
6
Filelist
6
Filelist
@@ -213,6 +213,7 @@ SRC_ALL = \
|
||||
src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.po \
|
||||
src/testdir/runtest.vim \
|
||||
src/testdir/samples/*.html \
|
||||
src/testdir/samples/*.swp \
|
||||
src/testdir/samples/*.txt \
|
||||
src/testdir/samples/*.vim \
|
||||
src/testdir/samples/evil.zip \
|
||||
@@ -223,6 +224,8 @@ SRC_ALL = \
|
||||
src/testdir/samples/test000 \
|
||||
src/testdir/samples/test_undo.txt.undo \
|
||||
src/testdir/samples/testa.zip \
|
||||
src/testdir/samples/crypt_utf8_test.txt \
|
||||
src/testdir/samples/uncrypt_utf8_test.txt \
|
||||
src/testdir/sautest/autoload/*.vim \
|
||||
src/testdir/silent.wav \
|
||||
src/testdir/test77a.com \
|
||||
@@ -862,7 +865,8 @@ RT_ALL = \
|
||||
runtime/pack/dist/opt/osc52/plugin/osc52.vim \
|
||||
runtime/pack/dist/opt/osc52/autoload/osc52.vim \
|
||||
runtime/pack/dist/opt/osc52/doc/osc52.txt \
|
||||
runtime/pack/dist/opt/osc52/doc/tags
|
||||
runtime/pack/dist/opt/osc52/doc/tags \
|
||||
runtime/xdg.vim
|
||||
|
||||
# Runtime files for all distributions without CR/LF translation.
|
||||
RT_ALL_BIN = \
|
||||
|
||||
1
Makefile
1
Makefile
@@ -460,6 +460,7 @@ dosrt_files: dist prepare
|
||||
$(LANG_GEN_BIN) \
|
||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
mv dist/vim/$(VIMRTDIR)/lang/ dist/vim/$(VIMRTDIR)/readme/
|
||||
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
|
||||
rmdir dist/vim/$(VIMRTDIR)/runtime
|
||||
# Add the message translations. Trick: skip ja.mo/ja.euc-jp.mo and use
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
If you find a bug or want to discuss the best way to add a new feature, please
|
||||
[open an issue](https://github.com/vim/vim/issues/new/choose).
|
||||
If you have a question or want to discuss the best way to do something with
|
||||
Vim, you can use [StackExchange](https://vi.stackexchange.com/)
|
||||
Vim, you can join [`#vim`](https://web.libera.chat/#vim),
|
||||
[reddit.com/r/vim](https://reddit.com/r/vim),
|
||||
use [StackExchange](https://vi.stackexchange.com/),
|
||||
or one of the [Maillists](https://www.vim.org/community.php).
|
||||
|
||||
## What is Vim?
|
||||
|
||||
@@ -2,7 +2,7 @@ README_amibin.txt for version 9.2 of Vim: Vi IMproved.
|
||||
|
||||
See "README.txt" for general information about Vim.
|
||||
See "README_ami.txt" for installation instructions for the Amiga.
|
||||
These files are in the runtime archive (vim91rt.tgz).
|
||||
These files are in the runtime archive (vim92rt.tgz).
|
||||
|
||||
|
||||
The Amiga "bin" archive contains the Vim executable for the Amiga. It was
|
||||
|
||||
@@ -2,7 +2,7 @@ README_amisrc.txt for version 9.2 of Vim: Vi IMproved.
|
||||
|
||||
See "README.txt" for general information about Vim.
|
||||
See "README_ami.txt" for installation instructions for the Amiga.
|
||||
These files are in the runtime archive (vim91rt.tgz).
|
||||
These files are in the runtime archive (vim92rt.tgz).
|
||||
|
||||
|
||||
The Amiga source archive contains the files needed to compile Vim on the
|
||||
|
||||
@@ -2,15 +2,15 @@ README_bindos.txt for version 9.2 of Vim: Vi IMproved.
|
||||
|
||||
See "README.txt" for general information about Vim.
|
||||
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
|
||||
These files are in the runtime archive (vim91rt.zip).
|
||||
These files are in the runtime archive (vim92rt.zip).
|
||||
|
||||
|
||||
There are several binary distributions of Vim for the PC. You would normally
|
||||
pick only one of them, but it's also possible to install several.
|
||||
These ones are available (the version number may differ):
|
||||
vim91w32.zip Windows console version
|
||||
gvim91.zip Windows GUI version
|
||||
gvim91ole.zip Windows GUI version with OLE
|
||||
vim92w32.zip Windows console version
|
||||
gvim92.zip Windows GUI version
|
||||
gvim92ole.zip Windows GUI version with OLE
|
||||
|
||||
You MUST also get the runtime archive (vim92rt.zip).
|
||||
The sources are also available (vim92src.zip).
|
||||
|
||||
@@ -47,7 +47,7 @@ These are the normal steps to install Vim from the .zip archives:
|
||||
Binary and runtime Vim archives are normally unpacked in the same location,
|
||||
on top of each other.
|
||||
|
||||
2. Unpack the zip archives. This will create a new directory "vim\vim91",
|
||||
2. Unpack the zip archives. This will create a new directory "vim\vim92",
|
||||
in which all the distributed Vim files are placed. Since the directory
|
||||
name includes the version number, it is unlikely that you overwrite
|
||||
existing files.
|
||||
@@ -101,14 +101,14 @@ Remarks:
|
||||
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
|
||||
C:\vim\... Other files you made.
|
||||
Distributed files:
|
||||
C:\vim\vim91\vim.exe The Vim version 9.2 executable.
|
||||
C:\vim\vim91\doc\*.txt The version 9.2 documentation files.
|
||||
C:\vim\vim91\bugreport.vim A Vim version 9.2 script.
|
||||
C:\vim\vim91\... Other version 9.2 distributed files.
|
||||
C:\vim\vim92\vim.exe The Vim version 9.2 executable.
|
||||
C:\vim\vim92\doc\*.txt The version 9.2 documentation files.
|
||||
C:\vim\vim92\bugreport.vim A Vim version 9.2 script.
|
||||
C:\vim\vim92\... Other version 9.2 distributed files.
|
||||
In this case the $VIM environment variable would be set like this:
|
||||
set VIM=C:\vim
|
||||
Then $VIMRUNTIME will automatically be set to "$VIM\vim92". Don't add
|
||||
"vim91" to $VIM, that won't work.
|
||||
"vim92" to $VIM, that won't work.
|
||||
|
||||
- You can put your Vim executable anywhere else. If the executable is not
|
||||
with the other Vim files, you should set $VIM. The simplest is to add a line
|
||||
|
||||
@@ -2,7 +2,7 @@ README_srcdos.txt for version 9.2 of Vim: Vi IMproved.
|
||||
|
||||
See "README.txt" for general information about Vim.
|
||||
See "README_dos.txt" for installation instructions for MS-Windows.
|
||||
These files are in the runtime archive (vim91rt.zip).
|
||||
These files are in the runtime archive (vim92rt.zip).
|
||||
|
||||
|
||||
The DOS source archive contains the files needed to compile Vim on MS-Windows.
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
deb http://ddebs.ubuntu.com noble main restricted universe multiverse
|
||||
deb http://ddebs.ubuntu.com noble-updates main restricted universe multiverse
|
||||
deb http://ddebs.ubuntu.com noble-proposed main restricted universe multiverse
|
||||
|
||||
@@ -3,7 +3,7 @@ vim9script noclear
|
||||
# Vim completion script
|
||||
# Language: C
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Jul 24
|
||||
# Last Change: 2026 Feb 18
|
||||
# Rewritten in Vim9 script by github user lacygoill
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
@@ -489,7 +489,7 @@ def Nextitem( # {{{1
|
||||
continue
|
||||
endif
|
||||
|
||||
# Use the tags file to find out if this is a typedef.
|
||||
# Use the tags file to find out if this is a typedef or struct
|
||||
var diclist: list<dict<any>> = taglist('^' .. tokens[tidx] .. '$')
|
||||
for tagidx: number in len(diclist)->range()
|
||||
|
||||
@@ -509,6 +509,13 @@ def Nextitem( # {{{1
|
||||
continue
|
||||
endif
|
||||
|
||||
# handle struct
|
||||
if item['kind'] == 's'
|
||||
res = StructMembers('struct:' .. tokens[tidx], items, all)
|
||||
break
|
||||
endif
|
||||
|
||||
|
||||
# Only handle typedefs here.
|
||||
if item['kind'] != 't'
|
||||
continue
|
||||
@@ -733,4 +740,4 @@ def SearchMembers( # {{{1
|
||||
enddef
|
||||
#}}}1
|
||||
|
||||
# vim: noet sw=2 sts=2
|
||||
# vim: et sw=2 sts=2
|
||||
|
||||
10
runtime/autoload/dist/ft.vim
vendored
10
runtime/autoload/dist/ft.vim
vendored
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim functions for file type detection
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2026 Feb 06
|
||||
# Last Change: 2026 Feb 24
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
# These functions are moved here from runtime/filetype.vim to make startup
|
||||
@@ -2382,6 +2382,8 @@ const ft_from_ext = {
|
||||
# N1QL
|
||||
"n1ql": "n1ql",
|
||||
"nql": "n1ql",
|
||||
# Neon
|
||||
"neon": "neon",
|
||||
# NetLinx
|
||||
"axs": "netlinx",
|
||||
"axi": "netlinx",
|
||||
@@ -2571,6 +2573,9 @@ const ft_from_ext = {
|
||||
"rakumod": "raku",
|
||||
"rakudoc": "raku",
|
||||
"rakutest": "raku",
|
||||
# Razor
|
||||
"cshtml": "razor",
|
||||
"razor": "razor",
|
||||
# Renderman Interface Bytestream
|
||||
"rib": "rib",
|
||||
# Rego Policy Language
|
||||
@@ -3014,6 +3019,9 @@ const ft_from_ext = {
|
||||
"raml": "raml",
|
||||
# YANG
|
||||
"yang": "yang",
|
||||
# YARA, YARA-X
|
||||
"yara": "yara",
|
||||
"yar": "yara",
|
||||
# Yuck
|
||||
"yuck": "yuck",
|
||||
# Zimbu
|
||||
|
||||
@@ -2,7 +2,7 @@ vim9script
|
||||
|
||||
# Language: Generic TeX typesetting engine
|
||||
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
|
||||
# Latest Revision: 2026 Feb 03
|
||||
# Latest Revision: 2026 Feb 19
|
||||
|
||||
# Constants and helpers {{{
|
||||
const SLASH = !exists("+shellslash") || &shellslash ? '/' : '\'
|
||||
@@ -15,15 +15,15 @@ def Echo(msg: string, mode: string, label: string)
|
||||
echohl None
|
||||
enddef
|
||||
|
||||
def EchoMsg(msg: string, label = 'Notice')
|
||||
def EchoMsg(msg: string, label = gettext('Notice'))
|
||||
Echo(msg, 'ModeMsg', label)
|
||||
enddef
|
||||
|
||||
def EchoWarn(msg: string, label = 'Warning')
|
||||
def EchoWarn(msg: string, label = gettext('Warning'))
|
||||
Echo(msg, 'WarningMsg', label)
|
||||
enddef
|
||||
|
||||
def EchoErr(msg: string, label = 'Error')
|
||||
def EchoErr(msg: string, label = gettext('Error'))
|
||||
Echo(msg, 'ErrorMsg', label)
|
||||
enddef
|
||||
# }}}
|
||||
@@ -54,7 +54,7 @@ enddef
|
||||
def ProcessOutput(qfid: number, wd: string, efm: string, ch: channel, msg: string)
|
||||
# Make sure the quickfix list still exists
|
||||
if getqflist({'id': qfid}).id != qfid
|
||||
EchoErr("Quickfix list not found, stopping the job")
|
||||
EchoErr(gettext("Quickfix list not found, stopping the job"))
|
||||
job_stop(ch_getjob(ch))
|
||||
return
|
||||
endif
|
||||
@@ -74,13 +74,13 @@ def ExitCb(label: string, jobid: job, exitStatus: number)
|
||||
|
||||
if exitStatus == 0
|
||||
botright cwindow
|
||||
EchoMsg('Success!', label)
|
||||
EchoMsg(gettext('Success!'), label)
|
||||
elseif exitStatus < 0
|
||||
EchoWarn('Job terminated', label)
|
||||
EchoWarn(gettext('Job terminated'), label)
|
||||
else
|
||||
botright copen
|
||||
wincmd p
|
||||
EchoWarn('There are errors.', label)
|
||||
EchoWarn(gettext('There are errors.'), label)
|
||||
endif
|
||||
enddef
|
||||
# }}}
|
||||
@@ -208,12 +208,13 @@ export def Typeset(
|
||||
var qfid = NewQuickfixList(fp)
|
||||
|
||||
if qfid == -1
|
||||
EchoErr('Could not create quickfix list', label)
|
||||
EchoErr(gettext('Could not create quickfix list'), label)
|
||||
return false
|
||||
endif
|
||||
|
||||
if !filereadable(fp)
|
||||
EchoErr($'File not readable: {fp}', label)
|
||||
var msg = gettext('File not readable:')
|
||||
EchoErr($'{msg} {fp}', label)
|
||||
return false
|
||||
endif
|
||||
|
||||
@@ -231,19 +232,20 @@ export def Typeset(
|
||||
})
|
||||
|
||||
if job_status(jobid) ==# "fail"
|
||||
EchoErr("Failed to start job", label)
|
||||
EchoErr(gettext("Failed to start job"), label)
|
||||
return false
|
||||
endif
|
||||
|
||||
AddJob(label, jobid)
|
||||
|
||||
EchoMsg('Typesetting...', label)
|
||||
EchoMsg(gettext('Typesetting...'), label)
|
||||
|
||||
return true
|
||||
enddef
|
||||
|
||||
export def JobStatus(label: string)
|
||||
EchoMsg($'Jobs still running: {len(GetRunningJobs(label))}', label)
|
||||
var msg = gettext('Jobs still running:')
|
||||
EchoMsg($'{msg} {len(GetRunningJobs(label))}', label)
|
||||
enddef
|
||||
|
||||
export def StopJobs(label: string)
|
||||
@@ -251,7 +253,7 @@ export def StopJobs(label: string)
|
||||
job_stop(job)
|
||||
endfor
|
||||
|
||||
EchoMsg('Done.', label)
|
||||
EchoMsg(gettext('Done.'), label)
|
||||
enddef
|
||||
|
||||
# Typeset the specified buffer
|
||||
@@ -269,12 +271,12 @@ export def TypesetBuffer(
|
||||
name: string,
|
||||
Cmd: func(string): list<string>,
|
||||
env = {},
|
||||
label = 'Typeset'
|
||||
label = gettext('Typeset')
|
||||
): bool
|
||||
var bufname = bufname(name)
|
||||
|
||||
if empty(bufname)
|
||||
EchoErr('Please save the buffer first.', label)
|
||||
EchoErr(gettext('Please save the buffer first.'), label)
|
||||
return false
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
" zip.vim: Handles browsing zipfiles
|
||||
" zip.vim: Handles browsing zipfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: 2024 Aug 21
|
||||
" Version: 34
|
||||
@@ -18,6 +18,7 @@
|
||||
" 2025 Jul 12 by Vim Project: drop ../ on write to prevent path traversal attacks
|
||||
" 2025 Sep 22 by Vim Project: support PowerShell Core
|
||||
" 2025 Dec 20 by Vim Project: use :lcd instead of :cd
|
||||
" 2026 Feb 08 by Vim Project: use system() instead of :!
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
@@ -139,7 +140,7 @@ endfunction
|
||||
function! s:ZipReadPS(zipfile, fname, tempfile)
|
||||
" Read a filename within a zipped file to a temporary file.
|
||||
" Equivalent to `unzip -p -- zipfile fname > tempfile`
|
||||
if a:fname =~ '/'
|
||||
if &shell =~ 'pwsh'
|
||||
call s:Mess('WarningMsg', "***warning*** PowerShell can display, but cannot update, files in archive subfolders")
|
||||
endif
|
||||
let cmds = [
|
||||
@@ -335,7 +336,8 @@ fun! zip#Read(fname,mode)
|
||||
let temp = tempname()
|
||||
let fn = expand('%:p')
|
||||
|
||||
let gnu_cmd = 'sil !' . g:zip_unzipcmd . ' -p -- ' . s:Escape(zipfile, 1) . ' ' . s:Escape(fname, 1) . ' > ' . s:Escape(temp, 1)
|
||||
let gnu_cmd = g:zip_unzipcmd . ' -p -- ' . s:Escape(zipfile, 0) . ' ' . s:Escape(fname, 0) . ' > ' . s:Escape(temp, 0)
|
||||
let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')'
|
||||
let ps_cmd = 'sil !' . s:ZipReadPS(zipfile, fname, temp)
|
||||
call s:TryExecGnuFallBackToPs(g:zip_unzipcmd, gnu_cmd, ps_cmd)
|
||||
|
||||
@@ -391,7 +393,7 @@ fun! zip#Write(fname)
|
||||
let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
|
||||
endif
|
||||
if fname =~ '^[.]\{1,2}/'
|
||||
let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
|
||||
let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
|
||||
let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')'
|
||||
let ps_cmd = $"call system({s:Escape(s:ZipDeleteFilePS(zipfile, fname), 1)})"
|
||||
call s:TryExecGnuFallBackToPs(g:zip_zipcmd, gnu_cmd, ps_cmd)
|
||||
@@ -420,7 +422,7 @@ fun! zip#Write(fname)
|
||||
let fname = substitute(fname, '[', '[[]', 'g')
|
||||
endif
|
||||
|
||||
let gnu_cmd = g:zip_zipcmd . ' -u '. s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
|
||||
let gnu_cmd = g:zip_zipcmd . ' -u '. s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
|
||||
let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')'
|
||||
let ps_cmd = s:ZipUpdatePS(s:Escape(fnamemodify(zipfile, ':p'), 0), s:Escape(fname, 0))
|
||||
let ps_cmd = 'call system(''' . substitute(ps_cmd, "'", "''", 'g') . ''')'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*autocmd.txt* For Vim version 9.2. Last change: 2026 Feb 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -435,6 +435,7 @@ Name triggered by ~
|
||||
|QuickFixCmdPre| before a quickfix command is run
|
||||
|QuickFixCmdPost| after a quickfix command is run
|
||||
|
||||
|SessionLoadPre| before loading a session file
|
||||
|SessionLoadPost| after loading a session file
|
||||
|
||||
|SessionWritePost| after writing the session file using
|
||||
@@ -1182,6 +1183,9 @@ SafeStateAgain Like SafeState but after processing any
|
||||
triggered often, don't do something that takes
|
||||
time.
|
||||
|
||||
*SessionLoadPre*
|
||||
SessionLoadPre Before loading the session file created using
|
||||
the |:mksession| command.
|
||||
*SessionLoadPost*
|
||||
SessionLoadPost After loading the session file created using
|
||||
the |:mksession| command.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*channel.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*channel.txt* For Vim version 9.2. Last change: 2026 Feb 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -26,6 +26,7 @@ The Netbeans interface also uses a channel. |netbeans|
|
||||
13. Controlling a job |job-control|
|
||||
14. Using a prompt buffer |prompt-buffer|
|
||||
15. Language Server Protocol |language-server-protocol|
|
||||
16. Debug Adapter Protocol |debug-adapter-protocol|
|
||||
|
||||
*E1277*
|
||||
{only when compiled with the |+channel| feature for channel stuff}
|
||||
@@ -56,6 +57,7 @@ NL every message ends in a NL (newline) character
|
||||
JSON JSON encoding |json_encode()|
|
||||
JS JavaScript style JSON-like encoding |js_encode()|
|
||||
LSP Language Server Protocol encoding |language-server-protocol|
|
||||
DAP Debug Adapter Protocol encoding |debug-adapter-protocol|
|
||||
|
||||
Common combination are:
|
||||
- Using a job connected through pipes in NL mode. E.g., to run a style
|
||||
@@ -130,6 +132,11 @@ a Unix-domain socket path prefixed by "unix:". E.g. >
|
||||
[2001:db8::1]:8765 " IPv6 + port
|
||||
unix:/tmp/my-socket " Unix-domain socket path
|
||||
|
||||
When a domain name resolves to multiple addresses (e.g., both IPv6 and IPv4),
|
||||
Vim tries each address in order. If a connection is slow or unreachable, it
|
||||
quickly falls back to the next address. This helps when IPv6 or IPv4 is
|
||||
unreachable on the network.
|
||||
|
||||
{options} is a dictionary with optional entries: *channel-open-options*
|
||||
|
||||
"mode" can be: *channel-mode*
|
||||
@@ -138,6 +145,7 @@ a Unix-domain socket path prefixed by "unix:". E.g. >
|
||||
"nl" - Use messages that end in a NL character
|
||||
"raw" - Use raw messages
|
||||
"lsp" - Use language server protocol encoding
|
||||
"dap" - Use debug adapter protocol encoding
|
||||
*channel-callback* *E921*
|
||||
"callback" A function that is called when a message is received that is
|
||||
not handled otherwise (e.g. a JSON message with ID zero). It
|
||||
@@ -148,8 +156,9 @@ a Unix-domain socket path prefixed by "unix:". E.g. >
|
||||
endfunc
|
||||
let channel = ch_open("localhost:8765", {"callback": "Handle"})
|
||||
<
|
||||
When "mode" is "json" or "js" or "lsp" the "msg" argument is
|
||||
the body of the received message, converted to Vim types.
|
||||
When "mode" is any of "json", "js", "lsp" or "dap" the "msg"
|
||||
argument is the body of the received message, converted to Vim
|
||||
types.
|
||||
When "mode" is "nl" the "msg" argument is one message,
|
||||
excluding the NL.
|
||||
When "mode" is "raw" the "msg" argument is the whole message
|
||||
@@ -532,7 +541,8 @@ ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()*
|
||||
according to the type of channel. The function cannot be used
|
||||
with a raw channel. See |channel-use|.
|
||||
{handle} can be a Channel or a Job that has a Channel.
|
||||
When using the "lsp" channel mode, {expr} must be a |Dict|.
|
||||
When using the "lsp" or "dap" channel mode, {expr} must be a
|
||||
|Dict|.
|
||||
*E917*
|
||||
{options} must be a Dictionary. It must not have a "callback"
|
||||
entry. It can have a "timeout" entry to specify the timeout
|
||||
@@ -540,8 +550,8 @@ ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()*
|
||||
|
||||
ch_evalexpr() waits for a response and returns the decoded
|
||||
expression. When there is an error or timeout it returns an
|
||||
empty |String| or, when using the "lsp" channel mode, returns an
|
||||
empty |Dict|.
|
||||
empty |String| or, when using the "lsp" or "dap" channel mode,
|
||||
returns an empty |Dict|.
|
||||
|
||||
Note that while waiting for the response, Vim handles other
|
||||
messages. You need to make sure this doesn't cause trouble.
|
||||
@@ -622,7 +632,7 @@ ch_info({handle}) *ch_info()*
|
||||
"err_io" "out", "null", "pipe", "file" or "buffer"
|
||||
"err_timeout" timeout in msec
|
||||
"in_status" "open" or "closed"
|
||||
"in_mode" "NL", "RAW", "JSON", "JS" or "LSP"
|
||||
"in_mode" "NL", "RAW", "JSON", "JS" or "LSP" or "DAP"
|
||||
"in_io" "null", "pipe", "file" or "buffer"
|
||||
"in_timeout" timeout in msec
|
||||
|
||||
@@ -728,14 +738,15 @@ ch_sendexpr({handle}, {expr} [, {options}]) *ch_sendexpr()*
|
||||
with a raw channel.
|
||||
See |channel-use|. *E912*
|
||||
{handle} can be a Channel or a Job that has a Channel.
|
||||
When using the "lsp" channel mode, {expr} must be a |Dict|.
|
||||
When using the "lsp" or "dap" channel mode, {expr} must be a
|
||||
|Dict|.
|
||||
|
||||
If the channel mode is "lsp", then returns a Dict. Otherwise
|
||||
returns an empty String. If the "callback" item is present in
|
||||
{options}, then the returned Dict contains the ID of the
|
||||
request message. The ID can be used to send a cancellation
|
||||
request to the LSP server (if needed). Returns an empty Dict
|
||||
on error.
|
||||
If the channel mode is "lsp" or "dap", then returns a Dict.
|
||||
Otherwise returns an empty String. If the "callback" item is
|
||||
present in {options}, then the returned Dict contains the ID
|
||||
of the request message. The ID can be used to send a
|
||||
cancellation request to the LSP server or debug adapter (if
|
||||
needed). Returns an empty Dict on error.
|
||||
|
||||
If a response message is not expected for {expr}, then don't
|
||||
specify the "callback" item in {options}.
|
||||
@@ -1602,5 +1613,33 @@ The "params" field is optional: >
|
||||
"params": <list|dict>
|
||||
}
|
||||
|
||||
<
|
||||
==============================================================================
|
||||
16. Debug Adapter Protocol *debug-adapter-protocol*
|
||||
|
||||
The debug adapter protocol is very similar to the language server protocol,
|
||||
with the main difference being that it does not use the JSON-RPC format. The
|
||||
specification can be found here:
|
||||
|
||||
https://microsoft.github.io/debug-adapter-protocol/specification
|
||||
|
||||
The protocol uses the same header format as the LSP protocol.
|
||||
|
||||
To encode and send a DAP request/notification message in a Vim |Dict| into a
|
||||
JSON message and to receive and decode a DAP JSON response/notification
|
||||
message into a Vim |Dict|, connect to the debug adapter with the
|
||||
|channel-mode| set to "dap".
|
||||
|
||||
For messages received on a channel with |channel-mode| set to "dap", Vim will
|
||||
process the HTTP header and decode the JSON payload into a Vim |Dict| type.
|
||||
When sending messages on a channel using the |ch_evalexpr()| or
|
||||
|ch_sendexpr()| functions, Vim will add the HTTP header and encode the Vim
|
||||
expression into JSON.
|
||||
|
||||
Vim will automatically add the "seq" field to the JSON DAP message, and manage
|
||||
the "request_seq" field as well for responses. However it will not add the
|
||||
"type" field, it should be manually specified in the |Dict|.
|
||||
|
||||
Otherwise the behaviour is the same as how Vim handles the "lsp" channel mode
|
||||
|language-server-protocol|.
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define LINELEN 200
|
||||
@@ -63,8 +62,8 @@ main(int argc, char **argv)
|
||||
// followed by a white character or end-of-line.
|
||||
if (p == p2
|
||||
&& (p1 == line || p1[-1] == ' ' || p1[-1] == '\t')
|
||||
&& (strchr(" \t\n\r", p[1]) != NULL
|
||||
|| p[1] == '\0'))
|
||||
&& (strchr(" \t\n\r", p[1]) != NULL
|
||||
|| p[1] == '\0'))
|
||||
{
|
||||
*p2 = '\0';
|
||||
++p1;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*options.txt* For Vim version 9.2. Last change: 2026 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -2257,11 +2257,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
fuzzy Enable |fuzzy-matching| for completion candidates. This
|
||||
allows for more flexible and intuitive matching, where
|
||||
characters can be skipped and matches can be found even
|
||||
if the exact sequence is not typed.
|
||||
if the exact sequence is not typed (disabled for thesaurus
|
||||
completion |compl-thesaurus|).
|
||||
|
||||
longest
|
||||
When 'autocomplete' is not active, only the longest common
|
||||
prefix of the matches is inserted. If the popup menu is
|
||||
prefix of the matches is inserted (disabled for thesaurus
|
||||
completion |compl-thesaurus|). If the popup menu is
|
||||
displayed, you can use CTRL-L to add more characters.
|
||||
Whether case is ignored depends on the type of completion.
|
||||
For buffer text the 'ignorecase' option applies.
|
||||
@@ -3593,6 +3595,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|SafeState|,
|
||||
|SafeStateAgain|,
|
||||
|SessionLoadPost|,
|
||||
|SessionLoadPre|,
|
||||
|SessionWritePost|,
|
||||
|ShellCmdPost|,
|
||||
|SigUSR1|,
|
||||
@@ -7338,7 +7341,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
For $XDG_CONFIG_HOME see |xdg-base-dir|.
|
||||
|
||||
The defaults for most systems are setup to search five locations:
|
||||
1. In your home directory, for your personal preferences.
|
||||
1. In your $MYVIMDIR directory, for your personal preferences.
|
||||
2. In a system-wide Vim directory, for preferences from the system
|
||||
administrator.
|
||||
3. In $VIMRUNTIME, for files distributed with Vim.
|
||||
@@ -7346,7 +7349,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
4. In the "after" directory in the system-wide Vim directory. This is
|
||||
for the system administrator to overrule or add to the distributed
|
||||
defaults (rarely needed)
|
||||
5. In the "after" directory in your home directory. This is for
|
||||
5. In the "after" directory in your $MYVIMDIR directory. This is for
|
||||
personal preferences to overrule or add to the distributed defaults
|
||||
or system-wide settings (rarely needed).
|
||||
|
||||
@@ -8516,6 +8519,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
applied to StatusLineNC for the statusline of non-current
|
||||
windows.
|
||||
The number N must be between 1 and 9. See |hl-User1..9|
|
||||
*stl-%@*
|
||||
@ - Insert a line break (for the |tabpanel| or when the status line
|
||||
'statuslineopt' has a "maxheight" value greater than 1).
|
||||
|
||||
When displaying a flag, Vim removes the leading comma, if any, when
|
||||
that flag comes right after plaintext. This will make a nice display
|
||||
@@ -8573,6 +8579,34 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:function VarExists(var, val)
|
||||
: if exists(a:var) | return a:val | else | return '' | endif
|
||||
:endfunction
|
||||
<
|
||||
*'statuslineopt'* *'stlo'*
|
||||
'statuslineopt' 'stlo' string (default "")
|
||||
global
|
||||
{not available when compiled without the |+statusline|
|
||||
feature}
|
||||
Optional settings for |status-line|. It can consist of the following
|
||||
items. All are optional. Items must be separated by a comma.
|
||||
|
||||
maxheight:{n} Set the maximum status line height to {n}.
|
||||
{n} must be 1 or greater.
|
||||
If not present, 1 is used.
|
||||
Check whether {n} is applicable to all windows
|
||||
on all tab pages, and if not, set it to the
|
||||
closest possible value.
|
||||
The option value is updated to the actual
|
||||
applied value. For example, setting
|
||||
maxheight:999 may result in a smaller value
|
||||
depending on the available space.
|
||||
When {n} is set to 2 or more, you can use "@"
|
||||
in 'statusline' to display information on
|
||||
multiple lines in the status line.
|
||||
See |stl-%@|.
|
||||
|
||||
Examples: >
|
||||
:set stlo=
|
||||
:set stlo=maxheight:2
|
||||
:set stlo+=maxheight:3
|
||||
<
|
||||
*'suffixes'* *'su'*
|
||||
'suffixes' 'su' string (default ".bak,~,.o,.h,.info,.swp,.obj")
|
||||
@@ -8759,11 +8793,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
You can use |g:actual_curtabpage| within a function assigned to
|
||||
tabpanel. |g:actual_curtabpage| represents current tab's label number.
|
||||
The option value can contain "\n" to force line breaks: >
|
||||
You can use "%@" or "\n" to insert a new line: >
|
||||
|
||||
set tabpanel=%!TabPanel()
|
||||
function! TabPanel() abort
|
||||
return printf("(%2d)\n %%f", g:actual_curtabpage)
|
||||
return "(" .. g:actual_curtabpage .. ")%@ %f"
|
||||
endfunction
|
||||
<
|
||||
The result is:
|
||||
@@ -8777,8 +8811,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
| |
|
||||
| |
|
||||
<
|
||||
Note: using "\n" is considered experimental and may change in the
|
||||
future; a %-atom may be used instead.
|
||||
Note: using "\n" is considered experimental and deprecated, prefer
|
||||
the |stl-%@| atom instead.
|
||||
|
||||
*'tabpanelopt'* *'tplo'*
|
||||
'tabpanelopt' 'tplo' string (default "")
|
||||
@@ -9118,8 +9152,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
|ConPTY| support depends on the platform. Windows 10 October 2018
|
||||
Update is the first version that supports ConPTY, however it is still
|
||||
considered unstable. ConPTY might become stable in the next release
|
||||
of Windows 10. winpty support needs to be installed. If neither is
|
||||
considered unstable. ConPTY has become stable with the initial release
|
||||
of Windows 11. winpty support needs to be installed. If neither is
|
||||
supported then you cannot open a terminal window.
|
||||
|
||||
*'terse'* *'noterse'*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*popup.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*popup.txt* For Vim version 9.2. Last change: 2026 Feb 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -21,6 +21,7 @@ Displaying text in a popup window. *popup* *popup-window* *popupwin*
|
||||
Popup filter |popup-filter|
|
||||
Popup callback |popup-callback|
|
||||
Popup scrollbar |popup-scrollbar|
|
||||
Popup opacity |popup-opacity|
|
||||
Popup mask |popup-mask|
|
||||
4. Examples |popup-examples|
|
||||
|
||||
@@ -772,6 +773,13 @@ The second argument of |popup_create()| is a dictionary with options:
|
||||
the popup window.
|
||||
highlight Highlight group name to use for the text, stored in
|
||||
the 'wincolor' option.
|
||||
opacity Opacity of the popup, a value between 0 and 100:
|
||||
0 is fully transparent (background text fully visible)
|
||||
100 is fully opaque (default, no transparency)
|
||||
Values in between blend the popup background with the
|
||||
underlying text, making it partially transparent.
|
||||
Requires 'termguicolors' to be set.
|
||||
Also see |popup-opacity|.
|
||||
padding List with numbers, defining the padding
|
||||
above/right/below/left of the popup (similar to CSS).
|
||||
An empty list uses a padding of 1 all around. The
|
||||
@@ -1046,6 +1054,42 @@ A click in the lower half will scroll the text up one line. However, this is
|
||||
limited so that the popup does not get smaller.
|
||||
|
||||
|
||||
|
||||
POPUP OPACITY *popup-opacity*
|
||||
|
||||
A popup window can be made semi-transparent by setting the "opacity" option.
|
||||
The opacity value ranges from 0 to 100:
|
||||
0 Fully transparent - the popup background is invisible and the
|
||||
text behind the popup is fully visible.
|
||||
100 Fully opaque (default) - the popup is not transparent at all.
|
||||
1-99 Partially transparent - the popup background is blended with
|
||||
the underlying text, making both partially visible.
|
||||
|
||||
The transparency effect requires using the GUI or having 'termguicolors'
|
||||
enabled in the terminal. Without it, the opacity setting has no effect.
|
||||
|
||||
When a popup is transparent:
|
||||
- The popup's background color is blended with the background text
|
||||
- The popup's text (foreground) remains fully visible and unblended
|
||||
- Text behind the popup is visible through transparent areas
|
||||
- The more transparent the popup (lower opacity), the more clearly the
|
||||
background text can be seen
|
||||
|
||||
This can be useful for:
|
||||
- Creating overlay windows that don't completely obscure underlying text
|
||||
- Showing contextual information without blocking the view
|
||||
- Creating visual effects and modern UI designs
|
||||
|
||||
Example with 50% opacity: >
|
||||
let winid = popup_create('Semi-transparent text', #{
|
||||
\ line: 5,
|
||||
\ col: 10,
|
||||
\ opacity: 50,
|
||||
\ })
|
||||
|
||||
The opacity can be changed dynamically using |popup_setoptions()|: >
|
||||
call popup_setoptions(winid, #{opacity: 80})
|
||||
|
||||
POPUP MASK *popup-mask*
|
||||
|
||||
To minimize the text that the popup covers, parts of it can be made
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*quickref.txt* For Vim version 9.2. Last change: 2026 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -939,6 +939,7 @@ Short explanation of each option: *option-list*
|
||||
'splitright' 'spr' new window is put right of the current one
|
||||
'startofline' 'sol' commands move cursor to first non-blank in line
|
||||
'statusline' 'stl' custom format for the status line
|
||||
'statuslineopt' 'stlo' additional options for the |status-line|
|
||||
'suffixes' 'su' suffixes that are ignored with multiple match
|
||||
'suffixesadd' 'sua' suffixes added when searching for a file
|
||||
'swapfile' 'swf' whether to use a swapfile for a buffer
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*starting.txt* For Vim version 9.2. Last change: 2026 Feb 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1125,8 +1125,13 @@ This is not an exhaustive list of those directories:
|
||||
`$XDG_DATA_HOME` $HOME/.local/share Persistent data files
|
||||
`$XDG_STATE_HOME` $HOME/.local/state State data files
|
||||
|
||||
Vim will only use the `$XDG_CONFIG_HOME` directory, the others are not
|
||||
(yet) used for its various configuration and state files.
|
||||
*xdg.vim*
|
||||
Vim itself will only use the $XDG_CONFIG_HOME directory. Support for the
|
||||
other XDG directories is provided by the "$VIMRUNTIME/xdg.vim" script.
|
||||
Note: xdg.vim is only effective if the $XDG_CONFIG_HOME/vim directory (or
|
||||
its default fallback) exists. By default, it only sets the 'viminfofile'
|
||||
option. Other option settings are commented out, see the script for
|
||||
details on how to enable them.
|
||||
|
||||
*xdg-vimrc*
|
||||
Vim, on Unix systems, will look at `$XDG_CONFIG_HOME/vim/vimrc` for its
|
||||
@@ -1140,7 +1145,8 @@ and `~/.vim/vimrc` file.
|
||||
When the |xdg-vimrc| is used the 'runtimepath' and 'packpath' options will be
|
||||
modified accordingly to respect the |xdg-base-dir|: >
|
||||
|
||||
"$XDG_CONFIG_HOME/vim,$VIMRUNTIME,/after,$XDG_CONFIG_HOME/vim/after"
|
||||
"$XDG_CONFIG_HOME/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,
|
||||
$XDG_CONFIG_HOME/vim/after"
|
||||
<
|
||||
|
||||
Avoiding trojan horses ~
|
||||
@@ -1462,8 +1468,8 @@ This saves the current Session, and starts off the command to load another.
|
||||
A session includes all tab pages, unless "tabpages" was removed from
|
||||
'sessionoptions'. |tab-page|
|
||||
|
||||
The |SessionLoadPost| autocmd event is triggered after a session file is
|
||||
loaded/sourced.
|
||||
The |SessionLoadPre| autocmd event is triggered before a session file is
|
||||
loaded/sourced and |SessionLoadPost| autocmd event is triggered after.
|
||||
*SessionLoad-variable*
|
||||
While the session file is loading, the SessionLoad global variable is set to
|
||||
1. Plugins can use this to postpone some work until the SessionLoadPost event
|
||||
|
||||
@@ -1034,7 +1034,9 @@ $quote eval.txt /*$quote*
|
||||
'stal' options.txt /*'stal'*
|
||||
'startofline' options.txt /*'startofline'*
|
||||
'statusline' options.txt /*'statusline'*
|
||||
'statuslineopt' options.txt /*'statuslineopt'*
|
||||
'stl' options.txt /*'stl'*
|
||||
'stlo' options.txt /*'stlo'*
|
||||
'stmp' options.txt /*'stmp'*
|
||||
'stpl' options.txt /*'stpl'*
|
||||
'sts' options.txt /*'sts'*
|
||||
@@ -5896,6 +5898,7 @@ Select-mode-mapping visual.txt /*Select-mode-mapping*
|
||||
Session starting.txt /*Session*
|
||||
SessionLoad-variable starting.txt /*SessionLoad-variable*
|
||||
SessionLoadPost autocmd.txt /*SessionLoadPost*
|
||||
SessionLoadPre autocmd.txt /*SessionLoadPre*
|
||||
SessionWritePost autocmd.txt /*SessionWritePost*
|
||||
ShellCmdPost autocmd.txt /*ShellCmdPost*
|
||||
ShellFilterPost autocmd.txt /*ShellFilterPost*
|
||||
@@ -6200,6 +6203,7 @@ added-8.1 version8.txt /*added-8.1*
|
||||
added-8.2 version8.txt /*added-8.2*
|
||||
added-9.1 version9.txt /*added-9.1*
|
||||
added-9.2 version9.txt /*added-9.2*
|
||||
added-9.3 version9.txt /*added-9.3*
|
||||
added-BeOS version5.txt /*added-BeOS*
|
||||
added-Mac version5.txt /*added-Mac*
|
||||
added-VMS version5.txt /*added-VMS*
|
||||
@@ -6416,6 +6420,7 @@ bug-fixes-8 version8.txt /*bug-fixes-8*
|
||||
bug-fixes-9 version9.txt /*bug-fixes-9*
|
||||
bug-fixes-9.1 version9.txt /*bug-fixes-9.1*
|
||||
bug-fixes-9.2 version9.txt /*bug-fixes-9.2*
|
||||
bug-fixes-9.3 version9.txt /*bug-fixes-9.3*
|
||||
bug-reports intro.txt /*bug-reports*
|
||||
bugreport.vim intro.txt /*bugreport.vim*
|
||||
bugs intro.txt /*bugs*
|
||||
@@ -6604,6 +6609,7 @@ changed-8.1 version8.txt /*changed-8.1*
|
||||
changed-8.2 version8.txt /*changed-8.2*
|
||||
changed-9.1 version9.txt /*changed-9.1*
|
||||
changed-9.2 version9.txt /*changed-9.2*
|
||||
changed-9.3 version9.txt /*changed-9.3*
|
||||
changelist motion.txt /*changelist*
|
||||
changelog.vim syntax.txt /*changelog.vim*
|
||||
changenr() builtin.txt /*changenr()*
|
||||
@@ -6986,6 +6992,7 @@ dav pi_netrw.txt /*dav*
|
||||
davs pi_netrw.txt /*davs*
|
||||
daw motion.txt /*daw*
|
||||
dd change.txt /*dd*
|
||||
debug-adapter-protocol channel.txt /*debug-adapter-protocol*
|
||||
debug-gcc debug.txt /*debug-gcc*
|
||||
debug-highlight debugger.txt /*debug-highlight*
|
||||
debug-leaks debug.txt /*debug-leaks*
|
||||
@@ -9674,9 +9681,11 @@ patches-8.2 version8.txt /*patches-8.2*
|
||||
patches-9 version9.txt /*patches-9*
|
||||
patches-9.1 version9.txt /*patches-9.1*
|
||||
patches-9.2 version9.txt /*patches-9.2*
|
||||
patches-9.3 version9.txt /*patches-9.3*
|
||||
patches-after-8.2 version9.txt /*patches-after-8.2*
|
||||
patches-after-9.0 version9.txt /*patches-after-9.0*
|
||||
patches-after-9.1 version9.txt /*patches-after-9.1*
|
||||
patches-after-9.2 version9.txt /*patches-after-9.2*
|
||||
pathshorten() builtin.txt /*pathshorten()*
|
||||
pattern pattern.txt /*pattern*
|
||||
pattern-atoms pattern.txt /*pattern-atoms*
|
||||
@@ -9766,6 +9775,7 @@ popup-mapping popup.txt /*popup-mapping*
|
||||
popup-mask popup.txt /*popup-mask*
|
||||
popup-menu gui.txt /*popup-menu*
|
||||
popup-menu-added version5.txt /*popup-menu-added*
|
||||
popup-opacity popup.txt /*popup-opacity*
|
||||
popup-position popup.txt /*popup-position*
|
||||
popup-props popup.txt /*popup-props*
|
||||
popup-scrollbar popup.txt /*popup-scrollbar*
|
||||
@@ -10519,6 +10529,7 @@ static-tag tagsrch.txt /*static-tag*
|
||||
status-line windows.txt /*status-line*
|
||||
statusmsg-variable eval.txt /*statusmsg-variable*
|
||||
stl-%! options.txt /*stl-%!*
|
||||
stl-%@ options.txt /*stl-%@*
|
||||
stl-%{ options.txt /*stl-%{*
|
||||
str2blob() builtin.txt /*str2blob()*
|
||||
str2float() builtin.txt /*str2float()*
|
||||
@@ -11549,6 +11560,7 @@ version-8.2 version8.txt /*version-8.2*
|
||||
version-9.0 version9.txt /*version-9.0*
|
||||
version-9.1 version9.txt /*version-9.1*
|
||||
version-9.2 version9.txt /*version-9.2*
|
||||
version-9.3 version9.txt /*version-9.3*
|
||||
version-variable eval.txt /*version-variable*
|
||||
version4.txt version4.txt /*version4.txt*
|
||||
version5.txt version5.txt /*version5.txt*
|
||||
@@ -11566,6 +11578,7 @@ version8.txt version8.txt /*version8.txt*
|
||||
version9.0 version9.txt /*version9.0*
|
||||
version9.1 version9.txt /*version9.1*
|
||||
version9.2 version9.txt /*version9.2*
|
||||
version9.3 version9.txt /*version9.3*
|
||||
version9.txt version9.txt /*version9.txt*
|
||||
versionlong-variable eval.txt /*versionlong-variable*
|
||||
vi intro.txt /*vi*
|
||||
@@ -11595,6 +11608,7 @@ vim-9 version9.txt /*vim-9*
|
||||
vim-9.0 version9.txt /*vim-9.0*
|
||||
vim-9.1 version9.txt /*vim-9.1*
|
||||
vim-9.2 version9.txt /*vim-9.2*
|
||||
vim-9.3 version9.txt /*vim-9.3*
|
||||
vim-additions vi_diff.txt /*vim-additions*
|
||||
vim-announce intro.txt /*vim-announce*
|
||||
vim-arguments starting.txt /*vim-arguments*
|
||||
@@ -11890,6 +11904,7 @@ xattr editing.txt /*xattr*
|
||||
xdg-base-dir starting.txt /*xdg-base-dir*
|
||||
xdg-runtime starting.txt /*xdg-runtime*
|
||||
xdg-vimrc starting.txt /*xdg-vimrc*
|
||||
xdg.vim starting.txt /*xdg.vim*
|
||||
xf86conf.vim syntax.txt /*xf86conf.vim*
|
||||
xfontset mbyte.txt /*xfontset*
|
||||
xfree-xterm syntax.txt /*xfree-xterm*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*terminal.txt* For Vim version 9.2. Last change: 2026 Feb 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -490,8 +490,8 @@ On more recent versions of MS-Windows 10 (beginning with the "October 2018
|
||||
Update"), winpty is no longer required. On those versions, |:terminal| will use
|
||||
Windows' built-in support for hosting terminal applications, "ConPTY". When
|
||||
ConPTY is in use, there may be rendering artifacts regarding ambiguous-width
|
||||
characters. If you encounter any such issues, install "winpty". Until the
|
||||
ConPTY problems have been fixed "winpty" will be preferred.
|
||||
characters. If you encounter any such issues, install "winpty". ConPTY
|
||||
support is considered stable with the first release of Windows 11.
|
||||
|
||||
Environment variables are used to pass information to the running job:
|
||||
VIM_SERVERNAME v:servername
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*usr_41.txt* For Vim version 9.2. Last change: 2026 Feb 16
|
||||
|
||||
|
||||
VIM USER MANUAL by Bram Moolenaar
|
||||
@@ -38,7 +38,7 @@ language like for example .vim files or configuration files like .vimrc and
|
||||
uses to customize and extend its behavior.
|
||||
|
||||
*vim-script-notation*
|
||||
The correct notation is "Vim script" (or "Vim9 script" when refering to the
|
||||
The correct notation is "Vim script" (or "Vim9 script" when referring to the
|
||||
new Vim9 language |Vim9-script|), so we will use "Vim script" to refer to the
|
||||
Vim scripting language throughout this documentation. This shorthand helps to
|
||||
streamline explanations and discussions about scripting with Vim.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*version9.txt* For Vim version 9.2. Last change: 2026 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -39,6 +39,11 @@ VERSION 9.2 |version-9.2|
|
||||
Added |added-9.2|
|
||||
Patches |patches-9.2|
|
||||
|
||||
VERSION 9.3 |version-9.3|
|
||||
Changed |changed-9.3|
|
||||
Added |added-9.3|
|
||||
Patches |patches-9.3|
|
||||
|
||||
|
||||
See |vi_diff.txt| for an overview of differences between Vi and Vim 9.0.
|
||||
See |version4.txt|, |version5.txt|, |version6.txt|, |version7.txt| and
|
||||
@@ -41546,8 +41551,7 @@ Solution: re-generate them
|
||||
==============================================================================
|
||||
VERSION 9.2 *version-9.2* *version9.2* *vim-9.2*
|
||||
|
||||
This section is about improvements made between version 9.1 and 9.2
|
||||
and is a work in progress.
|
||||
This section is about improvements made between version 9.1 and 9.2.
|
||||
|
||||
Vim9 script ~
|
||||
-----------
|
||||
@@ -41750,7 +41754,8 @@ Functions: ~
|
||||
- |setqflist()| and |setloclist()| can optionally try to preserve the current
|
||||
selection in the quickfix list with the "u" action.
|
||||
- allow to pass local Vim script variables to python interpreter |py3eval()|
|
||||
- |getwininfo()| now also returns the "leftcol" property for a window
|
||||
- |getwininfo()| now also returns the "leftcol" and "status_height" properties
|
||||
for a window
|
||||
- |v:stacktrace| The stack trace of the exception most recently caught and
|
||||
not finished
|
||||
- Add the optional {opts} |Dict| argument to |getchar()| to control: cursor
|
||||
@@ -52571,4 +52576,45 @@ Problem: [security]: Buffer overflow in netbeans special_keys() handling
|
||||
Solution: Limit writing to max KEYBUFLEN bytes to prevent writing out of
|
||||
bounds.
|
||||
|
||||
==============================================================================
|
||||
VERSION 9.3 *version-9.3* *version9.3* *vim-9.3*
|
||||
|
||||
This section is about improvements made between version 9.2 and 9.3 and is
|
||||
work in progress.
|
||||
|
||||
Popups ~
|
||||
------
|
||||
- Support for transparency, see |popup-opacity|.
|
||||
- 'previewpopup' supports the same values as 'completepopup' (except for
|
||||
"align").
|
||||
|
||||
Other ~
|
||||
-----
|
||||
- The new |xdg.vim| script for full XDG compatibility is included.
|
||||
- |ConPTY| support is considered stable as of Windows 11.
|
||||
- Support for "dap" channel mode for the |debug-adapter-protocol|.
|
||||
- |status-line| can use several lines, see 'statuslineopt'.
|
||||
|
||||
*changed-9.3*
|
||||
Changed~
|
||||
-------
|
||||
|
||||
*added-9.3*
|
||||
Added ~
|
||||
-----
|
||||
Various syntax, indent and other plugins were added.
|
||||
|
||||
Autocommands: ~
|
||||
|
||||
|SessionLoadPre| before loading a |Session| file
|
||||
|
||||
Options: ~
|
||||
|
||||
'statuslineopt' Extra options for the 'statusline', e.g. use the
|
||||
"maxheight" suboption to use several lines.
|
||||
|
||||
==============================================================================
|
||||
PATCHES *patches-9.3* *bug-fixes-9.3*
|
||||
*patches-after-9.2*
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:fdm=manual:nofoldenable
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*windows.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*windows.txt* For Vim version 9.2. Last change: 2026 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -125,6 +125,7 @@ when the last window also has a status line:
|
||||
You can change the contents of the status line with the 'statusline' option.
|
||||
This option can be local to the window, so that you can have a different
|
||||
status line in each window.
|
||||
You can change the height of the status line with the 'statuslineopt' option.
|
||||
|
||||
Normally, inversion is used to display the status line. This can be changed
|
||||
with the 's' character in the 'highlight' option. For example, "sb" sets it
|
||||
@@ -954,11 +955,20 @@ windows.
|
||||
Alternatively, a popup window can be used by setting the 'previewpopup'
|
||||
option. When set, it overrules the 'previewwindow' and 'previewheight'
|
||||
settings. The option is a comma-separated list of values:
|
||||
border border style (see 'pumborder')
|
||||
borderhighlight highlight group for the popup border characters
|
||||
close show close button: "on" (default) or "off", and if
|
||||
the value is "on", it must be set after border.
|
||||
height maximum height of the popup
|
||||
width maximum width of the popup
|
||||
highlight highlight group of the popup (default is Pmenu)
|
||||
resize show resize handle: "on" (default) or "off"
|
||||
shadow "off" (default) or "on" using |hl-PmenuShadow|
|
||||
width maximum width of the popup
|
||||
|
||||
Example: >
|
||||
:set previewpopup=height:10,width:60
|
||||
:set previewpopup=border:single,borderhilight:PmenuBorder
|
||||
:set previewpopup=border:custom:─;│;─;│;┌;┐;┘;└
|
||||
|
||||
A few peculiarities:
|
||||
- If the file is in a buffer already, it will be re-used. This will allow for
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Jan 20
|
||||
" Last Change: 2026 Feb 18
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If the filetype can be detected from extension or file name(the final path component),
|
||||
@@ -535,7 +535,6 @@ au BufNewFile,BufRead init.trans,*/etc/translate-shell,.trans setf clojure
|
||||
|
||||
" HTML (.stm for server side, .shtml is server-side or superhtml)
|
||||
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call dist#ft#FThtml()
|
||||
au BufNewFile,BufRead *.cshtml setf html
|
||||
|
||||
" Host config
|
||||
au BufNewFile,BufRead */etc/host.conf setf hostconf
|
||||
@@ -1028,7 +1027,7 @@ au BufNewFile,BufRead *.decl,*.dcl,*.dec
|
||||
" NOTE: Patterns ending in a star are further down, these have lower priority.
|
||||
au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,.bash[_-]history,bash-fc[-.],*.ebuild,*.bash,*.eclass,PKGBUILD,*.bats,*.cygport call dist#ft#SetFileTypeSH("bash")
|
||||
au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
|
||||
au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env{rc,} call dist#ft#SetFileTypeSH(getline(1))
|
||||
au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.envrc,.envrc.* call dist#ft#SetFileTypeSH(getline(1))
|
||||
" Shell script (Arch Linux) or PHP file (Drupal)
|
||||
au BufNewFile,BufRead *.install
|
||||
\ if getline(1) =~ '<?php' |
|
||||
@@ -1411,6 +1410,9 @@ au BufNewFile,BufRead drac.* call s:StarSetf('dracula')
|
||||
" Execline (s6) scripts
|
||||
au BufNewFile,BufRead s6-* call s:StarSetf('execline')
|
||||
|
||||
" Env
|
||||
au BufNewFile,BufRead *.env,.env{.*,} setf env
|
||||
|
||||
" Fvwm
|
||||
au BufNewFile,BufRead */.fvwm/* call s:StarSetf('fvwm')
|
||||
au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
|
||||
|
||||
19
runtime/ftplugin/env.vim
Normal file
19
runtime/ftplugin/env.vim
Normal file
@@ -0,0 +1,19 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: env
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Last Change: 2026 Feb 27
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||
|
||||
setlocal comments=b:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Carlo Baldassi <carlobaldassi@gmail.com>
|
||||
" Homepage: https://github.com/JuliaEditorSupport/julia-vim
|
||||
" Last Change: 2021 Aug 04
|
||||
" 2025 Dec 9 sync with upstream repo #18894
|
||||
" 2026 Feb 27 sync with upstream repo
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -16,7 +16,7 @@ set cpo&vim
|
||||
setlocal include=^\\s*\\%(reload\\\|include\\)\\>
|
||||
setlocal suffixesadd=.jl
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#=%s=#
|
||||
setlocal commentstring=#\ %s
|
||||
setlocal cinoptions+=#1
|
||||
setlocal define=^\\s*macro\\>
|
||||
setlocal fo-=t fo+=croql
|
||||
|
||||
14
runtime/ftplugin/xkb.vim
Normal file
14
runtime/ftplugin/xkb.vim
Normal file
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin
|
||||
" Language: xkb (X keyboard extension)
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Mar 01
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setl comments=://
|
||||
setl commentstring=//\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setl com< cms<'
|
||||
@@ -196,7 +196,7 @@ menu_sr_rs.ascii.vim: menu_sr_rs.utf-8.vim
|
||||
-e 's/scriptencoding utf-8/scriptencoding latin1/' \
|
||||
-e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
|
||||
$? > $@
|
||||
|
||||
|
||||
# Convert menu_uk_ua.utf-8.vim to create menu_uk_ua.cp1251.vim.
|
||||
menu_uk_ua.cp1251.vim: menu_uk_ua.utf-8.vim
|
||||
rm -f $@
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Menu Translations: Simplified Chinese
|
||||
" Maintainer: Ada (Haowen) Yu <me@yuhaowen.com>
|
||||
" Previous Maintainer: Shun Bai <baishunde@gmail.com>, Yuheng Xie <elephant@linux.net.cn>
|
||||
" Last Change: 2022 July 9
|
||||
" Last Change: 2026 Feb 19
|
||||
" Generated from menu_zh_cn.utf-8.vim, DO NOT EDIT
|
||||
"
|
||||
" Generated with the scripts from:
|
||||
@@ -28,7 +28,7 @@ menutrans &How-to\ Links
|
||||
menutrans &Find\.\.\. 查找(&F)\.\.\.
|
||||
menutrans &Credits 致谢(&C)
|
||||
menutrans Co&pying 版权(&P)
|
||||
menutrans &Sponsor/Register 赞助/注册(&S)
|
||||
menutrans &Sponsor 赞助(&S)
|
||||
menutrans O&rphans 拯救孤儿(&R)
|
||||
menutrans &Version 版本(&V)
|
||||
menutrans &About 关于(&A)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Menu Translations: Traditional Chinese
|
||||
" Translated By: Hung-Te Lin <piaip@csie.ntu.edu.tw>
|
||||
" Last Change: 2012 May 01
|
||||
" Last Change: 2026 Feb 19
|
||||
" Generated from menu_zh_tw.utf-8.vim, DO NOT EDIT
|
||||
|
||||
" {{{ Quit when menu translations have already been done.
|
||||
@@ -24,7 +24,7 @@ menutrans &How-to\ links
|
||||
menutrans &GUI 圖型界面(&G)
|
||||
menutrans &Credits 感謝(&C)
|
||||
menutrans Co&pying 版權(&P)
|
||||
menutrans &Sponsor/Register 贊助/註冊(&S)
|
||||
menutrans &Sponsor 贊助(&S)
|
||||
menutrans O&rphans 拯救孤兒(&R)
|
||||
" ------------------------------------------------------------------------
|
||||
menutrans &Version 程式版本資訊(&V)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Menu Translations: Serbian
|
||||
" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
|
||||
" Last Change: Fri, 30 May 2003 10:17:39 Eastern Daylight Time
|
||||
" Last Change: 2024 May 2
|
||||
" Adapted for VIM 8 by: ¸ÒÐÝ ¿ÕèØû on 2017-12-28 12:05+0400
|
||||
" Generated from menu_sr_rs.utf-8.vim, DO NOT EDIT
|
||||
|
||||
@@ -117,8 +117,8 @@ menutrans Create\ &Fold<Tab>zf
|
||||
menutrans &Delete\ Fold<Tab>zd ¾&ÑàØèØ\ áÒØøãâÐÚ<Tab>zd
|
||||
menutrans Delete\ &All\ Folds<Tab>zD ¾ÑàØèØ\ áÒÕ\ áÒ&ØøãâÚÕ<Tab>zD
|
||||
menutrans Fold\ column\ &width ÈØàØÝÐ\ &àÕÔÐ\ æÒØøãâÚÐ
|
||||
"menutrans &Diff &ÃßÞàÕòØÒÐúÕ
|
||||
menutrans &Make<Tab>:make 'mak&Õ'<Tab>:make
|
||||
menutrans &Diff ÃßÞàÕòØÒÐúÕ
|
||||
menutrans &Make<Tab>:make ½ÐßàÐÒØâØ<Tab>:make
|
||||
menutrans &List\ Errors<Tab>:cl ÁߨáÐÚ\ &ÓàÕèÐÚÐ<Tab>:cl
|
||||
menutrans L&ist\ Messages<Tab>:cl! Áß&ØáÐÚ\ ßÞàãÚÐ<Tab>:cl!
|
||||
menutrans &Next\ Error<Tab>:cn Á&ÛÕÔÕûÐ\ ÓàÕèÚÐ<Tab>:cn
|
||||
@@ -254,7 +254,7 @@ if has("toolbar")
|
||||
tmenu ToolBar.LoadSesn ÃçØâÐø áÕÐÝáã
|
||||
tmenu ToolBar.SaveSesn ÁÐçãÒÐø áÕÐÝáã
|
||||
tmenu ToolBar.RunScript ¸×ÒàèØ áߨá
|
||||
tmenu ToolBar.Make 'make'
|
||||
tmenu ToolBar.Make ½ÐßàÐÒØâØ
|
||||
tmenu ToolBar.Shell ¾ßÕàÐâØÒÝÞ ÞÚàãÖÕúÕ
|
||||
tmenu ToolBar.RunCtags ½ÐßàÐÒØ Þ×ÝÐÚÕ
|
||||
tmenu ToolBar.TagJump ¸ÔØ ÝÐ Þ×ÝÐÚã
|
||||
@@ -294,4 +294,4 @@ let menutrans_no_file = "[
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
|
||||
" vim: tw=0 keymap=serbian
|
||||
" vim: tw=0
|
||||
|
||||
@@ -196,9 +196,9 @@ menutrans Set\ '&filetype'\ too 'filetype'\
|
||||
menutrans &Off &Kapat
|
||||
menutrans &Manual &El\ Ýle
|
||||
menutrans A&utomatic &Otomatik
|
||||
menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ Ýçin\ Aç/Kapat
|
||||
menutrans Co&lor\ Test &Renk\ Testi
|
||||
menutrans &Highlight\ Test &Vurgulama\ Testi
|
||||
menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ için\ Aç/Kapat
|
||||
menutrans Co&lor\ Test &Renk\ Sýnamasý
|
||||
menutrans &Highlight\ Test &Vurgu\ Sýnamasý
|
||||
menutrans &Convert\ to\ HTML &HTML'ye\ Dönüþtür
|
||||
|
||||
" Buffers menu
|
||||
|
||||
@@ -196,9 +196,9 @@ menutrans Set\ '&filetype'\ too 'filetype'\
|
||||
menutrans &Off &Kapat
|
||||
menutrans &Manual &El\ Ýle
|
||||
menutrans A&utomatic &Otomatik
|
||||
menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ Ýçin\ Aç/Kapat
|
||||
menutrans Co&lor\ Test &Renk\ Testi
|
||||
menutrans &Highlight\ Test &Vurgulama\ Testi
|
||||
menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ için\ Aç/Kapat
|
||||
menutrans Co&lor\ Test &Renk\ Sýnamasý
|
||||
menutrans &Highlight\ Test &Vurgu\ Sýnamasý
|
||||
menutrans &Convert\ to\ HTML &HTML'ye\ Dönüþtür
|
||||
|
||||
" Buffers menu
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Menu Translations: Simplified Chinese
|
||||
" Maintainer: Ada (Haowen) Yu <me@yuhaowen.com>
|
||||
" Previous Maintainer: Shun Bai <baishunde@gmail.com>, Yuheng Xie <elephant@linux.net.cn>
|
||||
" Last Change: 2022 July 9
|
||||
" Last Change: 2026 Feb 19
|
||||
" Original translations
|
||||
"
|
||||
" Generated with the scripts from:
|
||||
@@ -28,7 +28,7 @@ menutrans &How-to\ Links 如何使用(&H)
|
||||
menutrans &Find\.\.\. 查找(&F)\.\.\.
|
||||
menutrans &Credits 致谢(&C)
|
||||
menutrans Co&pying 版权(&P)
|
||||
menutrans &Sponsor/Register 赞助/注册(&S)
|
||||
menutrans &Sponsor 赞助(&S)
|
||||
menutrans O&rphans 拯救孤儿(&R)
|
||||
menutrans &Version 版本(&V)
|
||||
menutrans &About 关于(&A)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Menu Translations: Traditional Chinese
|
||||
" Translated By: Hung-Te Lin <piaip@csie.ntu.edu.tw>
|
||||
" Last Change: 2012 May 01
|
||||
" Last Change: 2026 Feb 19
|
||||
" Original translations
|
||||
|
||||
" {{{ Quit when menu translations have already been done.
|
||||
@@ -24,7 +24,7 @@ menutrans &How-to\ links 如何作\.\.\.(&H)
|
||||
menutrans &GUI 圖型界面(&G)
|
||||
menutrans &Credits 感謝(&C)
|
||||
menutrans Co&pying 版權(&P)
|
||||
menutrans &Sponsor/Register 贊助/註冊(&S)
|
||||
menutrans &Sponsor 贊助(&S)
|
||||
menutrans O&rphans 拯救孤兒(&R)
|
||||
" ------------------------------------------------------------------------
|
||||
menutrans &Version 程式版本資訊(&V)
|
||||
|
||||
@@ -2,25 +2,15 @@
|
||||
# Shell script to start Vim with less.vim.
|
||||
# Read stdin if no arguments were given and stdin was redirected.
|
||||
|
||||
if test -t 1; then
|
||||
if test $# = 0; then
|
||||
if test -t 0; then
|
||||
echo "Missing filename" 1>&2
|
||||
exit
|
||||
fi
|
||||
vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -
|
||||
else
|
||||
vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' "$@"
|
||||
fi
|
||||
else
|
||||
# Output is not a terminal, cat arguments or stdin
|
||||
if test $# = 0; then
|
||||
if test -t 0; then
|
||||
echo "Missing filename" 1>&2
|
||||
exit
|
||||
fi
|
||||
cat
|
||||
else
|
||||
cat "$@"
|
||||
fi
|
||||
if [ $# -eq 0 ] && [ -t 0 ]; then
|
||||
echo "$(basename "$0"): No input." 1>&2
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -t 1 ]; then
|
||||
[ $# -eq 0 ] && set -- "-"
|
||||
[ "$*" != "-" ] && set -- -- "$@"
|
||||
exec vim --cmd 'let no_plugin_maps=1' -c 'runtime! macros/less.vim' --not-a-term "$@"
|
||||
else # Output is not a terminal.
|
||||
exec cat -- "$@"
|
||||
fi
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2025 Nov 27
|
||||
" Last Change: 2026 Mar 01
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
@@ -490,8 +490,10 @@ call append("$", " \tset ls=" . &ls)
|
||||
if has("statusline")
|
||||
call <SID>AddOption("statusline", gettext("alternate format to be used for a status line"))
|
||||
call <SID>OptionG("stl", &stl)
|
||||
call append("$", "\t" .. s:local_to_window)
|
||||
call <SID>AddOption("statuslineopt", gettext("optional settings for the status line"))
|
||||
call <SID>OptionG("stlo", &stlo)
|
||||
endif
|
||||
call append("$", "\t" .. s:local_to_window)
|
||||
call <SID>AddOption("equalalways", gettext("make all windows the same size when adding/removing windows"))
|
||||
call <SID>BinOptionG("ea", &ea)
|
||||
call <SID>AddOption("eadirection", gettext("in which direction 'equalalways' works: \"ver\", \"hor\" or \"both\""))
|
||||
|
||||
298
runtime/pack/dist/opt/netrw/autoload/netrw.vim
vendored
298
runtime/pack/dist/opt/netrw/autoload/netrw.vim
vendored
@@ -18,6 +18,9 @@
|
||||
" 2025 Nov 28 by Vim Project fix undefined variable in *NetrwMenu #18829
|
||||
" 2025 Dec 26 by Vim Project fix use of g:netrw_cygwin #19015
|
||||
" 2026 Jan 19 by Vim Project do not create swapfiles #18854
|
||||
" 2026 Feb 15 by Vim Project fix global variable initialization for MS-Windows #19287
|
||||
" 2026 Feb 21 by Vim Project better absolute path detection on MS-Windows #19477
|
||||
" 2026 Feb 27 by Vim Project Make the hostname validation more strict
|
||||
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
@@ -265,8 +268,8 @@ if !exists("g:netrw_localcopycmd")
|
||||
let g:netrw_localcopycmdopt = ''
|
||||
|
||||
if has("win32") && !g:netrw_cygwin
|
||||
let g:netrw_localcopycmd = expand("$COMSPEC", v:true)
|
||||
let g:netrw_localcopycmdopt = '/c copy'
|
||||
let g:netrw_localcopycmd = $COMSPEC
|
||||
let g:netrw_localcopycmdopt = ' /c copy'
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -275,30 +278,31 @@ if !exists("g:netrw_localcopydircmd")
|
||||
let g:netrw_localcopydircmdopt = '-R'
|
||||
|
||||
if has("win32") && !g:netrw_cygwin
|
||||
let g:netrw_localcopydircmd = "cp"
|
||||
call s:NetrwInit("g:netrw_localcopydircmdopt", "-R")
|
||||
let g:netrw_localcopydircmd = "xcopy"
|
||||
let g:netrw_localcopydircmdopt = " /E /I /H /C /Y"
|
||||
endif
|
||||
endif
|
||||
|
||||
if has("win32")
|
||||
if g:netrw_cygwin
|
||||
call s:NetrwInit("g:netrw_localmkdir","mkdir")
|
||||
if !exists("g:netrw_localmkdir")
|
||||
if has("win32")
|
||||
if g:netrw_cygwin
|
||||
let g:netrw_localmkdir= "mkdir"
|
||||
else
|
||||
let g:netrw_localmkdir = $COMSPEC
|
||||
let g:netrw_localmkdiropt= " /c mkdir"
|
||||
endif
|
||||
else
|
||||
call s:NetrwInit("g:netrw_localmkdir",expand("$COMSPEC", v:true))
|
||||
call s:NetrwInit("g:netrw_localmkdiropt"," /c mkdir")
|
||||
let g:netrw_localmkdir= "mkdir"
|
||||
endif
|
||||
else
|
||||
call s:NetrwInit("g:netrw_localmkdir","mkdir")
|
||||
endif
|
||||
call s:NetrwInit("g:netrw_remote_mkdir","mkdir")
|
||||
|
||||
if !exists("g:netrw_localmovecmd")
|
||||
if has("win32")
|
||||
if g:netrw_cygwin
|
||||
let g:netrw_localmovecmd= "mv"
|
||||
else
|
||||
let g:netrw_localmovecmd = expand("$COMSPEC", v:true)
|
||||
call s:NetrwInit("g:netrw_localmovecmdopt"," /c move")
|
||||
let g:netrw_localmovecmd = $COMSPEC
|
||||
let g:netrw_localmovecmdopt= " /c move"
|
||||
endif
|
||||
elseif has("unix") || has("macunix")
|
||||
let g:netrw_localmovecmd= "mv"
|
||||
@@ -980,7 +984,7 @@ function netrw#Obtain(islocal,fname,...)
|
||||
" obtain a file from local b:netrw_curdir to (local) tgtdir
|
||||
if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
|
||||
let topath = netrw#fs#ComposePath(tgtdir,"")
|
||||
if has("win32")
|
||||
if has("win32") && !g:netrw_cygwin
|
||||
" transfer files one at time
|
||||
for fname in fnamelist
|
||||
call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".netrw#os#Escape(fname)." ".netrw#os#Escape(topath))
|
||||
@@ -2588,13 +2592,26 @@ endfunction
|
||||
|
||||
" s:NetrwValidateHostname: Validate that the hostname is valid {{{2
|
||||
" Input:
|
||||
" hostname
|
||||
" hostname, may include an optional username, e.g. user@hostname
|
||||
" allow a alphanumeric hostname or an IPv(4/6) address
|
||||
" Output:
|
||||
" true if g:netrw_machine is valid according to RFC1123 #Section 2
|
||||
function s:NetrwValidateHostname(hostname)
|
||||
" RFC1123#section-2 mandates, a valid hostname starts with letters or digits
|
||||
" so reject everyhing else
|
||||
return a:hostname =~? '^[a-z0-9]'
|
||||
" Username:
|
||||
let user_pat = '\%([a-zA-Z0-9._-]\+@\)\?'
|
||||
" Hostname: 1-64 chars, alphanumeric/dots/hyphens.
|
||||
" No underscores. No leading/trailing dots/hyphens.
|
||||
let host_pat = '[a-zA-Z0-9]\%([-a-zA-Z0-9.]{,62}[a-zA-Z0-9]\)\?$'
|
||||
|
||||
" IPv4: 1-3 digits separated by dots
|
||||
let ipv4_pat = '\%(\d\{1,3}\.\)\{3\}\d\{1,3\}$'
|
||||
|
||||
" IPv6: Hex, colons, and optional brackets
|
||||
let ipv6_pat = '\[\?\%([a-fA-F0-9:]\{2,}\)\+\]\?$'
|
||||
|
||||
return a:hostname =~? '^'.user_pat.host_pat ||
|
||||
\ a:hostname =~? '^'.user_pat.ipv4_pat ||
|
||||
\ a:hostname =~? '^'.user_pat.ipv6_pat
|
||||
endfunction
|
||||
|
||||
" NetUserPass: set username and password for subsequent ftp transfer {{{2
|
||||
@@ -3237,7 +3254,7 @@ function s:NetrwFile(fname)
|
||||
endif
|
||||
|
||||
if !g:netrw_cygwin && has("win32")
|
||||
if fname =~ '^\' || fname =~ '^\a:\'
|
||||
if isabsolutepath(fname)
|
||||
" windows, but full path given
|
||||
let ret= fname
|
||||
else
|
||||
@@ -4731,38 +4748,16 @@ function s:NetrwMakeDir(usrhost)
|
||||
|
||||
" requested new local directory is neither a pre-existing file or
|
||||
" directory, so make it!
|
||||
if exists("*mkdir")
|
||||
if has("unix")
|
||||
call mkdir(fullnewdir,"p",xor(0777, system("umask")))
|
||||
else
|
||||
call mkdir(fullnewdir,"p")
|
||||
endif
|
||||
if has("unix")
|
||||
call mkdir(fullnewdir,"p",xor(0777, system("umask")))
|
||||
else
|
||||
let netrw_origdir= netrw#fs#Cwd(1)
|
||||
if s:NetrwLcd(b:netrw_curdir)
|
||||
return
|
||||
endif
|
||||
call netrw#os#Execute("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.netrw#os#Escape(newdirname,1))
|
||||
if v:shell_error != 0
|
||||
let @@= ykeep
|
||||
call netrw#msg#Notify('ERROR', printf('consider setting g:netrw_localmkdir<%s> to something that works', g:netrw_localmkdir))
|
||||
return
|
||||
endif
|
||||
if !g:netrw_keepdir
|
||||
if s:NetrwLcd(netrw_origdir)
|
||||
return
|
||||
endif
|
||||
endif
|
||||
call mkdir(fullnewdir,"p")
|
||||
endif
|
||||
|
||||
if v:shell_error == 0
|
||||
" refresh listing
|
||||
let svpos= winsaveview()
|
||||
call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./',0))
|
||||
call winrestview(svpos)
|
||||
else
|
||||
call netrw#msg#Notify('ERROR', printf('unable to make directory<%s>', newdirname))
|
||||
endif
|
||||
" on success refresh listing
|
||||
let svpos= winsaveview()
|
||||
call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./',0))
|
||||
call winrestview(svpos)
|
||||
|
||||
elseif !exists("b:netrw_method") || b:netrw_method == 4
|
||||
" Remote mkdir: using ssh
|
||||
@@ -5346,17 +5341,14 @@ function s:NetrwMarkFileCopy(islocal,...)
|
||||
|
||||
let curdir = s:NetrwGetCurdir(a:islocal)
|
||||
let curbufnr = bufnr("%")
|
||||
if b:netrw_curdir !~ '/$'
|
||||
if !exists("b:netrw_curdir")
|
||||
let b:netrw_curdir= curdir
|
||||
endif
|
||||
let b:netrw_curdir= b:netrw_curdir."/"
|
||||
if !exists("b:netrw_curdir")
|
||||
let b:netrw_curdir= curdir
|
||||
endif
|
||||
|
||||
" sanity check
|
||||
if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr})
|
||||
call netrw#msg#Notify('ERROR', 'there are no marked files in this window (:help netrw-mf)')
|
||||
return
|
||||
return 0
|
||||
endif
|
||||
|
||||
if !exists("s:netrwmftgt")
|
||||
@@ -5364,7 +5356,7 @@ function s:NetrwMarkFileCopy(islocal,...)
|
||||
return 0
|
||||
endif
|
||||
|
||||
if a:islocal && s:netrwmftgt_islocal
|
||||
if a:islocal && s:netrwmftgt_islocal
|
||||
" Copy marked files, local directory to local directory
|
||||
if !executable(g:netrw_localcopycmd)
|
||||
call netrw#msg#Notify('ERROR', printf('g:netrw_localcopycmd<%s> not executable on your system, aborting', g:netrw_localcopycmd))
|
||||
@@ -5372,69 +5364,85 @@ function s:NetrwMarkFileCopy(islocal,...)
|
||||
endif
|
||||
|
||||
" copy marked files while within the same directory (ie. allow renaming)
|
||||
if simplify(s:netrwmftgt) ==# simplify(b:netrw_curdir)
|
||||
if len(s:netrwmarkfilelist_{bufnr('%')}) == 1
|
||||
" only one marked file
|
||||
let args = netrw#os#Escape(b:netrw_curdir.s:netrwmarkfilelist_{bufnr('%')}[0])
|
||||
let oldname = s:netrwmarkfilelist_{bufnr('%')}[0]
|
||||
elseif a:0 == 1
|
||||
" this happens when the next case was used to recursively call s:NetrwMarkFileCopy()
|
||||
let args = netrw#os#Escape(b:netrw_curdir.a:1)
|
||||
let oldname = a:1
|
||||
else
|
||||
" copy multiple marked files inside the same directory
|
||||
let s:recursive= 1
|
||||
for oldname in s:netrwmarkfilelist_{bufnr("%")}
|
||||
let ret= s:NetrwMarkFileCopy(a:islocal,oldname)
|
||||
if ret == 0
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
unlet s:recursive
|
||||
call s:NetrwUnmarkList(curbufnr,curdir)
|
||||
return ret
|
||||
endif
|
||||
if simplify(s:netrwmftgt."/") ==# simplify(b:netrw_curdir."/")
|
||||
" copy multiple marked files inside the same directory
|
||||
for oldname in s:netrwmarkfilelist_{curbufnr}
|
||||
call inputsave()
|
||||
let newname= input(printf("Copy %s to: ", oldname), oldname, 'file')
|
||||
call inputrestore()
|
||||
|
||||
call inputsave()
|
||||
let newname= input(printf("Copy %s to: ", oldname), oldname, 'file')
|
||||
call inputrestore()
|
||||
if empty(newname)
|
||||
return 0
|
||||
endif
|
||||
|
||||
if empty(newname)
|
||||
return 0
|
||||
endif
|
||||
let tgt = netrw#fs#ComposePath(s:netrwmftgt, newname)
|
||||
let oldname = netrw#fs#ComposePath(b:netrw_curdir, oldname)
|
||||
if tgt ==# oldname
|
||||
continue
|
||||
endif
|
||||
|
||||
let args = netrw#os#Escape(oldname)
|
||||
let tgt = netrw#os#Escape(s:netrwmftgt.'/'.newname)
|
||||
let ret = filecopy(oldname, tgt)
|
||||
if ret == v:false
|
||||
call netrw#msg#Notify('ERROR', $'copy failed, unable to filecopy() <{oldname}> to <{tgt}>')
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
call s:NetrwUnmarkList(curbufnr,curdir)
|
||||
NetrwKeepj call s:NetrwRefreshDir(a:islocal, b:netrw_curdir)
|
||||
return ret
|
||||
else
|
||||
let args = join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"netrw#os#Escape(b:netrw_curdir.\"/\".v:val)"))
|
||||
let tgt = netrw#os#Escape(s:netrwmftgt)
|
||||
let args = []
|
||||
for arg in s:netrwmarkfilelist_{curbufnr}
|
||||
call add(args, netrw#fs#ComposePath(b:netrw_curdir, arg))
|
||||
endfor
|
||||
let tgt = s:netrwmftgt
|
||||
endif
|
||||
|
||||
if !g:netrw_cygwin && has("win32")
|
||||
let args = substitute(args,'/','\\','g')
|
||||
let tgt = substitute(tgt, '/','\\','g')
|
||||
endif
|
||||
|
||||
if args =~ "'" |let args= substitute(args,"'\\(.*\\)'",'\1','')|endif
|
||||
if tgt =~ "'" |let tgt = substitute(tgt ,"'\\(.*\\)'",'\1','')|endif
|
||||
if args =~ '//'|let args= substitute(args,'//','/','g')|endif
|
||||
if tgt =~ '//'|let tgt = substitute(tgt ,'//','/','g')|endif
|
||||
|
||||
let copycmd = g:netrw_localcopycmd
|
||||
let copycmdopt = g:netrw_localcopycmdopt
|
||||
|
||||
if isdirectory(s:NetrwFile(args))
|
||||
" on Windows, no builtin command supports copying multiple files at once
|
||||
" (powershell's Copy-Item cmdlet does but requires , as file separator)
|
||||
if len(s:netrwmarkfilelist_{curbufnr}) > 1 && has("win32") && !g:netrw_cygwin
|
||||
" copy multiple marked files
|
||||
for file in args
|
||||
let dest = netrw#fs#ComposePath(tgt, fnamemodify(file, ':t'))
|
||||
let ret = filecopy(file, dest)
|
||||
if ret == v:false
|
||||
call netrw#msg#Notify('ERROR', $'copy failed, unable to filecopy() <{file}> to <{dest}>')
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
call s:NetrwUnmarkList(curbufnr,curdir)
|
||||
NetrwKeepj call s:NetrwRefreshDir(a:islocal, b:netrw_curdir)
|
||||
return ret
|
||||
endif
|
||||
|
||||
if len(args) == 1 && isdirectory(s:NetrwFile(args[0]))
|
||||
let copycmd = g:netrw_localcopydircmd
|
||||
let copycmdopt = g:netrw_localcopydircmdopt
|
||||
if has('win32') && !g:netrw_cygwin
|
||||
if has('win32') && g:netrw_localcopydircmd == "xcopy"
|
||||
" window's xcopy doesn't copy a directory to a target properly. Instead, it copies a directory's
|
||||
" contents to a target. One must append the source directory name to the target to get xcopy to
|
||||
" do the right thing.
|
||||
let tgt= tgt.'\'.substitute(a:1,'^.*[\\/]','','')
|
||||
let tgt = netrw#fs#ComposePath(tgt, fnamemodify(simplify(netrw#fs#PathJoin(args[0],".")),":t"))
|
||||
endif
|
||||
endif
|
||||
|
||||
call system(printf("%s %s '%s' '%s'", copycmd, copycmdopt, args, tgt))
|
||||
" prepare arguments for shell call
|
||||
let args = join(map(args,'netrw#os#Escape(v:val)'))
|
||||
let tgt = netrw#os#Escape(tgt)
|
||||
|
||||
" enforce noshellslash for system calls
|
||||
if exists('+shellslash') && &shellslash
|
||||
for var in ['copycmd', 'args', 'tgt']
|
||||
let {var} = substitute({var}, '/', '\', 'g')
|
||||
endfor
|
||||
endif
|
||||
|
||||
" shell call
|
||||
let shell_cmd = printf("%s %s %s %s", copycmd, copycmdopt, args, tgt)
|
||||
call system(shell_cmd)
|
||||
if v:shell_error != 0
|
||||
if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && g:netrw_keepdir
|
||||
call netrw#msg#Notify('ERROR', printf("copy failed; perhaps due to vim's current directory<%s> not matching netrw's (%s) (see :help netrw-cd)", getcwd(), b:netrw_curdir))
|
||||
@@ -5446,11 +5454,11 @@ function s:NetrwMarkFileCopy(islocal,...)
|
||||
|
||||
elseif a:islocal && !s:netrwmftgt_islocal
|
||||
" Copy marked files, local directory to remote directory
|
||||
NetrwKeepj call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt)
|
||||
NetrwKeepj call s:NetrwUpload(s:netrwmarkfilelist_{curbufnr},s:netrwmftgt)
|
||||
|
||||
elseif !a:islocal && s:netrwmftgt_islocal
|
||||
" Copy marked files, remote directory to local directory
|
||||
NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt)
|
||||
NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{curbufnr},s:netrwmftgt)
|
||||
|
||||
elseif !a:islocal && !s:netrwmftgt_islocal
|
||||
" Copy marked files, remote directory to remote directory
|
||||
@@ -5459,24 +5467,16 @@ function s:NetrwMarkFileCopy(islocal,...)
|
||||
if tmpdir !~ '/'
|
||||
let tmpdir= curdir."/".tmpdir
|
||||
endif
|
||||
if exists("*mkdir")
|
||||
call mkdir(tmpdir)
|
||||
else
|
||||
call netrw#os#Execute("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.netrw#os#Escape(tmpdir,1))
|
||||
if v:shell_error != 0
|
||||
call netrw#msg#Notify('WARNING', printf("consider setting g:netrw_localmkdir<%s> to something that works", g:netrw_localmkdir))
|
||||
return
|
||||
endif
|
||||
endif
|
||||
call mkdir(tmpdir)
|
||||
if isdirectory(s:NetrwFile(tmpdir))
|
||||
if s:NetrwLcd(tmpdir)
|
||||
return
|
||||
endif
|
||||
NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
|
||||
let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
|
||||
NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{curbufnr},tmpdir)
|
||||
let localfiles= map(deepcopy(s:netrwmarkfilelist_{curbufnr}),'substitute(v:val,"^.*/","","")')
|
||||
NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt)
|
||||
if getcwd() == tmpdir
|
||||
for fname in s:netrwmarkfilelist_{bufnr('%')}
|
||||
for fname in s:netrwmarkfilelist_{curbufnr}
|
||||
call netrw#fs#Remove(fname)
|
||||
endfor
|
||||
if s:NetrwLcd(curdir)
|
||||
@@ -5498,18 +5498,13 @@ function s:NetrwMarkFileCopy(islocal,...)
|
||||
" -------
|
||||
" remove markings from local buffer
|
||||
call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer
|
||||
if exists("s:recursive")
|
||||
else
|
||||
endif
|
||||
" see s:LocalFastBrowser() for g:netrw_fastbrowse interpretation (refreshing done for both slow and medium)
|
||||
if g:netrw_fastbrowse <= 1
|
||||
NetrwKeepj call s:LocalBrowseRefresh()
|
||||
else
|
||||
" refresh local and targets for fast browsing
|
||||
if !exists("s:recursive")
|
||||
" remove markings from local buffer
|
||||
NetrwKeepj call s:NetrwUnmarkList(curbufnr,curdir)
|
||||
endif
|
||||
" remove markings from local buffer
|
||||
NetrwKeepj call s:NetrwUnmarkList(curbufnr,curdir)
|
||||
|
||||
" refresh buffers
|
||||
if s:netrwmftgt_islocal
|
||||
@@ -5878,28 +5873,35 @@ function s:NetrwMarkFileMove(islocal)
|
||||
call netrw#msg#Notify('ERROR', printf('g:netrw_localmovecmd<%s> not executable on your system, aborting', g:netrw_localmovecmd))
|
||||
return
|
||||
endif
|
||||
|
||||
let tgt = netrw#os#Escape(s:netrwmftgt)
|
||||
if !g:netrw_cygwin && has("win32")
|
||||
let tgt= substitute(tgt, '/','\\','g')
|
||||
if g:netrw_localmovecmd =~ '\s'
|
||||
let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','')
|
||||
let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','')
|
||||
let movecmd = netrw#fs#WinPath(movecmd).movecmdargs
|
||||
else
|
||||
let movecmd = netrw#fs#WinPath(g:netrw_localmovecmd)
|
||||
endif
|
||||
if has("win32") && !g:netrw_cygwin && g:netrw_localmovecmd =~ '\s' && g:netrw_localmovecmdopt == ""
|
||||
let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','')
|
||||
let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','')
|
||||
else
|
||||
let movecmd = netrw#fs#WinPath(g:netrw_localmovecmd)
|
||||
let movecmd = g:netrw_localmovecmd
|
||||
let movecmdargs = g:netrw_localmovecmdopt
|
||||
endif
|
||||
for fname in s:netrwmarkfilelist_{bufnr("%")}
|
||||
|
||||
" build args list
|
||||
let args = []
|
||||
for fname in s:netrwmarkfilelist_{curbufnr}
|
||||
if g:netrw_keepdir
|
||||
" Jul 19, 2022: fixing file move when g:netrw_keepdir is 1
|
||||
let fname= b:netrw_curdir."/".fname
|
||||
let fname= netrw#fs#ComposePath(b:netrw_curdir, fname)
|
||||
endif
|
||||
if !g:netrw_cygwin && has("win32")
|
||||
let fname= substitute(fname,'/','\\','g')
|
||||
endif
|
||||
let ret= system(movecmd.g:netrw_localmovecmdopt." ".netrw#os#Escape(fname)." ".tgt)
|
||||
call add(args, netrw#os#Escape(fname))
|
||||
endfor
|
||||
|
||||
" enforce noshellslash for system calls
|
||||
if exists('+shellslash') && &shellslash
|
||||
let tgt = substitute(tgt, '/', '\', 'g')
|
||||
call map(args, "substitute(v:val, '/', '\\', 'g')")
|
||||
endif
|
||||
|
||||
for fname in args
|
||||
let shell_cmd = printf("%s %s %s %s", movecmd, movecmdargs, fname, tgt)
|
||||
let ret= system(shell_cmd)
|
||||
if v:shell_error != 0
|
||||
if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
|
||||
call netrw#msg#Notify('ERROR', printf("move failed; perhaps due to vim's current directory<%s> not matching netrw's (%s) (see :help netrw-cd)", getcwd(), b:netrw_curdir))
|
||||
@@ -5912,7 +5914,7 @@ function s:NetrwMarkFileMove(islocal)
|
||||
|
||||
elseif a:islocal && !s:netrwmftgt_islocal
|
||||
" move: local -> remote
|
||||
let mflist= s:netrwmarkfilelist_{bufnr("%")}
|
||||
let mflist= s:netrwmarkfilelist_{curbufnr}
|
||||
NetrwKeepj call s:NetrwMarkFileCopy(a:islocal)
|
||||
for fname in mflist
|
||||
let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','')
|
||||
@@ -5922,7 +5924,7 @@ function s:NetrwMarkFileMove(islocal)
|
||||
|
||||
elseif !a:islocal && s:netrwmftgt_islocal
|
||||
" move: remote -> local
|
||||
let mflist= s:netrwmarkfilelist_{bufnr("%")}
|
||||
let mflist= s:netrwmarkfilelist_{curbufnr}
|
||||
NetrwKeepj call s:NetrwMarkFileCopy(a:islocal)
|
||||
for fname in mflist
|
||||
let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','')
|
||||
@@ -5932,7 +5934,7 @@ function s:NetrwMarkFileMove(islocal)
|
||||
|
||||
elseif !a:islocal && !s:netrwmftgt_islocal
|
||||
" move: remote -> remote
|
||||
let mflist= s:netrwmarkfilelist_{bufnr("%")}
|
||||
let mflist= s:netrwmarkfilelist_{curbufnr}
|
||||
NetrwKeepj call s:NetrwMarkFileCopy(a:islocal)
|
||||
for fname in mflist
|
||||
let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','')
|
||||
@@ -8973,15 +8975,15 @@ endfunction
|
||||
" s:MakeSshCmd: transforms input command using USEPORT HOSTNAME into {{{2
|
||||
" a correct command for use with a system() call
|
||||
function s:MakeSshCmd(sshcmd)
|
||||
if s:user == ""
|
||||
let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',s:machine,'')
|
||||
else
|
||||
let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',s:user."@".s:machine,'')
|
||||
let machine = shellescape(s:machine, 1)
|
||||
if s:user != ''
|
||||
let machine = shellescape(s:user, 1).'@'.machine
|
||||
endif
|
||||
let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',machine,'')
|
||||
if exists("g:netrw_port") && g:netrw_port != ""
|
||||
let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.g:netrw_port,'')
|
||||
let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.shellescape(g:netrw_port,1),'')
|
||||
elseif exists("s:port") && s:port != ""
|
||||
let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.s:port,'')
|
||||
let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.shellescape(s:port,1),'')
|
||||
else
|
||||
let sshcmd= substitute(sshcmd,"USEPORT ",'','')
|
||||
endif
|
||||
|
||||
@@ -24,6 +24,7 @@ endfunction
|
||||
" netrw#fs#ComposePath: Appends a new part to a path taking different systems into consideration {{{
|
||||
|
||||
function! netrw#fs#ComposePath(base, subdir)
|
||||
const slash = !exists('+shellslash') || &shellslash ? '/' : '\'
|
||||
if has('amiga')
|
||||
let ec = a:base[strdisplaywidth(a:base)-1]
|
||||
if ec != '/' && ec != ':'
|
||||
@@ -40,7 +41,7 @@ function! netrw#fs#ComposePath(base, subdir)
|
||||
if a:base =~ '[/\\]$'
|
||||
let ret = a:base . a:subdir
|
||||
else
|
||||
let ret = a:base . '/' . a:subdir
|
||||
let ret = a:base . slash . a:subdir
|
||||
endif
|
||||
|
||||
elseif a:base =~ '^\a\{3,}://'
|
||||
|
||||
@@ -27,7 +27,7 @@ RUN_VIMTEST = VIMRUNTIME=$(VIMRUNTIME) $(VALGRIND) $(ENVVARS) ../$(VIMPROG) -f $
|
||||
# DEBUGLOG = --log testlog
|
||||
|
||||
# All initial phony targets; these names may clash with file types.
|
||||
phonies = clean test testclean
|
||||
phonies = clean executables test testclean
|
||||
.PHONY: $(phonies)
|
||||
|
||||
# Run the tests that didn't run yet or failed previously.
|
||||
@@ -53,6 +53,9 @@ testdir/testdeps.mk:
|
||||
|
||||
-include testdir/testdeps.mk
|
||||
|
||||
executables:
|
||||
@! find testdir/input -type f -perm /a+x -exec echo Executable syntax test found: \{\} \; | grep :
|
||||
|
||||
clean testclean:
|
||||
rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter testdir/testdeps.mk
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
" License: This file can be redistribued and/or modified under the same terms
|
||||
" as Vim itself.
|
||||
" Last Change: 2024 Nov 24
|
||||
" 2026 Feb 19 by Vim project: Add SSLVHostSNIPolicy
|
||||
" Notes: Last synced with apache-2.4.62, version 1.x is no longer supported
|
||||
" TODO: see particular FIXME's scattered through the file
|
||||
" make it really linewise?
|
||||
@@ -163,7 +164,7 @@ syn keyword apacheOption inherit
|
||||
syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase
|
||||
syn keyword apacheDeclaration LoadFile LoadModule
|
||||
syn keyword apacheDeclaration CheckSpelling CheckCaseOnly
|
||||
syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCompression SSLCryptoDevice SSLEngine SSLFIPS SSLHonorCipherOrder SSLInsecureRenegotiation SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCheckPeerCN SSLProxyCheckPeerExpire SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateChainFile SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRenegBufferSize SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLSessionTicketKeyFile SSLSessionTickets SSLStrictSNIVHostCheck SSLUserName SSLVerifyClient SSLVerifyDepth
|
||||
syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCompression SSLCryptoDevice SSLEngine SSLFIPS SSLHonorCipherOrder SSLInsecureRenegotiation SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCheckPeerCN SSLProxyCheckPeerExpire SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateChainFile SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRenegBufferSize SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLSessionTicketKeyFile SSLSessionTickets SSLStrictSNIVHostCheck SSLUserName SSLVerifyClient SSLVerifyDepth SSLVHostSNIPolicy
|
||||
syn match apacheOption "[+-]\?\<\(StdEnvVars\|CompatEnvVars\|ExportCertData\|FakeBasicAuth\|StrictRequire\|OptRenegotiate\)\>"
|
||||
syn keyword apacheOption builtin sem
|
||||
syn match apacheOption "\(file\|exec\|egd\|dbm\|shm\):"
|
||||
|
||||
28
runtime/syntax/env.vim
Normal file
28
runtime/syntax/env.vim
Normal file
@@ -0,0 +1,28 @@
|
||||
" Vim syntax file
|
||||
" Language: env
|
||||
" Maintainer: DuckAfire <duckafire@gmail.com>
|
||||
" Last Change: 2026 Jan 27
|
||||
" Version: 2
|
||||
" Changelog:
|
||||
" 0. Create syntax file.
|
||||
" 1. Remove unused variable (g:main_syntax).
|
||||
" 2. Apply changes required by github@dkearns
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match envField nextgroup=envValue /^\h\%(\w\|\.\)*/
|
||||
syn region envValue matchgroup=Operator start=/=/ end=/$/
|
||||
syn match envComment contains=envTodo,envTitles /^#.*$/
|
||||
syn keyword envTodo contained CAUTION NOTE TODO WARN WARNING
|
||||
syn match envTitle contained /^\s*#\s*\zs[A-Z0-9][A-Z0-9 ]*:/
|
||||
|
||||
hi def link envField Identifier
|
||||
hi def link envValue String
|
||||
hi def link envComment Comment
|
||||
hi def link envTodo Todo
|
||||
hi def link envTitle PreProc
|
||||
|
||||
let b:current_syntax = "env"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: fstab file
|
||||
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
|
||||
" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
|
||||
" Last Change: 2025 Aug 21
|
||||
" Version: 1.7.0
|
||||
" Last Change: 2026 Feb 14
|
||||
" Version: 1.7.1
|
||||
"
|
||||
" Credits:
|
||||
" David Necas (Yeti) <yeti@physics.muni.cz>
|
||||
@@ -21,6 +21,7 @@
|
||||
"
|
||||
" Changelog:
|
||||
" - 2025 Aug 21 added support for mtab
|
||||
" - 2026 Feb 14 added cgroup2 to device types
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -38,7 +39,7 @@ syn match fsOperator /[,=:#]/
|
||||
" Device
|
||||
syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError
|
||||
syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained
|
||||
syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs tracefs overlay
|
||||
syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs tracefs overlay cgroup2
|
||||
syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel
|
||||
syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID
|
||||
syn keyword fsDeviceKeyword contained PARTLABEL nextgroup=fsDevicePARTLABEL
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
|
||||
" Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2026 Jan 30
|
||||
" Last Change: 2026 Feb 20
|
||||
" Former Maintainer: Charles E. Campbell
|
||||
|
||||
" DO NOT CHANGE DIRECTLY.
|
||||
@@ -1784,17 +1784,32 @@ Vim9 syn match vimWincmd "\s\=\<winc\%[md]\>\ze\s\+=\s*\%([#|]\|$\)" skipwhite n
|
||||
|
||||
" Syntax: {{{2
|
||||
"=======
|
||||
syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
|
||||
syn region vimGroupList contained start=/^\s*["#]\\ \|^\s*\\\|[^[:space:],]\+\s*,/ skip=/\s*\n\s*\%(\\\|["#]\\ \)\|^\s*\%(\\\|["#]\\ \)/ end=/[^[:space:],]\s*$\|[^[:space:],]\ze\s\+\w/ contains=@vimContinue,vimGroupSpecial
|
||||
syn region vimGroupList contained
|
||||
\ start="\S"
|
||||
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
||||
"\ need to consume the whitespace
|
||||
\ end="\s"he=e-1
|
||||
\ end="$"
|
||||
\ contains=@vimGroupListContinue,vimGroupSpecial,vimGroupListContinueComma
|
||||
syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
|
||||
syn match vimGroupListComma contained ","
|
||||
syn match vimGroupListContinueComma contained "\s\+,\s*\|,\s\+" contains=vimGroupListComma
|
||||
syn match vimGroupListContinueComma contained "\s*,\s*\%(\n\s*\%(\\\s\+\|["#]\\ .*\)\)\+" contains=@vimGroupListContinue,vimGroupListComma
|
||||
|
||||
syn match vimGroupListEquals contained "=" skipwhite skipnl nextgroup=vimGroupListContinueStart,vimGroupList
|
||||
" the first continuation line does not terminate the list at whitepace after \
|
||||
syn match vimGroupListContinueStart contained "^\%(\s*["#]\\ .*\n\)*\s*\\\s\+" skipwhite nextgroup=vimGroupList contains=@vimGroupListContinue transparent
|
||||
|
||||
syn match vimGroupListContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimGroupListContinue,vimGroupListContinueComma contains=vimWhitespace
|
||||
syn match vimGroupListContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimGroupListContinue contains=vimWhitespace
|
||||
syn cluster vimGroupListContinue contains=vimGroupListContinue,vimGroupListContinueComment
|
||||
|
||||
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
|
||||
syn match vimSynError contained "\i\+"
|
||||
syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
|
||||
syn match vimSynError contained "\i\+"
|
||||
endif
|
||||
syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimSynContains contained "\<contains\>" skipwhite nextgroup=vimGroupListEquals
|
||||
syn match vimSynContainedin contained "\<containedin\>" skipwhite nextgroup=vimGroupListEquals
|
||||
syn match vimSynNextgroup contained "\<nextgroup\>" skipwhite nextgroup=vimGroupListEquals
|
||||
if has("conceal")
|
||||
" no whitespace allowed after '='
|
||||
syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
|
||||
@@ -1812,13 +1827,13 @@ endif
|
||||
syn keyword vimSynCase contained ignore match
|
||||
|
||||
" Syntax: clear {{{2
|
||||
syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
|
||||
syn keyword vimSynType contained clear
|
||||
|
||||
" Syntax: cluster {{{2
|
||||
syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
|
||||
syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
|
||||
syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimGroupAdd contained "\<add\>" skipwhite nextgroup=vimGroupListEquals
|
||||
syn match vimGroupRem contained "\<remove\>" skipwhite nextgroup=vimGroupListEquals
|
||||
|
||||
" Syntax: conceal {{{2
|
||||
syn match vimSynType contained "\<conceal\>" skipwhite nextgroup=vimSynConceal,vimSynConcealError
|
||||
@@ -1841,16 +1856,17 @@ syn match vimSynIskeyword contained "\S\+" contains=vimSynIskeywordSep
|
||||
syn match vimSynIskeywordSep contained ","
|
||||
|
||||
" Syntax: include {{{2
|
||||
syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
|
||||
syn keyword vimSynType contained include skipwhite nextgroup=vimSynIncludeCluster
|
||||
syn match vimSynIncludeCluster contained "@[_a-zA-Z0-9]\+\>"
|
||||
|
||||
" Syntax: keyword {{{2
|
||||
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
|
||||
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynContainedin
|
||||
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
|
||||
syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
|
||||
syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
|
||||
|
||||
" Syntax: match {{{2
|
||||
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
|
||||
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
|
||||
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
|
||||
syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
|
||||
syn match vimSynMtchOpt contained "\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
|
||||
@@ -1860,9 +1876,9 @@ syn keyword vimSynType contained enable list manual off on reset
|
||||
|
||||
" Syntax: region {{{2
|
||||
syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
|
||||
syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
|
||||
syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
|
||||
syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
|
||||
syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
|
||||
syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
|
||||
syn match vimSynRegOpt contained "\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
|
||||
syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
|
||||
syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
|
||||
@@ -2340,7 +2356,7 @@ Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\%(\\\|#\\ \)
|
||||
VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\%(\\\|"\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle extend
|
||||
|
||||
syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
|
||||
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
|
||||
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\%([A-DF-Z]\w*\|E\%(\d\{1,4}\>\)\@!\w*\)\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
|
||||
|
||||
" allowed anywhere in the file
|
||||
if !s:vim9script
|
||||
@@ -2520,11 +2536,14 @@ if !exists("skip_vim_syntax_inits")
|
||||
hi def link vimGrep vimCommand
|
||||
hi def link vimGrepadd vimCommand
|
||||
hi def link vimGrepBang vimBang
|
||||
hi def link vimGroup Type
|
||||
hi def link vimGroupAdd vimSynOption
|
||||
hi def link vimGroupListEquals vimSynOption
|
||||
hi def link vimGroupListContinue vimContinue
|
||||
hi def link vimGroupListContinueComment vimContinueComment
|
||||
hi def link vimGroupName Normal
|
||||
hi def link vimGroupRem vimSynOption
|
||||
hi def link vimGroupSpecial Special
|
||||
hi def link vimGroup Type
|
||||
hi def link vimHelp vimCommand
|
||||
hi def link vimHelpBang vimBang
|
||||
hi def link vimHelpgrep vimCommand
|
||||
@@ -2689,7 +2708,7 @@ if !exists("skip_vim_syntax_inits")
|
||||
hi def link vimSynFoldlevel Type
|
||||
hi def link vimSynIskeyword Type
|
||||
hi def link vimSynIskeywordSep Delimiter
|
||||
hi def link vimSynKeyContainedin vimSynContains
|
||||
hi def link vimSynContainedin vimSynContains
|
||||
hi def link vimSynKeyOpt vimSynOption
|
||||
hi def link vimSynMtchGrp vimSynOption
|
||||
hi def link vimSynMtchOpt vimSynOption
|
||||
|
||||
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim syntax file.
|
||||
# Language: Hare
|
||||
# Maintainer: Amelia Clarke <selene@perilune.dev>
|
||||
# Last Change: 2026 Feb 01
|
||||
# Last Change: 2026 Feb 15
|
||||
# Upstream: https://git.sr.ht/~sircmpwn/hare.vim
|
||||
|
||||
if exists('b:current_syntax')
|
||||
@@ -101,10 +101,10 @@ syn match hareTypedefEquals '=' contained nextgroup=@hareType skipempty skipwhit
|
||||
|
||||
# Attributes {{{3
|
||||
syn keyword hareAttribute @init @fini @test
|
||||
syn keyword hareAttribute @offset nextgroup=hareAttributeParens skipempty skipwhite
|
||||
syn keyword hareAttribute @packed
|
||||
syn keyword hareAttribute @symbol nextgroup=hareAttributeParens skipempty skipwhite
|
||||
syn keyword hareAttribute @threadlocal
|
||||
syn keyword hareAttribute @undefined
|
||||
|
||||
# Match the parens following attributes.
|
||||
syn region hareAttributeParens matchgroup=hareParen start='(' end=')' contained contains=TOP transparent
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
" Chris Ruprecht <chrisSPAXY@ruprecht.org>
|
||||
" Mikhail Kuperblum <mikhailSPAXY@whasup.com>
|
||||
" John Florian <jflorianSPAXY@voyager.net>
|
||||
" Last Change: Jul 23 2024
|
||||
" Last Change: Feb 18 2026
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -22,7 +22,7 @@ set cpo&vim
|
||||
setlocal iskeyword=@,48-57,_,-,!,#,$,%
|
||||
|
||||
" The Progress editor doesn't cope with tabs very well.
|
||||
set expandtab
|
||||
setlocal expandtab
|
||||
|
||||
syn case ignore
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
" 2025 Sep 23 simplify ksh logic, update sh statements #18355
|
||||
" 2026 Jan 15 highlight command switches that contain a digit
|
||||
" 2026 Feb 11 improve support for KornShell function names and variables
|
||||
" 2026 Feb 15 improve comment handling #19414
|
||||
" }}}
|
||||
" Version: 208
|
||||
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
|
||||
@@ -452,7 +453,7 @@ endif
|
||||
"======
|
||||
syn match shWrapLineOperator "\\$"
|
||||
syn region shCommandSubBQ start="`" skip="\\\\\|\\." end="`" contains=shBQComment,@shCommandSubList
|
||||
syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment
|
||||
syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.'
|
||||
|
||||
" $() and $(()): {{{1
|
||||
" $(..) is not supported by sh (Bourne shell). However, apparently
|
||||
|
||||
@@ -3,13 +3,15 @@
|
||||
" Author: David Necas (Yeti)
|
||||
" Maintainer: Jakub Jelen <jakuje at gmail dot com>
|
||||
" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Contributor: Karsten Hopp <karsten@redhat.com>
|
||||
" Contributor: Dean, Adam Kenneth <adam.ken.dean@hpe.com>
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Karsten Hopp <karsten@redhat.com>
|
||||
" Dean, Adam Kenneth <adam.ken.dean@hpe.com>
|
||||
" Last Change: 2022 Nov 10
|
||||
" Last Update: 2026 Feb 24
|
||||
" Added RemoteCommand from pull request #4809
|
||||
" Included additional keywords from Martin.
|
||||
" Included PR #5753
|
||||
" Update missing keywords #19488
|
||||
" SSH Version: 8.5p1
|
||||
"
|
||||
|
||||
@@ -221,6 +223,7 @@ syn keyword sshconfigKeyword ProxyUseFdpass
|
||||
syn keyword sshconfigKeyword PubkeyAcceptedAlgorithms
|
||||
syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes
|
||||
syn keyword sshconfigKeyword PubkeyAuthentication
|
||||
syn keyword sshconfigKeyword RefuseConnection
|
||||
syn keyword sshconfigKeyword RekeyLimit
|
||||
syn keyword sshconfigKeyword RemoteCommand
|
||||
syn keyword sshconfigKeyword RemoteForward
|
||||
@@ -248,7 +251,9 @@ syn keyword sshconfigKeyword UseBlacklistedKeys
|
||||
syn keyword sshconfigKeyword User
|
||||
syn keyword sshconfigKeyword UserKnownHostsFile
|
||||
syn keyword sshconfigKeyword VerifyHostKeyDNS
|
||||
syn keyword sshconfigKeyword VersionAddendum
|
||||
syn keyword sshconfigKeyword VisualHostKey
|
||||
syn keyword sshconfigKeyword WarnWeakCrypto
|
||||
syn keyword sshconfigKeyword XAuthLocation
|
||||
|
||||
" Deprecated/ignored/remove/unsupported keywords
|
||||
|
||||
@@ -146,6 +146,9 @@ is covered by the test. You can follow these steps:
|
||||
- Vim setup file: syntax/testdir/input/setup/{name}.vim (if any)
|
||||
- test input file: syntax/testdir/input/{name}.{ext}
|
||||
- test dump files: syntax/testdir/dumps/{name}_*.dump
|
||||
Since no input file is ever executed when you run the tests, review and
|
||||
revoke each previously granted permission to execute such a file before
|
||||
publishing it; e.g. "chmod -x input/java.java; git add input/java.java".
|
||||
|
||||
As an extra check you can temporarily put back the old syntax plugin and
|
||||
verify that the tests fail. Then you know your changes are covered by the
|
||||
|
||||
20
runtime/syntax/testdir/dumps/sh_15_00.dump
Normal file
20
runtime/syntax/testdir/dumps/sh_15_00.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
>#+0#0000e05#ffffff0|!|/|b|i|n|/|b|a|s|h| +0#0000000&@63
|
||||
|#+0#0000e05&| |I|s@1|u|e| |#|1|9|0|5|3| |(|s|h| |s|y|n|t|a|x|:| |e|s|c|a|p|e|d| |c|h|a|r|a|c|t|e|r|s| |f|o|l@1|o|w|e|d| |b|y| |#| |i|n| |d|o|u|b|l|e| |q|u|o|t|e
|
||||
|s|)| +0#0000000&@72
|
||||
@75
|
||||
|C+0#00e0e07&|L|E|A|N|U|R|L|=+0#0000000&|'+0#af5f00255&|h+0#e000002&|t@1|p|:|/@1|l|o|c|a|l|h|o|s|t|:|8|0|7@1|/|t|e|s|t|'+0#af5f00255&| +0#0000000&@37
|
||||
@75
|
||||
|F+0#00e0e07&|I|L|E|N|A|M|E|=+0#0000000&|$+0#e000e06&|(|s+0#af5f00255&|e|d| +0#e000e06&|-|r| |-|e| |"+0#af5f00255&|s+0#e000002&|#|[|:|/|]|+|#|\+0#e000e06&|.|#+0#e000002&|g|"+0#af5f00255&| +0#e000e06&|-|e| |"+0#af5f00255&|s+0#e000002&|#|[|^|a|-|z|A|-|Z|0|-|9|\+0#e000e06&|.|_+0#e000002&|]|*|#@1|g|"+0#af5f00255&| +0#e000e06&|<+0#af5f00255&@2|$+0#e000e06&|{|C|L|E|A|N|U|R
|
||||
|L|}|)| +0#0000000&@71
|
||||
|F+0#00e0e07&|I|L|E|N|A|M|E|=+0#0000000&|$+0#e000e06&|(|s+0#af5f00255&|e|d| +0#e000e06&|-|r| |-|e| |'+0#af5f00255&|s+0#e000002&|#|[|:|/|]|+|#|\|.|#|g|'+0#af5f00255&| +0#e000e06&|-|e| |'+0#af5f00255&|s+0#e000002&|#|[|^|a|-|z|A|-|Z|0|-|9|\|.|_|]|*|#@1|g|'+0#af5f00255&| +0#e000e06&|<+0#af5f00255&@2|$+0#e000e06&|{|C|L|E|A|N|U|R
|
||||
|L|}|)| +0#0000000&@71
|
||||
|H+0#00e0e07&|D|R|F|I|L|E|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|F|I|L|E|N|A|M|E|}|.+0#e000002&|h|d|r|"+0#af5f00255&| +0#0000000&@49
|
||||
@75
|
||||
|:| |"+0#af5f00255&|\+0#e000e06&@1|#+0#e000002&| |n|o|t| |a| |c|o|m@1|e|n|t|"+0#af5f00255&| +0#0000000&@53
|
||||
|#+0#0000e05&| |\@1|"| |a| |c|o|m@1|e|n|t| +0#0000000&@59
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&@1|#+0#e000002&|"+0#af5f00255&| +0#0000000&@64
|
||||
|:| @73
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|i+0#0000000&|s|_|b|a|s|h|:| |1|,| @45|1|,|1| @10|A|l@1|
|
||||
@@ -17,4 +17,4 @@
|
||||
@75
|
||||
|#+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|e|n|t|s| +0#0000000&@54
|
||||
@75
|
||||
@57|1|9|,|0|-|1| @7|1|7|%|
|
||||
@57|1|9|,|0|-|1| @7|1|6|%|
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
@75
|
||||
|#+0#0000e05&| |L|i|n|e|-|c|o|n|t|i|n|u|a|t|i|o|n| |c|o|m@1|e|n|t|s| +0#0000000&@46
|
||||
@75
|
||||
@57|3|7|,|1| @9|4|2|%|
|
||||
@57|3|7|,|1| @9|3|8|%|
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
@2|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@63
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@63
|
||||
@75
|
||||
@57|5@1|,|7| @9|6|7|%|
|
||||
@57|5@1|,|7| @9|6|1|%|
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
|#+0#0000e05&| |h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|v|i|m|/|v|i|m|/|p|u|l@1|/|1|4|9|7|5|#|i|s@1|u|e|c|o|m@1|e|n|t|-|2|8|3|2|6|4|3|1@1|5| +0#0000000&@11
|
||||
@75
|
||||
|v+0#af5f00255&|a|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&| +0#0000000&@65
|
||||
@57|7|3|,|3| @9|9|1|%|
|
||||
@57|7|3|,|3| @9|8|3|%|
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
|b+0#00e0e07&|:| +0#0000000&|0+0#e000002&|,+0#0000000&| @69
|
||||
>}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| +0#0000000&|P+0#e000e06&|R|:| +0#0000e05&|#|1|9|3|9|0| +0#0000000&@62
|
||||
|#+0#0000e05&| |h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|v|i|m|/|v|i|m|/|p|u|l@1|/|1|9|3|9|0|#|i|s@1|u|e|-|3|9|3@1|7|5@1|8|4|6| +0#0000000&@18
|
||||
@75
|
||||
|#+0#0000e05&| |E|1|2|3|4|:| |s|h|o|u|l|d| |n|o|t| |h|a|v|e| |v|i|m|9|C|o|m@1|e|n|t|T|i|t|l|e| |o|n| |'|E|1|2|3|4|:|'| +0#0000000&@21
|
||||
|#+0#0000e05&| +0#0000000&|E+0#e000e06&|R@1|3|4|:| +0#0000e05&|s|h|o|u|l|d| |h|a|v|e| |v|i|m|9|C|o|m@1|e|n|t|T|i|t|l|e| |o|n| |'|E|R@1|3|4|:|'| +0#0000000&@25
|
||||
@75
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|9|1|,|1| @9|B|o|t|
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
@75
|
||||
|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
|
||||
| +0#0000e05&@1|\| |c|o|n|t|i|n|u|i|n|g| |c|o|m@1|e|n|t| +0#0000000&@52
|
||||
@57|1|9|,|3| @9|2|3|%|
|
||||
@57|1|9|,|3| @9|2|0|%|
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
@75
|
||||
|:|F|o@1| @70
|
||||
@6|"+0#0000e05&|\| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |c|o|m@1|e|n|t| +0#0000000&@40
|
||||
@57|3|7|,|3| @9|5|6|%|
|
||||
@57|3|7|,|3| @9|4|8|%|
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
|"+0#0000e05&| |T|h|i|s| |i|s| |w|h|a|t| |w|e| |c|a|l@1| |"| |b|l|a|h| +0#0000000&@45
|
||||
@75
|
||||
@75
|
||||
@57|5@1|,|0|-|1| @7|8|9|%|
|
||||
@57|5@1|,|0|-|1| @7|7|6|%|
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
@2|#+0#0000e05&| +0#0000000&|T+0#e000e06&|i|t|l|e|:| +0#0000e05&|.@2| +0#0000000&@60
|
||||
>e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| +0#0000000&|P+0#e000e06&|R|:| +0#0000e05&|#|1|9|3|9|0| +0#0000000&@62
|
||||
|"+0#0000e05&| |h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|v|i|m|/|v|i|m|/|p|u|l@1|/|1|9|3|9|0|#|i|s@1|u|e|-|3|9|3@1|7|5@1|8|4|6| +0#0000000&@18
|
||||
@75
|
||||
|d+0#af5f00255&|e|f| +0#0000000&|C|o|m@1|e|n|t|T|i|t|l|e|2|(+0#e000e06&|)| +0#0000000&@55
|
||||
@2|#+0#0000e05&| |E|1|2|3|4|:| |s|h|o|u|l|d| |n|o|t| |h|a|v|e| |v|i|m|9|C|o|m@1|e|n|t|T|i|t|l|e| |o|n| |'|E|1|2|3|4|:|'| +0#0000000&@19
|
||||
@2|#+0#0000e05&| +0#0000000&|E+0#e000e06&|R@1|3|4|:| +0#0000e05&|s|h|o|u|l|d| |h|a|v|e| |v|i|m|9|C|o|m@1|e|n|t|T|i|t|l|e| |o|n| |'|E|R@1|3|4|:|'| +0#0000000&@23
|
||||
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
|
||||
@75
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|7|3|,|1| @9|B|o|t|
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
>"+0#0000e05#ffffff0| |V|i|m| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d| +0#0000000&@53
|
||||
|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|G|r|o|u|p|L|i|s|t| |T|o|d|o| +0#0000000&@32
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|c|a|s|e| +0#0000000&@63
|
||||
@@ -7,14 +8,13 @@
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&@57
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e| +0#0000000&|i+0#00e0003&|g|n|o|r|e| +0#0000000&@56
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n| |c|l|e|a|r| +0#0000000&@62
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|@|t|e|s|t|C|l|u|s|t|e|r| @49
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|t|e|s|t|G|r|o|u|p| @52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|@|t|e|s|t|C|l|u|s|t|e|r| |t|e|s|t|G|r|o|u|p| @39
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|t|e|s|t|G|r|o|u|p| |@|t|e|s|t|C|l|u|s|t|e|r| @39
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|c|o|n|c|e|a|l| +0#0000000&@60
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&@60
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|n| +0#0000000&@57
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|f|o|l|d|l|e|v|e|l| +0#0000000&@58
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&@58
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52
|
||||
@57|1|,|1| @10|T|o|p|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|t|e|s|t|G|r|o|u|p| @52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|@|t|e|s|t|C|l|u|s|t|e|r| |t|e|s|t|G|r|o|u|p| @39
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|t|e|s|t|G|r|o|u|p| |@|t|e|s|t|C|l|u|s|t|e|r| @39
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|c|o|n|c|e|a|l| +0#0000000&@60
|
||||
> @74
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&@60
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|n| +0#0000000&@57
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|f|o|l|d|l|e|v|e|l| +0#0000000&@58
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&@58
|
||||
>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|m+0#00e0003&|i|n|i|m|u|m| +0#0000000&@50
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|i|s|k|e|y|w|o|r|d| +0#0000000&@58
|
||||
|"+0#0000e05&| |:|s|y|n|-|i|n|c|l|u|d|e| +0#0000000&@60
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&@58
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&|@+0#00e0003&|,+0#e000e06&|4+0#00e0003&|8|-|5|7|,+0#e000e06&|1+0#00e0003&|9|2|-|2|5@1|,+0#e000e06&|$+0#00e0003&|,+0#e000e06&|_+0#00e0003&| +0#0000000&@38
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|l|i|s|t| +0#0000000&@63
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&@63
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|F|o@1| @59
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|@|B|a|r| @58
|
||||
@57|1|9|,|1| @10|5|%|
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|n|c|l|u|d|e| +0#0000000&|@|F|o@1| |<+0#00e0003&|s+0#0000000&|f|i|l|e|>+0#00e0003&|:+0#0000000&|p+0#af5f00255&|:+0#0000000&|h+0#af5f00255&|/+0#0000000&|f|o@1|.|v|i|m| @35
|
||||
@57|1|9|,|0|-|1| @8|3|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|@|B|a|r| @58
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|i+0#00e0003&|n|c|l|u|d|e| +0#0000000&|@|F|o@1| |<+0#00e0003&|s+0#0000000&|f|i|l|e|>+0#00e0003&|:+0#0000000&|p+0#af5f00255&|:+0#0000000&|h+0#af5f00255&|/+0#0000000&|f|o@1|.|v|i|m| @35
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|n|c|l|u|d|e| +0#0000000&|<+0#00e0003&|s+0#0000000&|f|i|l|e|>+0#00e0003&|:+0#0000000&|p+0#af5f00255&|:+0#0000000&|h+0#af5f00255&|/+0#0000000&|f|o@1|.|v|i|m| @40
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|i|s|k|e|y|w|o|r|d| +0#0000000&@58
|
||||
@75
|
||||
>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&@58
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&|@+0#00e0003&|,+0#e000e06&|4+0#00e0003&|8|-|5|7|,+0#e000e06&|1+0#00e0003&|9|2|-|2|5@1|,+0#e000e06&|$+0#00e0003&|,+0#e000e06&|_+0#00e0003&| +0#0000000&@38
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|l|i|s|t| +0#0000000&@63
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&@63
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|F|o@1| @59
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|@|B|a|r| @58
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|p|e|l@1| +0#0000000&@62
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&@62
|
||||
>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|t+0#00e0003&|o|p|l|e|v|e|l| +0#0000000&@53
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|n+0#00e0003&|o|t|o|p|l|e|v|e|l| +0#0000000&@51
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| +0#0000000&@54
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c@1|o|m@1|e|n|t| +0#0000000&@54
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&@54
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| @50
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n
|
||||
|"| +0#0000000&@73
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| |m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t
|
||||
@1|e|r|n|"| +0#0000000&@69
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53
|
||||
@57|3|7|,|1| @9|1|2|%|
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|t+0#00e0003&|o|p|l|e|v|e|l| +0#0000000&@53
|
||||
@57|3|7|,|1| @10|8|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|t+0#00e0003&|o|p|l|e|v|e|l| +0#0000000&@53
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|n+0#00e0003&|o|t|o|p|l|e|v|e|l| +0#0000000&@51
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| +0#0000000&@54
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c@1|o|m@1|e|n|t| +0#0000000&@54
|
||||
> @74
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&@54
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| @50
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n
|
||||
|"| +0#0000000&@73
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| |m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t
|
||||
@1|e|r|n|"| +0#0000000&@69
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|f+0#00e0003&|r|o|m|s|t|a|r|t| +0#0000000&@53
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|f+0#00e0003&|r|o|m|s|t|a|r|t| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r
|
||||
|n|"| +0#0000000&@72
|
||||
> @74
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|b|r|e|a|k|s| +0#0000000&@52
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@50
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|c|o|n|t| +0#0000000&@54
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@44
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@7
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|(|m|i|n|||m|a|x|)|l|i|n|e|s| +0#0000000&@48
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39
|
||||
@57|5|2|,|0|-|1| @7|1|8|%|
|
||||
@57|5@1|,|0|-|1| @7|1|3|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39
|
||||
| +0&#ffffff0@74
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|b|r|e|a|k|s| +0#0000000&@52
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@50
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7
|
||||
> @74
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|c|o|n|t| +0#0000000&@54
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@44
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@7
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|(|m|i|n|||m|a|x|)|l|i|n|e|s| +0#0000000&@48
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7
|
||||
|"+0#0000e05&| |o|b|s|o|l|e|t|e| +0#0000000&@64
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@54
|
||||
@75
|
||||
>"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|y|n|c| |p|a|t@1|e|r|n|s| +0#0000000&@49
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|t|e|s|t|F|o@1| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|t|e|s|t|B|a|r| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|N|O|N|E| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|N|O|N|E| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|k|i|p| |g|r|o|u|p|s| +0#0000000&@51
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@40
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e
|
||||
|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@63
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57
|
||||
@57|7|0|,|1| @9|2|5|%|
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|y|n|c| |p|a|t@1|e|r|n|s| +0#0000000&@49
|
||||
@57|7|0|,|0|-|1| @7|1|7|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57
|
||||
|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c| |s|y|n|c| |p|a|t@1|e|r|n|s| +0#0000000&@49
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|t|e|s|t|F|o@1| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|t|e|s|t|B|a|r| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|N|O|N|E| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17
|
||||
>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|N|O|N|E| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|k|i|p| |g|r|o|u|p|s| +0#0000000&@51
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@40
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e
|
||||
|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@63
|
||||
@75
|
||||
|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@57
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|F|o@1| @53
|
||||
@75
|
||||
>"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|r|e| |n|o|t| |e|x|p|l|i|c|i|t|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |:|s|y|n|t|a|x|,| |s|e@1| |:|h|e|l|p| |:|c|o|m@1|e|n|t
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@20
|
||||
|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s| |n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| |k|e|y|w|o|r|d| |c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a
|
||||
|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @43
|
||||
@75
|
||||
|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@57|8|7|,|1| @9|3|2|%|
|
||||
|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|r|e| |n|o|t| |e|x|p|l|i|c|i|t|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |:|s|y|n|t|a|x|,| |s|e@1| |:|h|e|l|p| |:|c|o|m@1|e|n|t
|
||||
| +0#0000000&@56|8@1|,|1| @9|2@1|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
|
||||
|"+0#0000e05#ffffff0| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|r|e| |n|o|t| |e|x|p|l|i|c|i|t|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |:|s|y|n|t|a|x|,| |s|e@1| |:|h|e|l|p| |:|c|o|m@1|e|n|t
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@20
|
||||
|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s| |n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| |k|e|y|w|o|r|d| |c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a
|
||||
|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @43
|
||||
> @74
|
||||
|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41
|
||||
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34
|
||||
@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
|
||||
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
|
||||
@57|1|0|4|,|7| @8|3|8|%|
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|r| +0#0000000#ffffff0@41
|
||||
@57|1|0|5|,|0|-|1| @6|2|7|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|r| +0#0000000#ffffff0@41
|
||||
@6|"+0#0000e05&|\| +0#0000000&|n+0#0000e05&|e|x|t|g|r|o|u|p| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000001#ffff4012|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| +0#0000000#ffffff0@34
|
||||
@6|"+0#0000e05&|\| +0#0000000&|t+0#0000e05&|r|a|n|s|p|a|r|e|n|t| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
|
||||
@6>"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
|
||||
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
|
||||
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
|
||||
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
|
||||
> @74
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| @55
|
||||
@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52
|
||||
@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
|
||||
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b| +0#0000000&@53
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
|
||||
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b| +0#0000000&@53
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
|
||||
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b| +0#0000000&@53
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
|
||||
| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@57|1|2@1|,|0|-|1| @6|4|6|%|
|
||||
@75
|
||||
@57|1|2@1|,|7| @8|3|2|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
| +0&#ffffff0@74
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| @55
|
||||
@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52
|
||||
@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65
|
||||
| +0#e000002&@5>"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
|
||||
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b| +0#0000000&@53
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
|
||||
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b| +0#0000000&@53
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
|
||||
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b| +0#0000000&@53
|
||||
| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
|
||||
| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
|
||||
@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41
|
||||
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34
|
||||
@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
@57|1|4|0|,|7| @8|5|3|%|
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@57|1|4|0|,|7| @8|3|7|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|r| +0#0000000#ffffff0@41
|
||||
@6|"+0#0000e05&|\| +0#0000000&|n+0#0000e05&|e|x|t|g|r|o|u|p| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@49
|
||||
@6>\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000001#ffff4012|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| +0#0000000#ffffff0@34
|
||||
@6|"+0#0000e05&|\| +0#0000000&|t+0#0000e05&|r|a|n|s|p|a|r|e|n|t| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28
|
||||
@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| +0#0000000#ffffff0@28
|
||||
@6|"+0#0000e05&|\| +0#0000000&|f+0#0000e05&|o|l|d| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@54
|
||||
@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
|
||||
@6>"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| @53
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45
|
||||
@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
|
||||
@57|1|5|8|,|7| @8|6|0|%|
|
||||
@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@57|1|5|8|,|7| @8|4|2|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6>\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| @53
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45
|
||||
@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&@47
|
||||
@6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@49
|
||||
@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41
|
||||
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34
|
||||
@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@57|1|7|6|,|7| @8|6|7|%|
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
|
||||
@57|1|7|6|,|7| @8|4|7|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
|
||||
@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|r| +0#0000000#ffffff0@41
|
||||
@6|"+0#0000e05&|\| +0#0000000&|n+0#0000e05&|e|x|t|g|r|o|u|p| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000001#ffff4012|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| +0#0000000#ffffff0@34
|
||||
@6|"+0#0000e05&|\| +0#0000000&|t+0#0000e05&|r|a|n|s|p|a|r|e|n|t| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
|
||||
@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28
|
||||
@6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
|
||||
@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
|
||||
@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@57|1|9|4|,|7| @8|7|4|%|
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| +0#0000000#ffffff0@28
|
||||
@57|1|9|4|,|7| @8|5|2|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| +0#0000000#ffffff0@28
|
||||
@6|"+0#0000e05&|\| +0#0000000&|o+0#0000e05&|n|e|l|i|n|e| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
|
||||
@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
|
||||
@6>"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
|
||||
@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
|
||||
@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
|
||||
@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
|
||||
@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3| @13
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55
|
||||
@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
|
||||
@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45
|
||||
@57|2|1|2|,|7| @8|8|1|%|
|
||||
@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
|
||||
@57|2|1|2|,|7| @8|5|7|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
|
||||
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000001#ffff4012|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3| +0#0000000#ffffff0@13
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51
|
||||
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
|
||||
@6>"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55
|
||||
@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000001#ffff4012|e|s|t|A|d@1| +0#0000000#ffffff0@55
|
||||
@6|"+0#0000e05&|\| +0#0000000&|r+0#0000e05&|e|m|o|v|e| +0#0000000&|o+0#0000e05&|p|t|i|o|n| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000001#ffff4012|e|s|t|R|e|m|o|v|e| +0#0000000#ffffff0@49
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|1| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|2| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|3| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|4| |k|e|y|w|o|r|d| @45
|
||||
>s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|5| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|6| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|7| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|8| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|9| |k|e|y|w|o|r|d| @45
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
|
||||
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
|
||||
@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43
|
||||
@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
|
||||
@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
|
||||
@57|2|3|0|,|1| @8|8@1|%|
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|5| |k|e|y|w|o|r|d| @45
|
||||
@57|2|3|0|,|7| @8|6|2|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@5|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r| |s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
|
||||
|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|5| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|6| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|7| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|8| |k|e|y|w|o|r|d| @45
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|9| |k|e|y|w|o|r|d| @45
|
||||
> @74
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
|
||||
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
|
||||
@6|"+0#0000e05&|\| +0#0000000&|a+0#0000e05&| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|s|t|N|e|x|t|0| +0#0000000#ffffff0|,| |t+0#0000001#ffff4012|e|s|t|N|e|x|t|1| +0#0000000#ffffff0|,| @43
|
||||
@6|"+0#0000e05&|\| +0#0000000&|a+0#0000e05&| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|s|t|N|e|x|t|[|2|-|8|]|.|*| +0#0000000#ffffff0|,| @49
|
||||
@6|"+0#0000e05&|\| +0#0000000&|a+0#0000e05&| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|s|t|N|e|x|t|9| +0#0000000#ffffff0|,| |@+0#0000001#ffff4012|t|e|s|t|C|l|u|s|t|e|r| +0#0000000#ffffff0|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
|
||||
@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
|
||||
@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48
|
||||
@75
|
||||
|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41
|
||||
|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d| |n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d|s| +0#0000000&@7
|
||||
@75
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)| +0#0000000&@46
|
||||
@2|"+0#0000e05&| |.@2| +0#0000000&@67
|
||||
@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25
|
||||
@4|"+0#0000e05&| |.@2| +0#0000000&@65
|
||||
@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
|
||||
@2|"+0#0000e05&| |.@2| +0#0000000&@67
|
||||
@57|2|4|8|,|7| @8|9|6|%|
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
|
||||
@57|2|4|8|,|0|-|1| @6|6|7|%|
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@1|"+0#0000e05&| |.@2| +0#0000000&@67
|
||||
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
|
||||
@75
|
||||
|"+0#0000e05&| |e|a|r|l|y| |t|e|r|m|i|n|a|t|i|o|n| |o|f| |v|i|m|S|y|n|R|e|g|i|o|n| +0#0000000&@39
|
||||
@75
|
||||
>s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| @53
|
||||
@6|"+0#0000e05&|\| ||| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |a|r|g|s| |r|e|g|i|o|n| +0#0000000&@35
|
||||
@6|"+0#0000e05&|\| |s|t|a|r|t|=|"|f|o@1|\|||b|a|r|"| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|"| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|"| +0#0000000&@57
|
||||
@75
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|2|6@1|,|1| @8|B|o|t|
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
|
||||
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&|t+0#0000001#ffff4012|e|s|t|N|e|x|t|0|,+0#0000000#ffffff0| @45
|
||||
@6>"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|,| |t+0#0000001#ffff4012|e|s|t|N|e|x|t|1| +0#0000000#ffffff0@55
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&|,+0#0000000&| |t+0#0000001#ffff4012|e|s|t|N|e|x|t|2| +0#0000000#ffffff0@56
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|e|x|t|N|e|x|t|3| +0#0000000#ffffff0@56
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&|,+0#0000001#ffff4012|t|e|x|t|N|e|x|t|4| +0#0000000#ffffff0@57
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|,| |t+0#0000001#ffff4012|e|x|t|N|e|x|t|5| +0#0000000#ffffff0|,| @53
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|6|,+0#0000000#ffffff0| @56
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|7| +0#0000000#ffffff0|,| @55
|
||||
@57|2|6@1|,|7| @8|7|2|%|
|
||||
|
||||
20
runtime/syntax/testdir/dumps/vim_ex_syntax_16.dump
Normal file
20
runtime/syntax/testdir/dumps/vim_ex_syntax_16.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|7| +0#0000000#ffffff0|,| @55
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|8|,+0#0000000#ffffff0| @57
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|9| +0#0000000#ffffff0|,| @56
|
||||
@6>"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|0| +0#0000000#ffffff0@56
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1@1|,+0#0000000#ffffff0| @54
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|2|,|t|e|x|t|N|e|x|t|1|3|,+0#0000000#ffffff0| @44
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|3|,|t|e|x|t|N|e|x|t|1|4| +0#0000000#ffffff0@45
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|5|,|t|e|x|t|N|e|x|t|1|6| +0#0000000#ffffff0@44
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|,| |t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|7| +0#0000000#ffffff0|,| |t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|8| +0#0000000#ffffff0|,| @39
|
||||
@6|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@58
|
||||
@6|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|9|,+0#0000000#ffffff0| |@+0#0000001#ffff4012|t|e|s|t|C|l|u|s|t|e|r| +0#0000000#ffffff0@42
|
||||
@57|2|8|4|,|7| @8|7@1|%|
|
||||
20
runtime/syntax/testdir/dumps/vim_ex_syntax_17.dump
Normal file
20
runtime/syntax/testdir/dumps/vim_ex_syntax_17.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|t+0#0000001#ffff4012|e|x|t|N|e|x|t|1|9|,+0#0000000#ffffff0| |@+0#0000001#ffff4012|t|e|s|t|C|l|u|s|t|e|r| +0#0000000#ffffff0@42
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
|
||||
@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
|
||||
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
|
||||
@6>"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
|
||||
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56
|
||||
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48
|
||||
@75
|
||||
|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41
|
||||
|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d| |n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d|s| +0#0000000&@7
|
||||
@75
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)| +0#0000000&@46
|
||||
@2|"+0#0000e05&| |.@2| +0#0000000&@67
|
||||
@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25
|
||||
@57|3|0|2|,|7| @8|8|2|%|
|
||||
20
runtime/syntax/testdir/dumps/vim_ex_syntax_18.dump
Normal file
20
runtime/syntax/testdir/dumps/vim_ex_syntax_18.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@1|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25
|
||||
@4|"+0#0000e05&| |.@2| +0#0000000&@65
|
||||
@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
|
||||
@2|"+0#0000e05&| |.@2| +0#0000000&@67
|
||||
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
|
||||
> @74
|
||||
@75
|
||||
|"+0#0000e05&| |e|a|r|l|y| |t|e|r|m|i|n|a|t|i|o|n| |o|f| |v|i|m|S|y|n|R|e|g|i|o|n| +0#0000000&@39
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| @53
|
||||
@6|"+0#0000e05&|\| ||| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |a|r|g|s| |r|e|g|i|o|n| +0#0000000&@35
|
||||
@6|"+0#0000e05&|\| |s|t|a|r|t|=|"|f|o@1|\|||b|a|r|"| +0#0000000&@49
|
||||
@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|"| +0#0000000&@53
|
||||
@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|"| +0#0000000&@57
|
||||
@75
|
||||
@75
|
||||
|"+0#0000e05&| |I|s@1|u|e| |#|1|8|4|9|1| |(|T|w|o| |"+0#e000002&|)|"|s+0#0000e05&| |a|r|e| |i|n|c|o|r@1|e|c|t|l|y| |c|o|l|o|r|e|d| |'|v|i|m|O|p|e|r|E|r@1|o|r|'| |i|n| |s|y|n|t|a|x|/|m
|
||||
|a|i|l|.|v|i|m|)| +0#0000000&@66
|
||||
@75
|
||||
@57|3|2|0|,|0|-|1| @6|8|7|%|
|
||||
20
runtime/syntax/testdir/dumps/vim_ex_syntax_19.dump
Normal file
20
runtime/syntax/testdir/dumps/vim_ex_syntax_19.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@74
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&@6|m|a|i|l|H|e|a|d|e|r|K|e|y| @2|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|m+0#0000001#ffff4012|a|i|l|H|e|a|d|e|r|E|m|a|i|l|,|m|a|i|l|E|m|a|i
|
||||
|l|,|@|N|o|S|p|e|l@1| +0#0000000#ffffff0|"+0#e000002&|\|v|(|^|(|\|>| |?|)|*|)|@|<|=|(|f|r|o|m|||r|e|p|l|y|-|t|o|)|:|.|*|$|"| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@22
|
||||
@75
|
||||
@75
|
||||
>"+0#0000e05&| |I|s@1|u|e| |#|1|9|3|6@1| |(|h|i|g|h|l|i|g|h|t| |e|r@1|o|r| |f|o|r| |c|o|n|t|a|i|n|s| |e|l|e|m|e|n|t|s| |i|n| |a| |n|e|w| |l|i|n|e|)| +0#0000000&@6
|
||||
|"+0#0000e05&| |s|y|n|t|a|x|/|t|y|p|s|t|.|v|i|m| +0#0000000&@56
|
||||
@75
|
||||
|"+0#0000e05&| |C|o|d|e| |{@2|1| +0#0000000&@63
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|y|p|s|t|C|o|d|e| @50
|
||||
@4|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|@+0#0000001#ffff4012|t|y|p|s|t|C|o|m@1|o|n| +0#0000000#ffffff0@47
|
||||
@12|\+0#e000e06&| +0#0000000&|,|@+0#0000001#ffff4012|t|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d|s| +0#0000000#ffffff0@41
|
||||
@12|\+0#e000e06&| +0#0000000&|,|@+0#0000001#ffff4012|t|y|p|s|t|C|o|d|e|C|o|n|s|t|a|n|t|s| +0#0000000#ffffff0@40
|
||||
@12|\+0#e000e06&| +0#0000000&|,|@+0#0000001#ffff4012|t|y|p|s|t|C|o|d|e|I|d|e|n|t|i|f|i|e|r|s| +0#0000000#ffffff0@38
|
||||
@12|\+0#e000e06&| +0#0000000&|,|@+0#0000001#ffff4012|t|y|p|s|t|C|o|d|e|F|u|n|c|t|i|o|n|s| +0#0000000#ffffff0@40
|
||||
@12|\+0#e000e06&| +0#0000000&|,|@+0#0000001#ffff4012|t|y|p|s|t|C|o|d|e|P|a|r|e|n|s| +0#0000000#ffffff0@43
|
||||
@75
|
||||
|"+0#0000e05&| |C|o|d|e| |>| |K|e|y|w|o|r|d|s| |{@2|2| +0#0000000&@52
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d|s| @42
|
||||
@57|3@1|6|,|1| @8|9|2|%|
|
||||
20
runtime/syntax/testdir/dumps/vim_ex_syntax_20.dump
Normal file
20
runtime/syntax/testdir/dumps/vim_ex_syntax_20.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d|s| @42
|
||||
@4|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|C|o|n|d|i|t|i|o|n|a|l| +0#0000000#ffffff0@39
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|R|e|p|e|a|t| +0#0000000#ffffff0@44
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d| +0#0000000#ffffff0@43
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|S|t|a|t|e|m|e|n|t| +0#0000000#ffffff0@41
|
||||
> @74
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d|s| @42
|
||||
@4|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=| +0#0000000&@59
|
||||
@12|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@52
|
||||
@12|\+0#e000e06&| +0#0000000&@1|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|C|o|n|d|i|t|i|o|n|a|l| +0#0000000#ffffff0@39
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|R|e|p|e|a|t| +0#0000000#ffffff0@44
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d| +0#0000000#ffffff0@43
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|S|t|a|t|e|m|e|n|t| +0#0000000#ffffff0@41
|
||||
@75
|
||||
@75
|
||||
|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d|s| @42
|
||||
@4|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=| +0#0000000&@59
|
||||
@12|"+0#0000e05&|\| +0#0000000&|c+0#0000e05&|o|m@1|e|n|t| +0#0000000&@52
|
||||
@12|\+0#e000e06&| +0#0000000&@1|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|C|o|n|d|i|t|i|o|n|a|l| +0#0000000#ffffff0@39
|
||||
@57|3|5|4|,|0|-|1| @6|9|7|%|
|
||||
20
runtime/syntax/testdir/dumps/vim_ex_syntax_21.dump
Normal file
20
runtime/syntax/testdir/dumps/vim_ex_syntax_21.dump
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@11|\+0#e000e06&| +0#0000000&@1|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|C|o|n|d|i|t|i|o|n|a|l| +0#0000000#ffffff0@39
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|R|e|p|e|a|t| +0#0000000#ffffff0@44
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|K|e|y|w|o|r|d| +0#0000000#ffffff0@43
|
||||
@12|\+0#e000e06&| +0#0000000&|,|t+0#0000001#ffff4012|y|p|s|t|C|o|d|e|S|t|a|t|e|m|e|n|t| +0#0000000#ffffff0@41
|
||||
@75
|
||||
> @74
|
||||
|"+0#0000e05&| |E|x|a|m|p|l|e|s| |f|r|o|m| |d|i|s|t|r|i|b|u|t|e|d| |s|y|n|t|a|x| |f|i|l|e|s| +0#0000000&@34
|
||||
@75
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&@2|s|l|r|n|r|c|C|o|l|o|r|I|n|i|t| @4|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#e000002&|^|\|s|*|c|o|l|o|r|\|s|\|+|\|S|\|+|"| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&|n+0#e000e06&|e|x
|
||||
|t|g|r|o|u|p|=|s+0#0000001#ffff4012|l|r|n|r|c|C|o|l|o|r|V|a|l|\|(|S|t|r|\|)|\|=| +0#0000000#ffffff0|c+0#e000e06&|o|n|t|a|i|n|s|=|s+0#0000001#ffff4012|l|r|n|r|c|C|o|l|o|r|\|(|O|b|j|\|||O|b|j|S|t|r|\|)|\|=| +0#0000000#ffffff0@6
|
||||
|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&@1|s|l|r|n|r|c|C|m|d|L|i|n|e| @6|m+0#e000e06&|a|t|c|h|g|r|o|u|p|=|s+0#0000000&|l|r|n|r|c|C|m|d| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|\|<|\+0#e000e06&|(|a+0#e000002&|u|t|o|b|a|u|d|\+0#e000e06&|||.+0#e000002&
|
||||
@2|\+0#e000e06&|||v+0#e000002&|i|s|i|b|l|e|_|h|e|a|d|e|r|s|\+0#e000e06&|)|\+0#e000002&|>|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|$|"| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|s+0#0000001#ffff4012|l|r|n|r|c|\|(|S|t|r|i|n|g|\|||C|o|m@1|e|n|t|\|)
|
||||
| +0#0000000#ffffff0@74
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|3|7|2|,|0|-|1| @6|B|o|t|
|
||||
13
runtime/syntax/testdir/input/sh_15.sh
Normal file
13
runtime/syntax/testdir/input/sh_15.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# Issue #19053 (sh syntax: escaped characters followed by # in double quotes)
|
||||
|
||||
CLEANURL='http://localhost:8077/test'
|
||||
|
||||
FILENAME=$(sed -r -e "s#[:/]+#\.#g" -e "s#[^a-zA-Z0-9\._]*##g" <<<${CLEANURL})
|
||||
FILENAME=$(sed -r -e 's#[:/]+#\.#g' -e 's#[^a-zA-Z0-9\._]*##g' <<<${CLEANURL})
|
||||
HDRFILE="${FILENAME}.hdr"
|
||||
|
||||
: "\\# not a comment"
|
||||
# \\" a comment
|
||||
echo "\\#"
|
||||
:
|
||||
0
runtime/syntax/testdir/input/sh_mksh_gibberish.ksh
Executable file → Normal file
0
runtime/syntax/testdir/input/sh_mksh_gibberish.ksh
Executable file → Normal file
@@ -90,3 +90,10 @@ var d = {
|
||||
b: 0,
|
||||
}
|
||||
|
||||
|
||||
# PR: #19390
|
||||
# https://github.com/vim/vim/pull/19390#issue-3933755846
|
||||
|
||||
# E1234: should not have vim9CommentTitle on 'E1234:'
|
||||
# ERR34: should have vim9CommentTitle on 'ERR34:'
|
||||
|
||||
|
||||
@@ -72,3 +72,12 @@ def CommentTitle()
|
||||
# Title: ...
|
||||
enddef
|
||||
|
||||
|
||||
" PR: #19390
|
||||
" https://github.com/vim/vim/pull/19390#issue-3933755846
|
||||
|
||||
def CommentTitle2()
|
||||
# E1234: should not have vim9CommentTitle on 'E1234:'
|
||||
# ERR34: should have vim9CommentTitle on 'ERR34:'
|
||||
enddef
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
" Vim :syntax command
|
||||
" VIM_TEST_SETUP hi link vimGroupList Todo
|
||||
|
||||
|
||||
" :syn-case
|
||||
@@ -7,6 +8,13 @@ syntax case
|
||||
syntax case match
|
||||
syntax case ignore
|
||||
|
||||
" :syn clear
|
||||
|
||||
syntax clear @testCluster
|
||||
syntax clear testGroup
|
||||
syntax clear @testCluster testGroup
|
||||
syntax clear testGroup @testCluster
|
||||
|
||||
" :syn-conceal
|
||||
|
||||
syntax conceal
|
||||
@@ -19,6 +27,11 @@ syntax foldlevel
|
||||
syntax foldlevel start
|
||||
syntax foldlevel minimum
|
||||
|
||||
" :syn-include
|
||||
|
||||
syntax include @Foo <sfile>:p:h/foo.vim
|
||||
syntax include <sfile>:p:h/foo.vim
|
||||
|
||||
" :syn-iskeyword
|
||||
|
||||
syntax iskeyword
|
||||
@@ -247,6 +260,50 @@ syn keyword testKeyword
|
||||
\ keyword5
|
||||
\ keyword6
|
||||
|
||||
syn keyword testKeyword
|
||||
"\ nextgroup option
|
||||
\ nextgroup= testNext0,
|
||||
"\ comment
|
||||
\ , testNext1
|
||||
"\ comment
|
||||
\, testNext2
|
||||
"\ comment
|
||||
\ ,textNext3
|
||||
"\ comment
|
||||
\,textNext4
|
||||
"\ comment
|
||||
\ , textNext5 ,
|
||||
"\ comment
|
||||
\ textNext6,
|
||||
"\ comment
|
||||
\ textNext7 ,
|
||||
"\ comment
|
||||
\textNext8,
|
||||
"\ comment
|
||||
\textNext9 ,
|
||||
"\ comment
|
||||
\ textNext10
|
||||
"\ comment
|
||||
\ ,textNext11,
|
||||
"\ comment
|
||||
\ textNext12,textNext13,
|
||||
"\ comment
|
||||
\ textNext13,textNext14
|
||||
"\ comment
|
||||
\ ,textNext15,textNext16
|
||||
"\ comment
|
||||
\ , textNext17 , textNext18 ,
|
||||
"\ comment
|
||||
\ textNext19, @testCluster
|
||||
\ skipnl
|
||||
"\ KEYWORDS LIST
|
||||
"\ keyword 1
|
||||
\ keyword1
|
||||
"\ keyword 2
|
||||
\ keyword2
|
||||
"\ keyword 3
|
||||
\ keyword3
|
||||
|
||||
|
||||
" leaking contained groups
|
||||
|
||||
@@ -261,6 +318,7 @@ function! s:ContainedGroup()
|
||||
" ...
|
||||
endfunction
|
||||
|
||||
|
||||
" early termination of vimSynRegion
|
||||
|
||||
syn region testRegion
|
||||
@@ -269,3 +327,51 @@ syn region testRegion
|
||||
\ start="start"
|
||||
\ end="end"
|
||||
|
||||
|
||||
" Issue #18491 (Two ")"s are incorrectly colored 'vimOperError' in syntax/mail.vim)
|
||||
|
||||
syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold
|
||||
|
||||
|
||||
" Issue #19366 (highlight error for contains elements in a new line)
|
||||
" syntax/typst.vim
|
||||
|
||||
" Code {{{1
|
||||
syntax cluster typstCode
|
||||
\ contains=@typstCommon
|
||||
\ ,@typstCodeKeywords
|
||||
\ ,@typstCodeConstants
|
||||
\ ,@typstCodeIdentifiers
|
||||
\ ,@typstCodeFunctions
|
||||
\ ,@typstCodeParens
|
||||
|
||||
" Code > Keywords {{{2
|
||||
syntax cluster typstCodeKeywords
|
||||
\ contains=typstCodeConditional
|
||||
\ ,typstCodeRepeat
|
||||
\ ,typstCodeKeyword
|
||||
\ ,typstCodeStatement
|
||||
|
||||
syntax cluster typstCodeKeywords
|
||||
\ contains=
|
||||
"\ comment
|
||||
\ typstCodeConditional
|
||||
\ ,typstCodeRepeat
|
||||
\ ,typstCodeKeyword
|
||||
\ ,typstCodeStatement
|
||||
|
||||
|
||||
syntax cluster typstCodeKeywords
|
||||
\ contains=
|
||||
"\ comment
|
||||
\ typstCodeConditional
|
||||
\ ,typstCodeRepeat
|
||||
\ ,typstCodeKeyword
|
||||
\ ,typstCodeStatement
|
||||
|
||||
|
||||
" Examples from distributed syntax files
|
||||
|
||||
syn match slrnrcColorInit contained "^\s*color\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Obj\|ObjStr\)\=
|
||||
syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(autobaud\|...\|visible_headers\)\>" end="$" oneline contains=slrnrc\(String\|Comment\)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
|
||||
" Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2026 Jan 30
|
||||
" Last Change: 2026 Mar 01
|
||||
" Former Maintainer: Charles E. Campbell
|
||||
|
||||
" DO NOT CHANGE DIRECTLY.
|
||||
@@ -70,9 +70,9 @@ syn keyword vimOption contained efm errorformat ek esckeys ei eventignore eiw ev
|
||||
syn keyword vimOption contained hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline stlo statuslineopt su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
|
||||
" vimOptions: These are the turn-off setting variants {{{2
|
||||
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
|
||||
@@ -109,9 +109,9 @@ syn keyword vimOptionVarName contained efm errorformat ek esckeys ei eventignore
|
||||
syn keyword vimOptionVarName contained hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine
|
||||
syn keyword vimOptionVarName contained mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset
|
||||
syn keyword vimOptionVarName contained pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess
|
||||
syn keyword vimOptionVarName contained sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors
|
||||
syn keyword vimOptionVarName contained twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor
|
||||
syn keyword vimOptionVarName contained wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
|
||||
syn keyword vimOptionVarName contained sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline stlo statuslineopt su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding
|
||||
syn keyword vimOptionVarName contained tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys
|
||||
syn keyword vimOptionVarName contained wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
|
||||
" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
|
||||
syn keyword vimOptionVarName contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo
|
||||
syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
|
||||
@@ -134,8 +134,8 @@ syn keyword vimErrSetting contained invakm invaltkeymap invanti invantialias inv
|
||||
syn case ignore
|
||||
" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR='skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern'
|
||||
syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdlineLeavePre CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedC CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
||||
syn keyword vimAutoEvent contained FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre KeyInputPre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabClosedPre TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextYankPost VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinNewPre WinResized skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
||||
syn keyword vimAutoEvent contained WinScrolled skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
||||
syn keyword vimAutoEvent contained FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre KeyInputPre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionLoadPre SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabClosedPre TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextYankPost VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinNewPre skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
||||
syn keyword vimAutoEvent contained WinResized WinScrolled skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
||||
|
||||
syn keyword vimAutoEvent contained User skipwhite nextgroup=vimUserAutoEvent
|
||||
syn match vimUserAutoEvent contained "\<\h\w*\>" skipwhite nextgroup=vimUserAutoEventSep,vimAutocmdMod,vimAutocmdBlock
|
||||
@@ -1847,17 +1847,32 @@ Vim9 syn match vimWincmd "\s\=\<winc\%[md]\>\ze\s\+=\s*\%([#|]\|$\)" skipwhite n
|
||||
|
||||
" Syntax: {{{2
|
||||
"=======
|
||||
syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
|
||||
syn region vimGroupList contained start=/^\s*["#]\\ \|^\s*\\\|[^[:space:],]\+\s*,/ skip=/\s*\n\s*\%(\\\|["#]\\ \)\|^\s*\%(\\\|["#]\\ \)/ end=/[^[:space:],]\s*$\|[^[:space:],]\ze\s\+\w/ contains=@vimContinue,vimGroupSpecial
|
||||
syn region vimGroupList contained
|
||||
\ start="\S"
|
||||
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
||||
"\ need to consume the whitespace
|
||||
\ end="\s"he=e-1
|
||||
\ end="$"
|
||||
\ contains=@vimGroupListContinue,vimGroupSpecial,vimGroupListContinueComma
|
||||
syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
|
||||
syn match vimGroupListComma contained ","
|
||||
syn match vimGroupListContinueComma contained "\s\+,\s*\|,\s\+" contains=vimGroupListComma
|
||||
syn match vimGroupListContinueComma contained "\s*,\s*\%(\n\s*\%(\\\s\+\|["#]\\ .*\)\)\+" contains=@vimGroupListContinue,vimGroupListComma
|
||||
|
||||
syn match vimGroupListEquals contained "=" skipwhite skipnl nextgroup=vimGroupListContinueStart,vimGroupList
|
||||
" the first continuation line does not terminate the list at whitepace after \
|
||||
syn match vimGroupListContinueStart contained "^\%(\s*["#]\\ .*\n\)*\s*\\\s\+" skipwhite nextgroup=vimGroupList contains=@vimGroupListContinue transparent
|
||||
|
||||
syn match vimGroupListContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimGroupListContinue,vimGroupListContinueComma contains=vimWhitespace
|
||||
syn match vimGroupListContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimGroupListContinue contains=vimWhitespace
|
||||
syn cluster vimGroupListContinue contains=vimGroupListContinue,vimGroupListContinueComment
|
||||
|
||||
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
|
||||
syn match vimSynError contained "\i\+"
|
||||
syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
|
||||
syn match vimSynError contained "\i\+"
|
||||
endif
|
||||
syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimSynContains contained "\<contains\>" skipwhite nextgroup=vimGroupListEquals
|
||||
syn match vimSynContainedin contained "\<containedin\>" skipwhite nextgroup=vimGroupListEquals
|
||||
syn match vimSynNextgroup contained "\<nextgroup\>" skipwhite nextgroup=vimGroupListEquals
|
||||
if has("conceal")
|
||||
" no whitespace allowed after '='
|
||||
syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
|
||||
@@ -1875,13 +1890,13 @@ endif
|
||||
syn keyword vimSynCase contained ignore match
|
||||
|
||||
" Syntax: clear {{{2
|
||||
syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
|
||||
syn keyword vimSynType contained clear
|
||||
|
||||
" Syntax: cluster {{{2
|
||||
syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
|
||||
syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
|
||||
syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
|
||||
syn match vimGroupAdd contained "\<add\>" skipwhite nextgroup=vimGroupListEquals
|
||||
syn match vimGroupRem contained "\<remove\>" skipwhite nextgroup=vimGroupListEquals
|
||||
|
||||
" Syntax: conceal {{{2
|
||||
syn match vimSynType contained "\<conceal\>" skipwhite nextgroup=vimSynConceal,vimSynConcealError
|
||||
@@ -1904,16 +1919,17 @@ syn match vimSynIskeyword contained "\S\+" contains=vimSynIskeywordSep
|
||||
syn match vimSynIskeywordSep contained ","
|
||||
|
||||
" Syntax: include {{{2
|
||||
syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
|
||||
syn keyword vimSynType contained include skipwhite nextgroup=vimSynIncludeCluster
|
||||
syn match vimSynIncludeCluster contained "@[_a-zA-Z0-9]\+\>"
|
||||
|
||||
" Syntax: keyword {{{2
|
||||
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
|
||||
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynContainedin
|
||||
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
|
||||
syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
|
||||
syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
|
||||
|
||||
" Syntax: match {{{2
|
||||
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
|
||||
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
|
||||
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
|
||||
syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
|
||||
syn match vimSynMtchOpt contained "\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
|
||||
@@ -1923,9 +1939,9 @@ syn keyword vimSynType contained enable list manual off on reset
|
||||
|
||||
" Syntax: region {{{2
|
||||
syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
|
||||
syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
|
||||
syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
|
||||
syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
|
||||
syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
|
||||
syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
|
||||
syn match vimSynRegOpt contained "\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
|
||||
syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
|
||||
syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
|
||||
@@ -2403,7 +2419,7 @@ Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\%(\\\|#\\ \)
|
||||
VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\%(\\\|"\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle extend
|
||||
|
||||
syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
|
||||
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
|
||||
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\%([A-DF-Z]\w*\|E\%(\d\{1,4}\>\)\@!\w*\)\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
|
||||
|
||||
" allowed anywhere in the file
|
||||
if !s:vim9script
|
||||
@@ -2583,11 +2599,14 @@ if !exists("skip_vim_syntax_inits")
|
||||
hi def link vimGrep vimCommand
|
||||
hi def link vimGrepadd vimCommand
|
||||
hi def link vimGrepBang vimBang
|
||||
hi def link vimGroup Type
|
||||
hi def link vimGroupAdd vimSynOption
|
||||
hi def link vimGroupListEquals vimSynOption
|
||||
hi def link vimGroupListContinue vimContinue
|
||||
hi def link vimGroupListContinueComment vimContinueComment
|
||||
hi def link vimGroupName Normal
|
||||
hi def link vimGroupRem vimSynOption
|
||||
hi def link vimGroupSpecial Special
|
||||
hi def link vimGroup Type
|
||||
hi def link vimHelp vimCommand
|
||||
hi def link vimHelpBang vimBang
|
||||
hi def link vimHelpgrep vimCommand
|
||||
@@ -2752,7 +2771,7 @@ if !exists("skip_vim_syntax_inits")
|
||||
hi def link vimSynFoldlevel Type
|
||||
hi def link vimSynIskeyword Type
|
||||
hi def link vimSynIskeywordSep Delimiter
|
||||
hi def link vimSynKeyContainedin vimSynContains
|
||||
hi def link vimSynContainedin vimSynContains
|
||||
hi def link vimSynKeyOpt vimSynOption
|
||||
hi def link vimSynMtchGrp vimSynOption
|
||||
hi def link vimSynMtchOpt vimSynOption
|
||||
|
||||
44
runtime/xdg.vim
Normal file
44
runtime/xdg.vim
Normal file
@@ -0,0 +1,44 @@
|
||||
" XDG Base Directory support
|
||||
" This script sets up paths for XDG compliance.
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Feb 19
|
||||
|
||||
let s:config = empty($XDG_CONFIG_HOME) ? expand("~/.config") : expand("$XDG_CONFIG_HOME")
|
||||
let s:data = empty($XDG_DATA_HOME) ? expand("~/.local/share") : expand("$XDG_DATA_HOME")
|
||||
let s:state = empty($XDG_STATE_HOME) ? expand("~/.local/state") : expand("$XDG_STATE_HOME")
|
||||
|
||||
if isdirectory(s:config .. '/vim')
|
||||
func s:mkvimdir(dir)
|
||||
if !isdirectory(a:dir)
|
||||
call mkdir(a:dir, 'p', 0700)
|
||||
endif
|
||||
return a:dir
|
||||
endfunc
|
||||
|
||||
" Use Data for packages, prevent duplicates
|
||||
if index(split(&packpath, ','), s:data .. '/vim') == -1
|
||||
exe $"set packpath^={s:data}/vim"
|
||||
exe $"set packpath+={s:data}/vim/after"
|
||||
endif
|
||||
|
||||
" These options are not set by default because they change the behavior of
|
||||
" where files are saved. Uncomment them if you want to fully move all
|
||||
" transient/persistent files to XDG directories.
|
||||
" Note: Undo/Views/Spell are placed in DATA_HOME as they are persistent,
|
||||
" while Swap/Backups use STATE_HOME as transient session state.
|
||||
|
||||
" Persistent Data:
|
||||
" let &undodir = s:mkvimdir(s:data .. '/vim/undo')
|
||||
" let &viewdir = s:mkvimdir(s:data .. '/vim/view')
|
||||
" let g:netrw_home = s:mkvimdir(s:data .. '/vim')
|
||||
" call s:mkvimdir(s:data .. '/vim/spell')
|
||||
|
||||
" Transient State:
|
||||
let &viminfofile = s:mkvimdir(s:state .. '/vim') .. '/viminfo'
|
||||
" let &directory = s:mkvimdir(s:state .. '/vim/swap') .. '//'
|
||||
" let &backupdir = s:mkvimdir(s:state .. '/vim/backup') .. '//'
|
||||
|
||||
delfunction s:mkvimdir
|
||||
endif
|
||||
|
||||
unlet s:config s:data s:state
|
||||
@@ -1607,7 +1607,10 @@ EXTRA_SRC = if_lua.c if_mzsch.c auto/if_perl.c \
|
||||
gui_beval.c netbeans.c job.c channel.c \
|
||||
$(GRESOURCE_SRC)
|
||||
|
||||
$(WAYLAND_SRC):
|
||||
$(WAYLAND_SRC): genwaylandproto
|
||||
|
||||
.PHONY: genwaylandproto
|
||||
genwaylandproto:
|
||||
cd auto/wayland; $(MAKE)
|
||||
|
||||
# Needed for parallel jobs to work
|
||||
@@ -2397,6 +2400,9 @@ installrtbase: $(HELPSOURCE)/vim.1 $(DEST_VIM) $(VIMTARGET) $(DEST_RT) \
|
||||
chmod $(VIMSCRIPTMOD) $(DEST_SCRIPT)/vimrc_example.vim
|
||||
$(INSTALL_DATA) $(SCRIPTSOURCE)/gvimrc_example.vim $(DEST_SCRIPT)
|
||||
chmod $(VIMSCRIPTMOD) $(DEST_SCRIPT)/gvimrc_example.vim
|
||||
# install the xdg file
|
||||
$(INSTALL_DATA) $(SCRIPTSOURCE)/xdg.vim $(DEST_SCRIPT)
|
||||
chmod $(VIMSCRIPTMOD) $(DEST_SCRIPT)/xdg.vim
|
||||
# install the file type detection files
|
||||
$(INSTALL_DATA) $(SCRIPTSOURCE)/filetype.vim $(SYS_FILETYPE_FILE)
|
||||
chmod $(VIMSCRIPTMOD) $(SYS_FILETYPE_FILE)
|
||||
|
||||
@@ -168,6 +168,7 @@ static keyvalue_T event_tab[NUM_EVENTS] = {
|
||||
KEYVALUE_ENTRY(EVENT_SAFESTATE, "SafeState"),
|
||||
KEYVALUE_ENTRY(EVENT_SAFESTATEAGAIN, "SafeStateAgain"),
|
||||
KEYVALUE_ENTRY(EVENT_SESSIONLOADPOST, "SessionLoadPost"),
|
||||
KEYVALUE_ENTRY(EVENT_SESSIONLOADPRE, "SessionLoadPre"),
|
||||
KEYVALUE_ENTRY(EVENT_SESSIONWRITEPOST, "SessionWritePost"),
|
||||
KEYVALUE_ENTRY(EVENT_SHELLCMDPOST, "ShellCmdPost"),
|
||||
KEYVALUE_ENTRY(-EVENT_SHELLFILTERPOST, "ShellFilterPost"),
|
||||
@@ -1627,7 +1628,6 @@ aucmd_prepbuf(
|
||||
|
||||
aco->save_curwin_id = curwin->w_id;
|
||||
aco->save_prevwin_id = prevwin == NULL ? 0 : prevwin->w_id;
|
||||
aco->save_State = State;
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
if (bt_prompt(curbuf))
|
||||
aco->save_prompt_insert = curbuf->b_prompt_insert;
|
||||
@@ -1727,14 +1727,6 @@ aucmd_restbuf(
|
||||
}
|
||||
win_found:
|
||||
--curbuf->b_nwindows;
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
int save_stop_insert_mode = stop_insert_mode;
|
||||
// May need to stop Insert mode if we were in a prompt buffer.
|
||||
leaving_window(curwin);
|
||||
// Do not stop Insert mode when already in Insert mode before.
|
||||
if (aco->save_State & MODE_INSERT)
|
||||
stop_insert_mode = save_stop_insert_mode;
|
||||
#endif
|
||||
// Remove the window and frame from the tree of frames.
|
||||
(void)winframe_remove(curwin, &dummy, NULL, NULL);
|
||||
win_remove(curwin, NULL);
|
||||
|
||||
22
src/blob.c
22
src/blob.c
@@ -165,8 +165,8 @@ blob_equal(
|
||||
blob_T *b2)
|
||||
{
|
||||
int i;
|
||||
int len1 = blob_len(b1);
|
||||
int len2 = blob_len(b2);
|
||||
long len1 = blob_len(b1);
|
||||
long len2 = blob_len(b2);
|
||||
|
||||
// empty and NULL are considered the same
|
||||
if (len1 == 0 && len2 == 0)
|
||||
@@ -276,13 +276,13 @@ blob2string(blob_T *blob, char_u **tofree, char_u *numbuf)
|
||||
|
||||
// Store bytes in the growarray.
|
||||
ga_init2(&ga, 1, 4000);
|
||||
ga_concat_len(&ga, (char_u *)"0z", 2);
|
||||
GA_CONCAT_LITERAL(&ga, "0z");
|
||||
for (i = 0; i < blob_len(blob); i++)
|
||||
{
|
||||
size_t numbuflen;
|
||||
|
||||
if (i > 0 && (i & 3) == 0)
|
||||
ga_concat_len(&ga, (char_u *)".", 1);
|
||||
GA_CONCAT_LITERAL(&ga, ".");
|
||||
numbuflen = vim_snprintf_safelen((char *)numbuf, NUMBUFLEN,
|
||||
"%02X", blob_get(blob, i));
|
||||
ga_concat_len(&ga, numbuf, numbuflen);
|
||||
@@ -821,14 +821,14 @@ blob_reduce(
|
||||
void
|
||||
blob_reverse(blob_T *b, typval_T *rettv)
|
||||
{
|
||||
int i, len = blob_len(b);
|
||||
long i, len = blob_len(b);
|
||||
|
||||
for (i = 0; i < len / 2; i++)
|
||||
{
|
||||
int tmp = blob_get(b, i);
|
||||
int tmp = blob_get(b, (int)i);
|
||||
|
||||
blob_set(b, i, blob_get(b, len - i - 1));
|
||||
blob_set(b, len - i - 1, tmp);
|
||||
blob_set(b, (int)i, blob_get(b, (int)(len - i - 1)));
|
||||
blob_set(b, (int)(len - i - 1), tmp);
|
||||
}
|
||||
rettv_blob_set(rettv, b);
|
||||
}
|
||||
@@ -841,7 +841,7 @@ f_blob2list(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
blob_T *blob;
|
||||
list_T *l;
|
||||
int i;
|
||||
long i;
|
||||
|
||||
if (rettv_list_alloc(rettv) == FAIL)
|
||||
return;
|
||||
@@ -851,8 +851,8 @@ f_blob2list(typval_T *argvars, typval_T *rettv)
|
||||
|
||||
blob = argvars->vval.v_blob;
|
||||
l = rettv->vval.v_list;
|
||||
for (i = 0; i < blob_len(blob); i++)
|
||||
list_append_number(l, blob_get(blob, i));
|
||||
for (i = 0; i < (long)blob_len(blob); i++)
|
||||
list_append_number(l, blob_get(blob, (int)i));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
176
src/buffer.c
176
src/buffer.c
@@ -45,6 +45,12 @@ static int buf_same_ino(buf_T *buf, stat_T *stp);
|
||||
static int otherfile_buf(buf_T *buf, char_u *ffname);
|
||||
#endif
|
||||
static int value_changed(char_u *str, char_u **last);
|
||||
#if defined(FEAT_STL_OPT) || defined(FEAT_GUI_TABLINE)
|
||||
static int build_stl_str_hl_local(stl_mode_T mode, win_T *wp,
|
||||
char_u *out, size_t outlen, char_u **fmt_arg,
|
||||
char_u *opt_name, int opt_scope, int fillchar, int maxwidth,
|
||||
stl_hlrec_T **hltab, stl_hlrec_T **tabtab, int *lbreaks);
|
||||
#endif
|
||||
static int append_arg_number(win_T *wp, char_u *buf, size_t buflen, int add_file);
|
||||
static void free_buffer(buf_T *);
|
||||
static void free_buffer_stuff(buf_T *buf, int free_options);
|
||||
@@ -4366,6 +4372,94 @@ build_stl_str_hl(
|
||||
int maxwidth,
|
||||
stl_hlrec_T **hltab, // return: HL attributes (can be NULL)
|
||||
stl_hlrec_T **tabtab) // return: tab page nrs (can be NULL)
|
||||
{
|
||||
return build_stl_str_hl_local(STL_MODE_SINGLE, wp, out, outlen, &fmt,
|
||||
opt_name, opt_scope, fillchar, maxwidth, hltab, tabtab, NULL);
|
||||
}
|
||||
|
||||
int
|
||||
build_stl_str_hl_mline(
|
||||
win_T *wp,
|
||||
char_u *out, // buffer to write into != NameBuff
|
||||
size_t outlen, // length of out[]
|
||||
char_u **fmt, // (in/out)
|
||||
char_u *opt_name, // option name corresponding to "fmt"
|
||||
int opt_scope, // scope for "opt_name"
|
||||
int fillchar,
|
||||
int maxwidth,
|
||||
stl_hlrec_T **hltab, // return: HL attributes (can be NULL)
|
||||
stl_hlrec_T **tabtab) // return: tab page nrs (can be NULL)
|
||||
{
|
||||
return build_stl_str_hl_local(STL_MODE_MULTI, wp, out, outlen, fmt,
|
||||
opt_name, opt_scope, fillchar, maxwidth, hltab, tabtab, NULL);
|
||||
}
|
||||
|
||||
# ifdef ENABLE_STL_MODE_MULTI_NL
|
||||
int
|
||||
build_stl_str_hl_mline_nl(
|
||||
win_T *wp,
|
||||
char_u *out, // buffer to write into != NameBuff
|
||||
size_t outlen, // length of out[]
|
||||
char_u **fmt, // (in/out)
|
||||
char_u *opt_name, // option name corresponding to "fmt"
|
||||
int opt_scope, // scope for "opt_name"
|
||||
int fillchar,
|
||||
int maxwidth,
|
||||
stl_hlrec_T **hltab, // return: HL attributes (can be NULL)
|
||||
stl_hlrec_T **tabtab) // return: tab page nrs (can be NULL)
|
||||
{
|
||||
return build_stl_str_hl_local(STL_MODE_MULTI_NL, wp, out, outlen, fmt,
|
||||
opt_name, opt_scope, fillchar, maxwidth, hltab, tabtab, NULL);
|
||||
}
|
||||
# endif
|
||||
|
||||
int
|
||||
get_stl_rendered_height(
|
||||
win_T *wp,
|
||||
char_u *fmt,
|
||||
char_u *opt_name, // option name corresponding to "fmt"
|
||||
int opt_scope) // scope for "opt_name"
|
||||
{
|
||||
int rendered_height = 0;
|
||||
char_u buf[MAXPATHL] = {0};
|
||||
|
||||
(void)build_stl_str_hl_local(STL_MODE_GET_RENDERED_HEIGHT,
|
||||
wp, buf, sizeof(buf), &fmt,
|
||||
opt_name, opt_scope, 0, 0, NULL, NULL, &rendered_height);
|
||||
return rendered_height;
|
||||
}
|
||||
|
||||
/*
|
||||
* mode:
|
||||
* STL_MODE_SINGLE:
|
||||
* - Does not accept line breaks ("%@")
|
||||
* STL_MODE_MULTI:
|
||||
* - Accept line breaks
|
||||
* - Update fmt_arg to the start of the next line or last NUL position
|
||||
* STL_MODE_GET_RENDERED_HEIGHT:
|
||||
* - Just get stl rendered height
|
||||
* - Update rendered_height (if not NULL)
|
||||
*
|
||||
* NOTE:
|
||||
* Line break counting is performed here because `%{% ... %}` items
|
||||
* are re-evaluated on redraw and may change the final rendered text.
|
||||
* Therefore, layout decisions must be based on the fully evaluated statusline
|
||||
* string, not on pre-evaluation parsing.
|
||||
*/
|
||||
static int
|
||||
build_stl_str_hl_local(
|
||||
stl_mode_T mode,
|
||||
win_T *wp,
|
||||
char_u *out, // buffer to write into != NameBuff
|
||||
size_t outlen, // length of out[]
|
||||
char_u **fmt_arg,
|
||||
char_u *opt_name, // option name corresponding to "fmt"
|
||||
int opt_scope, // scope for "opt_name"
|
||||
int fillchar,
|
||||
int maxwidth,
|
||||
stl_hlrec_T **hltab, // return: HL attributes (can be NULL)
|
||||
stl_hlrec_T **tabtab, // return: tab page nrs (can be NULL)
|
||||
int *rendered_height) // return: stl rendered height (can be NULL)
|
||||
{
|
||||
linenr_T lnum;
|
||||
colnr_T len;
|
||||
@@ -4400,6 +4494,7 @@ build_stl_str_hl(
|
||||
char_u opt;
|
||||
# define TMPLEN 70
|
||||
char_u buf_tmp[TMPLEN];
|
||||
char_u *fmt = *fmt_arg;
|
||||
char_u *usefmt = fmt;
|
||||
stl_hlrec_T *sp;
|
||||
int save_redraw_not_allowed = redraw_not_allowed;
|
||||
@@ -4408,6 +4503,7 @@ build_stl_str_hl(
|
||||
// matter?
|
||||
// int called_emsg_before = called_emsg;
|
||||
int did_emsg_before = did_emsg;
|
||||
int rheight = 1; // stl rendered height
|
||||
|
||||
// When inside update_screen() we do not want redrawing a statusline,
|
||||
// ruler, title, etc. to trigger another redraw, it may cause an endless
|
||||
@@ -4534,7 +4630,23 @@ build_stl_str_hl(
|
||||
* Handle up to the next '%' or the end.
|
||||
*/
|
||||
while (*s != NUL && *s != '%' && p + 1 < out + outlen)
|
||||
# ifdef ENABLE_STL_MODE_MULTI_NL
|
||||
{
|
||||
if (*s == '\n' || *s == '\r')
|
||||
{
|
||||
if (mode == STL_MODE_MULTI_NL)
|
||||
{
|
||||
s++;
|
||||
goto find_linebreak;
|
||||
}
|
||||
else if (mode == STL_MODE_GET_RENDERED_HEIGHT)
|
||||
rheight++;
|
||||
}
|
||||
# endif
|
||||
*p++ = *s++;
|
||||
# ifdef ENABLE_STL_MODE_MULTI_NL
|
||||
}
|
||||
# endif
|
||||
if (*s == NUL || p + 1 >= out + outlen)
|
||||
break;
|
||||
|
||||
@@ -4544,6 +4656,21 @@ build_stl_str_hl(
|
||||
s++;
|
||||
if (*s == NUL) // ignore trailing %
|
||||
break;
|
||||
|
||||
if (*s == STL_LINEBREAK)
|
||||
{
|
||||
if (mode == STL_MODE_MULTI
|
||||
# ifdef ENABLE_STL_MODE_MULTI_NL
|
||||
|| mode == STL_MODE_MULTI_NL
|
||||
# endif
|
||||
)
|
||||
{
|
||||
s++;
|
||||
break;
|
||||
}
|
||||
else if (mode == STL_MODE_GET_RENDERED_HEIGHT)
|
||||
rheight++;
|
||||
}
|
||||
if (*s == '%')
|
||||
{
|
||||
if (p + 1 >= out + outlen)
|
||||
@@ -5201,14 +5328,52 @@ build_stl_str_hl(
|
||||
vim_free(str);
|
||||
curitem++;
|
||||
}
|
||||
# ifdef ENABLE_STL_MODE_MULTI_NL
|
||||
find_linebreak:
|
||||
# endif
|
||||
*p = NUL;
|
||||
outputlen = (size_t)(p - out);
|
||||
itemcnt = curitem;
|
||||
|
||||
# ifdef FEAT_EVAL
|
||||
if (usefmt != fmt)
|
||||
vim_free(usefmt);
|
||||
if (mode == STL_MODE_MULTI
|
||||
# ifdef ENABLE_STL_MODE_MULTI_NL
|
||||
|| mode == STL_MODE_MULTI_NL
|
||||
# endif
|
||||
)
|
||||
{
|
||||
// In multi-line mode, ownership of the format buffer is transferred
|
||||
// back to the caller via *fmt_arg.
|
||||
// When "%!" evaluation occurred (usefmt != fmt), "usefmt" is the newly
|
||||
// allocated eval result and "fmt" is the caller's original buffer
|
||||
// which is no longer needed. "s" points into "usefmt", so we free
|
||||
// "fmt" and shift the remaining format string within "usefmt" for the
|
||||
// caller's next iteration.
|
||||
# ifdef FEAT_EVAL
|
||||
if (usefmt != fmt)
|
||||
vim_free(fmt);
|
||||
# endif
|
||||
size_t fmt_remain_len = strlen((char *)s);
|
||||
|
||||
mch_memmove(usefmt, s, fmt_remain_len);
|
||||
usefmt[fmt_remain_len] = NUL;
|
||||
*fmt_arg = usefmt;
|
||||
}
|
||||
else
|
||||
{
|
||||
// In single-line mode, the caller retains ownership of its buffer.
|
||||
// Free the eval result if "%!" was used.
|
||||
# ifdef FEAT_EVAL
|
||||
if (usefmt != fmt)
|
||||
vim_free(usefmt);
|
||||
# endif
|
||||
}
|
||||
|
||||
if (mode == STL_MODE_GET_RENDERED_HEIGHT)
|
||||
{
|
||||
if (rendered_height != NULL)
|
||||
*rendered_height = rheight;
|
||||
return 0;
|
||||
}
|
||||
|
||||
width = vim_strsize(out);
|
||||
if (maxwidth > 0 && width > maxwidth)
|
||||
@@ -5296,7 +5461,8 @@ build_stl_str_hl(
|
||||
}
|
||||
width = maxwidth;
|
||||
}
|
||||
else if (width < maxwidth && outputlen + maxwidth - width + 1 < outlen)
|
||||
else if (width < maxwidth &&
|
||||
outputlen + (maxwidth - width) * MB_CHAR2LEN(fillchar) + 1 < outlen)
|
||||
{
|
||||
// Find how many separators there are, which we will use when
|
||||
// figuring out how many groups there are.
|
||||
@@ -5951,7 +6117,7 @@ bt_normal(buf_T *buf)
|
||||
bt_quickfix(buf_T *buf UNUSED)
|
||||
{
|
||||
#ifdef FEAT_QUICKFIX
|
||||
return buf != NULL && buf_valid(buf) && buf->b_p_bt[0] == 'q';
|
||||
return buf != NULL && buf->b_p_bt[0] == 'q';
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
@@ -557,7 +557,10 @@ invoke_sync_listeners(
|
||||
|
||||
dict = dict_alloc();
|
||||
if (dict == NULL)
|
||||
{
|
||||
list_unref(recorded_changes);
|
||||
return;
|
||||
}
|
||||
|
||||
dict_add_number(dict, "lnum", (varnumber_T)start);
|
||||
dict_add_number(dict, "end", (varnumber_T)end);
|
||||
|
||||
226
src/channel.c
226
src/channel.c
@@ -935,13 +935,31 @@ channel_open(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Count the number of addresses for timeout distribution
|
||||
int addr_count = 0;
|
||||
for (addr = res; addr != NULL; addr = addr->ai_next)
|
||||
addr_count++;
|
||||
|
||||
// On Mac and Solaris a zero timeout almost never works. Waiting for
|
||||
// one millisecond already helps a lot. Later Mac systems (using IPv6)
|
||||
// need more time, 15 milliseconds appears to work well.
|
||||
// Let's do it for all systems, because we don't know why this is
|
||||
// needed.
|
||||
if (waittime == 0)
|
||||
waittime = 15;
|
||||
|
||||
int addr_index = 0;
|
||||
for (addr = res; addr != NULL; addr = addr->ai_next, addr_index++)
|
||||
{
|
||||
const char *dst = hostname;
|
||||
# ifdef HAVE_INET_NTOP
|
||||
const void *src = NULL;
|
||||
char buf[NUMBUFLEN];
|
||||
# endif
|
||||
int try_waittime;
|
||||
int before_waittime;
|
||||
int consumed;
|
||||
int remaining_addrs;
|
||||
|
||||
if (addr->ai_family == AF_INET6)
|
||||
{
|
||||
@@ -974,18 +992,44 @@ channel_open(
|
||||
|
||||
ch_log(channel, "Trying to connect to %s port %d", dst, port);
|
||||
|
||||
// On Mac and Solaris a zero timeout almost never works. Waiting for
|
||||
// one millisecond already helps a lot. Later Mac systems (using IPv6)
|
||||
// need more time, 15 milliseconds appears to work well.
|
||||
// Let's do it for all systems, because we don't know why this is
|
||||
// needed.
|
||||
if (waittime == 0)
|
||||
waittime = 15;
|
||||
// Distribute the timeout across addresses for better fallback behavior.
|
||||
// This implements a simplified version of Happy Eyeballs (RFC 8305).
|
||||
if (addr->ai_next == NULL)
|
||||
try_waittime = waittime;
|
||||
else if (addr_index == 0)
|
||||
{
|
||||
if (waittime > 500)
|
||||
try_waittime = 250;
|
||||
else if (waittime > 30)
|
||||
try_waittime = waittime / 2;
|
||||
else
|
||||
try_waittime = waittime;
|
||||
}
|
||||
else
|
||||
{
|
||||
remaining_addrs = addr_count - addr_index;
|
||||
try_waittime = waittime / remaining_addrs;
|
||||
}
|
||||
|
||||
before_waittime = try_waittime;
|
||||
sd = channel_connect(channel, addr->ai_addr, (int)addr->ai_addrlen,
|
||||
&waittime);
|
||||
&try_waittime);
|
||||
|
||||
// Update the overall waittime based on consumed time
|
||||
consumed = before_waittime - try_waittime;
|
||||
waittime -= consumed;
|
||||
if (waittime < 0)
|
||||
waittime = 0;
|
||||
|
||||
if (sd >= 0)
|
||||
break;
|
||||
|
||||
// If we have no time left, stop trying
|
||||
if (waittime <= 0 && addr->ai_next != NULL)
|
||||
{
|
||||
ch_log(channel, "Out of time, stopping connection attempts");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
freeaddrinfo(res);
|
||||
@@ -1937,9 +1981,9 @@ channel_collapse(channel_T *channel, ch_part_T part, int want_nl)
|
||||
|
||||
last_node = node->rq_next;
|
||||
len = node->rq_buflen + last_node->rq_buflen;
|
||||
if (want_nl || mode == CH_MODE_LSP)
|
||||
if (want_nl || mode == CH_MODE_LSP || mode == CH_MODE_DAP)
|
||||
while (last_node->rq_next != NULL
|
||||
&& (mode == CH_MODE_LSP
|
||||
&& (mode == CH_MODE_LSP || mode == CH_MODE_DAP
|
||||
|| channel_first_nl(last_node) == NULL))
|
||||
{
|
||||
last_node = last_node->rq_next;
|
||||
@@ -2090,16 +2134,22 @@ channel_fill(js_read_T *reader)
|
||||
}
|
||||
|
||||
/*
|
||||
* Process the HTTP header in a Language Server Protocol (LSP) message.
|
||||
* Process the HTTP header in a Language Server Protocol (LSP) message or
|
||||
* Debug Adapter Protocol (DAP) message.
|
||||
*
|
||||
* The message format is described in the LSP specification:
|
||||
* https://microsoft.github.io/language-server-protocol/specification
|
||||
*
|
||||
* For DAP:
|
||||
* https://microsoft.github.io/debug-adapter-protocol/specification
|
||||
*
|
||||
* It has the following two fields:
|
||||
*
|
||||
* Content-Length: ...
|
||||
* Content-Type: application/vscode-jsonrpc; charset=utf-8
|
||||
*
|
||||
* For DAP, there is no "Content-Type" field (as of now).
|
||||
*
|
||||
* Each field ends with "\r\n". The header ends with an additional "\r\n".
|
||||
*
|
||||
* Returns OK if a valid header is received and FAIL if some fields in the
|
||||
@@ -2107,7 +2157,7 @@ channel_fill(js_read_T *reader)
|
||||
* need to wait for more data to arrive.
|
||||
*/
|
||||
static int
|
||||
channel_process_lsp_http_hdr(js_read_T *reader)
|
||||
channel_process_lspdap_http_hdr(js_read_T *reader)
|
||||
{
|
||||
char_u *line_start;
|
||||
char_u *p;
|
||||
@@ -2191,8 +2241,9 @@ channel_parse_json(channel_T *channel, ch_part_T part)
|
||||
reader.js_cookie = channel;
|
||||
reader.js_cookie_arg = part;
|
||||
|
||||
if (chanpart->ch_mode == CH_MODE_LSP)
|
||||
status = channel_process_lsp_http_hdr(&reader);
|
||||
if (chanpart->ch_mode == CH_MODE_LSP
|
||||
|| chanpart->ch_mode == CH_MODE_DAP)
|
||||
status = channel_process_lspdap_http_hdr(&reader);
|
||||
|
||||
// When a message is incomplete we wait for a short while for more to
|
||||
// arrive. After the delay drop the input, otherwise a truncated string
|
||||
@@ -2209,12 +2260,13 @@ channel_parse_json(channel_T *channel, ch_part_T part)
|
||||
{
|
||||
// Only accept the response when it is a list with at least two
|
||||
// items.
|
||||
if (chanpart->ch_mode == CH_MODE_LSP && listtv.v_type != VAR_DICT)
|
||||
if ((chanpart->ch_mode == CH_MODE_LSP || chanpart->ch_mode == CH_MODE_DAP)
|
||||
&& listtv.v_type != VAR_DICT)
|
||||
{
|
||||
ch_error(channel, "Did not receive a LSP dict, discarding");
|
||||
clear_tv(&listtv);
|
||||
}
|
||||
else if (chanpart->ch_mode != CH_MODE_LSP
|
||||
else if (chanpart->ch_mode != CH_MODE_LSP && chanpart->ch_mode != CH_MODE_DAP
|
||||
&& (listtv.v_type != VAR_LIST || listtv.vval.v_list->lv_len < 2))
|
||||
{
|
||||
if (listtv.v_type != VAR_LIST)
|
||||
@@ -2423,7 +2475,7 @@ channel_has_block_id(chanpart_T *chanpart, int id)
|
||||
/*
|
||||
* Get a message from the JSON queue for channel "channel".
|
||||
* When "id" is positive it must match the first number in the list.
|
||||
* When "id" is zero or negative jut get the first message. But not one
|
||||
* When "id" is zero or negative just get the first message. But not one
|
||||
* in the ch_block_ids list.
|
||||
* When "without_callback" is TRUE also get messages that were pushed back.
|
||||
* Return OK when found and return the value in "rettv".
|
||||
@@ -2445,7 +2497,8 @@ channel_get_json(
|
||||
list_T *l;
|
||||
typval_T *tv;
|
||||
|
||||
if (channel->ch_part[part].ch_mode != CH_MODE_LSP)
|
||||
if (channel->ch_part[part].ch_mode != CH_MODE_LSP
|
||||
&& channel->ch_part[part].ch_mode != CH_MODE_DAP)
|
||||
{
|
||||
l = item->jq_value->vval.v_list;
|
||||
CHECK_LIST_MATERIALIZE(l);
|
||||
@@ -2456,29 +2509,50 @@ channel_get_json(
|
||||
dict_T *d;
|
||||
dictitem_T *di;
|
||||
|
||||
// LSP message payload is a JSON-RPC dict.
|
||||
// For RPC requests and responses, the 'id' item will be present.
|
||||
// For notifications, it will not be present.
|
||||
if (id > 0)
|
||||
if (channel->ch_part[part].ch_mode == CH_MODE_LSP)
|
||||
{
|
||||
if (item->jq_value->v_type != VAR_DICT)
|
||||
goto nextitem;
|
||||
d = item->jq_value->vval.v_dict;
|
||||
if (d == NULL)
|
||||
goto nextitem;
|
||||
// When looking for a response message from the LSP server,
|
||||
// ignore new LSP request and notification messages. LSP
|
||||
// request and notification messages have the "method" field in
|
||||
// the header and the response messages do not have this field.
|
||||
if (dict_has_key(d, "method"))
|
||||
goto nextitem;
|
||||
di = dict_find(d, (char_u *)"id", -1);
|
||||
if (di == NULL)
|
||||
goto nextitem;
|
||||
tv = &di->di_tv;
|
||||
// LSP message payload is a JSON-RPC dict. For RPC requests and
|
||||
// responses, the 'id' item will be present. For notifications,
|
||||
// it will not be present.
|
||||
if (id > 0)
|
||||
{
|
||||
if (item->jq_value->v_type != VAR_DICT)
|
||||
goto nextitem;
|
||||
d = item->jq_value->vval.v_dict;
|
||||
if (d == NULL)
|
||||
goto nextitem;
|
||||
// When looking for a response message from the LSP server,
|
||||
// ignore new LSP request and notification messages. LSP
|
||||
// request and notification messages have the "method" field
|
||||
// in the header and the response messages do not have this
|
||||
// field.
|
||||
if (dict_has_key(d, "method"))
|
||||
goto nextitem;
|
||||
di = dict_find(d, (char_u *)"id", -1);
|
||||
if (di == NULL)
|
||||
goto nextitem;
|
||||
tv = &di->di_tv;
|
||||
}
|
||||
else
|
||||
tv = item->jq_value;
|
||||
}
|
||||
else
|
||||
tv = item->jq_value;
|
||||
{
|
||||
if (id > 0)
|
||||
{
|
||||
if (item->jq_value->v_type != VAR_DICT)
|
||||
goto nextitem;
|
||||
d = item->jq_value->vval.v_dict;
|
||||
if (d == NULL)
|
||||
goto nextitem;
|
||||
di = dict_find(d, (char_u *)"request_seq", -1);
|
||||
if (di == NULL)
|
||||
goto nextitem;
|
||||
tv = &di->di_tv;
|
||||
}
|
||||
else
|
||||
tv = item->jq_value;
|
||||
}
|
||||
}
|
||||
|
||||
if ((without_callback || !item->jq_no_callback)
|
||||
@@ -2860,7 +2934,8 @@ channel_use_json_head(channel_T *channel, ch_part_T part)
|
||||
ch_mode_T ch_mode = channel->ch_part[part].ch_mode;
|
||||
|
||||
return ch_mode == CH_MODE_JSON || ch_mode == CH_MODE_JS
|
||||
|| ch_mode == CH_MODE_LSP;
|
||||
|| ch_mode == CH_MODE_LSP
|
||||
|| ch_mode == CH_MODE_DAP;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2917,10 +2992,10 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
||||
// Get any json message in the queue.
|
||||
if (channel_get_json(channel, part, -1, FALSE, &listtv) == FAIL)
|
||||
{
|
||||
if (ch_mode == CH_MODE_LSP)
|
||||
// In the "lsp" mode, the http header and the json payload may
|
||||
// be received in multiple messages. So concatenate all the
|
||||
// received messages.
|
||||
if (ch_mode == CH_MODE_LSP || ch_mode == CH_MODE_DAP)
|
||||
// In the "lsp" or "dap" mode, the http header and the json
|
||||
// payload may be received in multiple messages. So concatenate
|
||||
// all the received messages.
|
||||
(void)channel_collapse(channel, part, FALSE);
|
||||
|
||||
// Parse readahead, return when there is still no message.
|
||||
@@ -2929,7 +3004,7 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (ch_mode == CH_MODE_LSP)
|
||||
if (ch_mode == CH_MODE_LSP || ch_mode == CH_MODE_DAP)
|
||||
{
|
||||
dict_T *d = listtv->vval.v_dict;
|
||||
dictitem_T *di;
|
||||
@@ -2937,7 +3012,10 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
||||
seq_nr = 0;
|
||||
if (d != NULL)
|
||||
{
|
||||
di = dict_find(d, (char_u *)"id", -1);
|
||||
if (ch_mode == CH_MODE_LSP)
|
||||
di = dict_find(d, (char_u *)"id", -1);
|
||||
else
|
||||
di = dict_find(d, (char_u *)"request_seq", -1);
|
||||
if (di != NULL && di->di_tv.v_type == VAR_NUMBER)
|
||||
seq_nr = di->di_tv.vval.v_number;
|
||||
}
|
||||
@@ -3054,13 +3132,14 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
||||
called_otc = FALSE;
|
||||
if (seq_nr > 0)
|
||||
{
|
||||
// JSON or JS or LSP mode: invoke the one-time callback with the
|
||||
// JSON or JS or LSP or DAP mode: invoke the one-time callback with the
|
||||
// matching nr
|
||||
int lsp_req_msg = FALSE;
|
||||
|
||||
// Don't use a LSP server request message with the same sequence number
|
||||
// as the client request message as the response message.
|
||||
if (ch_mode == CH_MODE_LSP && argv[1].v_type == VAR_DICT
|
||||
// Don't use a LSP/DAP server request message with the same sequence
|
||||
// number as the client request message as the response message.
|
||||
if ((ch_mode == CH_MODE_LSP || ch_mode == CH_MODE_DAP)
|
||||
&& argv[1].v_type == VAR_DICT
|
||||
&& dict_has_key(argv[1].vval.v_dict, "method"))
|
||||
lsp_req_msg = TRUE;
|
||||
|
||||
@@ -3079,7 +3158,8 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
||||
}
|
||||
}
|
||||
|
||||
if (seq_nr > 0 && (ch_mode != CH_MODE_LSP || called_otc))
|
||||
if (seq_nr > 0 && ((ch_mode != CH_MODE_LSP && ch_mode != CH_MODE_DAP)
|
||||
|| called_otc))
|
||||
{
|
||||
if (!called_otc)
|
||||
{
|
||||
@@ -3271,6 +3351,7 @@ channel_part_info(channel_T *channel, dict_T *dict, char *name, ch_part_T part)
|
||||
case CH_MODE_JSON: s = "JSON"; break;
|
||||
case CH_MODE_JS: s = "JS"; break;
|
||||
case CH_MODE_LSP: s = "LSP"; break;
|
||||
case CH_MODE_DAP: s = "DAP"; break;
|
||||
}
|
||||
dict_add_string(dict, namebuf, (char_u *)s);
|
||||
|
||||
@@ -3712,7 +3793,7 @@ ch_close_part_on_error(
|
||||
// Only send "DETACH" for a netbeans channel.
|
||||
if (channel->ch_nb_close_cb != NULL)
|
||||
channel_save(channel, PART_SOCK, (char_u *)DETACH_MSG_RAW,
|
||||
(int)STRLEN(DETACH_MSG_RAW), FALSE, "PUT ");
|
||||
(int)STRLEN_LITERAL(DETACH_MSG_RAW), FALSE, "PUT ");
|
||||
|
||||
// When reading is not possible close this part of the channel. Don't
|
||||
// close the channel yet, there may be something to read on another part.
|
||||
@@ -3938,10 +4019,10 @@ channel_read_json_block(
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (mode == CH_MODE_LSP)
|
||||
// In the "lsp" mode, the http header and the json payload may be
|
||||
// received in multiple messages. So concatenate all the received
|
||||
// messages.
|
||||
if (mode == CH_MODE_LSP || mode == CH_MODE_DAP)
|
||||
// In the "lsp" or "dap" mode, the http header and the json payload
|
||||
// may be received in multiple messages. So concatenate all the
|
||||
// received messages.
|
||||
(void)channel_collapse(channel, part, FALSE);
|
||||
|
||||
more = channel_parse_json(channel, part);
|
||||
@@ -4514,7 +4595,7 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
return;
|
||||
}
|
||||
|
||||
if (ch_mode == CH_MODE_LSP)
|
||||
if (ch_mode == CH_MODE_LSP || ch_mode == CH_MODE_DAP)
|
||||
{
|
||||
dict_T *d;
|
||||
dictitem_T *di;
|
||||
@@ -4527,11 +4608,15 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
return;
|
||||
|
||||
d = argvars[1].vval.v_dict;
|
||||
di = dict_find(d, (char_u *)"id", -1);
|
||||
if (ch_mode == CH_MODE_LSP)
|
||||
di = dict_find(d, (char_u *)"id", -1);
|
||||
else
|
||||
di = dict_find(d, (char_u *)"seq", -1);
|
||||
if (di != NULL && di->di_tv.v_type != VAR_NUMBER)
|
||||
{
|
||||
// only number type is supported for the 'id' item
|
||||
semsg(_(e_invalid_value_for_argument_str), "id");
|
||||
// only number type is supported for the 'id' or 'seq' item
|
||||
semsg(_(e_invalid_value_for_argument_str),
|
||||
ch_mode == CH_MODE_LSP ? "id" : "seq");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4539,7 +4624,16 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
if (dict_has_key(argvars[2].vval.v_dict, "callback"))
|
||||
callback_present = TRUE;
|
||||
|
||||
if (eval || callback_present)
|
||||
if (ch_mode == CH_MODE_DAP)
|
||||
{
|
||||
// DAP message always has a sequence number (id)
|
||||
id = ++channel->ch_last_msg_id;
|
||||
if (di == NULL)
|
||||
dict_add_number(d, "seq", id);
|
||||
else
|
||||
di->di_tv.vval.v_number = id;
|
||||
}
|
||||
else if (eval || callback_present)
|
||||
{
|
||||
// When evaluating an expression or sending an expression with a
|
||||
// callback, always assign a generated ID
|
||||
@@ -4557,7 +4651,7 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
if (di != NULL)
|
||||
id = di->di_tv.vval.v_number;
|
||||
}
|
||||
if (!dict_has_key(d, "jsonrpc"))
|
||||
if (ch_mode == CH_MODE_LSP && !dict_has_key(d, "jsonrpc"))
|
||||
dict_add_string(d, "jsonrpc", (char_u *)"2.0");
|
||||
text = json_encode_lsp_msg(&argvars[1]);
|
||||
}
|
||||
@@ -4582,7 +4676,7 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
if (channel_read_json_block(channel, part_read, timeout, id, &listtv)
|
||||
== OK)
|
||||
{
|
||||
if (ch_mode == CH_MODE_LSP)
|
||||
if (ch_mode == CH_MODE_LSP || ch_mode == CH_MODE_DAP)
|
||||
{
|
||||
*rettv = *listtv;
|
||||
// Change the type to avoid the value being freed.
|
||||
@@ -4602,7 +4696,13 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
}
|
||||
}
|
||||
free_job_options(&opt);
|
||||
if (ch_mode == CH_MODE_LSP && !eval && callback_present)
|
||||
if (ch_mode == CH_MODE_DAP && !eval)
|
||||
{
|
||||
// A DAP message always has a sequence number.
|
||||
if (rettv->vval.v_dict != NULL)
|
||||
dict_add_number(rettv->vval.v_dict, "seq", id);
|
||||
}
|
||||
else if (ch_mode == CH_MODE_LSP && !eval && callback_present)
|
||||
{
|
||||
// if ch_sendexpr() is used to send a LSP message and a callback
|
||||
// function is specified, then return the generated identifier for the
|
||||
|
||||
@@ -652,6 +652,9 @@ cin_islabel(void) // XXX
|
||||
if (!cin_islabel_skip(&s))
|
||||
return FALSE;
|
||||
|
||||
if (ind_find_start_CORS(NULL))
|
||||
return FALSE; // Don't accept a label in a comment or a raw string.
|
||||
|
||||
// Only accept a label if the previous line is terminated or is a case
|
||||
// label.
|
||||
pos_T cursor_save;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user