Compare commits
339 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c0f8000e1 | ||
|
|
211ceea602 | ||
|
|
b8a653a377 | ||
|
|
30bac359dc | ||
|
|
466b5f531a | ||
|
|
8ea5f27745 | ||
|
|
f89662722d | ||
|
|
d13f135295 | ||
|
|
8e29c35a04 | ||
|
|
80a0c355cf | ||
|
|
54b6c0c0e7 | ||
|
|
575961c791 | ||
|
|
f6e1dd11f4 | ||
|
|
b90145672d | ||
|
|
02abcf381f | ||
|
|
06aa378056 | ||
|
|
96898d7324 | ||
|
|
7cb43f286e | ||
|
|
bf21df1c7b | ||
|
|
a8fdfd4fcb | ||
|
|
68b3585e1d | ||
|
|
c84526dd29 | ||
|
|
be7ef8a19e | ||
|
|
e09000a786 | ||
|
|
30f012d8bc | ||
|
|
bde5832216 | ||
|
|
af3ccc2845 | ||
|
|
c0f0a34ea3 | ||
|
|
418400075a | ||
|
|
1578ea9d97 | ||
|
|
e2cf84d0a0 | ||
|
|
0effd2faf9 | ||
|
|
a4c0119786 | ||
|
|
742e8722b3 | ||
|
|
b435da0b4f | ||
|
|
955c02dff7 | ||
|
|
9c0d057e3d | ||
|
|
4292eea714 | ||
|
|
9a2260d6cf | ||
|
|
25f6539645 | ||
|
|
a603175c6c | ||
|
|
abd2d7d453 | ||
|
|
c9eaff0a8a | ||
|
|
8c116bbe79 | ||
|
|
3abbe31fe0 | ||
|
|
347e8c1e7d | ||
|
|
3d472d8675 | ||
|
|
0172ff5542 | ||
|
|
196cf9f644 | ||
|
|
1fe0d1e8f5 | ||
|
|
6463c32e20 | ||
|
|
243dcd1bcb | ||
|
|
0b257ecb90 | ||
|
|
aeb716ea77 | ||
|
|
48137e4e48 | ||
|
|
e147b635fc | ||
|
|
9e55474849 | ||
|
|
de10c87bed | ||
|
|
e2f4e18437 | ||
|
|
5a3b75d67b | ||
|
|
03e89ccf33 | ||
|
|
2f8bd14198 | ||
|
|
9774651ecf | ||
|
|
8e0483c2f4 | ||
|
|
60edf94c4e | ||
|
|
68f9dedba4 | ||
|
|
b3d8a0f349 | ||
|
|
890d5fd138 | ||
|
|
2b7b745bb5 | ||
|
|
b1a247d659 | ||
|
|
3ee2b76ba1 | ||
|
|
c4d2fa018c | ||
|
|
b3dba929cb | ||
|
|
88cded7ac0 | ||
|
|
ce4fbda992 | ||
|
|
076404ae41 | ||
|
|
c9e5aeff35 | ||
|
|
332dd22ed4 | ||
|
|
67ae763557 | ||
|
|
6391a38e5e | ||
|
|
f445ed0d56 | ||
|
|
a907a7f73b | ||
|
|
4d262b4952 | ||
|
|
53884ba7a8 | ||
|
|
d2dc9a4f37 | ||
|
|
645ed6597d | ||
|
|
cc8798e719 | ||
|
|
1da42ee271 | ||
|
|
ecf90b92f1 | ||
|
|
7aca0e14de | ||
|
|
2f5fe8827e | ||
|
|
faad250544 | ||
|
|
a4cf812462 | ||
|
|
39ee7d17b9 | ||
|
|
0c109e4e60 | ||
|
|
2b70de167e | ||
|
|
e5df6e8d42 | ||
|
|
32e453d339 | ||
|
|
a74e5fc5b9 | ||
|
|
c4d212257d | ||
|
|
d41cd5dce4 | ||
|
|
1f4cd5fb52 | ||
|
|
019c53b37f | ||
|
|
15a96a04ad | ||
|
|
6238ee9f89 | ||
|
|
f9bed026ac | ||
|
|
ed7c7fb225 | ||
|
|
3f53a2ce2f | ||
|
|
74c53196cc | ||
|
|
cce17de845 | ||
|
|
bae31c35bb | ||
|
|
955d28799b | ||
|
|
a5d9654620 | ||
|
|
e06d084735 | ||
|
|
d737e24437 | ||
|
|
36d0022b3b | ||
|
|
8faba24ca7 | ||
|
|
e22b31887a | ||
|
|
42c6686c78 | ||
|
|
e21c4a649a | ||
|
|
a72926fa51 | ||
|
|
ca62f84503 | ||
|
|
98fe2b6c71 | ||
|
|
7a9548c400 | ||
|
|
e05d897258 | ||
|
|
751b59e539 | ||
|
|
a8052afcb6 | ||
|
|
b00f441e69 | ||
|
|
ba27e4fffa | ||
|
|
84c7a5d18f | ||
|
|
3f89324b3a | ||
|
|
ef3cee793f | ||
|
|
09af51afbe | ||
|
|
81d5329ace | ||
|
|
ef3d79ebbe | ||
|
|
13b25e2f34 | ||
|
|
8d13b8244a | ||
|
|
8b009a3bbf | ||
|
|
90d751b3fb | ||
|
|
fba75cad9a | ||
|
|
b11c8efbe6 | ||
|
|
e88e360a51 | ||
|
|
ba861f8c53 | ||
|
|
16d421a4d9 | ||
|
|
475d6e2f1d | ||
|
|
7c8168aa0a | ||
|
|
3697153993 | ||
|
|
9f983a9560 | ||
|
|
3697c6b020 | ||
|
|
67deae3b77 | ||
|
|
97a75d835b | ||
|
|
55464b5d18 | ||
|
|
2d14d62c50 | ||
|
|
5890ea5397 | ||
|
|
401f9aeddf | ||
|
|
c5f283d641 | ||
|
|
3c15945337 | ||
|
|
2ca96b09d7 | ||
|
|
c970b470fb | ||
|
|
2cf18fcc24 | ||
|
|
49a5a80410 | ||
|
|
8f2cd47404 | ||
|
|
1429277f0a | ||
|
|
36d6e87542 | ||
|
|
71fd19d7ac | ||
|
|
c6f6f1602d | ||
|
|
93a7855f01 | ||
|
|
e945350f11 | ||
|
|
ede5252d89 | ||
|
|
248de84d86 | ||
|
|
ff16ebdb08 | ||
|
|
9360647715 | ||
|
|
49b8d9903b | ||
|
|
433bcf3bec | ||
|
|
1f1b86ac60 | ||
|
|
ffeb2339cb | ||
|
|
727f6e2686 | ||
|
|
bab7619604 | ||
|
|
271f4fe47b | ||
|
|
24fd698045 | ||
|
|
6c0321fb9d | ||
|
|
48b913d735 | ||
|
|
7ed37dc534 | ||
|
|
123a1e6410 | ||
|
|
2c1269f0d3 | ||
|
|
6495ca4c16 | ||
|
|
d180f67a41 | ||
|
|
f17b8b1df5 | ||
|
|
f90fc1bd72 | ||
|
|
49b81793ff | ||
|
|
f3b566481c | ||
|
|
e948fea640 | ||
|
|
78ae2ff094 | ||
|
|
bd77d327d3 | ||
|
|
9c4cb7145f | ||
|
|
4d0c57e15f | ||
|
|
0fe3ca6031 | ||
|
|
75decb4a8d | ||
|
|
99ea2b5b06 | ||
|
|
22c62e2691 | ||
|
|
7ba60f17c2 | ||
|
|
6c34ace536 | ||
|
|
499e93d09a | ||
|
|
76abd0ccdf | ||
|
|
648240fe9a | ||
|
|
7d1e0a7832 | ||
|
|
2a7414594a | ||
|
|
ff9185e822 | ||
|
|
5845741d69 | ||
|
|
b0ad5c077b | ||
|
|
238a84621d | ||
|
|
b2bc54534c | ||
|
|
bc959db163 | ||
|
|
f7a568ebeb | ||
|
|
e352bb632a | ||
|
|
327e0e34c9 | ||
|
|
962a8c7f00 | ||
|
|
9166f1c09b | ||
|
|
2c1f4dcbcc | ||
|
|
98174caabb | ||
|
|
62cf4c2947 | ||
|
|
99ba87d152 | ||
|
|
0155401538 | ||
|
|
6ce357a586 | ||
|
|
73f41626df | ||
|
|
4b30e40a1f | ||
|
|
a6198523fb | ||
|
|
93cb5e544b | ||
|
|
5a4291d34e | ||
|
|
8526d32647 | ||
|
|
f7e99d102b | ||
|
|
08e758bb70 | ||
|
|
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 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -38,5 +38,6 @@ src/po/vim.pot diff=ignore_vim_pot
|
||||
#
|
||||
# https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
|
||||
src/po/vim.pot linguist-generated=true
|
||||
*.dump linguist-generated=true
|
||||
|
||||
runtime/syntax/testdir/input/vim_ex_help.vim -text diff linguist-language=vim linguist-detectable=true
|
||||
|
||||
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:
|
||||
|
||||
21
.github/MAINTAINERS
vendored
21
.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,12 @@ 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/just.vim @Alarcritty
|
||||
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 +90,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 +107,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
|
||||
@@ -254,6 +264,7 @@ runtime/ftplugin/mojo.vim @ribru17
|
||||
runtime/ftplugin/mp.vim @lifepillar
|
||||
runtime/ftplugin/mss.vim @Freed-Wu
|
||||
runtime/ftplugin/nginx.vim @chr4
|
||||
runtime/ftplugin/nickel.vim @ribru17
|
||||
runtime/ftplugin/nim.vim @ribru17
|
||||
runtime/ftplugin/nroff.vim @averms
|
||||
runtime/ftplugin/nsis.vim @k-takata
|
||||
@@ -339,6 +350,7 @@ runtime/ftplugin/vdf.vim @ObserverOfTime
|
||||
runtime/ftplugin/vim.vim @dkearns
|
||||
runtime/ftplugin/wget.vim @dkearns
|
||||
runtime/ftplugin/wget2.vim @dkearns
|
||||
runtime/ftplugin/wks.vim @anakin4747
|
||||
runtime/ftplugin/xcompose.vim @ObserverOfTime
|
||||
runtime/ftplugin/xml.vim @chrisbra
|
||||
runtime/ftplugin/xs.vim @petdance
|
||||
@@ -378,6 +390,7 @@ runtime/indent/go.vim @dbarnett
|
||||
runtime/indent/graphql.vim @jparise
|
||||
runtime/indent/gyp.vim @ObserverOfTime
|
||||
runtime/indent/haml.vim @tpope
|
||||
runtime/indent/handlebars.vim @sukima
|
||||
runtime/indent/hare.vim @selenebun
|
||||
runtime/indent/hcl.vim @gpanders
|
||||
runtime/indent/hog.vim @wtfbbqhax
|
||||
@@ -459,6 +472,7 @@ runtime/syntax/shared/hgcommitDiff.vim @vegerot
|
||||
runtime/syntax/abaqus.vim @costerwi
|
||||
runtime/syntax/abnf.vim @A4-Tacks
|
||||
runtime/syntax/aidl.vim @dpelle
|
||||
runtime/syntax/amiga.vim @sodero
|
||||
runtime/syntax/ant.vim @dkearns
|
||||
runtime/syntax/antlr4.vim @jiangyinzuo
|
||||
runtime/syntax/arduino.vim @johshoff
|
||||
@@ -531,6 +545,7 @@ runtime/syntax/gitignore.vim @ObserverOfTime
|
||||
runtime/syntax/gitolite.vim @sitaramc
|
||||
runtime/syntax/gitrebase.vim @tpope
|
||||
runtime/syntax/gleam.vim @kirillmorozov
|
||||
runtime/syntax/glimmer.vim @sukima
|
||||
runtime/syntax/glsl.vim @gpanders
|
||||
runtime/syntax/go.vim @bhcleek
|
||||
runtime/syntax/goaccess.vim @meonkeys
|
||||
@@ -541,6 +556,7 @@ runtime/syntax/graphql.vim @jparise
|
||||
runtime/syntax/groff.vim @jmarshall
|
||||
runtime/syntax/gyp.vim @ObserverOfTime
|
||||
runtime/syntax/haml.vim @tpope
|
||||
runtime/syntax/handlebars.vim @sukima
|
||||
runtime/syntax/hare.vim @selenebun
|
||||
runtime/syntax/haredoc.vim @selenebun
|
||||
runtime/syntax/haskell.vim @coot
|
||||
@@ -696,6 +712,7 @@ runtime/syntax/vroom.vim @dbarnett
|
||||
runtime/syntax/wdl.vim @zenmatic
|
||||
runtime/syntax/wget.vim @dkearns
|
||||
runtime/syntax/wget2.vim @dkearns
|
||||
runtime/syntax/wks.vim @anakin4747
|
||||
runtime/syntax/xbl.vim @dkearns
|
||||
runtime/syntax/xcompose.vim @ObserverOfTime
|
||||
runtime/syntax/xml.vim @chrisbra
|
||||
|
||||
2
.github/actions/test_artifacts/action.yml
vendored
2
.github/actions/test_artifacts/action.yml
vendored
@@ -27,7 +27,7 @@ runs:
|
||||
# set as the "result".
|
||||
result-encoding: string
|
||||
- name: Upload failed tests
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
# Name of the artifact to upload.
|
||||
name: ${{ format('GH-{0}-{1}-{2}-{3}-{4}-failed-tests',
|
||||
|
||||
10
.github/dependabot.yml
vendored
10
.github/dependabot.yml
vendored
@@ -1,8 +1,16 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
directories:
|
||||
- "/"
|
||||
- "/.github/actions/**/*"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
commit-message:
|
||||
prefix: "CI"
|
||||
cooldown:
|
||||
default-days: 7
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
|
||||
20
.github/workflows/ci.yml
vendored
20
.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]
|
||||
@@ -84,7 +84,7 @@ jobs:
|
||||
architecture: arm64
|
||||
- features: normal
|
||||
compiler: gcc
|
||||
extra: [vimtags, proto, preproc_indent, encoding]
|
||||
extra: [vimtags, proto, preproc_indent, encoding, codestyle]
|
||||
- features: huge
|
||||
compiler: gcc
|
||||
extra: [no_x11_wl]
|
||||
@@ -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'
|
||||
|
||||
@@ -328,7 +335,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Test
|
||||
timeout-minutes: 30
|
||||
timeout-minutes: 45
|
||||
run: |
|
||||
make ${SHADOWOPT} ${TEST}
|
||||
|
||||
@@ -363,6 +370,11 @@ jobs:
|
||||
true
|
||||
)
|
||||
|
||||
- name: Check Source Code style
|
||||
if: contains(matrix.extra, 'codestyle')
|
||||
run: |
|
||||
make -C src/testdir codestyle
|
||||
|
||||
- name: Check preprocessor indent
|
||||
if: contains(matrix.extra, 'preproc_indent')
|
||||
run: |
|
||||
@@ -769,7 +781,7 @@ jobs:
|
||||
# copy src\vim*.dll artifacts
|
||||
#
|
||||
#- name: Upload Artifact
|
||||
# uses: actions/upload-artifact@v1
|
||||
# uses: actions/upload-artifact@v7
|
||||
# with:
|
||||
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
|
||||
# path: ./artifacts
|
||||
|
||||
@@ -147,8 +147,9 @@ For the recommended documentation style, please check [helphelp.txt][16].
|
||||
# I have a question
|
||||
|
||||
If you have some question on the style guide, please contact the [vim-dev][0]
|
||||
mailing list. For other questions please use the [Vi Stack Exchange][8] website, the
|
||||
[vim-use][9] mailing list or make use of the [discussion][10] feature here at github.
|
||||
mailing list. For other questions you can join [`#vim`][19], use the
|
||||
[Vi Stack Exchange][8] website, the [vim-use][9] mailing list or make use of the
|
||||
[discussion][10] feature here at github.
|
||||
|
||||
[todo list]: https://github.com/vim/vim/blob/master/runtime/doc/todo.txt
|
||||
[0]: http://www.vim.org/maillist.php#vim-dev
|
||||
@@ -170,3 +171,4 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website,
|
||||
[16]: https://github.com/vim/vim/blob/master/runtime/doc/helphelp.txt
|
||||
[17]: https://github.com/vim/vim/issues
|
||||
[18]: https://github.com/vim/vim/blob/master/src/testdir/test_codestyle.vim
|
||||
[19]: https://web.libera.chat/#vim
|
||||
|
||||
9
Filelist
9
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 = \
|
||||
@@ -937,12 +941,15 @@ RT_UNIX_DOS_BIN = \
|
||||
runtime/vim16x16.gif \
|
||||
runtime/vim16x16.png \
|
||||
runtime/vim16x16.xpm \
|
||||
runtime/vim16x16_png.h \
|
||||
runtime/vim32x32.gif \
|
||||
runtime/vim32x32.png \
|
||||
runtime/vim32x32.xpm \
|
||||
runtime/vim32x32_png.h \
|
||||
runtime/vim48x48.gif \
|
||||
runtime/vim48x48.png \
|
||||
runtime/vim48x48.xpm \
|
||||
runtime/vim48x48_png.h \
|
||||
|
||||
# Runtime not for Unix-like or extra.
|
||||
RT_NO_UNIX = \
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -67,3 +67,4 @@ Visual
|
||||
VisualNOS
|
||||
WarningMsg
|
||||
WildMenu
|
||||
WinColor
|
||||
|
||||
@@ -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
|
||||
|
||||
62
runtime/autoload/dist/ft.vim
vendored
62
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 Mar 24
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
# These functions are moved here from runtime/filetype.vim to make startup
|
||||
@@ -11,6 +11,12 @@ vim9script
|
||||
|
||||
var prolog_pattern = '^\s*\(:-\|%\+\(\s\|$\)\|\/\*\)\|\.\s*$'
|
||||
|
||||
def IsObjectScriptRoutine(): bool
|
||||
var line1 = getline(1)
|
||||
line1 = substitute(line1, '^\ufeff', '', '')
|
||||
return line1 =~? '^\s*routine\>\s\+[%A-Za-z][%A-Za-z0-9_.]*\%(\s*\[\|\s*;\|$\)'
|
||||
enddef
|
||||
|
||||
export def Check_inp()
|
||||
if getline(1) =~ '%%'
|
||||
setf tex
|
||||
@@ -75,6 +81,18 @@ export def FTasm()
|
||||
exe "setf " .. fnameescape(b:asmsyntax)
|
||||
enddef
|
||||
|
||||
export def FTmac()
|
||||
if exists("g:filetype_mac")
|
||||
exe "setf " .. g:filetype_mac
|
||||
else
|
||||
if IsObjectScriptRoutine()
|
||||
setf objectscript_routine
|
||||
else
|
||||
FTasm()
|
||||
endif
|
||||
endif
|
||||
enddef
|
||||
|
||||
export def FTasmsyntax()
|
||||
# see if the file contains any asmsyntax=foo overrides. If so, change
|
||||
# b:asmsyntax appropriately
|
||||
@@ -195,6 +213,7 @@ export def FTcl()
|
||||
endif
|
||||
enddef
|
||||
|
||||
# Determines whether a *.cls file is ObjectScript, TeX, Rexx, Visual Basic, or Smalltalk.
|
||||
export def FTcls()
|
||||
if exists("g:filetype_cls")
|
||||
exe "setf " .. g:filetype_cls
|
||||
@@ -211,7 +230,20 @@ export def FTcls()
|
||||
endif
|
||||
|
||||
var nonblank1 = getline(nextnonblank(1))
|
||||
if nonblank1 =~ '^\v%(\%|\\)'
|
||||
var lnum = nextnonblank(1)
|
||||
while lnum > 0 && lnum <= line("$")
|
||||
var line = getline(lnum)
|
||||
if line =~? '^\s*\%(import\|include\|includegenerator\)\>'
|
||||
lnum = nextnonblank(lnum + 1)
|
||||
else
|
||||
nonblank1 = line
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
if nonblank1 =~? '^\s*class\>\s\+[%A-Za-z][%A-Za-z0-9_.]*\%(\s\+extends\>\|\s*\[\|\s*{\|$\)'
|
||||
setf objectscript
|
||||
elseif nonblank1 =~ '^\v%(\%|\\)'
|
||||
setf tex
|
||||
elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)'
|
||||
setf rexx
|
||||
@@ -857,6 +889,10 @@ export def FTinc()
|
||||
if exists("g:filetype_inc")
|
||||
exe "setf " .. g:filetype_inc
|
||||
else
|
||||
if IsObjectScriptRoutine()
|
||||
setf objectscript_routine
|
||||
return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 20]))
|
||||
var line = getline(lnum)
|
||||
if line =~? "perlscript"
|
||||
@@ -926,6 +962,16 @@ export def FTi()
|
||||
setf progress
|
||||
enddef
|
||||
|
||||
export def FTint()
|
||||
if exists("g:filetype_int")
|
||||
exe "setf " .. g:filetype_int
|
||||
elseif IsObjectScriptRoutine()
|
||||
setf objectscript_routine
|
||||
else
|
||||
setf hex
|
||||
endif
|
||||
enddef
|
||||
|
||||
var ft_pascal_comments = '^\s*\%({\|(\*\|//\)'
|
||||
var ft_pascal_keywords = '^\s*\%(program\|unit\|library\|uses\|begin\|procedure\|function\|const\|type\|var\)\>'
|
||||
|
||||
@@ -1775,6 +1821,8 @@ const ft_from_ext = {
|
||||
"cairo": "cairo",
|
||||
# Cap'n Proto
|
||||
"capnp": "capnp",
|
||||
# Common Package Specification
|
||||
"cps": "json",
|
||||
# C#
|
||||
"cs": "cs",
|
||||
"csx": "cs",
|
||||
@@ -1872,6 +1920,8 @@ const ft_from_ext = {
|
||||
"cr": "crystal",
|
||||
# CSV Files
|
||||
"csv": "csv",
|
||||
# Concertor
|
||||
"cto": "concerto",
|
||||
# CUDA Compute Unified Device Architecture
|
||||
"cu": "cuda",
|
||||
"cuh": "cuda",
|
||||
@@ -2382,6 +2432,8 @@ const ft_from_ext = {
|
||||
# N1QL
|
||||
"n1ql": "n1ql",
|
||||
"nql": "n1ql",
|
||||
# Neon
|
||||
"neon": "neon",
|
||||
# NetLinx
|
||||
"axs": "netlinx",
|
||||
"axi": "netlinx",
|
||||
@@ -2571,6 +2623,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 +3069,9 @@ const ft_from_ext = {
|
||||
"raml": "raml",
|
||||
# YANG
|
||||
"yang": "yang",
|
||||
# YARA, YARA-X
|
||||
"yara": "yara",
|
||||
"yar": "yara",
|
||||
# Yuck
|
||||
"yuck": "yuck",
|
||||
# Zimbu
|
||||
|
||||
14
runtime/autoload/dist/vim9.vim
vendored
14
runtime/autoload/dist/vim9.vim
vendored
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim runtime support library
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2026 Jan 31
|
||||
# Last Change: 2026 Mar 10
|
||||
|
||||
export def IsSafeExecutable(filetype: string, executable: string): bool
|
||||
if empty(exepath(executable))
|
||||
@@ -60,7 +60,9 @@ if has('unix')
|
||||
enddef
|
||||
else
|
||||
export def Launch(args: string)
|
||||
execute $':silent ! nohup {args} {Redir()} &' | redraw!
|
||||
# Use job_start, because using !xdg-open is known not to work with zsh
|
||||
# ignore signals on exit
|
||||
job_start(split(args), {'stoponexit': ''})
|
||||
enddef
|
||||
endif
|
||||
elseif has('win32')
|
||||
@@ -137,7 +139,13 @@ export def Open(file: string)
|
||||
setlocal shell&
|
||||
defer setbufvar('%', '&shell', shell)
|
||||
endif
|
||||
Launch($"{Viewer()} {shellescape(file, 1)}")
|
||||
if has('unix') && !has('win32unix') && !exists('$WSL_DISTRO_NAME')
|
||||
# Linux: using job_start, so do not use shellescape.
|
||||
Launch($"{Viewer()} {file}")
|
||||
else
|
||||
# Windows/WSL/Cygwin: NEEDS shellescape because Launch uses '!'
|
||||
Launch($"{Viewer()} {shellescape(file, 1)}")
|
||||
endif
|
||||
enddef
|
||||
|
||||
# Uncomment this line to check for compilation errors early
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
" 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 :!
|
||||
" 2026 Mar 08 by Vim Project: Make ZipUpdatePS() check for powershell
|
||||
" 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,
|
||||
@@ -159,7 +160,7 @@ endfunction
|
||||
function! s:ZipUpdatePS(zipfile, fname)
|
||||
" Update a filename within a zipped file
|
||||
" Equivalent to `zip -u zipfile fname`
|
||||
if a:fname =~ '/'
|
||||
if &shell =~ 'pwsh' && a:fname =~ '/'
|
||||
call s:Mess('Error', "***error*** PowerShell cannot update files in archive subfolders")
|
||||
return ':'
|
||||
endif
|
||||
|
||||
23
runtime/compiler/just.vim
Normal file
23
runtime/compiler/just.vim
Normal file
@@ -0,0 +1,23 @@
|
||||
" Vim compiler file
|
||||
" Compiler: Just
|
||||
" Maintainer: Alarcritty
|
||||
" Last Change: 2026 Mar 20
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
endif
|
||||
let current_compiler = "just"
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
CompilerSet makeprg=just
|
||||
|
||||
CompilerSet errorformat=
|
||||
\%Eerror:\ %m,
|
||||
\%C%\\s%#——▶\ %f:%l:%c,
|
||||
\%-C%.%#,
|
||||
\%-G%.%#
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
@@ -35,19 +35,19 @@ doctags: doctags.c
|
||||
$(CC) doctags.c -o doctags
|
||||
|
||||
vim.man: vim.1
|
||||
nroff -man $? | sed -e s/.//g > $@
|
||||
nroff -c -man $? | sed -e s/.//g > $@
|
||||
|
||||
evim.man: evim.1
|
||||
nroff -man $? | sed -e s/.//g > $@
|
||||
nroff -c -man $? | sed -e s/.//g > $@
|
||||
|
||||
vimdiff.man: vimdiff.1
|
||||
nroff -man $? | sed -e s/.//g > $@
|
||||
nroff -c -man $? | sed -e s/.//g > $@
|
||||
|
||||
vimtutor.man: vimtutor.1
|
||||
nroff -man $? | sed -e s/.//g > $@
|
||||
nroff -c -man $? | sed -e s/.//g > $@
|
||||
|
||||
xxd.man: xxd.1
|
||||
nroff -man $? | sed -e s/.//g > $@
|
||||
nroff -c -man $? | sed -e s/.//g > $@
|
||||
|
||||
# Awk version of .txt to .html conversion.
|
||||
html: noerrors tags $(HTMLS)
|
||||
|
||||
@@ -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 @@
|
||||
*builtin.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*builtin.txt* For Vim version 9.2. Last change: 2026 Mar 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -106,6 +106,8 @@ ch_evalraw({handle}, {string} [, {options}])
|
||||
ch_getbufnr({handle}, {what}) Number get buffer number for {handle}/{what}
|
||||
ch_getjob({channel}) Job get the Job of {channel}
|
||||
ch_info({handle}) String info about channel {handle}
|
||||
ch_listen({address} [, {options}])
|
||||
Channel listen on {address}
|
||||
ch_log({msg} [, {handle}]) none write {msg} in the channel log file
|
||||
ch_logfile({fname} [, {mode}]) none start logging channel activity
|
||||
ch_open({address} [, {options}])
|
||||
@@ -697,7 +699,8 @@ synconcealed({lnum}, {col}) List info about concealing
|
||||
synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and
|
||||
{col}
|
||||
system({expr} [, {input}]) String output of shell command/filter {expr}
|
||||
systemlist({expr} [, {input}]) List output of shell command/filter {expr}
|
||||
systemlist({expr} [, {input}])
|
||||
List output of shell command/filter {expr}
|
||||
tabpagebuflist([{arg}]) List list of buffer numbers in tab page
|
||||
tabpagenr([{arg}]) Number number of current or last tab page
|
||||
tabpagewinnr({tabarg} [, {arg}])
|
||||
@@ -6430,6 +6433,8 @@ js_decode({string}) *js_decode()*
|
||||
- Strings can be in single quotes.
|
||||
- Empty items in an array (between two commas) are allowed and
|
||||
result in v:none items.
|
||||
- Capitalization is ignored in keywords: true, false, null,
|
||||
NaN, Infinity and -Infinity.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
ReadObject()->js_decode()
|
||||
@@ -6468,12 +6473,9 @@ json_decode({string}) *json_decode()* *E491*
|
||||
same as {"1":2}.
|
||||
- More floating point numbers are recognized, e.g. "1." for
|
||||
"1.0", or "001.2" for "1.2". Special floating point values
|
||||
"Infinity", "-Infinity" and "NaN" (capitalization ignored)
|
||||
are accepted.
|
||||
"Infinity", "-Infinity" and "NaN" are accepted.
|
||||
- Leading zeroes in integer numbers are ignored, e.g. "012"
|
||||
for "12" or "-012" for "-12".
|
||||
- Capitalization is ignored in literal names null, true or
|
||||
false, e.g. "NULL" for "null", "True" for "true".
|
||||
- Control characters U+0000 through U+001F which are not
|
||||
escaped in strings are accepted, e.g. " " (tab
|
||||
character in string) for "\t".
|
||||
@@ -6481,10 +6483,10 @@ json_decode({string}) *json_decode()* *E491*
|
||||
and results in v:none.
|
||||
- Backslash in an invalid 2-character sequence escape is
|
||||
ignored, e.g. "\a" is decoded as "a".
|
||||
- A correct surrogate pair in JSON strings should normally be
|
||||
a 12 character sequence such as "\uD834\uDD1E", but
|
||||
json_decode() silently accepts truncated surrogate pairs
|
||||
such as "\uD834" or "\uD834\u"
|
||||
- A surrogate pair in JSON strings is a 12 character sequence
|
||||
such as "\uD834\uDD1E". A lone surrogate or an invalid
|
||||
surrogate pair (e.g. "\uD800" or "\uD800\uD800") results
|
||||
in an error.
|
||||
*E938*
|
||||
A duplicate key in an object, valid in rfc7159, is not
|
||||
accepted by json_decode() as the result must be a valid Vim
|
||||
@@ -11693,6 +11695,30 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
Get the output of the shell command {expr} as a |String|. See
|
||||
|systemlist()| to get the output as a |List|.
|
||||
|
||||
{expr} can be a |String| or a |List|.
|
||||
When {expr} is a |String|, the command is executed through the
|
||||
shell (see below for how the command is constructed).
|
||||
|
||||
*E1575*
|
||||
When {expr} is a |List|, the first item is the executable and
|
||||
the remaining items are passed as arguments directly. The
|
||||
command is executed without using a shell, similar to
|
||||
|job_start()|. Since no shell is involved, shell features
|
||||
such as redirection, piping, globbing, environment variable
|
||||
expansion and backtick expansion will not work. Characters
|
||||
like ">" are passed as literal arguments to the command, not
|
||||
interpreted as redirection. Use this form when arguments may
|
||||
contain special characters that should not be interpreted by
|
||||
the shell. Example: >
|
||||
:let out = system(['grep', '-r', 'pattern', '.'])
|
||||
< With the String form ">" would be shell redirection, but
|
||||
with a List it is passed as a literal argument: >
|
||||
:let out = system(['echo', 'hello', '>', 'world'])
|
||||
< This outputs "hello > world", not redirect to a file.
|
||||
|
||||
To use the shell explicitly with a List: >
|
||||
:let out = system(['/bin/sh', '-c', 'echo $HOME'])
|
||||
<
|
||||
When {input} is given and is a |String| this string is written
|
||||
to a file and passed as stdin to the command. The string is
|
||||
written as-is, you need to take care of using the correct line
|
||||
@@ -11711,14 +11737,18 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
When prepended by |:silent| the terminal will not be set to
|
||||
cooked mode. This is meant to be used for commands that do
|
||||
not need the user to type. It avoids stray characters showing
|
||||
up on the screen which require |CTRL-L| to remove. >
|
||||
up on the screen which require |CTRL-L| to remove.
|
||||
When calling system() from a 'statusline' expression, an
|
||||
|autocommand| or a |timer| callback, you should use |:silent|
|
||||
to avoid terminal responses (e.g. from cursor style queries)
|
||||
being echoed on the screen. >
|
||||
:silent let f = system('ls *.vim')
|
||||
<
|
||||
Note: Use |shellescape()| or |::S| with |expand()| or
|
||||
|fnamemodify()| to escape special characters in a command
|
||||
argument. Newlines in {expr} may cause the command to fail.
|
||||
The characters in 'shellquote' and 'shellxquote' may also
|
||||
cause trouble.
|
||||
Note: When {expr} is a String, use |shellescape()| or |::S|
|
||||
with |expand()| or |fnamemodify()| to escape special
|
||||
characters in a command argument. Newlines in {expr} may
|
||||
cause the command to fail. The characters in 'shellquote'
|
||||
and 'shellxquote' may also cause trouble.
|
||||
This is not to be used for interactive commands.
|
||||
|
||||
The result is a String. Example: >
|
||||
@@ -11731,7 +11761,8 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
To avoid the string being truncated at a NUL, all NUL
|
||||
characters are replaced with SOH (0x01).
|
||||
|
||||
The command executed is constructed using several options:
|
||||
When {expr} is a String, the command executed is constructed
|
||||
using several options:
|
||||
'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
|
||||
({tmp} is an automatically generated file name).
|
||||
For Unix, braces are put around {expr} to allow for
|
||||
@@ -11758,6 +11789,9 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
systemlist({expr} [, {input}]) *systemlist()*
|
||||
Same as |system()|, but returns a |List| with lines (parts of
|
||||
output separated by NL) with NULs transformed into NLs.
|
||||
Like |system()|, {expr} can be a |String| (executed through
|
||||
the shell) or a |List| (executed directly without a shell).
|
||||
See |system()| for details.
|
||||
Output is the same as |readfile()| will output with {binary}
|
||||
argument set to "b", except that there is no extra empty item
|
||||
when the result ends in a NL.
|
||||
@@ -11769,6 +11803,11 @@ systemlist({expr} [, {input}]) *systemlist()*
|
||||
<
|
||||
Returns an empty string on error.
|
||||
|
||||
Like |system()|, prepend |:silent| when the command does not
|
||||
need user interaction and is called from a 'statusline'
|
||||
expression, an |autocommand| or a |timer| callback. See
|
||||
|system()| for details.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
:echo GetCmd()->systemlist()
|
||||
<
|
||||
@@ -13104,6 +13143,7 @@ acl Compiled with |ACL| support.
|
||||
all_builtin_terms Compiled with all builtin terminals enabled. (always
|
||||
true)
|
||||
amiga Amiga version of Vim.
|
||||
android Android version of Vim. *android*
|
||||
arabic Compiled with Arabic support |Arabic|.
|
||||
arp Compiled with ARP support (Amiga).
|
||||
autocmd Compiled with autocommand support. (always true)
|
||||
@@ -13274,6 +13314,7 @@ termguicolors Compiled with true color in terminal support.
|
||||
terminal Compiled with |terminal| support.
|
||||
terminfo Compiled with terminfo instead of termcap.
|
||||
termresponse Compiled with support for |t_RV| and |v:termresponse|.
|
||||
termux Termux version of Vim. *termux*
|
||||
textobjects Compiled with support for |text-objects|.
|
||||
textprop Compiled with support for |text-properties|.
|
||||
tgetent Compiled with tgetent support, able to use a termcap
|
||||
|
||||
@@ -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 Mar 13
|
||||
|
||||
|
||||
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
|
||||
@@ -112,6 +114,32 @@ Vim to write lines in log file: >
|
||||
call ch_logfile('channellog', 'w')
|
||||
See |ch_logfile()|.
|
||||
|
||||
You can also make Vim act as a server using |ch_listen()|. This does not
|
||||
require an external server program.
|
||||
|
||||
*channel-listen-demo*
|
||||
Start Vim and create a listening channel: >
|
||||
func OnAccept(channel, clientaddr)
|
||||
" Log the connection
|
||||
echomsg "Accepted connection from " .. a:clientaddr
|
||||
|
||||
" Get current time and send it to the client
|
||||
let current_time = strftime("%Y-%m-%d %H:%M:%S")
|
||||
call ch_sendraw(a:channel, "Vim Server Time: " .. current_time .. "\n")
|
||||
|
||||
" Optional: close immediately if you only want to provide the time
|
||||
call ch_close(a:channel)
|
||||
endfunc
|
||||
|
||||
" Start listening on port 8765
|
||||
let server = ch_listen('localhost:8765', {"callback": "OnAccept"})
|
||||
|
||||
From another Vim instance (or any program) you can connect to it: >
|
||||
let channel = ch_open('localhost:8765')
|
||||
|
||||
When done, close the server channel: >
|
||||
call ch_close(server)
|
||||
|
||||
==============================================================================
|
||||
3. Opening a channel *channel-open*
|
||||
|
||||
@@ -130,6 +158,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 +171,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 +182,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 +567,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 +576,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 +658,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
|
||||
|
||||
@@ -631,6 +667,33 @@ ch_info({handle}) *ch_info()*
|
||||
<
|
||||
Return type: dict<any>
|
||||
|
||||
ch_listen({address} [, {options}]) *E1573* *E1574* *ch_listen()*
|
||||
Listen on {address} for incoming channel connections.
|
||||
This creates a server-side channel, unlike |ch_open()|
|
||||
which connects to an existing server.
|
||||
Returns a Channel. Use |ch_status()| to check for failure.
|
||||
|
||||
{address} is a String, see |channel-address| for the possible
|
||||
accepted forms. Note: IPv6 is not yet supported.
|
||||
|
||||
If {options} is given it must be a |Dictionary|.
|
||||
See |channel-open-options|.
|
||||
The "callback" in {options} is invoked when a new
|
||||
connection is accepted. It receives two arguments: the
|
||||
new Channel and the client address as a String (e.g.
|
||||
"127.0.0.1:12345").
|
||||
|
||||
Use |ch_open()| to connect to an existing server instead.
|
||||
|
||||
See |channel-listen-demo| for an example.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetAddress()->ch_listen()
|
||||
<
|
||||
{only available when compiled with the |+channel| feature}
|
||||
|
||||
Return type: channel
|
||||
|
||||
ch_log({msg} [, {handle}]) *ch_log()*
|
||||
Write String {msg} in the channel log file, if it was opened
|
||||
with |ch_logfile()|.
|
||||
@@ -685,6 +748,9 @@ ch_open({address} [, {options}]) *ch_open()*
|
||||
If {options} is given it must be a |Dictionary|.
|
||||
See |channel-open-options|.
|
||||
|
||||
Use |ch_listen()| to listen for incoming connections
|
||||
instead.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetAddress()->ch_open()
|
||||
<
|
||||
@@ -728,14 +794,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 +1669,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:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*cmdline.txt* For Vim version 9.2. Last change: 2026 Mar 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1101,7 +1101,7 @@ Note: these are typed literally, they are not special keys!
|
||||
It differs from <slnum> in that <sflnum> is replaced with
|
||||
the script line number in any situation. *E961*
|
||||
*:<client>* *<client>*
|
||||
<client> is replaced with the {clinetid} of the last received
|
||||
<client> is replaced with the {clientid} of the last received
|
||||
message in |server2client()|
|
||||
|
||||
*filename-modifiers*
|
||||
|
||||
@@ -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 @@
|
||||
*filetype.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*filetype.txt* For Vim version 9.2. Last change: 2026 Mar 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -161,8 +161,10 @@ variables can be used to overrule the filetype used for certain extensions:
|
||||
|ft-cpp-syntax|
|
||||
*.i g:filetype_i |ft-progress-syntax|
|
||||
*.inc g:filetype_inc
|
||||
*.int g:filetype_int
|
||||
*.lsl g:filetype_lsl
|
||||
*.m g:filetype_m |ft-mathematica-syntax|
|
||||
*.mac g:filetype_mac
|
||||
*[mM]makefile,*.mk,*.mak,[mM]akefile*
|
||||
g:make_flavor |ft-make-syntax|
|
||||
*.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_pyth.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*if_pyth.txt* For Vim version 9.2. Last change: 2026 Mar 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Paul Moore
|
||||
@@ -186,7 +186,7 @@ vim.eval(str) *python-eval*
|
||||
- a list if the Vim expression evaluates to a Vim |list|
|
||||
- a tuple if the Vim expression evaluates to a Vim |tuple|
|
||||
- a dictionary if the Vim expression evaluates to a Vim |dict|
|
||||
- a boolean if Vim exression evaluates to |v:true| or |v:false|
|
||||
- a boolean if Vim expression evaluates to |v:true| or |v:false|
|
||||
- `None` if Vim expression evaluates to |v:null| or |v:none|
|
||||
Dictionaries, lists and tuples are recursively expanded.
|
||||
Examples: >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*intro.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*intro.txt* For Vim version 9.2. Last change: 2026 Mar 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -313,11 +313,11 @@ Elvis Another Vi clone, made by Steve Kirkendall. Very compact but isn't
|
||||
as flexible as Vim. Development has stalled, Elvis has left the
|
||||
building! Source code is freely available.
|
||||
*Neovim*
|
||||
Neovim A Vim clone. Forked the Vim source in 2014 and went a different way.
|
||||
Very much bound to github and has many more dependencies, making
|
||||
development more complex and limiting portability. Code has been
|
||||
refactored, resulting in patches not being exchangeable with Vim.
|
||||
Supports a remote GUI and integration with scripting languages.
|
||||
Neovim A fork of Vim from 2014 that went a different way. Very much bound
|
||||
to GitHub and has many more dependencies, making development more
|
||||
complex and limiting portability. Code has been refactored, resulting
|
||||
in patches not being exchangeable with Vim. Supports remote UIs and
|
||||
first-class Lua scripting.
|
||||
|
||||
==============================================================================
|
||||
4. Notation *notation*
|
||||
|
||||
@@ -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 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -97,6 +97,17 @@ achieve special effects. These options come in three forms:
|
||||
If the option is a list of flags, superfluous flags
|
||||
are removed. When adding a flag that was already
|
||||
present the option value doesn't change.
|
||||
When the option supports "key:value" items and {value}
|
||||
contains a "key:value" item or multiple
|
||||
comma-separated items, each item is processed
|
||||
individually:
|
||||
- A "key:value" item where the key already exists with
|
||||
a different value: the old item is removed and the
|
||||
new item is appended to the end.
|
||||
- A "key:value" item that is an exact duplicate is
|
||||
left unchanged.
|
||||
- Other items that already exist are left unchanged.
|
||||
- New items are appended to the end.
|
||||
Also see |:set-args| above.
|
||||
|
||||
:se[t] {option}^={value} *:set^=*
|
||||
@@ -104,6 +115,11 @@ achieve special effects. These options come in three forms:
|
||||
the {value} to a string option. When the option is a
|
||||
comma-separated list, a comma is added, unless the
|
||||
value was empty.
|
||||
When the option supports "key:value" items and {value}
|
||||
contains a "key:value" item or multiple
|
||||
comma-separated items, each item is processed
|
||||
individually. Works like |:set+=| but new items are
|
||||
prepended to the beginning instead of appended.
|
||||
Also see |:set-args| above.
|
||||
|
||||
:se[t] {option}-={value} *:set-=*
|
||||
@@ -116,6 +132,12 @@ achieve special effects. These options come in three forms:
|
||||
When the option is a list of flags, {value} must be
|
||||
exactly as they appear in the option. Remove flags
|
||||
one by one to avoid problems.
|
||||
When the option supports "key:value" items and {value}
|
||||
contains a "key:value" item or multiple
|
||||
comma-separated items, each item is processed
|
||||
individually. A "key:value" item removes the existing
|
||||
item with that key regardless of its value. A "key:"
|
||||
item also removes by key match.
|
||||
The individual values from a comma separated list or
|
||||
list of flags can be inserted by typing 'wildchar'.
|
||||
See |complete-set-option|.
|
||||
@@ -1009,7 +1031,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
Write the contents of the file, if it has been modified, on each
|
||||
`:next`, `:rewind`, `:last`, `:first`, `:previous`, `:stop`,
|
||||
`:suspend`, `:tag`, `:!`, `:make`, CTRL-] and CTRL-^ command; and when
|
||||
`:suspend`, `:tag`, `:!`, `:make`, `:terminal`, CTRL-] and CTRL-^ command; and when
|
||||
a `:buffer`, CTRL-O, CTRL-I, '{A-Z0-9}, or `{A-Z0-9} command takes one
|
||||
to another file.
|
||||
A buffer is not written if it becomes hidden, e.g. when 'bufhidden' is
|
||||
@@ -2257,11 +2279,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.
|
||||
@@ -3208,7 +3232,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
difference. Non-alphanumeric
|
||||
multi-byte characters such as emoji
|
||||
and CJK characters are considered
|
||||
individual words.
|
||||
individual words. Small gaps of
|
||||
non-word characters (5 bytes or less)
|
||||
between changes are merged into a
|
||||
single highlight block.
|
||||
|
||||
internal Use the internal diff library. This is
|
||||
ignored when 'diffexpr' is set. *E960*
|
||||
@@ -3593,6 +3620,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|SafeState|,
|
||||
|SafeStateAgain|,
|
||||
|SessionLoadPost|,
|
||||
|SessionLoadPre|,
|
||||
|SessionWritePost|,
|
||||
|ShellCmdPost|,
|
||||
|SigUSR1|,
|
||||
@@ -4807,6 +4835,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|hl-PmenuBorder| j popup menu border characters
|
||||
|hl-PmenuShadow| H popup menu shadow
|
||||
|hl-PreInsert| I text inserted when "preinsert" is in 'completeopt'
|
||||
|hl-Normal| ( Window color (supersedes 'wincolor' option)
|
||||
|
||||
Note that the "(" occasion is not set by default.
|
||||
|
||||
The display modes are:
|
||||
r reverse (termcap entry "mr" and "me")
|
||||
@@ -5805,6 +5836,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
---+---+--XXX ~
|
||||
Where "XXX" denotes the first non-blank characters in
|
||||
the line.
|
||||
*lcs-leadtab*
|
||||
leadtab:xy[z]
|
||||
Like |lcs-tab|, but only for leading tabs. When
|
||||
omitted, the "tab" setting is used for leading tabs.
|
||||
|lcs-tab| must also be set for this to work. *E1572*
|
||||
You can combine it with "tab:", for example: >
|
||||
:set listchars=tab:>-,leadtab:.\
|
||||
< This shows leading tabs as periods(.) and other tabs
|
||||
as ">--".
|
||||
*lcs-trail*
|
||||
trail:c Character to show for trailing spaces. When omitted,
|
||||
trailing spaces are blank. Overrides the "space" and
|
||||
@@ -5986,7 +6026,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Increasing this limit above 200 also changes the maximum for Ex
|
||||
command recursion, see |E169|.
|
||||
See also |:function|.
|
||||
Also used for maximum depth of callback functions.
|
||||
Also used for maximum depth of callback functions and encoding and
|
||||
decoding of deeply nested json data.
|
||||
|
||||
*'maxmapdepth'* *'mmd'* *E223*
|
||||
'maxmapdepth' 'mmd' number (default 1000)
|
||||
@@ -7338,7 +7379,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 +7387,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 +8557,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-%@*
|
||||
@ - Inserts a newline. This only takes effect when the "maxheight"
|
||||
value of 'statuslineopt' is greater than 1, or for |tabpanel|.
|
||||
|
||||
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 +8617,51 @@ 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 or local to window |global-local|
|
||||
{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.
|
||||
|
||||
fixedheight Fix the status line height to "maxheight".
|
||||
Without this, the height varies from 1 to
|
||||
"maxheight" based on the number of newline
|
||||
|stl-%@| in 'statusline'.
|
||||
|
||||
maxheight:{n} Set the maximum status line height to {n}.
|
||||
{n} must be 1 or greater. If not specified, the
|
||||
height is 1.
|
||||
When {n} is 2 or more, you can use newline
|
||||
|stl-%@| in 'statusline' to display information on
|
||||
multiple lines.
|
||||
|
||||
If {n} cannot be set due to insufficient window
|
||||
height or other constraints, a best-effort
|
||||
approach will be taken to set the closest possible
|
||||
value that does not exceed {n}. No error will be
|
||||
shown even if the setting cannot be changed.
|
||||
|
||||
For the global value, a value applicable to all
|
||||
windows on all tab pages is used. For a
|
||||
window-local value, a value applicable to that
|
||||
window is used.
|
||||
Note: When the applied value differs from {n}, the
|
||||
option is updated to reflect it.
|
||||
Example of updated options: >vim
|
||||
:set statuslineopt=maxheight:999,fixedheight
|
||||
" Only 20 lines could be applied, so
|
||||
" maxheight is updated to 20.
|
||||
:set statuslineopt?
|
||||
statuslineopt=maxheight:20,fixedheight
|
||||
<
|
||||
Examples: >
|
||||
:set statuslineopt=fixedheight
|
||||
:set stlo=
|
||||
:set stlo=maxheight:2,fixedheight
|
||||
:set stlo-=fixedheight
|
||||
<
|
||||
*'suffixes'* *'su'*
|
||||
'suffixes' 'su' string (default ".bak,~,.o,.h,.info,.swp,.obj")
|
||||
@@ -8759,11 +8848,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 newline: >
|
||||
|
||||
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 +8866,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 "")
|
||||
@@ -9050,6 +9139,39 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
<
|
||||
NOTE: This option is reset when 'compatible' is set.
|
||||
|
||||
*'termresize'* *'trz'*
|
||||
'termresize' 'trz' string (default "")
|
||||
global
|
||||
{only available in Unix, does not work in the GUI}
|
||||
Determines the method to use for detecting window resize events,
|
||||
possible values are:
|
||||
"sigwinch": Use the SIGWINCH signal.
|
||||
"inband": Receive resize events from the terminal via escape
|
||||
sequences (recommended if supported by terminal).
|
||||
"": Automatically choose depending on terminal.
|
||||
|
||||
The SIGWINCH handler is always available. If set to "inband" and the
|
||||
terminal does not support in-band window resize events, then the
|
||||
SIGWINCH handler will be used instead as a fallback. If set to ""
|
||||
(empty option), then "inband" will be used if Vim detects that the
|
||||
terminal supports it, otherwise "sigwinch".
|
||||
|
||||
|
||||
*'termsync'* *'tsy'*
|
||||
'termsync' 'tsy' boolean (default off)
|
||||
global
|
||||
If the host terminal supports it, buffer all screen updates made
|
||||
during a redraw cycle so that each screen is displayed in the terminal
|
||||
all at once. This can prevent tearing or flickering when the terminal
|
||||
updates faster than Vim can redraw. If the host terminal does not
|
||||
support it or if Vim is running graphically, then this option does
|
||||
nothing.
|
||||
|
||||
The specification can be found at:
|
||||
https://github.com/contour-terminal/vt-extensions/blob/master/synchronized-output.md
|
||||
|
||||
The terminal codes used are |t_BS| and |t_ES|.
|
||||
|
||||
*'termwinkey'* *'twk'*
|
||||
'termwinkey' 'twk' string (default "")
|
||||
local to window
|
||||
@@ -9118,8 +9240,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'*
|
||||
@@ -10203,8 +10325,19 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'wincolor'* *'wcr'*
|
||||
'wincolor' 'wcr' string (default empty)
|
||||
local to window
|
||||
DEPRECATED: Use 'winhighlight' if possible, this option uses
|
||||
'winhighlight' internally by setting it to: >vim
|
||||
set winhighlight=!(:HighlightGroup
|
||||
< If this option is set and 'winhighlight' is changed, then it will not
|
||||
update the option value. For example, if 'wincolor' is set to "A" and
|
||||
then 'winhighlight' is to an empty value, then 'wincolor' will still
|
||||
remain as "A". Additionally, the existing value in 'winhighlight' will
|
||||
be discarded when this option is set.
|
||||
|
||||
Highlight group name to use for this window instead of the Normal
|
||||
color |hl-Normal|.
|
||||
color |hl-Normal|. For other |highlight-groups|, see 'winhighlight'.
|
||||
Note that it is not recommended to set this and 'winhighlight' at the
|
||||
same time.
|
||||
|
||||
*'window'* *'wi'*
|
||||
'window' 'wi' number (default screen height - 1)
|
||||
@@ -10263,6 +10396,35 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'winheight' applies to the current window. Use 'winminheight' to set
|
||||
the minimal height for other windows.
|
||||
|
||||
*'winhighlight'* *'whl'*
|
||||
'winhighlight' 'whl' string (default empty)
|
||||
local to window
|
||||
Window-local highlight group mappings. Comma-delimited list of
|
||||
highlight |group-name| pairs "{hl-from}:{hl-to},..." where each
|
||||
{hl-from} is a |highlight-groups| item to be overridden by {hl-to}
|
||||
group in the window. If {hl-from} is "Normal", then it will always
|
||||
map to the "(" (window color) value in 'highlight'.
|
||||
|
||||
If a highlight group name starts with "!", then it is assumed to map
|
||||
to a value in 'highlight'. For example, this will override the
|
||||
visual mode setting: >vim
|
||||
set winhighlight=!v:SomeHighlightGroup
|
||||
< This will map the occasion "v" to occasion "l" >vim
|
||||
set winhighlight=!v:!l
|
||||
<
|
||||
Highlights of vertical separators are determined by the window to the
|
||||
left of the separator. The 'tabline' highlight of a tabpage is
|
||||
decided by the last-focused window of the tabpage. Highlights of
|
||||
the popupmenu are determined by the current window. Highlights in the
|
||||
message area cannot be overridden.
|
||||
|
||||
When handling highlight group links, if a highlight group (which may
|
||||
be a link as well) is overridden by 'winhighlight', then all highlight
|
||||
groups that link to it will be affected. For example, if highlight
|
||||
group C links to B which links to A, then >vim
|
||||
set winhighlight=B:SomeHighlightGroup
|
||||
< will make SomeHighlightGroup override groups B and C, but not A.
|
||||
|
||||
*'winminheight'* *'wmh'*
|
||||
'winminheight' 'wmh' number (default 1)
|
||||
global
|
||||
|
||||
@@ -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 Mar 02
|
||||
|
||||
|
||||
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,15 @@ 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.
|
||||
highlights Highlight group overrides, stored in the
|
||||
'winhighlight' option (same format).
|
||||
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 +1056,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 04
|
||||
|
||||
|
||||
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
|
||||
@@ -962,6 +963,7 @@ Short explanation of each option: *option-list*
|
||||
'termbidi' 'tbidi' terminal takes care of bi-directionality
|
||||
'termencoding' 'tenc' character encoding used by the terminal
|
||||
'termguicolors' 'tgc' use GUI colors for the terminal
|
||||
'termsync' 'tsy' enable terminal sync mode for redraw
|
||||
'termwinkey' 'twk' key that precedes a Vim command in a terminal
|
||||
'termwinscroll' 'twsl' max number of scrollback lines in a terminal window
|
||||
'termwinsize' 'tws' size of a terminal window
|
||||
@@ -1016,6 +1018,7 @@ Short explanation of each option: *option-list*
|
||||
'wildoptions' 'wop' specifies how command line completion is done
|
||||
'winaltkeys' 'wak' when the windows system handles ALT keys
|
||||
'wincolor' 'wcr' window-local highlighting
|
||||
'winhighlight' 'whl' window-local highlighting mappings
|
||||
'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B
|
||||
'winfixbuf' 'wfb' keep window focused on a single buffer
|
||||
'winfixheight' 'wfh' keep window height when opening/closing windows
|
||||
|
||||
@@ -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 Mar 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -252,7 +252,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
|
||||
":sh", filtering, the |system()| function, backtick expansion
|
||||
and libcall().
|
||||
Also disallowed are |delete()|, |rename()|, |mkdir()|,
|
||||
|job_start()|, |setenv()| etc.
|
||||
|job_start()|, |setenv()| and setting environment variables,
|
||||
etc.
|
||||
Interfaces, such as Python, Ruby and Lua, are also disabled,
|
||||
since they could be used to execute shell commands. Perl uses
|
||||
the Safe module.
|
||||
@@ -1125,8 +1126,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 +1146,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 +1469,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*syntax.txt* For Vim version 9.2. Last change: 2026 Mar 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -2285,11 +2285,11 @@ cycles for such a feature to become either integrated into the platform or
|
||||
withdrawn from this effort. To cater for early adopters, there is optional
|
||||
support in Vim for syntax related preview features that are implemented. You
|
||||
can request it by specifying a list of preview feature numbers as follows: >
|
||||
:let g:java_syntax_previews = [507]
|
||||
:let g:java_syntax_previews = [530]
|
||||
|
||||
The supported JEP numbers are to be drawn from this table:
|
||||
`430`: String Templates [JDK 21]
|
||||
`507`: Primitive types in Patterns, instanceof, and switch
|
||||
`530`: Primitive types in Patterns, instanceof, and switch
|
||||
|
||||
Note that as soon as the particular preview feature will have been integrated
|
||||
into the Java platform, its entry will be removed from the table and related
|
||||
|
||||
@@ -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'*
|
||||
@@ -1069,6 +1071,7 @@ $quote eval.txt /*$quote*
|
||||
't_AU' term.txt /*'t_AU'*
|
||||
't_BD' term.txt /*'t_BD'*
|
||||
't_BE' term.txt /*'t_BE'*
|
||||
't_BS' term.txt /*'t_BS'*
|
||||
't_CF' term.txt /*'t_CF'*
|
||||
't_CS' term.txt /*'t_CS'*
|
||||
't_CV' term.txt /*'t_CV'*
|
||||
@@ -1079,6 +1082,7 @@ $quote eval.txt /*$quote*
|
||||
't_Ds' term.txt /*'t_Ds'*
|
||||
't_EC' term.txt /*'t_EC'*
|
||||
't_EI' term.txt /*'t_EI'*
|
||||
't_ES' term.txt /*'t_ES'*
|
||||
't_F1' term.txt /*'t_F1'*
|
||||
't_F2' term.txt /*'t_F2'*
|
||||
't_F3' term.txt /*'t_F3'*
|
||||
@@ -1233,6 +1237,8 @@ $quote eval.txt /*$quote*
|
||||
'termbidi' options.txt /*'termbidi'*
|
||||
'termencoding' options.txt /*'termencoding'*
|
||||
'termguicolors' options.txt /*'termguicolors'*
|
||||
'termresize' options.txt /*'termresize'*
|
||||
'termsync' options.txt /*'termsync'*
|
||||
'termwinkey' options.txt /*'termwinkey'*
|
||||
'termwinscroll' options.txt /*'termwinscroll'*
|
||||
'termwinsize' options.txt /*'termwinsize'*
|
||||
@@ -1264,10 +1270,12 @@ $quote eval.txt /*$quote*
|
||||
'tplo' options.txt /*'tplo'*
|
||||
'tpm' options.txt /*'tpm'*
|
||||
'tr' options.txt /*'tr'*
|
||||
'trz' options.txt /*'trz'*
|
||||
'ts' options.txt /*'ts'*
|
||||
'tsl' options.txt /*'tsl'*
|
||||
'tsr' options.txt /*'tsr'*
|
||||
'tsrfu' options.txt /*'tsrfu'*
|
||||
'tsy' options.txt /*'tsy'*
|
||||
'ttimeout' options.txt /*'ttimeout'*
|
||||
'ttimeoutlen' options.txt /*'ttimeoutlen'*
|
||||
'ttm' options.txt /*'ttm'*
|
||||
@@ -1333,6 +1341,7 @@ $quote eval.txt /*$quote*
|
||||
'wfw' options.txt /*'wfw'*
|
||||
'wh' options.txt /*'wh'*
|
||||
'whichwrap' options.txt /*'whichwrap'*
|
||||
'whl' options.txt /*'whl'*
|
||||
'wi' options.txt /*'wi'*
|
||||
'wic' options.txt /*'wic'*
|
||||
'wig' options.txt /*'wig'*
|
||||
@@ -1351,6 +1360,7 @@ $quote eval.txt /*$quote*
|
||||
'winfixheight' options.txt /*'winfixheight'*
|
||||
'winfixwidth' options.txt /*'winfixwidth'*
|
||||
'winheight' options.txt /*'winheight'*
|
||||
'winhighlight' options.txt /*'winhighlight'*
|
||||
'winminheight' options.txt /*'winminheight'*
|
||||
'winminwidth' options.txt /*'winminwidth'*
|
||||
'winptydll' options.txt /*'winptydll'*
|
||||
@@ -4563,7 +4573,6 @@ E1335 vim9class.txt /*E1335*
|
||||
E1336 options.txt /*E1336*
|
||||
E1337 vim9class.txt /*E1337*
|
||||
E1338 vim9class.txt /*E1338*
|
||||
E1339 textprop.txt /*E1339*
|
||||
E134 change.txt /*E134*
|
||||
E1340 vim9class.txt /*E1340*
|
||||
E1341 vim9class.txt /*E1341*
|
||||
@@ -4759,6 +4768,10 @@ E1569 builtin.txt /*E1569*
|
||||
E157 sign.txt /*E157*
|
||||
E1570 builtin.txt /*E1570*
|
||||
E1571 builtin.txt /*E1571*
|
||||
E1572 options.txt /*E1572*
|
||||
E1573 channel.txt /*E1573*
|
||||
E1574 channel.txt /*E1574*
|
||||
E1575 builtin.txt /*E1575*
|
||||
E158 sign.txt /*E158*
|
||||
E159 sign.txt /*E159*
|
||||
E16 cmdline.txt /*E16*
|
||||
@@ -5896,6 +5909,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 +6214,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*
|
||||
@@ -6216,6 +6231,7 @@ alt-input debugger.txt /*alt-input*
|
||||
alternate-file editing.txt /*alternate-file*
|
||||
amiga-window starting.txt /*amiga-window*
|
||||
and() builtin.txt /*and()*
|
||||
android builtin.txt /*android*
|
||||
anonymous-function eval.txt /*anonymous-function*
|
||||
ant.vim syntax.txt /*ant.vim*
|
||||
ap motion.txt /*ap*
|
||||
@@ -6416,6 +6432,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*
|
||||
@@ -6570,6 +6587,7 @@ ch_evalraw() channel.txt /*ch_evalraw()*
|
||||
ch_getbufnr() channel.txt /*ch_getbufnr()*
|
||||
ch_getjob() channel.txt /*ch_getjob()*
|
||||
ch_info() channel.txt /*ch_info()*
|
||||
ch_listen() channel.txt /*ch_listen()*
|
||||
ch_log() channel.txt /*ch_log()*
|
||||
ch_logfile() channel.txt /*ch_logfile()*
|
||||
ch_open() channel.txt /*ch_open()*
|
||||
@@ -6604,6 +6622,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()*
|
||||
@@ -6619,6 +6638,7 @@ channel-demo channel.txt /*channel-demo*
|
||||
channel-drop channel.txt /*channel-drop*
|
||||
channel-functions usr_41.txt /*channel-functions*
|
||||
channel-functions-details channel.txt /*channel-functions-details*
|
||||
channel-listen-demo channel.txt /*channel-listen-demo*
|
||||
channel-mode channel.txt /*channel-mode*
|
||||
channel-more channel.txt /*channel-more*
|
||||
channel-noblock channel.txt /*channel-noblock*
|
||||
@@ -6986,6 +7006,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*
|
||||
@@ -8844,6 +8865,7 @@ lcs-eol options.txt /*lcs-eol*
|
||||
lcs-extends options.txt /*lcs-extends*
|
||||
lcs-lead options.txt /*lcs-lead*
|
||||
lcs-leadmultispace options.txt /*lcs-leadmultispace*
|
||||
lcs-leadtab options.txt /*lcs-leadtab*
|
||||
lcs-multispace options.txt /*lcs-multispace*
|
||||
lcs-nbsp options.txt /*lcs-nbsp*
|
||||
lcs-precedes options.txt /*lcs-precedes*
|
||||
@@ -9674,9 +9696,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 +9790,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 +10544,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()*
|
||||
@@ -10639,6 +10665,7 @@ t_AL term.txt /*t_AL*
|
||||
t_AU term.txt /*t_AU*
|
||||
t_BD term.txt /*t_BD*
|
||||
t_BE term.txt /*t_BE*
|
||||
t_BS term.txt /*t_BS*
|
||||
t_CF term.txt /*t_CF*
|
||||
t_CS term.txt /*t_CS*
|
||||
t_CTRL-W_. terminal.txt /*t_CTRL-W_.*
|
||||
@@ -10658,6 +10685,7 @@ t_DL term.txt /*t_DL*
|
||||
t_Ds term.txt /*t_Ds*
|
||||
t_EC term.txt /*t_EC*
|
||||
t_EI term.txt /*t_EI*
|
||||
t_ES term.txt /*t_ES*
|
||||
t_F1 term.txt /*t_F1*
|
||||
t_F2 term.txt /*t_F2*
|
||||
t_F3 term.txt /*t_F3*
|
||||
@@ -11056,6 +11084,7 @@ termresponse-variable eval.txt /*termresponse-variable*
|
||||
termrfgresp-variable eval.txt /*termrfgresp-variable*
|
||||
termstyleresp-variable eval.txt /*termstyleresp-variable*
|
||||
termu7resp-variable eval.txt /*termu7resp-variable*
|
||||
termux builtin.txt /*termux*
|
||||
ternary eval.txt /*ternary*
|
||||
test-functions usr_41.txt /*test-functions*
|
||||
test-functions-details testing.txt /*test-functions-details*
|
||||
@@ -11549,6 +11578,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 +11596,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 +11626,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 +11922,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 @@
|
||||
*term.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*term.txt* For Vim version 9.2. Last change: 2026 Mar 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -510,6 +510,10 @@ Added by Vim (there are no standard codes for these):
|
||||
|xterm-focus-event|
|
||||
t_fd disable focus-event tracking *t_fd* *'t_fd'*
|
||||
|xterm-focus-event|
|
||||
t_BS begin synchronized update *t_BS* *'t_BS'*
|
||||
see 'termsync'
|
||||
t_ES end synchronized update *t_ES* *'t_ES'*
|
||||
see 'termsync'
|
||||
|
||||
Some codes have a start, middle and end part. The start and end are defined
|
||||
by the termcap option, the middle part is text.
|
||||
@@ -528,6 +532,11 @@ t_SH must take one argument:
|
||||
t_RS is sent only if the response to t_RV has been received. It is not used
|
||||
on Mac OS when Terminal.app could be recognized from the termresponse.
|
||||
|
||||
The t_BS and t_ES are not stored in the termcap, but are instead set to the
|
||||
following default values on startup:
|
||||
t_BS "\033[?2026h"
|
||||
t_ES "\033[?2026l"
|
||||
|
||||
*mouse-reporting*
|
||||
Many terminals can report mouse clicks and some can report mouse movement and
|
||||
dragging. Vim needs to know what codes are being used for this.
|
||||
|
||||
@@ -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 Mar 12
|
||||
|
||||
|
||||
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
|
||||
@@ -1427,11 +1427,25 @@ gdb:
|
||||
`:Arguments` {args} set arguments for the next `:Run`
|
||||
|
||||
*:Break* set a breakpoint at the cursor position
|
||||
:Break {position}
|
||||
:Break [{position}] [thread {nr}] [if {expr}]
|
||||
set a breakpoint at the specified position
|
||||
if {position} is omitted, use the current file and line
|
||||
thread {nr} limits the breakpoint to one thread
|
||||
if {expr} sets a conditional breakpoint
|
||||
Examples: >
|
||||
:Break if argc == 1
|
||||
:Break 42 thread 3 if x > 10
|
||||
:Break main
|
||||
<
|
||||
*:Tbreak* set a temporary breakpoint at the cursor position
|
||||
:Tbreak {position}
|
||||
set a temporary breakpoint at the specified position
|
||||
:Tbreak [{position}] [thread {nr}] [if {expr}]
|
||||
like `:Break`, but the breakpoint is deleted after
|
||||
it is hit once
|
||||
Examples: >
|
||||
:Tbreak if argc == 1
|
||||
:Tbreak 42 thread 3 if x > 10
|
||||
:Tbreak main
|
||||
<
|
||||
*:Clear* delete the breakpoint at the cursor position
|
||||
*:ToggleBreak* set a breakpoint at the cursor position or delete all
|
||||
breakpoints at the cursor position
|
||||
|
||||
@@ -141,9 +141,9 @@ prop_add({lnum}, {col}, {props})
|
||||
the current buffer is used
|
||||
id user defined ID for the property; must be a
|
||||
number, should be positive |E1510|;
|
||||
when using "text" then "id" must not be
|
||||
present and will be set automatically to a
|
||||
negative number; otherwise zero is used
|
||||
when using "text" then any "id" value is
|
||||
ignored and a negative number is assigned
|
||||
automatically; otherwise zero is used
|
||||
*E1305*
|
||||
text text to be displayed before {col}, or
|
||||
above/below the line if {col} is zero; prepend
|
||||
@@ -224,14 +224,9 @@ prop_add({lnum}, {col}, {props})
|
||||
is difficult to compute).
|
||||
A negative "id" will be chosen and is returned.
|
||||
|
||||
Before text properties with text were supported it was
|
||||
possible to use a negative "id", even though this was very
|
||||
rare. Now that negative "id"s are reserved for text
|
||||
properties with text an error is given when using a negative
|
||||
"id". When a text property with text already exists using a
|
||||
negative "id" results in *E1293* . If a negative "id" was
|
||||
used and later a text property with text is added results in
|
||||
*E1339* .
|
||||
Negative "id"s are reserved for text properties with "text"
|
||||
and cannot be used otherwise. Using a negative "id" results
|
||||
in *E1293* .
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->prop_add(col, props)
|
||||
|
||||
@@ -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.
|
||||
@@ -1287,23 +1287,24 @@ Testing: *test-functions*
|
||||
|
||||
Inter-process communication: *channel-functions*
|
||||
ch_canread() check if there is something to read
|
||||
ch_open() open a channel
|
||||
ch_close() close a channel
|
||||
ch_close_in() close the in part of a channel
|
||||
ch_evalexpr() evaluate an expression over channel
|
||||
ch_evalraw() evaluate a raw string over channel
|
||||
ch_getbufnr() get the buffer number for a channel
|
||||
ch_getjob() get the Job of a channel
|
||||
ch_info() get information about a channel
|
||||
ch_listen() listen on a channel
|
||||
ch_log() write a message in the channel log
|
||||
ch_logfile() start logging channel activity
|
||||
ch_open() open a channel
|
||||
ch_read() read a message from a channel
|
||||
ch_readblob() read a Blob from a channel
|
||||
ch_readraw() read a raw message from a channel
|
||||
ch_sendexpr() send a JSON message over a channel
|
||||
ch_sendraw() send a raw message over a channel
|
||||
ch_evalexpr() evaluate an expression over channel
|
||||
ch_evalraw() evaluate a raw string over channel
|
||||
ch_setoptions() set channel options
|
||||
ch_status() get status of a channel
|
||||
ch_getbufnr() get the buffer number of a channel
|
||||
ch_getjob() get the job associated with a channel
|
||||
ch_info() get channel information
|
||||
ch_log() write a message in the channel log file
|
||||
ch_logfile() set the channel log file
|
||||
ch_setoptions() set the options for a channel
|
||||
json_encode() encode an expression to a JSON string
|
||||
json_decode() decode a JSON string to Vim types
|
||||
js_encode() encode an expression to a JSON string
|
||||
|
||||
@@ -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 25
|
||||
|
||||
|
||||
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,81 @@ 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").
|
||||
|
||||
Diff mode ~
|
||||
---------
|
||||
When using inline word diffs, adjacent changes are now merged if the gap
|
||||
between them is small (5 bytes or less) and contains only non-word characters.
|
||||
This prevents fragmented highlighting when only whitespace or punctuation
|
||||
separates changes.
|
||||
|
||||
Restricted mode ~
|
||||
---------------
|
||||
Using external diff mode or setting environment variables is no longer allowed
|
||||
when Vim is running in |restricted-mode|.
|
||||
|
||||
Using |:cscope| is no longer allowed.
|
||||
|
||||
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'.
|
||||
- New "leadtab" value for the 'listchars' setting.
|
||||
- Improved |:set+=|, |:set^=| and |:set-=| handling of comma-separated "key:value"
|
||||
pairs individually (e.g. 'listchars', 'fillchars', 'diffopt').
|
||||
- |system()| and |systemlist()| functions accept a list as first argument,
|
||||
bypassing the shell completely.
|
||||
|
||||
xxd ~
|
||||
---
|
||||
Add "-t" option to append a terminating NUL byte to C include output (-i).
|
||||
|
||||
*changed-9.3*
|
||||
Changed~
|
||||
-------
|
||||
- Support for NeXTStep was dropped with patch v9.2.0122
|
||||
- |json_decode()| is stricter: keywords must be lowercase, lone surrogates are
|
||||
now invalid
|
||||
- |js_decode()| rejects lone surrogates
|
||||
|
||||
*added-9.3*
|
||||
Added ~
|
||||
-----
|
||||
Various syntax, indent and other plugins were added.
|
||||
|
||||
Functions: ~
|
||||
|
||||
|ch_listen()| listen on {address}
|
||||
|
||||
Autocommands: ~
|
||||
|
||||
|SessionLoadPre| before loading a |Session| file
|
||||
|
||||
Options: ~
|
||||
|
||||
'statuslineopt' Extra window-local options for the 'statusline', to
|
||||
configure the height.
|
||||
't_BS' Begin synchronized update.
|
||||
't_ES' End synchronized update.
|
||||
'termresize' Method for handling terminal resize events.
|
||||
'termsync' Enable support for terminal DEC 2026 sync mode.
|
||||
'winhighlight' Window-local highlight group mappings.
|
||||
|
||||
==============================================================================
|
||||
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 @@
|
||||
*vi_diff.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*vi_diff.txt* For Vim version 9.2. Last change: 2026 Mar 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1401,6 +1401,6 @@ MS-DOS: | support was dropped with v7.4.1399
|
||||
MS-Windows XP and Vista: | support was dropped with v9.0.0496
|
||||
OS/2: | support was dropped with v7.4.1008
|
||||
RISC OS: | support was dropped with v7.3.0187
|
||||
NeXTSTEP: | support was deprecated with v9.1.1727
|
||||
NeXTSTEP: | support was dropped with v9.2.0122
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vim9class.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*vim9class.txt* For Vim version 9.2. Last change: 2026 Mar 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1354,7 +1354,6 @@ the restrictions?
|
||||
|
||||
Thoughts:
|
||||
- Generics for a class: `class <Tkey, Tentry>`
|
||||
- Generics for a function: `def <Tkey> GetLast(key: Tkey)`
|
||||
- Mixins: not sure if that is useful, leave out for simplicity.
|
||||
|
||||
Some things that look like good additions:
|
||||
|
||||
@@ -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
|
||||
@@ -122,9 +122,9 @@ when the last window also has a status line:
|
||||
'laststatus' = 1 status line if there is more than one window
|
||||
'laststatus' = 2 always 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 contents and height of the status line with the
|
||||
'statusline' and 'statuslineopt' options. Both can be local to the window,
|
||||
allowing each window to have a unique status line appearance and height.
|
||||
|
||||
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 +954,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,9 +1,9 @@
|
||||
.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd"
|
||||
.TH XXD 1 "Mar 2026" "Pagina di manuale per xxd"
|
||||
.\"
|
||||
.\" 21 Maggio 1996
|
||||
.\" Autore della pagina di manuale:
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
|
||||
.\" Modificato da Bram Moolenaar <Bram@vim.org>
|
||||
.\" Changes by Bram Moolenaar <Bram@vim.org>
|
||||
.SH NOME
|
||||
.I xxd
|
||||
\- Produce lista esadecimale da un file binario o viceversa.
|
||||
@@ -170,11 +170,14 @@ byte assoluti (o relativi) di distanza all'interno di input_file.
|
||||
(o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input').
|
||||
Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file.
|
||||
.TP
|
||||
.I \-t
|
||||
Quando l'output è nello stile delle `include' di C (opzione \-i ) aggiungere uno zero binario a fine stringa.
|
||||
.TP
|
||||
.I \-u
|
||||
Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole.
|
||||
Usare lettere esadecimali maiuscole. Per default si usano lettere minuscole.
|
||||
.TP
|
||||
.IR \-v " | " \-version
|
||||
Visualizza la stringa contenente la versione del programma.
|
||||
Visualizzare la stringa contenente la versione del programma.
|
||||
.SH ATTENZIONE
|
||||
.PP
|
||||
.I xxd \-r
|
||||
@@ -182,7 +185,8 @@ Visualizza la stringa contenente la versione del programma.
|
||||
Se è possibili posizionarsi tramite `seek' sul file di output, il numero di riga
|
||||
di ogni riga esadecimale può essere non ordinato, delle righe possono mancare, o
|
||||
sovrapporsi. In tal caso xxd userà lseek(2) per posizionarsi all'interno del file.
|
||||
Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari.
|
||||
Se per il file di output non si può usare `seek', sono permessi solo dei "buchi",
|
||||
che saranno riempiti con zeri binari.
|
||||
.PP
|
||||
.I xxd \-r
|
||||
non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati.
|
||||
@@ -246,25 +250,25 @@ Stampa 3 righe (0x30 byte in esadecimale) alla fine di
|
||||
\fI% xxd \-s \-0x30 file\fR
|
||||
.PP
|
||||
Nota: I risultati degli esempi seguenti sono riferiti alla versione di
|
||||
Maggio 2024 della pagina di manuale [quella che state leggendo].
|
||||
Marzo 2026 della pagina di manuale [quella che state leggendo].
|
||||
.PP
|
||||
.br
|
||||
Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
2e544820585844203120224d616767696f203230
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
3234222022506167696e61206469206d616e7561
|
||||
2022506167696e61206469206d616e75616c6520
|
||||
.br
|
||||
6c652070657220787864220a2e5c220a2e5c2220
|
||||
70657220787864220a2e5c220a2e5c2220323173
|
||||
.br
|
||||
3231204d616767696f20313939360a2e5c222041
|
||||
74204d617920313939360a2e5c22204d616e2070
|
||||
.br
|
||||
75746f72652064656c6c6120706167696e612064
|
||||
61676520617574686f723a0a2e5c222020202054
|
||||
.br
|
||||
6f6e79204e7567656e74203c746f6e7940736374
|
||||
.br
|
||||
69206d616e75616c653a0a2e5c2220202020546f
|
||||
.PP
|
||||
|
||||
.br
|
||||
Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
|
||||
@@ -273,30 +277,30 @@ Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
|
||||
.br
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
.br
|
||||
0000000c: 6167 6769 6f20 3230 3234 2220 aggio 2024"
|
||||
0000000c: 6172 2032 3032 3622 2022 5061 ar 2026" "Pa
|
||||
.br
|
||||
00000018: 2250 6167 696e 6120 6469 206d "Pagina di m
|
||||
00000018: 6769 6e61 2064 6920 6d61 6e75 gina di manu
|
||||
.br
|
||||
00000024: 616e 7561 6c65 2070 6572 2078 anuale per x
|
||||
00000024: 616c 6520 7065 7220 7878 6422 ale per xxd"
|
||||
.br
|
||||
00000030: 7864 220a 2e5c 220a 2e5c 2220 xd"..\"..\"
|
||||
00000030: 0a2e 5c22 0a2e 5c22 2032 3173 ..\\"..\\" 21s
|
||||
.br
|
||||
0000003c: 3231 204d 6167 6769 6f20 3139 21 Maggio 19
|
||||
0000003c: 7420 4d61 7920 3139 3936 0a2e t May 1996..
|
||||
.br
|
||||
00000048: 3936 0a2e 5c22 2041 7574 6f72 96..\" Autor
|
||||
00000048: 5c22 204d 616e 2070 6167 6520 \\" Man page
|
||||
.br
|
||||
00000054: 6520 6465 6c6c 6120 7061 6769 e della pagi
|
||||
00000054: 6175 7468 6f72 3a0a 2e5c 2220 author:..\\"
|
||||
.br
|
||||
00000060: 6e61 2064 6920 6d61 6e75 616c na di manual
|
||||
00000060: 2020 2054 6f6e 7920 4e75 6765 Tony Nuge
|
||||
.br
|
||||
0000006c: 653a 0a2e 5c22 2020 2020 546f e:..\" To
|
||||
0000006c: 6e74 203c 746f 6e79 4073 6374 nt <tony@sct
|
||||
.PP
|
||||
.br
|
||||
Visualizza la data dal file xxd-it.UTF-8.1
|
||||
Visualizza la data della prima versione di questa pagina dal file xxd-it.UTF-8.1
|
||||
.br
|
||||
\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
|
||||
\fI% xxd \-s 0x39 \-l 13 \-c 13 xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
0000003c: 3231 204d 6167 6769 6f20 3139 3936 21 Maggio 1996
|
||||
00000039: 3231 7374 204d 6179 2031 3939 36 21st May 1996
|
||||
.PP
|
||||
.br
|
||||
Copia
|
||||
@@ -311,11 +315,11 @@ premettendogli 100 byte a 0x00.
|
||||
.br
|
||||
Modifica (patch) la data nel file xxd-it.UTF-8.1
|
||||
.br
|
||||
\fI% echo "000003c: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
|
||||
\fI% echo "0000039: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
|
||||
\fI% xxd \-s 0x39 \-l 13 \-c 13 xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
0000003c: 3331 204d 6167 6769 6f20 3139 3936 31 Maggio 1996
|
||||
00000039: 3331 7374 204d 6179 2031 3939 36 31st May 1996
|
||||
.PP
|
||||
.br
|
||||
Crea un file di 65537 byte tutto a 0x00,
|
||||
@@ -366,6 +370,20 @@ Leggere singoli caratteri da una linea seriale
|
||||
.br
|
||||
\fI% echo \-n foo > /dev/term/b\fR
|
||||
.PP
|
||||
Output nello stile delle `include' di C (opzione \-i ) con uno zero binario a fine stringa
|
||||
.br
|
||||
\fI% echo -n \&"0123456789\&" > cifre\fR
|
||||
.br
|
||||
\fI% xxd -i -t cifre\fR
|
||||
.br
|
||||
unsigned char cifre[] = {
|
||||
.br
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
|
||||
.br
|
||||
};
|
||||
.br
|
||||
unsigned int cifre_len = 10;
|
||||
.PP
|
||||
.SH CODICI DI RITORNO
|
||||
Il programma può restituire questi codici di errore:
|
||||
.TP
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd"
|
||||
.TH XXD 1 "Mar 2026" "Pagina di manuale per xxd"
|
||||
.\"
|
||||
.\" 21 Maggio 1996
|
||||
.\" Autore della pagina di manuale:
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
|
||||
.\" Modificato da Bram Moolenaar <Bram@vim.org>
|
||||
.\" Changes by Bram Moolenaar <Bram@vim.org>
|
||||
.SH NOME
|
||||
.I xxd
|
||||
\- Produce lista esadecimale da un file binario o viceversa.
|
||||
@@ -170,11 +170,14 @@ byte assoluti (o relativi) di distanza all'interno di input_file.
|
||||
(o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input').
|
||||
Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file.
|
||||
.TP
|
||||
.I \-t
|
||||
Quando l'output è nello stile delle `include' di C (opzione \-i ) aggiungere uno zero binario a fine stringa.
|
||||
.TP
|
||||
.I \-u
|
||||
Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole.
|
||||
Usare lettere esadecimali maiuscole. Per default si usano lettere minuscole.
|
||||
.TP
|
||||
.IR \-v " | " \-version
|
||||
Visualizza la stringa contenente la versione del programma.
|
||||
Visualizzare la stringa contenente la versione del programma.
|
||||
.SH ATTENZIONE
|
||||
.PP
|
||||
.I xxd \-r
|
||||
@@ -182,7 +185,8 @@ Visualizza la stringa contenente la versione del programma.
|
||||
Se è possibili posizionarsi tramite `seek' sul file di output, il numero di riga
|
||||
di ogni riga esadecimale può essere non ordinato, delle righe possono mancare, o
|
||||
sovrapporsi. In tal caso xxd userà lseek(2) per posizionarsi all'interno del file.
|
||||
Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari.
|
||||
Se per il file di output non si può usare `seek', sono permessi solo dei "buchi",
|
||||
che saranno riempiti con zeri binari.
|
||||
.PP
|
||||
.I xxd \-r
|
||||
non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati.
|
||||
@@ -246,25 +250,25 @@ Stampa 3 righe (0x30 byte in esadecimale) alla fine di
|
||||
\fI% xxd \-s \-0x30 file\fR
|
||||
.PP
|
||||
Nota: I risultati degli esempi seguenti sono riferiti alla versione di
|
||||
Maggio 2024 della pagina di manuale [quella che state leggendo].
|
||||
Marzo 2026 della pagina di manuale [quella che state leggendo].
|
||||
.PP
|
||||
.br
|
||||
Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
2e544820585844203120224d616767696f203230
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
3234222022506167696e61206469206d616e7561
|
||||
2022506167696e61206469206d616e75616c6520
|
||||
.br
|
||||
6c652070657220787864220a2e5c220a2e5c2220
|
||||
70657220787864220a2e5c220a2e5c2220323173
|
||||
.br
|
||||
3231204d616767696f20313939360a2e5c222041
|
||||
74204d617920313939360a2e5c22204d616e2070
|
||||
.br
|
||||
75746f72652064656c6c6120706167696e612064
|
||||
61676520617574686f723a0a2e5c222020202054
|
||||
.br
|
||||
6f6e79204e7567656e74203c746f6e7940736374
|
||||
.br
|
||||
69206d616e75616c653a0a2e5c2220202020546f
|
||||
.PP
|
||||
|
||||
.br
|
||||
Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
|
||||
@@ -273,30 +277,30 @@ Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
|
||||
.br
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
.br
|
||||
0000000c: 6167 6769 6f20 3230 3234 2220 aggio 2024"
|
||||
0000000c: 6172 2032 3032 3622 2022 5061 ar 2026" "Pa
|
||||
.br
|
||||
00000018: 2250 6167 696e 6120 6469 206d "Pagina di m
|
||||
00000018: 6769 6e61 2064 6920 6d61 6e75 gina di manu
|
||||
.br
|
||||
00000024: 616e 7561 6c65 2070 6572 2078 anuale per x
|
||||
00000024: 616c 6520 7065 7220 7878 6422 ale per xxd"
|
||||
.br
|
||||
00000030: 7864 220a 2e5c 220a 2e5c 2220 xd"..\"..\"
|
||||
00000030: 0a2e 5c22 0a2e 5c22 2032 3173 ..\\"..\\" 21s
|
||||
.br
|
||||
0000003c: 3231 204d 6167 6769 6f20 3139 21 Maggio 19
|
||||
0000003c: 7420 4d61 7920 3139 3936 0a2e t May 1996..
|
||||
.br
|
||||
00000048: 3936 0a2e 5c22 2041 7574 6f72 96..\" Autor
|
||||
00000048: 5c22 204d 616e 2070 6167 6520 \\" Man page
|
||||
.br
|
||||
00000054: 6520 6465 6c6c 6120 7061 6769 e della pagi
|
||||
00000054: 6175 7468 6f72 3a0a 2e5c 2220 author:..\\"
|
||||
.br
|
||||
00000060: 6e61 2064 6920 6d61 6e75 616c na di manual
|
||||
00000060: 2020 2054 6f6e 7920 4e75 6765 Tony Nuge
|
||||
.br
|
||||
0000006c: 653a 0a2e 5c22 2020 2020 546f e:..\" To
|
||||
0000006c: 6e74 203c 746f 6e79 4073 6374 nt <tony@sct
|
||||
.PP
|
||||
.br
|
||||
Visualizza la data dal file xxd-it.UTF-8.1
|
||||
Visualizza la data della prima versione di questa pagina dal file xxd-it.UTF-8.1
|
||||
.br
|
||||
\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
|
||||
\fI% xxd \-s 0x39 \-l 13 \-c 13 xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
0000003c: 3231 204d 6167 6769 6f20 3139 3936 21 Maggio 1996
|
||||
00000039: 3231 7374 204d 6179 2031 3939 36 21st May 1996
|
||||
.PP
|
||||
.br
|
||||
Copia
|
||||
@@ -311,11 +315,11 @@ premettendogli 100 byte a 0x00.
|
||||
.br
|
||||
Modifica (patch) la data nel file xxd-it.UTF-8.1
|
||||
.br
|
||||
\fI% echo "000003c: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
|
||||
\fI% echo "0000039: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
|
||||
\fI% xxd \-s 0x39 \-l 13 \-c 13 xxd-it.UTF-8.1\fR
|
||||
.br
|
||||
0000003c: 3331 204d 6167 6769 6f20 3139 3936 31 Maggio 1996
|
||||
00000039: 3331 7374 204d 6179 2031 3939 36 31st May 1996
|
||||
.PP
|
||||
.br
|
||||
Crea un file di 65537 byte tutto a 0x00,
|
||||
@@ -366,6 +370,20 @@ Leggere singoli caratteri da una linea seriale
|
||||
.br
|
||||
\fI% echo \-n foo > /dev/term/b\fR
|
||||
.PP
|
||||
Output nello stile delle `include' di C (opzione \-i ) con uno zero binario a fine stringa
|
||||
.br
|
||||
\fI% echo -n \&"0123456789\&" > cifre\fR
|
||||
.br
|
||||
\fI% xxd -i -t cifre\fR
|
||||
.br
|
||||
unsigned char cifre[] = {
|
||||
.br
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
|
||||
.br
|
||||
};
|
||||
.br
|
||||
unsigned int cifre_len = 10;
|
||||
.PP
|
||||
.SH CODICI DI RITORNO
|
||||
Il programma può restituire questi codici di errore:
|
||||
.TP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH XXD 1 "May 2024" "Manual page for xxd"
|
||||
.TH XXD 1 "Mar 2026" "Manual page for xxd"
|
||||
.\"
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
@@ -169,6 +169,9 @@ should be that many characters from the end of the input (or if combined with
|
||||
\fI+\fR: before the current stdin file position).
|
||||
Without \-s option, xxd starts at the current file position.
|
||||
.TP
|
||||
.I \-t
|
||||
When outputting in C include file style using \-i include the terminating zero.
|
||||
.TP
|
||||
.I \-u
|
||||
Use upper-case hex letters. Default is lower-case.
|
||||
.TP
|
||||
@@ -243,14 +246,14 @@ Print 3 lines (hex 0x30 bytes) from the end of
|
||||
\fI% xxd \-s \-0x30 file\fR
|
||||
.PP
|
||||
Note: The results of the examples below are relevant to the xxd.1 man page as of
|
||||
May 2024
|
||||
March 2026
|
||||
.PP
|
||||
.br
|
||||
Print 120 bytes as a continuous hex dump with 20 octets per line.
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
||||
.br
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
20224d616e75616c207061676520666f72207878
|
||||
.br
|
||||
@@ -270,7 +273,7 @@ Hex dump the first 120 bytes of this man page with 12 octets per line.
|
||||
.br
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
.br
|
||||
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
|
||||
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma
|
||||
.br
|
||||
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
|
||||
.br
|
||||
@@ -363,6 +366,20 @@ Read single characters from a serial line
|
||||
.br
|
||||
\fI% echo \-n foo > /dev/term/b\fR
|
||||
.PP
|
||||
Output in C style include output with terminating zero
|
||||
.br
|
||||
\fI% echo -n \&"0123456789\&" > digits\fR
|
||||
.br
|
||||
\fI% xxd -i -t digits\fR
|
||||
.br
|
||||
unsigned char digits[] = {
|
||||
.br
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
|
||||
.br
|
||||
};
|
||||
.br
|
||||
unsigned int digits_len = 10;
|
||||
.PP
|
||||
.SH "RETURN VALUES"
|
||||
The following error values are returned:
|
||||
.TP
|
||||
|
||||
@@ -119,26 +119,29 @@ OPTIONS
|
||||
(or if combined with +: before the current stdin file position).
|
||||
Without -s option, xxd starts at the current file position.
|
||||
|
||||
-t When outputting in C include file style using -i include the
|
||||
terminating zero.
|
||||
|
||||
-u Use upper-case hex letters. Default is lower-case.
|
||||
|
||||
-v | -version
|
||||
Show version string.
|
||||
|
||||
CAVEATS
|
||||
xxd -r has some built-in magic while evaluating line number informa‐
|
||||
tion. If the output file is seekable, then the line numbers at the
|
||||
start of each hex dump line may be out of order, lines may be missing,
|
||||
or overlapping. In these cases xxd will lseek(2) to the next position.
|
||||
If the output file is not seekable, only gaps are allowed, which will
|
||||
xxd -r has some built-in magic while evaluating line number informa‐
|
||||
tion. If the output file is seekable, then the line numbers at the
|
||||
start of each hex dump line may be out of order, lines may be missing,
|
||||
or overlapping. In these cases xxd will lseek(2) to the next position.
|
||||
If the output file is not seekable, only gaps are allowed, which will
|
||||
be filled by null-bytes.
|
||||
|
||||
xxd -r never generates parse errors. Garbage is silently skipped.
|
||||
|
||||
When editing hex dumps, please note that xxd -r skips everything on the
|
||||
input line after reading enough columns of hexadecimal data (see option
|
||||
-c). This also means that changes to the printable ASCII (or EBCDIC)
|
||||
-c). This also means that changes to the printable ASCII (or EBCDIC)
|
||||
columns are always ignored. Reverting a plain (or PostScript) style hex
|
||||
dump with xxd -r -p does not depend on the correct number of columns.
|
||||
dump with xxd -r -p does not depend on the correct number of columns.
|
||||
Here, anything that looks like a pair of hex digits is interpreted.
|
||||
|
||||
Note the difference between
|
||||
@@ -146,28 +149,28 @@ CAVEATS
|
||||
and
|
||||
% xxd -i < file
|
||||
|
||||
xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to
|
||||
xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to
|
||||
"rewind" input. A '+' makes a difference if the input source is stdin,
|
||||
and if stdin's file position is not at the start of the file by the
|
||||
time xxd is started and given its input. The following examples may
|
||||
and if stdin's file position is not at the start of the file by the
|
||||
time xxd is started and given its input. The following examples may
|
||||
help to clarify (or further confuse!):
|
||||
|
||||
Rewind stdin before reading; needed because the `cat' has already read
|
||||
Rewind stdin before reading; needed because the `cat' has already read
|
||||
to the end of stdin.
|
||||
% sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file
|
||||
|
||||
Hex dump from file position 0x480 (=1024+128) onwards. The `+' sign
|
||||
Hex dump from file position 0x480 (=1024+128) onwards. The `+' sign
|
||||
means "relative to the current position", thus the `128' adds to the 1k
|
||||
where dd left off.
|
||||
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet"
|
||||
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet"
|
||||
< file
|
||||
|
||||
Hex dump from file position 0x100 (=1024-768) onwards.
|
||||
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet"
|
||||
< file
|
||||
|
||||
However, this is a rare situation and the use of `+' is rarely needed.
|
||||
The author prefers to monitor the effect of xxd with strace(1) or
|
||||
However, this is a rare situation and the use of `+' is rarely needed.
|
||||
The author prefers to monitor the effect of xxd with strace(1) or
|
||||
truss(1), whenever -s is used.
|
||||
|
||||
EXAMPLES
|
||||
@@ -177,12 +180,12 @@ EXAMPLES
|
||||
Print 3 lines (hex 0x30 bytes) from the end of file.
|
||||
% xxd -s -0x30 file
|
||||
|
||||
Note: The results of the examples below are relevant to the xxd.1 man
|
||||
page as of May 2024
|
||||
Note: The results of the examples below are relevant to the xxd.1 man
|
||||
page as of March 2026
|
||||
|
||||
Print 120 bytes as a continuous hex dump with 20 octets per line.
|
||||
% xxd -l 120 -ps -c 20 xxd.1
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
20224d616e75616c207061676520666f72207878
|
||||
64220a2e5c220a2e5c222032317374204d617920
|
||||
313939360a2e5c22204d616e2070616765206175
|
||||
@@ -192,7 +195,7 @@ EXAMPLES
|
||||
Hex dump the first 120 bytes of this man page with 12 octets per line.
|
||||
% xxd -l 120 -c 12 xxd.1
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
|
||||
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma
|
||||
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
|
||||
00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\"..
|
||||
00000030: 5c22 2032 3173 7420 4d61 7920 \" 21st May
|
||||
@@ -214,7 +217,7 @@ EXAMPLES
|
||||
% xxd -s 0x33 -l 13 -c 13 xxd.1
|
||||
00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996
|
||||
|
||||
Create a 65537 byte file with all bytes 0x00, except for the last one
|
||||
Create a 65537 byte file with all bytes 0x00, except for the last one
|
||||
which is 'A' (hex 0x41).
|
||||
% echo "010000: 41" | xxd -r > file
|
||||
|
||||
@@ -225,11 +228,11 @@ EXAMPLES
|
||||
0000fffc: 0000 0000 41 ....A
|
||||
|
||||
Create a 1 byte file containing a single 'A' character. The number af‐
|
||||
ter '-r -s' adds to the line numbers found in the file; in effect, the
|
||||
ter '-r -s' adds to the line numbers found in the file; in effect, the
|
||||
leading bytes are suppressed.
|
||||
% echo "010000: 41" | xxd -r -s -0x10000 > file
|
||||
|
||||
Use xxd as a filter within an editor such as vim(1) to hex dump a re‐
|
||||
Use xxd as a filter within an editor such as vim(1) to hex dump a re‐
|
||||
gion marked between `a' and `z'.
|
||||
:'a,'z!xxd
|
||||
|
||||
@@ -246,6 +249,14 @@ EXAMPLES
|
||||
% stty < /dev/term/b -echo -opost -isig -icanon min 1
|
||||
% echo -n foo > /dev/term/b
|
||||
|
||||
Output in C style include output with terminating zero
|
||||
% echo -n "0123456789" > digits
|
||||
% xxd -i -t digits
|
||||
unsigned char digits[] = {
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
|
||||
};
|
||||
unsigned int digits_len = 10;
|
||||
|
||||
RETURN VALUES
|
||||
The following error values are returned:
|
||||
|
||||
@@ -283,4 +294,4 @@ AUTHOR
|
||||
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
|
||||
Small changes by Bram Moolenaar. Edited by Juergen Weigert.
|
||||
|
||||
Manual page for xxd May 2024 XXD(1)
|
||||
Manual page for xxd Mar 2026 XXD(1)
|
||||
|
||||
@@ -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 Mar 24
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If the filetype can be detected from extension or file name(the final path component),
|
||||
@@ -119,10 +119,13 @@ au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf
|
||||
" *.mc omitted - used by dist#ft#McSetf()
|
||||
au BufNewFile,BufRead *.demo,*.dm{1,2,3,t},*.wxm,maxima-init.mac setf maxima
|
||||
|
||||
" ObjectScript routine or assembly
|
||||
au BufNewFile,BufRead *.mac call dist#ft#FTmac()
|
||||
|
||||
" Assembly (all kinds)
|
||||
" *.lst is not pure assembly, it has two extra columns (address, byte codes)
|
||||
" *.[sS], *.[aA] usually Assembly - GNU
|
||||
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm()
|
||||
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.lst call dist#ft#FTasm()
|
||||
|
||||
" BASIC or Visual Basic
|
||||
au BufNewFile,BufRead *.bas call dist#ft#FTbas()
|
||||
@@ -535,7 +538,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
|
||||
@@ -573,6 +575,9 @@ au BufNewFile,BufRead *.pro call dist#ft#ProtoCheck('idlang')
|
||||
" Initng
|
||||
au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng
|
||||
|
||||
" Intel HEX or ObjectScript routine
|
||||
au BufNewFile,BufRead *.int call dist#ft#FTint()
|
||||
|
||||
" Innovation Data Processing
|
||||
au BufNewFile,BufRead upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
|
||||
au BufNewFile,BufRead fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
|
||||
@@ -887,6 +892,9 @@ au BufNewFile,BufRead requires/*.txt setf requirements
|
||||
" Pkl
|
||||
au BufNewFile,BufRead *.pkl,*.pcf,pkl-lsp://* setf pkl
|
||||
|
||||
" WIC kickstarter files
|
||||
au BufNewFile,BufRead *.wks,*.wks.in,*.wks.inc setf wks
|
||||
|
||||
" Povray, Pascal, PHP or assembly
|
||||
au BufNewFile,BufRead *.inc call dist#ft#FTinc()
|
||||
|
||||
@@ -1028,7 +1036,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' |
|
||||
@@ -1055,7 +1063,7 @@ au BufNewFile,BufRead *.scm,*.ss,*.sld,*.stsg,*/supertux2/config,.lips_repl_hist
|
||||
" SiSU
|
||||
au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
|
||||
|
||||
" Smalltalk (and Rexx, TeX, and Visual Basic)
|
||||
" Smalltalk (and ObjectScript, Rexx, TeX, and Visual Basic)
|
||||
au BufNewFile,BufRead *.cls call dist#ft#FTcls()
|
||||
|
||||
" SMIL or XML
|
||||
@@ -1411,6 +1419,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
|
||||
@@ -1569,6 +1580,9 @@ au BufNewFile,BufRead *vimrc* call s:StarSetf('vim')
|
||||
" Subversion commit file
|
||||
au BufNewFile,BufRead svn-commit*.tmp setf svn
|
||||
|
||||
" Wireguard config
|
||||
au BufNewFile,BufRead */etc/wireguard/*.conf setf dosini
|
||||
|
||||
" X resources file
|
||||
au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
|
||||
|
||||
|
||||
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
|
||||
@@ -5,10 +5,15 @@
|
||||
" Last Change: February 1, 2023
|
||||
" 2023 Aug 28 by Vim Project (undo_ftplugin)
|
||||
" 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
|
||||
" 2026 Mar 16 by Phạm Bình An (add matchit support)
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:saved_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal iskeyword=@,48-57,_,192-255,-,.
|
||||
@@ -17,3 +22,20 @@ setlocal commentstring=#\ %s
|
||||
setlocal formatoptions+=crjq
|
||||
|
||||
let b:undo_ftplugin = "setl cms< com< fo< isk<"
|
||||
|
||||
" Define patterns for the matchit plugin
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_words =
|
||||
\ '\<\%(else\s\+\)\@<!if\>\|\<\%(switch\|begin\|function\|while\|for\)\>:' ..
|
||||
\ '\<else\%(\s\+if\)\?\>\|\<case\>:' ..
|
||||
\ '\<end\>'
|
||||
|
||||
let b:match_ignorecase = 0
|
||||
let b:match_skip = "S:keyword"
|
||||
|
||||
let b:undo_ftplugin ..= " | unlet! b:match_words b:match_ignorecase b:match_skip"
|
||||
endif
|
||||
|
||||
" Restore 'cpo' to its original value
|
||||
let &cpo = s:saved_cpo
|
||||
unlet s:saved_cpo
|
||||
|
||||
@@ -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
|
||||
|
||||
13
runtime/ftplugin/nickel.vim
Normal file
13
runtime/ftplugin/nickel.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
" Vim filetype plugin
|
||||
" Language: nickel
|
||||
" Maintainer: Riley Bruins <ribru17@gmail.com>
|
||||
" Last Change: 2026 Mar 01
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setl comments=:# commentstring=#\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setl com< cms<'
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: OpenSSH client configuration file
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2025-07-22 (use :hor term #17822)
|
||||
" Latest Revision: 2026-03-11 (`less -I`)
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -17,7 +17,7 @@ let b:undo_ftplugin = 'setlocal com< cms< fo<'
|
||||
|
||||
if has('unix') && executable('less') && exists(':terminal') == 2
|
||||
command -buffer -nargs=1 SshconfigKeywordPrg
|
||||
\ silent exe 'hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '$', '\') . ''' --hilite-search" man ' . 'ssh_config'
|
||||
\ silent exe 'hor term ' . 'env LESS= MANPAGER="less -I --pattern=''' . escape('^\s+' . <q-args> . '$', '\') . ''' --hilite-search" man ' . 'ssh_config'
|
||||
setlocal iskeyword+=-
|
||||
setlocal keywordprg=:SshconfigKeywordPrg
|
||||
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer SshconfigKeywordPrg'
|
||||
|
||||
@@ -19,9 +19,8 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
|
||||
if has('unix') && executable('less') && exists(':terminal') == 2
|
||||
command -buffer -nargs=1 SudoersKeywordPrg
|
||||
\ silent exe ':hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('\b' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'sudoers'
|
||||
setlocal iskeyword+=-
|
||||
setlocal keywordprg=:SudoersKeywordPrg
|
||||
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer SudoersKeywordPrg'
|
||||
let b:undo_ftplugin .= '| setlocal keywordprg< | sil! delc -buffer SudoersKeywordPrg'
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
14
runtime/ftplugin/wks.vim
Normal file
14
runtime/ftplugin/wks.vim
Normal file
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: OpenEmbedded Image Creator (WIC) Kickstarter files wks
|
||||
" Maintainer: Anakin Childerhose <anakin@childerhose.ca>
|
||||
" Last Change: 2026 Mar 23
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setlocal com< cms<'
|
||||
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<'
|
||||
22
runtime/ftplugin/yara.vim
Normal file
22
runtime/ftplugin/yara.vim
Normal file
@@ -0,0 +1,22 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: YARA
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Mar 17
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Don't load another plugin for this buffer
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" Set 'formatoptions' to break comment lines but not other lines,
|
||||
" and insert the comment leader when hitting <CR> or using "o".
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
setlocal commentstring=//\ %s
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,://
|
||||
|
||||
" Undo settings when leaving buffer
|
||||
let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<"
|
||||
@@ -9,9 +9,13 @@ Name[es]=GVim
|
||||
Name[fi]=GVim
|
||||
Name[fr]=GVim
|
||||
Name[ga]=GVim
|
||||
Name[hy]=ԳՎիմ
|
||||
Name[it]=GVim
|
||||
Name[ru]=GVim
|
||||
Name[ja]=GVim
|
||||
Name[ru]=gVim
|
||||
Name[sr]=GVim
|
||||
Name[sv]=GVim
|
||||
Name[ta]=சிவிம்
|
||||
Name[tr]=GVim
|
||||
Name[uk]=GVim
|
||||
Name[zh_CN]=GVim
|
||||
@@ -24,12 +28,14 @@ GenericName[es]=Editor de texto
|
||||
GenericName[fi]=Tekstinmuokkain
|
||||
GenericName[fr]=Éditeur de texte
|
||||
GenericName[ga]=Eagarthóir Téacs
|
||||
GenericName[hy]=Տեքստի խմբագիր
|
||||
GenericName[it]=Editor di testi
|
||||
GenericName[ja]=テキストエディタ
|
||||
GenericName[ru]=Текстовый редактор
|
||||
GenericName[sr]=Едитор текст
|
||||
GenericName[sr]=Едитор текста
|
||||
GenericName[sv]=Textredigerare
|
||||
GenericName[tr]=Metin Düzenleyici
|
||||
GenericName[ta]=உரை திருத்தி
|
||||
GenericName[tr]=Metin Düzenleyicisi
|
||||
GenericName[uk]=Редактор Тексту
|
||||
GenericName[zh_CN]=文本编辑器
|
||||
GenericName=Text Editor
|
||||
@@ -41,11 +47,14 @@ Comment[es]=Editar archivos de texto
|
||||
Comment[fi]=Muokkaa tekstitiedostoja
|
||||
Comment[fr]=Éditer des fichiers texte
|
||||
Comment[ga]=Cuir comhaid téacs in eagar
|
||||
Comment[hy]=Խմբագրել տեքստային ֆայլերը
|
||||
Comment[it]=Edita file di testo
|
||||
Comment[ja]=テキストファイルを編集します
|
||||
Comment[ru]=Редактирование текстовых файлов
|
||||
Comment[ru]=Редактировать текстовые файлы
|
||||
Comment[sr]=Уређујте текст фајлове
|
||||
Comment[tr]=Metin dosyaları düzenleyin
|
||||
Comment[sv]=Redigera textfiler
|
||||
Comment[ta]=உரை கோப்புகளைத் திருத்தவும்
|
||||
Comment[tr]=Metin dosyalarını düzenleyin
|
||||
Comment[uk]=Редагувати текстові файли
|
||||
Comment[zh_CN]=编辑文本文件
|
||||
Comment=Edit text files
|
||||
@@ -55,7 +64,6 @@ GenericName[da]=Teksteditor
|
||||
GenericName[pl]=Edytor tekstu
|
||||
GenericName[is]=Ritvinnsluforrit
|
||||
Comment[af]=Redigeer tekslêers
|
||||
Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
|
||||
Comment[ar]=حرّر ملفات نصية
|
||||
Comment[az]=Mətn fayllarını redaktə edin
|
||||
Comment[be]=Рэдагаваньне тэкставых файлаў
|
||||
@@ -102,8 +110,6 @@ Comment[sk]=Úprava textových súborov
|
||||
Comment[sl]=Urejanje datotek z besedili
|
||||
Comment[sq]=Përpuno files teksti
|
||||
Comment[sr@Latn]=Izmeni tekstualne datoteke
|
||||
Comment[sv]=Redigera textfiler
|
||||
Comment[ta]=உரை கோப்புகளை தொகுக்கவும்
|
||||
Comment[th]=แก้ไขแฟ้มข้อความ
|
||||
Comment[tk]=Metin faýllary editle
|
||||
Comment[vi]=Soạn thảo tập tin văn bản
|
||||
@@ -121,11 +127,13 @@ Keywords[es]=Texto;editor;
|
||||
Keywords[fi]=Teksti;muokkain;editori;
|
||||
Keywords[fr]=Texte;éditeur;
|
||||
Keywords[ga]=Téacs;eagarthóir;
|
||||
Keywords[hy]=Տեքստ;խմբագիր;
|
||||
Keywords[it]=Testo;editor;
|
||||
Keywords[ja]=テキスト;エディタ;
|
||||
Keywords[ru]=текст;текстовый редактор;
|
||||
Keywords[sr]=Текст;едитор;
|
||||
Keywords[sv]=Text;Redigerare;
|
||||
Keywords[sv]=Text;redigerare;
|
||||
Keywords[ta]=உரை;திருத்தி;
|
||||
Keywords[tr]=Metin;düzenleyici;
|
||||
Keywords[uk]=текст;редактор;
|
||||
Keywords[zh_CN]=Text;editor;文本;编辑器;
|
||||
|
||||
128
runtime/indent/handlebars.vim
Normal file
128
runtime/indent/handlebars.vim
Normal file
@@ -0,0 +1,128 @@
|
||||
" Vim indent file
|
||||
" Language: Handlebars
|
||||
" Maintainer: Devin Weaver
|
||||
" Last Change: 2026 Feb 20
|
||||
" Origin: https://github.com/joukevandermaas/vim-ember-hbs
|
||||
" Credits: Jouke van der Maas
|
||||
" Acknowledgement: Based on eruby.vim indentation by TPope
|
||||
" License: MIT
|
||||
" The MIT License (MIT)
|
||||
"
|
||||
" Copyright (c) 2026 Devin Weaver
|
||||
" Copyright (c) 2015 Jouke van der Maas
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
" of this software and associated documentation files (the "Software"), to deal
|
||||
" in the Software without restriction, including without limitation the rights
|
||||
" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
" copies of the Software, and to permit persons to whom the Software is
|
||||
" furnished to do so, subject to the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be included in all
|
||||
" copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
" SOFTWARE.
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! indent/html.vim
|
||||
unlet! b:did_indent
|
||||
|
||||
" Force HTML indent to not keep state.
|
||||
let b:html_indent_usestate = 0
|
||||
let b:handlebars_current_indent = 0
|
||||
|
||||
if &l:indentexpr == ''
|
||||
if &l:cindent
|
||||
let &l:indentexpr = 'cindent(v:lnum)'
|
||||
else
|
||||
let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
|
||||
endif
|
||||
endif
|
||||
let b:handlebars_subtype_indentexpr = &l:indentexpr
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetHandlebarsIndent()
|
||||
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=else,={{#,={{/
|
||||
|
||||
" Only define the function once.
|
||||
if exists("*GetHandlebarsIndent")
|
||||
finish
|
||||
endif
|
||||
|
||||
function! GetHandlebarsIndent(...)
|
||||
" The value of a single shift-width
|
||||
let sw = shiftwidth()
|
||||
|
||||
if a:0 && a:1 == '.'
|
||||
let v:lnum = line('.')
|
||||
elseif a:0 && a:1 =~ '^\d'
|
||||
let v:lnum = a:1
|
||||
endif
|
||||
let vcol = col('.')
|
||||
call cursor(v:lnum,1)
|
||||
call cursor(v:lnum,vcol)
|
||||
exe "let ind = ".b:handlebars_subtype_indentexpr
|
||||
|
||||
" Workaround for Andy Wokula's HTML indent. This should be removed after
|
||||
" some time, since the newest version is fixed in a different way. Credit
|
||||
" to eruby.vim indent by tpope
|
||||
if b:handlebars_subtype_indentexpr =~# '^HtmlIndent('
|
||||
\ && exists('b:indent')
|
||||
\ && type(b:indent) == type({})
|
||||
\ && has_key(b:indent, 'lnum')
|
||||
" Force HTML indent to not keep state
|
||||
let b:indent.lnum = -1
|
||||
endif
|
||||
|
||||
let lnum = prevnonblank(v:lnum-1)
|
||||
let prevLine = getline(lnum)
|
||||
let currentLine = getline(v:lnum)
|
||||
|
||||
" all indent rules only apply if the block opening/closing
|
||||
" tag is on a separate line
|
||||
|
||||
" indent after block {{#block
|
||||
if prevLine =~# '\v\s*\{\{\#'
|
||||
let ind = ind + sw
|
||||
endif
|
||||
" but not if the block ends on the same line
|
||||
if prevLine =~# '\v\s*\{\{\#(.+)(\s+|\}\}).+\{\{\/\1'
|
||||
let ind = ind - sw
|
||||
endif
|
||||
" unindent after block close {{/block}}
|
||||
if currentLine =~# '\v^\s*\{\{\/'
|
||||
let ind = ind - sw
|
||||
endif
|
||||
" indent after component block {{a-component
|
||||
if prevLine =~# '\v\s*\{\{\w'
|
||||
let ind = ind + sw
|
||||
endif
|
||||
" but not if the component block ends on the same line
|
||||
if prevLine =~# '\v\s*\{\{\w(.+)\}\}'
|
||||
let ind = ind - sw
|
||||
endif
|
||||
" unindent }} lines
|
||||
if currentLine =~# '\v^\s*\}\}\s*$' || (currentLine !~# '\v^\s*\{\{\/' && prevLine =~# '\v^\s*[^\{\}]+\}\}\s*$')
|
||||
let ind = ind - sw
|
||||
endif
|
||||
" unindent {{else}}
|
||||
if currentLine =~# '\v^\s*\{\{else'
|
||||
let ind = ind - sw
|
||||
endif
|
||||
" indent again after {{else}}
|
||||
if prevLine =~# '\v^\s*\{\{else'
|
||||
let ind = ind + sw
|
||||
endif
|
||||
|
||||
return ind
|
||||
endfunction
|
||||
@@ -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 11
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
@@ -385,6 +385,12 @@ call <SID>AddOption("window", gettext("number of lines to scroll for CTRL-F and
|
||||
call append("$", " \tset window=" . &window)
|
||||
call <SID>AddOption("lazyredraw", gettext("don't redraw while executing macros"))
|
||||
call <SID>BinOptionG("lz", &lz)
|
||||
if has("unix")
|
||||
call <SID>AddOption("termresize", gettext("configure method of receiving terminal size changes"))
|
||||
call <SID>BinOptionG("trz", &trz)
|
||||
endif
|
||||
call <SID>AddOption("termsync", gettext("enable terminal sync mode"))
|
||||
call <SID>BinOptionG("tsy", &tsy)
|
||||
if has("reltime")
|
||||
call <SID>AddOption("redrawtime", gettext("timeout for 'hlsearch' and :match highlighting in msec"))
|
||||
call append("$", " \tset rdt=" . &rdt)
|
||||
@@ -445,6 +451,9 @@ call <SID>BinOptionG("hls", &hls)
|
||||
call <SID>AddOption("wincolor", gettext("highlight group to use for the window"))
|
||||
call append("$", "\t" .. s:local_to_window)
|
||||
call <SID>OptionL("wcr")
|
||||
call <SID>AddOption("winhighlight", gettext("highlight group mappings for the window"))
|
||||
call append("$", "\t" .. s:local_to_window)
|
||||
call <SID>OptionL("whl")
|
||||
if has("termguicolors")
|
||||
call <SID>AddOption("termguicolors", gettext("use GUI colors for the terminal"))
|
||||
call <SID>BinOptionG("tgc", &tgc)
|
||||
@@ -490,8 +499,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\""))
|
||||
|
||||
41
runtime/pack/dist/opt/netrw/autoload/netrw.vim
vendored
41
runtime/pack/dist/opt/netrw/autoload/netrw.vim
vendored
@@ -19,6 +19,9 @@
|
||||
" 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
|
||||
" 2026 Mar 01 by Vim Project include portnumber in hostname checking #19533
|
||||
" 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
|
||||
@@ -2590,13 +2593,29 @@ endfunction
|
||||
|
||||
" s:NetrwValidateHostname: Validate that the hostname is valid {{{2
|
||||
" Input:
|
||||
" hostname
|
||||
" hostname, may include an optional username and port number, e.g.
|
||||
" user@hostname:port
|
||||
" 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.]\{0,62}[a-zA-Z0-9]\)\?'
|
||||
" Port: 16 bit unsigned integer
|
||||
let port_pat = '\%(:\d\{1,5\}\)\?$'
|
||||
|
||||
" 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.port_pat ||
|
||||
\ a:hostname =~? '^'.user_pat.ipv4_pat.port_pat ||
|
||||
\ a:hostname =~? '^'.user_pat.ipv6_pat.port_pat
|
||||
endfunction
|
||||
|
||||
" NetUserPass: set username and password for subsequent ftp transfer {{{2
|
||||
@@ -3239,7 +3258,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
|
||||
@@ -8960,15 +8979,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
|
||||
|
||||
7
runtime/pack/dist/opt/osc52/doc/osc52.txt
vendored
7
runtime/pack/dist/opt/osc52/doc/osc52.txt
vendored
@@ -62,9 +62,10 @@ setting |g:osc52_force_avail| to true.
|
||||
|
||||
*g:osc52_disable_paste*
|
||||
If your terminal does not support pasting via OSC 52, or has it disabled, then
|
||||
it is a good idea to set g:osc52_disable_paste to TRUE. This will cause an
|
||||
empty string to be returned when Vim attempts to query the osc52.vim provider,
|
||||
instead of doing a blocking wait, as said in |osc52-support|.
|
||||
it is a good idea to set g:osc52_disable_paste to TRUE. This will register
|
||||
only the "copy" method for the osc52.vim clipboard provider, so Vim will not
|
||||
attempt an OSC 52 paste query and avoids the blocking wait described in
|
||||
|osc52-support|.
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:fo=tcq2:ft=help:
|
||||
|
||||
19
runtime/pack/dist/opt/osc52/plugin/osc52.vim
vendored
19
runtime/pack/dist/opt/osc52/plugin/osc52.vim
vendored
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim plugin for OSC52 clipboard support
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Dec 18
|
||||
# Last Change: 2026 Mar 01
|
||||
|
||||
if !has("timers")
|
||||
finish
|
||||
@@ -11,18 +11,25 @@ endif
|
||||
|
||||
import autoload "../autoload/osc52.vim" as osc
|
||||
|
||||
v:clipproviders["osc52"] = {
|
||||
var provider: dict<any> = {
|
||||
"available": osc.Available,
|
||||
"paste": {
|
||||
"*": osc.Paste,
|
||||
"+": osc.Paste
|
||||
},
|
||||
"copy": {
|
||||
"*": osc.Copy,
|
||||
"+": osc.Copy
|
||||
},
|
||||
}
|
||||
|
||||
if !get(g:, 'osc52_disable_paste', 0)
|
||||
provider->extend({
|
||||
"paste": {
|
||||
"*": osc.Paste,
|
||||
"+": osc.Paste
|
||||
}
|
||||
})
|
||||
endif
|
||||
|
||||
v:clipproviders["osc52"] = provider
|
||||
|
||||
def SendDA1(): void
|
||||
if !has("gui_running") && !get(g:, 'osc52_force_avail', 0)
|
||||
&& !get(g:, 'osc52_no_da1', 0)
|
||||
|
||||
@@ -4,7 +4,7 @@ vim9script
|
||||
|
||||
# Author: Bram Moolenaar
|
||||
# Copyright: Vim license applies, see ":help license"
|
||||
# Last Change: 2025 Dec 26
|
||||
# Last Change: 2026 Mar 11
|
||||
# Converted to Vim9: Ubaldo Tiberi <ubaldo.tiberi@gmail.com>
|
||||
|
||||
# WORK IN PROGRESS - The basics works stable, more to come
|
||||
@@ -1592,6 +1592,87 @@ def QuoteArg(x: string): string
|
||||
return printf('"%s"', x ->substitute('[\\"]', '\\&', 'g'))
|
||||
enddef
|
||||
|
||||
def DefaultBreakpointLocation(): string
|
||||
# Use the fname:lnum format, older gdb can't handle --source.
|
||||
var fname = Remote2LocalPath(expand('%:p'))
|
||||
return QuoteArg($"{fname}:{line('.')}")
|
||||
enddef
|
||||
|
||||
def TokenizeBreakpointArguments(args: string): list<dict<any>>
|
||||
var tokens: list<dict<any>> = []
|
||||
var start = -1
|
||||
var escaped = false
|
||||
var in_quotes = false
|
||||
|
||||
var i = 0
|
||||
for ch in args
|
||||
if start < 0 && ch !~ '\s'
|
||||
start = i
|
||||
endif
|
||||
if start >= 0
|
||||
if escaped
|
||||
escaped = false
|
||||
elseif ch == '\'
|
||||
escaped = true
|
||||
elseif ch == '"'
|
||||
in_quotes = !in_quotes
|
||||
elseif !in_quotes && ch =~ '\s'
|
||||
tokens->add({text: args[start : i - 1], start: start, end: i - 1})
|
||||
start = -1
|
||||
endif
|
||||
endif
|
||||
i += 1
|
||||
endfor
|
||||
|
||||
if start >= 0
|
||||
tokens->add({text: args[start :], start: start, end: i - 1})
|
||||
endif
|
||||
return tokens
|
||||
enddef
|
||||
|
||||
def BuildBreakpointCommand(at: string, tbreak=false): string
|
||||
var args = trim(at)
|
||||
var cmd = '-break-insert'
|
||||
if tbreak
|
||||
cmd ..= ' -t'
|
||||
endif
|
||||
|
||||
if empty(args)
|
||||
return $'{cmd} {DefaultBreakpointLocation()}'
|
||||
endif
|
||||
|
||||
var condition = ''
|
||||
var prefix = args
|
||||
for token in TokenizeBreakpointArguments(args)
|
||||
if token.text == 'if' && token.end < strchars(args) - 1
|
||||
condition = trim(args[token.end + 1 :])
|
||||
prefix = token.start > 0 ? trim(args[: token.start - 1]) : ''
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
|
||||
var prefix_tokens = TokenizeBreakpointArguments(prefix)
|
||||
var location = prefix
|
||||
var thread = ''
|
||||
if len(prefix_tokens) >= 2
|
||||
&& prefix_tokens[-2].text == 'thread'
|
||||
&& prefix_tokens[-1].text =~ '^\d\+$'
|
||||
thread = prefix_tokens[-1].text
|
||||
location = join(prefix_tokens[: -3]->mapnew('v:val.text'), ' ')
|
||||
endif
|
||||
|
||||
if empty(trim(location))
|
||||
location = DefaultBreakpointLocation()
|
||||
endif
|
||||
if !empty(thread)
|
||||
cmd ..= $' -p {thread}'
|
||||
endif
|
||||
if !empty(condition)
|
||||
cmd ..= $' -c {QuoteArg(condition)}'
|
||||
endif
|
||||
return $'{cmd} {trim(location)}'
|
||||
enddef
|
||||
|
||||
# :Until - Execute until past a specified position or current line
|
||||
def Until(at: string)
|
||||
|
||||
@@ -1620,15 +1701,7 @@ def SetBreakpoint(at: string, tbreak=false)
|
||||
sleep 10m
|
||||
endif
|
||||
|
||||
# Use the fname:lnum format, older gdb can't handle --source.
|
||||
var fname = Remote2LocalPath(expand('%:p'))
|
||||
var AT = empty(at) ? QuoteArg($"{fname}:{line('.')}") : at
|
||||
var cmd = ''
|
||||
if tbreak
|
||||
cmd = $'-break-insert -t {AT}'
|
||||
else
|
||||
cmd = $'-break-insert {AT}'
|
||||
endif
|
||||
var cmd = BuildBreakpointCommand(at, tbreak)
|
||||
SendCommand(cmd)
|
||||
if do_continue
|
||||
ContinueCommand()
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
" Vim plugin for using Vim as manpager.
|
||||
" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
|
||||
" Last Change: 2024 Jul 03
|
||||
" 2026 Mar 22 by Vim Project: strip OSC 9 sequences (#19787)
|
||||
" 2026 Mar 24 by Vim Project: strip Bell char: Ctrl-G (#19807)
|
||||
|
||||
if exists('g:loaded_manpager_plugin')
|
||||
finish
|
||||
@@ -32,6 +34,9 @@ function s:ManPager()
|
||||
" Remove ansi sequences
|
||||
exe 'silent! keepj keepp %s/\v\e\[%(%(\d;)?\d{1,2})?[mK]//e' .. (&gdefault ? '' : 'g')
|
||||
|
||||
" Remove OSC 8 hyperlink sequences: \e]8;;...\e\ or \e]8;;...<BEL>
|
||||
exe 'silent! keepj keepp %s/\v\e\]8;[^\x07\e]*%(%x07|\e\\)//e' .. (&gdefault ? '' : 'g')
|
||||
|
||||
" Remove empty lines above the header
|
||||
call cursor(1, 1)
|
||||
let n = search(".*(.*)", "c")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -1,89 +1,303 @@
|
||||
" Vim syntax file
|
||||
" Language: AmigaDos
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Former Maintainer: Charles E. Campbell
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 10
|
||||
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_AMIGA
|
||||
" Language: AmigaDOS
|
||||
" Maintainer: Ola Söder <rolfkopman@gmail.com>
|
||||
" First Author: Charles E. Campbell
|
||||
" Last Change: 2026 Mar 25
|
||||
" Version: 11
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
syn case ignore
|
||||
|
||||
" Amiga Devices
|
||||
syn match amiDev "\(par\|ser\|prt\|con\|nil\):"
|
||||
" Directives
|
||||
syn match amiDirective "^\.\(key\|k\)\>.*$" contains=amiTemplate
|
||||
syn match amiDirective "^\.\(bra\|ket\|dot\|dollar\|dol\|def\|default\)\>.*$"
|
||||
|
||||
" Amiga aliases and paths
|
||||
syn match amiAlias "\<[a-zA-Z][a-zA-Z0-9]\+:"
|
||||
syn match amiAlias "\<[a-zA-Z][a-zA-Z0-9]\+:[a-zA-Z0-9/]*/"
|
||||
" Template arguments
|
||||
syn match amiTemplate contained "/[AKSNMF]\>"
|
||||
|
||||
" strings
|
||||
syn region amiString start=+"+ end=+"+ oneline contains=@Spell
|
||||
" Strings
|
||||
syn region amiString start=+"+ end=+"+ oneline contains=amiEscape,amiVar,amiSubst,@Spell
|
||||
|
||||
" numbers
|
||||
syn match amiNumber "\<\d\+\>"
|
||||
" Escape sequences
|
||||
syn match amiEscape contained "\*[nNeE"*]"
|
||||
|
||||
" Logic flow
|
||||
syn region amiFlow matchgroup=Statement start="if" matchgroup=Statement end="endif" contains=ALL
|
||||
syn keyword amiFlow skip endskip
|
||||
syn match amiError "else\|endif"
|
||||
syn keyword amiElse contained else
|
||||
" Numbers
|
||||
syn match amiNumber "\<\d\+\>"
|
||||
|
||||
syn keyword amiTest contained not warn error fail eq gt ge val exists
|
||||
" Variables
|
||||
syn match amiVar "\$[a-zA-Z_][a-zA-Z0-9_]*"
|
||||
syn match amiVar "\$\$"
|
||||
|
||||
" echo exception
|
||||
syn region amiEcho matchgroup=Statement start="\<echo\>" end="$" oneline contains=amiComment
|
||||
syn region amiEcho matchgroup=Statement start="^\.[bB][rR][aA]" end="$" oneline
|
||||
syn region amiEcho matchgroup=Statement start="^\.[kK][eE][tT]" end="$" oneline
|
||||
" Parameters
|
||||
syn region amiSubst start="<\a" end=">" oneline contains=amiVar
|
||||
syn match amiSubst "<\$\$>"
|
||||
|
||||
" commands
|
||||
syn keyword amiKey addbuffers copy fault join pointer setdate
|
||||
syn keyword amiKey addmonitor cpu filenote keyshow printer setenv
|
||||
syn keyword amiKey alias date fixfonts lab printergfx setfont
|
||||
syn keyword amiKey ask delete fkey list printfiles setmap
|
||||
syn keyword amiKey assign dir font loadwb prompt setpatch
|
||||
syn keyword amiKey autopoint diskchange format lock protect sort
|
||||
syn keyword amiKey avail diskcopy get magtape quit stack
|
||||
syn keyword amiKey binddrivers diskdoctor getenv makedir relabel status
|
||||
syn keyword amiKey bindmonitor display graphicdump makelink remrad time
|
||||
syn keyword amiKey blanker iconedit more rename type
|
||||
syn keyword amiKey break ed icontrol mount resident unalias
|
||||
syn keyword amiKey calculator edit iconx newcli run unset
|
||||
syn keyword amiKey cd endcli ihelp newshell say unsetenv
|
||||
syn keyword amiKey changetaskpri endshell info nocapslock screenmode version
|
||||
syn keyword amiKey clock eval initprinter nofastmem search wait
|
||||
syn keyword amiKey cmd exchange input overscan serial wbpattern
|
||||
syn keyword amiKey colors execute install palette set which
|
||||
syn keyword amiKey conclip failat iprefs path setclock why
|
||||
" Devices / assigns / paths
|
||||
syn match amiPath "\<[a-zA-Z][a-zA-Z0-9]*:[^ \t]*"
|
||||
|
||||
" comments
|
||||
syn cluster amiCommentGroup contains=amiTodo,@Spell
|
||||
syn case ignore
|
||||
syn keyword amiTodo contained todo
|
||||
syn case match
|
||||
syn match amiComment ";.*$" contains=amiCommentGroup
|
||||
" Redirection
|
||||
syn match amiOperator ">>"
|
||||
syn match amiOperator "[<>|]"
|
||||
|
||||
" sync
|
||||
syn sync lines=50
|
||||
" Control flow
|
||||
syn region amiIfBlock matchgroup=amiConditional start="\<IF\>" matchgroup=amiConditional end="\<ENDIF\>" contains=ALLBUT,amiIfError
|
||||
syn keyword amiIfError ELSE ENDIF
|
||||
syn keyword amiElse contained ELSE
|
||||
syn keyword amiConditional SKIP ENDSKIP
|
||||
syn keyword amiLabel LAB
|
||||
syn keyword amiRepeat FOREACH
|
||||
|
||||
" Conditions
|
||||
syn keyword amiCondition contained NOT WARN ERROR FAIL EQ GT GE VAL EXISTS
|
||||
|
||||
" Echo
|
||||
syn region amiEcho matchgroup=amiCommand start="\<echo\>" end="$" oneline contains=amiComment,amiVar,amiSubst,amiBacktick,amiEscape
|
||||
|
||||
" Commands
|
||||
syn keyword amiCommand ADDAUDIOMODES
|
||||
syn keyword amiCommand ADDBUFFERS
|
||||
syn keyword amiCommand ADDDATATYPES
|
||||
syn keyword amiCommand ADDMONITOR
|
||||
syn keyword amiCommand ADDNETINTERFACE
|
||||
syn keyword amiCommand ADDNETROUTE
|
||||
syn keyword amiCommand ALIAS
|
||||
syn keyword amiCommand APPLISTINFO
|
||||
syn keyword amiCommand ARP
|
||||
syn keyword amiCommand ASK
|
||||
syn keyword amiCommand ASSIGN
|
||||
syn keyword amiCommand AVAIL
|
||||
syn keyword amiCommand BINDDRIVERS
|
||||
syn keyword amiCommand BINDMONITOR
|
||||
syn keyword amiCommand BREAK
|
||||
syn keyword amiCommand BUILDMAPTABLE
|
||||
syn keyword amiCommand CACHESTAT
|
||||
syn keyword amiCommand CD
|
||||
syn keyword amiCommand CHANGETASKPRI
|
||||
syn keyword amiCommand CHARSETCONVERT
|
||||
syn keyword amiCommand CLIP
|
||||
syn keyword amiCommand CLOCK
|
||||
syn keyword amiCommand CMD
|
||||
syn keyword amiCommand CONCLIP
|
||||
syn keyword amiCommand CONFIGURENETINTERFACE
|
||||
syn keyword amiCommand COPY
|
||||
syn keyword amiCommand COUNTLINES
|
||||
syn keyword amiCommand CPU
|
||||
syn keyword amiCommand CROSSDOS
|
||||
syn keyword amiCommand CUT
|
||||
syn keyword amiCommand DATE
|
||||
syn keyword amiCommand DELETE
|
||||
syn keyword amiCommand DELETENETROUTE
|
||||
syn keyword amiCommand DIR
|
||||
syn keyword amiCommand DISKCHANGE
|
||||
syn keyword amiCommand DISKCOPY
|
||||
syn keyword amiCommand DISKDOCTOR
|
||||
syn keyword amiCommand DISMOUNT
|
||||
syn keyword amiCommand ENDCLI
|
||||
syn keyword amiCommand ENDSHELL
|
||||
syn keyword amiCommand EVAL
|
||||
syn keyword amiCommand EXECUTE
|
||||
syn keyword amiCommand FAILAT
|
||||
syn keyword amiCommand FAULT
|
||||
syn keyword amiCommand FDTOOL
|
||||
syn keyword amiCommand FILENOTE
|
||||
syn keyword amiCommand FILESIZE
|
||||
syn keyword amiCommand FORMAT
|
||||
syn keyword amiCommand GET
|
||||
syn keyword amiCommand GETENV
|
||||
syn keyword amiCommand GETNETSTATUS
|
||||
syn keyword amiCommand GROUP
|
||||
syn keyword amiCommand HELP
|
||||
syn keyword amiCommand HI
|
||||
syn keyword amiCommand HISTORY
|
||||
syn keyword amiCommand IHELP
|
||||
syn keyword amiCommand INFO
|
||||
syn keyword amiCommand INITPRINTER
|
||||
syn keyword amiCommand INPUT
|
||||
syn keyword amiCommand INSTALL
|
||||
syn keyword amiCommand INTELLIFONT
|
||||
syn keyword amiCommand IPMON
|
||||
syn keyword amiCommand IPNAT
|
||||
syn keyword amiCommand JOIN
|
||||
syn keyword amiCommand KDEBUG
|
||||
syn keyword amiCommand LAB
|
||||
syn keyword amiCommand LIST
|
||||
syn keyword amiCommand LOADMONDRVS
|
||||
syn keyword amiCommand LOADRESOURCE
|
||||
syn keyword amiCommand LOADWB
|
||||
syn keyword amiCommand LOCALE
|
||||
syn keyword amiCommand LOCK
|
||||
syn keyword amiCommand MAKEDIR
|
||||
syn keyword amiCommand MAKELINK
|
||||
syn keyword amiCommand MEMSTAT
|
||||
syn keyword amiCommand MORE
|
||||
syn keyword amiCommand MOUNT
|
||||
syn keyword amiCommand MOUNTINFO
|
||||
syn keyword amiCommand MOVE
|
||||
syn keyword amiCommand NETLOGVIEWER
|
||||
syn keyword amiCommand NETSHUTDOWN
|
||||
syn keyword amiCommand NEWCLI
|
||||
syn keyword amiCommand NEWSHELL
|
||||
syn keyword amiCommand OWNER
|
||||
syn keyword amiCommand PATH
|
||||
syn keyword amiCommand PATHPART
|
||||
syn keyword amiCommand PIPE
|
||||
syn keyword amiCommand POINTER
|
||||
syn keyword amiCommand POOLSTAT
|
||||
syn keyword amiCommand POPCD
|
||||
syn keyword amiCommand PREPCARD
|
||||
syn keyword amiCommand PROMPT
|
||||
syn keyword amiCommand PROTECT
|
||||
syn keyword amiCommand PUSHCD
|
||||
syn keyword amiCommand QUIT
|
||||
syn keyword amiCommand REBOOT
|
||||
syn keyword amiCommand RELABEL
|
||||
syn keyword amiCommand RELOADAPPLIST
|
||||
syn keyword amiCommand REMOVENETINTERFACE
|
||||
syn keyword amiCommand REMRAD
|
||||
syn keyword amiCommand RENAME
|
||||
syn keyword amiCommand REQUESTCHOICE
|
||||
syn keyword amiCommand REQUESTFILE
|
||||
syn keyword amiCommand REQUESTSTRING
|
||||
syn keyword amiCommand RESIDENT
|
||||
syn keyword amiCommand ROADSHOWCONTROL
|
||||
syn keyword amiCommand RUN
|
||||
syn keyword amiCommand RX
|
||||
syn keyword amiCommand RXC
|
||||
syn keyword amiCommand RXLIB
|
||||
syn keyword amiCommand RXSET
|
||||
syn keyword amiCommand SAY
|
||||
syn keyword amiCommand SEARCH
|
||||
syn keyword amiCommand SET
|
||||
syn keyword amiCommand SETCLOCK
|
||||
syn keyword amiCommand SETDATE
|
||||
syn keyword amiCommand SETDOSDEBUG
|
||||
syn keyword amiCommand SETENV
|
||||
syn keyword amiCommand SETFONT
|
||||
syn keyword amiCommand SETFONTCHARSET
|
||||
syn keyword amiCommand SETKEYBOARD
|
||||
syn keyword amiCommand SETMAP
|
||||
syn keyword amiCommand SETPATCH
|
||||
syn keyword amiCommand SHOW68LOADS
|
||||
syn keyword amiCommand SHOWAPPLIST
|
||||
syn keyword amiCommand SHOWNETSTATUS
|
||||
syn keyword amiCommand SMARTCTL
|
||||
syn keyword amiCommand SORT
|
||||
syn keyword amiCommand SOUNDPLAYER
|
||||
syn keyword amiCommand STACK
|
||||
syn keyword amiCommand STATUS
|
||||
syn keyword amiCommand SWAPCD
|
||||
syn keyword amiCommand TYPE
|
||||
syn keyword amiCommand UNALIAS
|
||||
syn keyword amiCommand UNSET
|
||||
syn keyword amiCommand UNSETENV
|
||||
syn keyword amiCommand UPTIME
|
||||
syn keyword amiCommand URLOPEN
|
||||
syn keyword amiCommand VERSION
|
||||
syn keyword amiCommand WAIT
|
||||
syn keyword amiCommand WAITFORPORT
|
||||
syn keyword amiCommand WBRUN
|
||||
syn keyword amiCommand WBSTARTUPCTRL
|
||||
syn keyword amiCommand WHICH
|
||||
syn keyword amiCommand WHY
|
||||
|
||||
" Options
|
||||
syn keyword amiOption ADD
|
||||
syn keyword amiOption ALL
|
||||
syn keyword amiOption APPEND
|
||||
syn keyword amiOption BACK
|
||||
syn keyword amiOption BODY
|
||||
syn keyword amiOption BUF
|
||||
syn keyword amiOption BUFFER
|
||||
syn keyword amiOption CASE
|
||||
syn keyword amiOption CHARSET
|
||||
syn keyword amiOption CHECK
|
||||
syn keyword amiOption CLEAR
|
||||
syn keyword amiOption CLONE
|
||||
syn keyword amiOption COPYLINKS
|
||||
syn keyword amiOption DATES
|
||||
syn keyword amiOption DEBUG
|
||||
syn keyword amiOption DEVICE
|
||||
syn keyword amiOption DIRS
|
||||
syn keyword amiOption DRIVE
|
||||
syn keyword amiOption FILE
|
||||
syn keyword amiOption FILES
|
||||
syn keyword amiOption FOLLOWLINKS
|
||||
syn keyword amiOption FORCE
|
||||
syn keyword amiOption FROM
|
||||
syn keyword amiOption FULL
|
||||
syn keyword amiOption HARD
|
||||
syn keyword amiOption INTERACTIVE
|
||||
syn keyword amiOption LFORMAT
|
||||
syn keyword amiOption LOAD
|
||||
syn keyword amiOption LOCK
|
||||
syn keyword amiOption MULTI
|
||||
syn keyword amiOption NAME
|
||||
syn keyword amiOption NEGATIVE
|
||||
syn keyword amiOption NOHEAD
|
||||
syn keyword amiOption NONUM
|
||||
syn keyword amiOption NOREPLACE
|
||||
syn keyword amiOption NOREQ
|
||||
syn keyword amiOption NUMERIC
|
||||
syn keyword amiOption OFF
|
||||
syn keyword amiOption ON
|
||||
syn keyword amiOption PATTERN
|
||||
syn keyword amiOption POSITIVE
|
||||
syn keyword amiOption PREPEND
|
||||
syn keyword amiOption PUBSCREEN
|
||||
syn keyword amiOption QUICK
|
||||
syn keyword amiOption QUIET
|
||||
syn keyword amiOption REMOVE
|
||||
syn keyword amiOption REPLACE
|
||||
syn keyword amiOption RESET
|
||||
syn keyword amiOption SAVE
|
||||
syn keyword amiOption SHOW
|
||||
syn keyword amiOption SINCE
|
||||
syn keyword amiOption SOFT
|
||||
syn keyword amiOption SORT
|
||||
syn keyword amiOption SUB
|
||||
syn keyword amiOption TIMEOUT
|
||||
syn keyword amiOption TITLE
|
||||
syn keyword amiOption TO
|
||||
syn keyword amiOption UNLOCK
|
||||
syn keyword amiOption UPTO
|
||||
syn keyword amiOption VERBOSE
|
||||
syn keyword amiOption WITH
|
||||
|
||||
" Comments
|
||||
syn match amiComment ";.*$" contains=amiTodo,@Spell
|
||||
syn match amiComment "^\.\s.*$" contains=amiTodo,@Spell
|
||||
syn match amiComment "^\.$"
|
||||
|
||||
" Miscellaneous
|
||||
syn keyword amiTodo contained TODO FIXME XXX NOTE
|
||||
syn region amiBacktick start="`" end="`" oneline
|
||||
|
||||
" Define the default highlighting.
|
||||
if !exists("skip_amiga_syntax_inits")
|
||||
|
||||
hi def link amiAlias Type
|
||||
hi def link amiComment Comment
|
||||
hi def link amiDev Type
|
||||
hi def link amiEcho String
|
||||
hi def link amiElse Statement
|
||||
hi def link amiError Error
|
||||
hi def link amiKey Statement
|
||||
hi def link amiNumber Number
|
||||
hi def link amiString String
|
||||
hi def link amiTest Special
|
||||
|
||||
hi def link amiBacktick Special
|
||||
hi def link amiCommand Statement
|
||||
hi def link amiComment Comment
|
||||
hi def link amiCondition Special
|
||||
hi def link amiConditional Conditional
|
||||
hi def link amiDirective PreProc
|
||||
hi def link amiEcho String
|
||||
hi def link amiElse Conditional
|
||||
hi def link amiEscape SpecialChar
|
||||
hi def link amiIfError Error
|
||||
hi def link amiLabel Label
|
||||
hi def link amiNumber Number
|
||||
hi def link amiOperator Operator
|
||||
hi def link amiOption Identifier
|
||||
hi def link amiPath Type
|
||||
hi def link amiRepeat Repeat
|
||||
hi def link amiString String
|
||||
hi def link amiSubst Special
|
||||
hi def link amiTemplate Type
|
||||
hi def link amiTodo Todo
|
||||
hi def link amiVar Special
|
||||
endif
|
||||
let b:current_syntax = "amiga"
|
||||
|
||||
" vim:ts=15
|
||||
let b:current_syntax = "amiga"
|
||||
|
||||
@@ -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,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
|
||||
@@ -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
|
||||
|
||||
51
runtime/syntax/glimmer.vim
Normal file
51
runtime/syntax/glimmer.vim
Normal file
@@ -0,0 +1,51 @@
|
||||
" Vim syntax file
|
||||
" Language: Glimmer
|
||||
" Maintainer: Devin Weaver
|
||||
" Last Change: 2026 Feb 20
|
||||
" Origin: https://github.com/joukevandermaas/vim-ember-hbs
|
||||
" Credits: Jouke van der Maas
|
||||
" License: Same as Vim
|
||||
|
||||
" Vim detects GJS/GTS files as {java,type}script.glimmer
|
||||
" Vim will read the javascript/typescript syntax files first and set
|
||||
" b:current_syntax accordingly then it will read the glimmer syntax file.
|
||||
" This is why we use b:current_syntax to make sure we are in the correct state
|
||||
" to continue.
|
||||
|
||||
if exists('b:current_syntax') && b:current_syntax !~# '\v%(type|java)script'
|
||||
finish
|
||||
endif
|
||||
|
||||
let base_syntax = b:current_syntax
|
||||
unlet! b:current_syntax
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
syntax include @hbs syntax/handlebars.vim
|
||||
|
||||
if base_syntax == "javascript"
|
||||
syntax region glimmerTemplateBlock
|
||||
\ start="<template>" end="</template>"
|
||||
\ contains=@hbs
|
||||
\ keepend fold
|
||||
|
||||
let b:current_syntax = "javascript.glimmer"
|
||||
else
|
||||
" syntax/typescript.vim adds typescriptTypeCast which is in conflict with
|
||||
" <template> typescriptreact doesn't define it but we want to not include
|
||||
" the JSX syntax.
|
||||
syntax clear typescriptTypeCast
|
||||
|
||||
syntax region glimmerTemplateBlock
|
||||
\ start="<template>" end="</template>"
|
||||
\ contains=@hbs
|
||||
\ containedin=typescriptClassBlock,typescriptFuncCallArg
|
||||
\ keepend fold
|
||||
|
||||
let b:current_syntax = "typescript.glimmer"
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
unlet! base_syntax
|
||||
144
runtime/syntax/handlebars.vim
Normal file
144
runtime/syntax/handlebars.vim
Normal file
@@ -0,0 +1,144 @@
|
||||
" Vim syntax file
|
||||
" Language: Handlebars
|
||||
" Maintainer: Devin Weaver
|
||||
" Last Change: 2026 Feb 20
|
||||
" Origin: https://github.com/joukevandermaas/vim-ember-hbs
|
||||
" Credits: Jouke van der Maas
|
||||
" License: MIT
|
||||
" The MIT License (MIT)
|
||||
"
|
||||
" Copyright (c) 2026 Devin Weaver
|
||||
" Copyright (c) 2015 Jouke van der Maas
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
" of this software and associated documentation files (the "Software"), to deal
|
||||
" in the Software without restriction, including without limitation the rights
|
||||
" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
" copies of the Software, and to permit persons to whom the Software is
|
||||
" furnished to do so, subject to the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be included in all
|
||||
" copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
" SOFTWARE.
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! syntax/html.vim
|
||||
syntax cluster htmlPreproc add=hbsComponent,hbsMustache,hbsUnescaped,hbsMustacheBlock,hbsComment,hbsElseBlock,hbsEscapedMustache
|
||||
|
||||
syntax match hbsEscapedMustache "\v\\\{\{"
|
||||
|
||||
syntax region hbsComponent matchgroup=hbsComponentStatement start="\v\<\/?:?\a+(\.\a+|::-?\a+)*" end="\v\/?\>" keepend
|
||||
syntax region hbsMustache matchgroup=hbsHandles start="\v\{\{" skip="\v\\\}\}" end="\v\}\}" containedin=hbsComponent,hbsString keepend
|
||||
syntax region hbsMustacheBlock matchgroup=hbsHandles start="\v\{\{[#/]" skip="\v\\\}\}" end="\v\}\}" keepend
|
||||
" modern hbs supports {{else <block>}} where <block> starts a new block
|
||||
syntax region hbsElseBlock matchgroup=hbsHandles start="\v\{\{else\ "rs=e-5 skip="\v\\\}\}" end="\v\}\}" keepend
|
||||
|
||||
syntax region hbsPencil matchgroup=hbsOperator start="\v\(" end="\v\)" contained containedin=hbsMustache,hbsMustacheBlock,hbsElseBlock,hbsPencil
|
||||
|
||||
" identifier is any word inside a mustache or a pencil that is not followed by a = sign (see hbsArg below)
|
||||
syntax match hbsIdentifier "\v(\(|\{\{[#/]?)@<!<(\w+)|(\@\w+)>" contained containedin=hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock,hbsStatement
|
||||
|
||||
" unescaped are special forms of mustaches that don't have other stuff except for an identifier in it
|
||||
syntax region hbsUnescaped matchgroup=hbsUnescapedHandles start="\v\{\{\{" skip="\v\\\}\}\}" end="\v\}\}\}" keepend
|
||||
syntax match hbsUnescapedIdentifier "\v(\{\{\{)@<=<\S+>(\}\}\})" contained containedin=hbsUnescaped
|
||||
|
||||
syntax match hbsMustacheName "\v(\{\{[#/]?)@<=<\S+>" contained containedin=hbsMustache,hbsMustacheBlock,hbsPencil
|
||||
syntax match hbsPencilName "\v(\()@<=<\S+>" contained containedin=hbsMustache,hbsMustacheBlock,hbsPencil
|
||||
syntax match hbsBuiltInHelper "\v\(@<=<(query-params|mut|fn|array|hash|get|action|unbound|concat)>" contained containedin=hbsPencil
|
||||
syntax match hbsBuiltInHelper "\v(\{\{)@<=<(textarea|mut|fn|array|hash|input|get|action|on|input|unbound)>" contained containedin=hbsMustache
|
||||
syntax match hbsBuiltInHelper "\v(\{\{[#/]?)@<=<(component|with|link\-to)>" contained containedin=hbsMustacheBlock,hbsElseBlock
|
||||
syntax match hbsBuiltInHelperInElse "\v(\{\{else\ )@<=<(component|link\-to)>" contained containedin=hbsMustacheBlock,hbsElseBlock
|
||||
syntax match hbsControlFlow "\v(\{\{)@<=<else>( ?)@=" contained containedin=hbsElseBlock
|
||||
syntax match hbsControlFlow "\v\(@<=<(if|unless)>" contained containedin=hbsPencil
|
||||
syntax match hbsControlFlow "\v(\{\{)@<=<(debugger|unless|yield|outlet|else)>" contained containedin=hbsMustache
|
||||
syntax match hbsControlFlow "\v(\{\{[#/]?)@<=<(with|let|if|each(\-in)?|unless)>" contained containedin=hbsMustacheBlock,hbsElseBlock
|
||||
syntax match hbsKeyword "\v\s+as\s+" contained containedin=hbsComponent,hbsMustacheBlock,hbsElseBlock
|
||||
syntax region hbsStatement matchgroup=hbsDelimiter start="\v\|" end="\v\|" contained containedin=hbsComponent,hbsMustacheBlock,hbsElseBlock
|
||||
|
||||
syntax region hbsString matchgroup=hbsString start=/\v\"/ skip=/\v\\\"/ end=/\v\"/ extend contained containedin=hbsComponent,hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock
|
||||
syntax region hbsString matchgroup=hbsString start=/\v\'/ skip=/\v\\\'/ end=/\v\'/ extend contained containedin=hbsComponent,hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock
|
||||
syntax match hbsNumber "\v<\d+>" contained containedin=hbsComponent,hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock
|
||||
syntax match hbsBool "\v<(true|false)>" contained containedin=hbsComponent,hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock
|
||||
syntax match hbsArg "\v(\@\S+|\S+)\=@=" contained containedin=hbsComponent,hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock
|
||||
syntax match hbsOperator "\v(\S+)@<=\=" contained containedin=hbsComponent,hbsMustache,hbsMustacheBlock,hbsPencil,hbsElseBlock
|
||||
|
||||
syntax region hbsComment start="\v\{\{\!" end="\v\}\}" keepend
|
||||
syntax region hbsComment start="\v\{\{\!\-\-" end="\v\-\-\}\}" keepend
|
||||
|
||||
" *Comment any comment
|
||||
|
||||
" *Constant any constant
|
||||
" String a string constant: "this is a string"
|
||||
" Character a character constant: 'c', '\n'
|
||||
" Number a number constant: 234, 0xff
|
||||
" Boolean a boolean constant: TRUE, false
|
||||
" Float a floating point constant: 2.3e10
|
||||
|
||||
" *Identifier any variable name
|
||||
" Function function name (also: methods for classes)
|
||||
|
||||
" *Statement any statement
|
||||
" Conditional if, then, else, endif, switch, etc.
|
||||
" Repeat for, do, while, etc.
|
||||
" Label case, default, etc.
|
||||
" Operator "sizeof", "+", "*", etc.
|
||||
" Keyword any other keyword
|
||||
" Exception try, catch, throw
|
||||
|
||||
" *PreProc generic Preprocessor
|
||||
" Include preprocessor #include
|
||||
" Define preprocessor #define
|
||||
" Macro same as Define
|
||||
" PreCondit preprocessor #if, #else, #endif, etc.
|
||||
|
||||
" *Type int, long, char, etc.
|
||||
" StorageClass static, register, volatile, etc.
|
||||
" Structure struct, union, enum, etc.
|
||||
" Typedef A typedef
|
||||
|
||||
" *Special any special symbol
|
||||
" SpecialChar special character in a constant
|
||||
" Tag you can use CTRL-] on this
|
||||
" Delimiter character that needs attention
|
||||
" SpecialComment special things inside a comment
|
||||
" Debug debugging statements
|
||||
|
||||
" *Underlined text that stands out, HTML links
|
||||
|
||||
" *Ignore left blank, hidden |hl-Ignore|
|
||||
|
||||
" *Error any erroneous construct
|
||||
|
||||
" *Todo anything that needs extra attention; mostly the
|
||||
" keywords TODO FIXME and XXX
|
||||
|
||||
highlight link hbsBuiltInHelper Function
|
||||
highlight link hbsBuiltInHelperInElse Function
|
||||
highlight link hbsControlFlow Function
|
||||
highlight link hbsKeyword Keyword
|
||||
highlight link hbsOperator Operator
|
||||
highlight link hbsDelimiter Delimiter
|
||||
highlight link hbsMustacheName Statement
|
||||
highlight link hbsPencilName Statement
|
||||
highlight link hbsIdentifier Identifier
|
||||
highlight link hbsString String
|
||||
highlight link hbsNumber Special
|
||||
highlight link hbsBool Boolean
|
||||
highlight link hbsHandles Define
|
||||
highlight link hbsComponentStatement Define
|
||||
highlight link hbsUnescapedHandles Identifier
|
||||
highlight link hbsUnescapedIdentifier Identifier
|
||||
highlight link hbsComment Comment
|
||||
highlight link hbsArg Type
|
||||
|
||||
let b:current_syntax = "handlebars"
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
|
||||
" Former Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
||||
" Repository: https://github.com/zzzyxwvut/java-vim.git
|
||||
" Last Change: 2026 Feb 06
|
||||
" Last Change: 2026 Mar 22
|
||||
|
||||
" Please check ":help java.vim" for comments on some of the options
|
||||
" available.
|
||||
@@ -381,7 +381,7 @@ endif
|
||||
|
||||
exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
|
||||
|
||||
if s:ff.IsAnyRequestedPreviewFeatureOf([455, 488, 507])
|
||||
if s:ff.IsAnyRequestedPreviewFeatureOf([455, 488, 507, 530])
|
||||
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaBoolean,javaNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaType,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
|
||||
else
|
||||
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
" Leonardo Fontenelle (Spell checking)
|
||||
" Nam SungHyun <namsh@kldp.org> (Original maintainer)
|
||||
" Eisuke Kawashima (add format-flags: #16132)
|
||||
" Last Change:
|
||||
" 2026 Mar 02 by Vim Project, various syntax improvements #19548
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -17,21 +19,21 @@ set cpo&vim
|
||||
syn sync minlines=10
|
||||
|
||||
" Identifiers
|
||||
syn match poStatementMsgCTxt "^msgctxt"
|
||||
syn match poStatementMsgidplural "^msgid_plural" contained
|
||||
syn match poStatementMsgCTxt "^msgctxt\>"
|
||||
syn match poStatementMsgidplural "^msgid_plural\>" contained
|
||||
syn match poPluralCaseN "[0-9]" contained
|
||||
syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN
|
||||
syn match poStatementMsgstr "^msgstr\%(\[[0-9]\]\)" contains=poPluralCaseN
|
||||
|
||||
" Simple HTML and XML highlighting
|
||||
syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak
|
||||
syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1
|
||||
syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell
|
||||
syn region poHtmlTranslatables start=+\<\%(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell
|
||||
syn match poLineBreak +"\n"+ contained
|
||||
|
||||
" Translation blocks
|
||||
syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt
|
||||
syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid
|
||||
syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr
|
||||
syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\%(\>\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid
|
||||
syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\%(\>\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr
|
||||
syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
|
||||
\ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable
|
||||
@@ -39,9 +41,9 @@ syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
|
||||
\ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable
|
||||
|
||||
" Header and Copyright
|
||||
syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained
|
||||
syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME <EMAIL@ADDRESS>\|LANGUAGE <LL@li.org>\|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained
|
||||
syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR <EMAIL@ADDRESS>, YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained
|
||||
syn match poHeaderItem "\<\%(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained
|
||||
syn match poHeaderUndefined "\<\%(PACKAGE VERSION\>\|YEAR-MO-DA HO:MI+ZONE\>\|FULL NAME <EMAIL@ADDRESS>\|LANGUAGE <LL@li.org>\|CHARSET\>\|ENCODING\>\|INTEGER\>\|EXPRESSION\>\)" contained
|
||||
syn match poCopyrightUnset "\<\%(SOME DESCRIPTIVE TITLE\|FIRST AUTHOR <EMAIL@ADDRESS>, YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE\)\>" contained
|
||||
|
||||
" Translation comment block including: translator comment, automatic comments, flags and locations
|
||||
syn match poComment "^#.*$"
|
||||
@@ -52,9 +54,11 @@ syn match poFlagFormat /\<\%(no-\)\?boost-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?c++-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?c-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?csharp-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?d-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?elisp-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?gcc-internal-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?gfc-internal-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?go-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?java-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?java-printf-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?javascript-format\>/ contained
|
||||
@@ -62,6 +66,7 @@ syn match poFlagFormat /\<\%(no-\)\?kde-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?librep-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?lisp-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?lua-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?modula2-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?objc-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?object-pascal-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?perl-brace-format\>/ contained
|
||||
@@ -72,39 +77,42 @@ syn match poFlagFormat /\<\%(no-\)\?python-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?qt-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?qt-plural-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?ruby-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?rust-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?scheme-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?sh-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?sh-printf-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?smalltalk-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?tcl-format\>/ contained
|
||||
syn match poFlagFormat /\<\%(no-\)\?ycp-format\>/ contained
|
||||
syn match poFlagFormat /\<no-wrap\>/ contained
|
||||
|
||||
syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset
|
||||
syn match poCommentAutomatic "^#\..*$"
|
||||
syn match poCommentSources "^#:.*$"
|
||||
syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy,poFlagFormat
|
||||
syn match poCommentFlags "^#[,=].*$" contains=poFlagFuzzy,poFlagFormat
|
||||
syn match poCommentPrevious "^#|.*$"
|
||||
|
||||
" Translations (also includes header fields as they appear in a translation msgstr)
|
||||
syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained
|
||||
syn region poCommentKDEError start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained
|
||||
syn region poCommentKDEError start=+"\%(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained
|
||||
syn match poPluralKDE +"_n: +ms=s+1 contained
|
||||
syn region poPluralKDEError start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained
|
||||
syn match poSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
|
||||
syn match poFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
||||
syn region poPluralKDEError start=+"\%(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained
|
||||
syn match poSpecial contained "\\\%(x\x\+\|\o\{1,3}\|.\|$\)"
|
||||
syn match poFormat "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlL]\|ll\)\=\%([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
||||
syn match poFormat "%%" contained
|
||||
|
||||
" msguniq and msgcat conflicts
|
||||
syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained
|
||||
syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)\\n' contained
|
||||
|
||||
" Obsolete messages
|
||||
syn match poObsolete "^#\~.*$"
|
||||
|
||||
" KDE Name= handling
|
||||
syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1
|
||||
syn match poKDEdesktopFile "\"\%(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1
|
||||
|
||||
" Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char
|
||||
syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1
|
||||
syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell
|
||||
syn match poAcceleratorId contained "[^&_~][&_~]\%(\a\|\d\)[^:]"ms=s+1,me=e-1
|
||||
syn match poAcceleratorStr contained "[^&_~][&_~]\%(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell
|
||||
|
||||
" Variables simple
|
||||
syn match poVariable contained "%\d"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
" 2025 Sep 25 by Vim Project: fix wrong type highlighting #18394
|
||||
" 2025 Dec 03 by Vim Project: highlight t-strings #18679
|
||||
" 2026 Jan 26 by Vim Project: highlight constants #18922
|
||||
" 2026 Mar 11 by Vim Project: fix number performance #19630
|
||||
" Credits: Neil Schemenauer <nas@python.ca>
|
||||
" Dmitry Vasiliev
|
||||
" Rob B
|
||||
@@ -270,16 +271,21 @@ syn match pythonEscape "\\$"
|
||||
" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
|
||||
if !exists("python_no_number_highlight")
|
||||
" numbers (including complex)
|
||||
syn match pythonNumber "\<0[oO]\%(_\=\o\)\+\>"
|
||||
syn match pythonNumber "\<0[xX]\%(_\=\x\)\+\>"
|
||||
syn match pythonNumber "\<0[bB]\%(_\=[01]\)\+\>"
|
||||
syn match pythonNumber "\<\%([1-9]\%(_\=\d\)*\|0\+\%(_\=0\)*\)\>"
|
||||
syn match pythonNumber "\<\d\%(_\=\d\)*[jJ]\>"
|
||||
syn match pythonNumber "\<\d\%(_\=\d\)*[eE][+-]\=\d\%(_\=\d\)*[jJ]\=\>"
|
||||
syn match pythonNumber "\<0[oO]_\=\o\+\%(_\o\+\)*\>"
|
||||
syn match pythonNumber "\<0[xX]_\=\x\+\%(_\x\+\)*\>"
|
||||
syn match pythonNumber "\<0[bB]_\=[01]\+\%(_[01]\+\)*\>"
|
||||
syn match pythonNumber "\<\%([1-9]\d*\%(_\d\+\)*\|0\+\%(_0\+\)*\)\>"
|
||||
syn match pythonNumber "\<\d\+\%(_\d\+\)*[jJ]\>"
|
||||
syn match pythonNumber "\<\d\+\%(_\d\+\)*[eE][+-]\=\d\+\%(_\d\+\)*[jJ]\=\>"
|
||||
" \d\.
|
||||
syn match pythonNumber
|
||||
\ "\<\d\%(_\=\d\)*\.\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\%(\W\|$\)\@="
|
||||
\ "\<\d\+\%(_\d\+\)*\.\%([eE][+-]\=\d\+\%(_\d\+\)*\)\=[jJ]\=\%(\W\|$\)\@="
|
||||
" \d\.\d
|
||||
syn match pythonNumber
|
||||
\ "\%(^\|\W\)\@1<=\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\>"
|
||||
\ "\<\d\+\%(_\d\+\)*\.\d\+\%(_\d\+\)*\%([eE][+-]\=\d\+\%(_\d\+\)*\)\=[jJ]\=\>"
|
||||
" \.\d
|
||||
syn match pythonNumber
|
||||
\ "\%(^\|\W\)\@1<=\.\d\+\%(_\d\+\)*\%([eE][+-]\=\d\+\%(_\d\+\)*\)\=[jJ]\=\>"
|
||||
endif
|
||||
|
||||
" Group the built-ins in the order in the 'Python Library Reference' for
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
|
||||
" Contributor: Jack Haden-Enneking
|
||||
" Last Change: 2022 Oct 15
|
||||
" Last Change: 2026 Mar 06
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -16,10 +16,31 @@ syn match sedError "\S"
|
||||
|
||||
syn match sedWhitespace "\s\+" contained
|
||||
syn match sedSemicolon ";"
|
||||
syn match sedAddress "[[:digit:]$]"
|
||||
|
||||
" Addresses {{{1
|
||||
syn match sedAddress "\d\+\|\$"
|
||||
|
||||
" GNU extensions
|
||||
syn match sedAddress "\d\+\~\d\+"
|
||||
syn region sedAddress matchgroup=Special start="[{,;]\s*/\%(\\/\)\="lc=1 skip="[^\\]\%(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
|
||||
syn region sedAddress matchgroup=Special start="^\s*/\%(\\/\)\=" skip="[^\\]\%(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
|
||||
syn match sedAddress "\~\d\+"
|
||||
syn match sedAddress "[-+]\d\+"
|
||||
|
||||
syn region sedAddress
|
||||
\ matchgroup=Delimiter
|
||||
\ start="[{,;]\s*/\%(\\/\)\="lc=1
|
||||
\ skip="[^\\]\%(\\\\\)*\\/"
|
||||
"\ GNU extensions
|
||||
\ end="/\%(IM\|MI\|[IM]\)\="
|
||||
\ contains=sedTab,sedRegexpMeta
|
||||
syn region sedAddress
|
||||
\ matchgroup=Delimiter
|
||||
\ start="^\s*/\%(\\/\)\="
|
||||
"\ GNU extensions
|
||||
\ skip="[^\\]\%(\\\\\)*\\/"
|
||||
\ end="/\%(IM\|MI\|[IM]\)\="
|
||||
\ contains=sedTab,sedRegexpMeta
|
||||
" }}}
|
||||
|
||||
syn match sedFunction "[dDgGhHlnNpPqQx=]\s*\%($\|;\)" contains=sedSemicolon,sedWhitespace
|
||||
if exists("g:sed_dialect") && g:sed_dialect ==? "bsd"
|
||||
syn match sedComment "^\s*#.*$" contains=sedTodo
|
||||
@@ -50,7 +71,7 @@ syn region sedFlagWrite matchgroup=sedFlag start="w" matchgroup=sedSemicolon
|
||||
syn match sedFlag "[[:digit:]gpI]*w\=" contains=sedFlagWrite contained
|
||||
syn match sedRegexpMeta "[.*^$]" contained
|
||||
syn match sedRegexpMeta "\\." contains=sedTab contained
|
||||
syn match sedRegexpMeta "\[.\{-}\]" contains=sedTab contained
|
||||
syn match sedRegexpMeta "\[\^\=\]\=\%(\[:.\{-}:\]\|\[\..\{-}\.\]\|\[=.\{-}=\]\|[^]]\)*\]" contains=sedTab contained
|
||||
syn match sedRegexpMeta "\\{\d\*,\d*\\}" contained
|
||||
syn match sedRegexpMeta "\\%(.\{-}\\)" contains=sedTab contained
|
||||
syn match sedReplaceMeta "&\|\\\%($\|.\)" contains=sedTab contained
|
||||
@@ -68,15 +89,44 @@ let s:metacharacters = '$*.\^[~'
|
||||
while s:i <= s:last
|
||||
let s:delimiter = escape(nr2char(s:i), s:metacharacters)
|
||||
if s:i != s:at
|
||||
exe 'syn region sedAddress matchgroup=Special start=@\\'.s:delimiter.'\%(\\'.s:delimiter.'\)\=@ skip=@[^\\]\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'[IM]\=@ contains=sedTab'
|
||||
exe 'syn region sedRegexp'.s:i 'matchgroup=Special start=@'.s:delimiter.'\%(\\\\\|\\'.s:delimiter.'\)*@ skip=@[^\\'.s:delimiter.']\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'@me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement'.s:i
|
||||
exe 'syn region sedReplacement'.s:i 'matchgroup=Special start=@'.s:delimiter.'\%(\\\\\|\\'.s:delimiter.'\)*@ skip=@[^\\'.s:delimiter.']\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'@ contains=sedTab,sedReplaceMeta keepend contained nextgroup=@sedFlags'
|
||||
exe 'syn region sedAddress'
|
||||
\ 'matchgroup=Delimiter'
|
||||
\ 'start=@\\' .. s:delimiter .. '\%(\\' .. s:delimiter .. '\)\=@'
|
||||
\ 'skip=@[^\\]\%(\\\\\)*\\' .. s:delimiter .. '\|\[.\{-}' .. s:delimiter .. '@'
|
||||
\ 'end=@' .. s:delimiter .. '\%(IM\|MI\|[IM]\)\=@'
|
||||
\ 'contains=sedTab,sedRegexpMeta'
|
||||
exe 'syn region sedRegexp' .. s:i 'contained'
|
||||
\ 'matchgroup=Delimiter'
|
||||
\ 'start=@' .. s:delimiter .. '\%(\\\\\|\\' .. s:delimiter .. '\)*@'
|
||||
\ 'end=@' .. s:delimiter .. '@me=e-1'
|
||||
\ 'nextgroup=sedReplacement' .. s:i
|
||||
\ 'contains=sedTab,sedRegexpMeta'
|
||||
exe 'syn region sedReplacement' .. s:i 'contained'
|
||||
\ 'matchgroup=Delimiter'
|
||||
\ 'start=@' .. s:delimiter .. '\%(\\\\\|\\' .. s:delimiter .. '\)*@'
|
||||
\ 'end=@' .. s:delimiter .. '@'
|
||||
\ 'nextgroup=@sedFlags'
|
||||
\ 'contains=sedTab,sedReplaceMeta'
|
||||
endif
|
||||
let s:i = s:i + 1
|
||||
endwhile
|
||||
syn region sedAddress matchgroup=Special start=+\\@\%(\\@\)\=+ skip=+[^\\]\%(\\\\\)*\\@+ end=+@I\=+ contains=sedTab,sedRegexpMeta
|
||||
syn region sedRegexp64 matchgroup=Special start=+@\%(\\\\\|\\@\)*+ skip=+[^\\@]\%(\\\\\)*\\@+ end=+@+me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement64
|
||||
syn region sedReplacement64 matchgroup=Special start=+@\%(\\\\\|\\@\)*+ skip=+[^\\@]\%(\\\\\)*\\@+ end=+@+ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag
|
||||
syn region sedAddress
|
||||
\ matchgroup=Delimiter
|
||||
\ start=+\\\z(@\)+
|
||||
\ end=+\z1\%(IM\|MI\|[IM]\)\=+
|
||||
\ contains=sedTab,sedRegexpMeta
|
||||
syn region sedRegexp64 contained
|
||||
\ matchgroup=Delimiter
|
||||
\ start=+@\%(\\\\\|\\@\)*+
|
||||
\ end=+@+me=e-1
|
||||
\ nextgroup=sedReplacement64
|
||||
\ contains=sedTab,sedRegexpMeta
|
||||
syn region sedReplacement64 contained
|
||||
\ matchgroup=Delimiter
|
||||
\ start=+@\%(\\\\\|\\@\)*+
|
||||
\ end=+@+
|
||||
\ nextgroup=sedFlag
|
||||
\ contains=sedTab,sedReplaceMeta
|
||||
|
||||
" Since the syntax for the substitution command is very similar to the
|
||||
" syntax for the transform command, I use the same pattern matching
|
||||
@@ -110,8 +160,8 @@ if s:highlight_tabs
|
||||
endif
|
||||
let s:i = char2nr(" ") " ASCII: 32, EBCDIC: 64
|
||||
while s:i <= s:last
|
||||
exe "hi def link sedRegexp".s:i "Macro"
|
||||
exe "hi def link sedReplacement".s:i "NONE"
|
||||
exe "hi def link sedRegexp" .. s:i "Macro"
|
||||
exe "hi def link sedReplacement" .. s:i "NONE"
|
||||
let s:i = s:i + 1
|
||||
endwhile
|
||||
|
||||
@@ -120,4 +170,4 @@ unlet s:highlight_tabs
|
||||
|
||||
let b:current_syntax = "sed"
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
" 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
|
||||
" 2026 Mar 23 improve matching of function definitions #19638
|
||||
" }}}
|
||||
" Version: 208
|
||||
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
|
||||
@@ -261,7 +262,7 @@ syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsa
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster ErrorList add=shDTestError
|
||||
endif
|
||||
syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDerefVarArray,shDo,shDerefSimple,shEcho,shEscape,shExpr,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo,shNamespaceOne
|
||||
syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDerefVarArray,shDo,shDerefSimple,shEcho,shEscape,shExpr,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
|
||||
syn cluster shArithList contains=@shArithParenList,shParenError
|
||||
syn cluster shBracketExprList contains=shCharClassOther,shCharClass,shCollSymb,shEqClass
|
||||
syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
|
||||
@@ -278,7 +279,16 @@ syn cluster shDerefVarList contains=shDerefOffset,shDerefOp,shDerefVarArray,shDe
|
||||
syn cluster shEchoList contains=shArithmetic,shBracketExpr,shCommandSub,shCommandSubBQ,shDerefVarArray,shSubshare,shValsub,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
|
||||
syn cluster shExprList1 contains=shBracketExpr,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
|
||||
syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
|
||||
syn cluster shFunctionList contains=shBracketExpr,@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
|
||||
syn cluster shFunctionCmds contains=shFor,shCaseEsac,shIf,shRepeat,shDblBrace,shDblParen
|
||||
if exists("b:is_ksh88") || exists("b:is_mksh")
|
||||
" Offer "shFunctionCmds" as is.
|
||||
elseif exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shFunctionCmds add=shForPP
|
||||
else
|
||||
syn cluster shFunctionCmds remove=shDblBrace,shDblParen
|
||||
endif
|
||||
syn cluster shFunctionDefList contains=shDoError,shIfError,shFunctionKey,shFunctionOne,shFunctionThree,shFunctionCmdOne
|
||||
syn cluster shFunctionList contains=shBracketExpr,@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq,@shFunctionDefList
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shFunctionList add=shRepeat,shDblBrace,shDblParen,shForPP
|
||||
syn cluster shDerefList add=shCommandSubList,shEchoDeref
|
||||
@@ -287,7 +297,7 @@ syn cluster shHereBeginList contains=@shCommandSubList
|
||||
syn cluster shHereList contains=shBeginHere,shHerePayload
|
||||
syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
|
||||
syn cluster shIdList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDerefVarArray,shSubshare,shValsub,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
|
||||
syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo,shNamespaceOne
|
||||
syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,@shFunctionDefList
|
||||
syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shIf,shOption,shSet,shTest,shTestOpr,shTouch
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shLoopList add=shForPP,shDblParen
|
||||
@@ -647,39 +657,52 @@ endif
|
||||
|
||||
" Functions: {{{1
|
||||
if !exists("b:is_posix")
|
||||
syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo
|
||||
syn keyword shFunctionKey function skipwhite skipnl nextgroup=shDoError,shIfError,shFunctionTwo,shFunctionFour,shFunctionCmdTwo
|
||||
endif
|
||||
|
||||
ShFoldFunctions syn region shFunctionExpr matchgroup=shFunctionExprRegion start="{" end="}" contains=@shFunctionList contained skipwhite skipnl nextgroup=shQuickComment
|
||||
ShFoldFunctions syn region shFunctionSubSh matchgroup=shFunctionSubShRegion start="(" end=")" contains=@shFunctionList contained skipwhite skipnl nextgroup=shQuickComment
|
||||
|
||||
if exists("b:is_bash")
|
||||
syn keyword shFunctionKey coproc
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionCmdTwo "\%(\<\k\+\>\|[^()<>|&$;\t ]\+\)\+\ze\s*\%(()\ze\)\=\_s*\%(\<\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" contained skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\ze\s*\%(()\ze\)\=\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
syn match shFunctionFour "\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\ze\s*\%(\%(()\ze\)\=\)\@>\_s*((\@!" contained skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
elseif exists("b:is_ksh88")
|
||||
" AT&T ksh88
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_][A-Za-z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_][A-Za-z_0-9]*\>\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_][A-Za-z_0-9]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_][A-Za-z_0-9]*\>\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs\h\w*\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs\h\w*\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\<\h\w*\>\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs\h\w*\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
elseif exists("b:is_mksh")
|
||||
" MirBSD ksh is the wild west of absurd and abstruse function names...
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\%([@!+.%,:-]\+\|\<\w\+\)*[-A-Za-z_.%,0-9:]\ze\s*\%(()\ze\)\=\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
elseif exists("b:is_kornshell")
|
||||
" ksh93
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_.][A-Za-z_.0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_.][A-Za-z_.0-9]*\>\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_.][A-Za-z_.0-9]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_.][A-Za-z_.0-9]*\>\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shNamespaceOne matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs[A-Za-z_.][A-Za-z_.0-9]*\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs[A-Za-z_.][A-Za-z_.0-9]*\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\%(\.\|\<\h\+\)[A-Za-z_.0-9]*\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs[A-Za-z_.][A-Za-z_.0-9]*\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
syn match shNamespaceOne "\<\h\w*\>\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
else
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs\h\w*\s*()\ze\_s*\%(for\|case\|if\|while\|until\)\>" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionCmdTwo "\<\h\w*\s*()\ze\_s*\%(for\|case\|if\|while\|until\)\>" contained skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs\h\w*\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\<\h\w*\>\s*()\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs\h\w*\s*()\ze\_s*(" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
syn match shFunctionFour "\<\h\w*\>\s*()\ze\_s*(" contained skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
endif
|
||||
|
||||
if !exists("g:sh_no_error")
|
||||
syn match shDoError "\<do\%(ne\)\=\s*()"
|
||||
syn match shIfError "\<then\s*()"
|
||||
syn match shIfError "\<else\s*()"
|
||||
endif
|
||||
|
||||
" Parameter Dereferencing: {{{1
|
||||
@@ -882,7 +905,6 @@ if !exists("skip_sh_syntax_inits")
|
||||
hi def link shEchoDelim shOperator
|
||||
hi def link shEchoQuote shString
|
||||
hi def link shForPP shLoop
|
||||
hi def link shFunction Function
|
||||
hi def link shEmbeddedEcho shString
|
||||
hi def link shEscape shCommandSub
|
||||
hi def link shExDoubleQuote shDoubleQuote
|
||||
@@ -960,8 +982,16 @@ if !exists("skip_sh_syntax_inits")
|
||||
hi def link shConditional Conditional
|
||||
hi def link shCtrlSeq Special
|
||||
hi def link shExprRegion Delimiter
|
||||
hi def link shFunctionKey Function
|
||||
hi def link shFunctionName Function
|
||||
hi def link shFunctionKey Keyword
|
||||
hi def link shFunctionOne Function
|
||||
hi def link shFunctionTwo shFunctionOne
|
||||
hi def link shFunctionThree shFunctionOne
|
||||
hi def link shFunctionFour shFunctionOne
|
||||
hi def link shFunctionCmdOne shFunctionOne
|
||||
hi def link shFunctionCmdTwo shFunctionOne
|
||||
hi def link shFunctionExprRegion shExprRegion
|
||||
hi def link shFunctionSubShRegion shSubShRegion
|
||||
hi def link shNamespaceOne Function
|
||||
hi def link shNumber Number
|
||||
hi def link shOperator Operator
|
||||
hi def link shRepeat Repeat
|
||||
|
||||
@@ -3,14 +3,11 @@
|
||||
" 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>
|
||||
" Last Change: 2022 Nov 10
|
||||
" Added RemoteCommand from pull request #4809
|
||||
" Included additional keywords from Martin.
|
||||
" Included PR #5753
|
||||
" SSH Version: 8.5p1
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Karsten Hopp <karsten@redhat.com>
|
||||
" Dean, Adam Kenneth <adam.ken.dean@hpe.com>
|
||||
" Last Change: 2026 Mar 11
|
||||
" SSH Version: 10.1p1
|
||||
"
|
||||
|
||||
" Setup
|
||||
@@ -108,7 +105,8 @@ syn keyword sshconfigAddressFamily inet inet6
|
||||
|
||||
syn match sshconfigIPQoS "\<af[1-4][1-3]\>"
|
||||
syn match sshconfigIPQoS "\<cs[0-7]\>"
|
||||
syn keyword sshconfigIPQoS ef le lowdelay throughput reliability
|
||||
syn keyword sshconfigIPQoS ef le
|
||||
syn keyword sshconfigIPQoSDeprecated lowdelay throughput reliability
|
||||
syn keyword sshconfigKbdInteractive bsdauth pam skey
|
||||
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1
|
||||
@@ -221,6 +219,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 +247,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
|
||||
@@ -283,6 +284,7 @@ hi def link sshconfigLogLevel sshconfigEnum
|
||||
hi def link sshconfigSysLogFacility sshconfigEnum
|
||||
hi def link sshconfigAddressFamily sshconfigEnum
|
||||
hi def link sshconfigIPQoS sshconfigEnum
|
||||
hi def link sshconfigIPQoSDeprecated sshconfigDeprecated
|
||||
hi def link sshconfigKbdInteractive sshconfigEnum
|
||||
hi def link sshconfigKexAlgo sshconfigEnum
|
||||
hi def link sshconfigTunnel sshconfigEnum
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
" Contributor: Karsten Hopp <karsten@redhat.com>
|
||||
" Contributor: Fionn Fitzmaurice (github.com/fionn)
|
||||
" Originally: 2009-07-09
|
||||
" Last Change: 2026-02-11
|
||||
" SSH Version: 10.2p1
|
||||
" Last Change: 2026-03-11
|
||||
" SSH Version: 10.1p1
|
||||
"
|
||||
|
||||
" Setup
|
||||
@@ -112,7 +112,8 @@ syn keyword sshdconfigCompression delayed
|
||||
|
||||
syn match sshdconfigIPQoS "\<af[1-4][1-3]\>"
|
||||
syn match sshdconfigIPQoS "\<cs[0-7]\>"
|
||||
syn keyword sshdconfigIPQoS ef le lowdelay throughput reliability
|
||||
syn keyword sshdconfigIPQoS ef le
|
||||
syn keyword sshdconfigIPQoSDeprecated lowdelay throughput reliability
|
||||
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1
|
||||
@@ -293,6 +294,7 @@ hi def link sshdconfigSysLogFacility sshdconfigEnum
|
||||
hi def link sshdconfigVar sshdconfigEnum
|
||||
hi def link sshdconfigCompression sshdconfigEnum
|
||||
hi def link sshdconfigIPQoS sshdconfigEnum
|
||||
hi def link sshdconfigIPQoSDeprecated sshdconfigDeprecated
|
||||
hi def link sshdconfigKexAlgo sshdconfigEnum
|
||||
hi def link sshdconfigTunnel sshdconfigEnum
|
||||
hi def link sshdconfigSubsystem sshdconfigEnum
|
||||
@@ -301,6 +303,7 @@ hi def link sshdconfigEnum Function
|
||||
hi def link sshdconfigSpecial Special
|
||||
hi def link sshdconfigKeyword Keyword
|
||||
hi def link sshdconfigMatch Type
|
||||
hi def link sshdconfigDeprecated Error
|
||||
|
||||
let b:current_syntax = "sshdconfig"
|
||||
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
" Language: sudoers(5) configuration files
|
||||
" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2024 Sep 02
|
||||
" Recent Changes: Support for #include and #includedir.
|
||||
" 2018 Aug 28 by Vim project Added many new options (Samuel D. Leslie)
|
||||
" 2024 Sep 09 by Vim project Update allowed Tag_Spec Runas_Spec syntax items
|
||||
" 2026 Feb 13 by Vim project update regex for matching usernames #19396
|
||||
" Latest Change: 2026 Mar 11
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -24,60 +20,77 @@ syn match sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite
|
||||
|
||||
syn match sudoersSpecEquals contained '=' nextgroup=@sudoersCmndSpecList skipwhite
|
||||
|
||||
syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersTagSpec,@sudoersCmndInSpec
|
||||
syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec
|
||||
|
||||
syn keyword sudoersTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo
|
||||
syn region sudoersInclude display oneline start='[#@]\%(include\|includedir\)\>' end='$'
|
||||
syn region sudoersInclude display oneline start='[#@]\%(include\|includedir\)\s\+\S\+' end='$'
|
||||
|
||||
syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
|
||||
syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
|
||||
syn keyword sudoersAlias Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl
|
||||
|
||||
syn match sudoersUserAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserAliasEquals skipwhite skipnl
|
||||
syn match sudoersUserNameInList contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn match sudoersUserNameInList contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn match sudoersUIDInList contained '#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn match sudoersGroupInList contained '%\l[-a-z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn match sudoersGIDInList contained '%#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn match sudoersUserNetgroupInList contained '+\l[-a-z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn match sudoersUserAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl
|
||||
syn keyword sudoersUserAllInList contained ALL nextgroup=@sudoersUserList skipwhite skipnl
|
||||
|
||||
syn match sudoersUserName contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUID contained '#\d\+\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersGroup contained '%\l[-a-z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUserNetgroup contained '+\l[-a-z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUserName contained '\<\l[-a-z0-9_]*\>' nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUID contained '#\d\+\>' nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersGroup contained '%\l[-a-z0-9_]*\>' nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersGID contained '%#\d\+\>' nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUserNetgroup contained '+\l[-a-z0-9_]*\>' nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn keyword sudoersUserAll contained ALL nextgroup=sudoersUserComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersUserComma contained ',' nextgroup=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersGID,sudoersUserNetgroup,sudoersUserAliasRef,sudoersUserAll skipwhite skipnl
|
||||
|
||||
syn match sudoersUserNameInSpec contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn match sudoersUIDInSpec contained '#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn match sudoersUserNameInSpec contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn region sudoersUIDInSpec display oneline start='#\d\+\>' end='' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn match sudoersGroupInSpec contained '%\l[-a-z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn match sudoersGIDInSpec contained '%#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn match sudoersUserNetgroupInSpec contained '+\l[-a-z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn match sudoersUserAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
syn keyword sudoersUserAllInSpec contained ALL nextgroup=@sudoersUserSpec skipwhite skipnl
|
||||
|
||||
syn match sudoersUserNameInRunas contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn match sudoersUserNameInRunas contained '\<\l[-a-z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn match sudoersUIDInRunas contained '#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn match sudoersGroupInRunas contained '%\l[-a-z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn match sudoersGIDInRunas contained '%#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn match sudoersUserNetgroupInRunas contained '+\l[-a-z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn match sudoersUserAliasInRunas contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
syn keyword sudoersUserAllInRunas contained ALL nextgroup=@sudoersUserRunas skipwhite skipnl
|
||||
|
||||
syn match sudoersHostAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostAliasEquals skipwhite skipnl
|
||||
syn match sudoersHostNameInList contained '\<\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersIPAddrInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersNetworkInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersHostNameInList contained '\<\l[a-z0-9_-]*\>' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersIPAddrInList contained '\<\%(\d\{1,3}\.\)\{3}\d\{1,3}\>' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersNetworkInList contained '\<\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=\>' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersHostNetgroupInList contained '+\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
syn match sudoersHostAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostList skipwhite skipnl
|
||||
|
||||
syn match sudoersHostName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersIPAddr contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersNetwork contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersHostName contained '\<\l[a-z0-9_-]*\>' nextgroup=sudoersHostComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersIPAddr contained '\<\%(\d\{1,3}\.\)\{3}\d\{1,3}\>' nextgroup=sudoersHostComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersNetwork contained '\<\%(\d\{1,3}\.\)\{3}\d\{1,3}/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\>' nextgroup=sudoersHostComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=sudoersHostComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostComma,@sudoersParameter skipwhite skipnl
|
||||
syn keyword sudoersHostAll contained ALL nextgroup=sudoersHostComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersHostComma contained ',' nextgroup=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef,sudoersHostAll skipwhite skipnl
|
||||
|
||||
syn match sudoersHostNameInSpec contained '\<\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersIPAddrInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersNetworkInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersCmndName contained '/[/A-Za-z0-9._-]\+' nextgroup=sudoersCmndComma,@sudoersParameter skipwhite skipnl
|
||||
syn keyword sudoersCmndSpecial contained list sudoedit ALL nextgroup=sudoersCmndComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersCmndAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndComma,@sudoersParameter skipwhite skipnl
|
||||
syn match sudoersCmndComma contained ',' nextgroup=sudoersCmndNegation,sudoersCmndName,sudoersCmndSpecial,sudoersCmndAliasRef skipwhite skipnl
|
||||
|
||||
syn match sudoersHostNameInSpec contained '\<\l[a-z0-9_-]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersIPAddrInSpec contained '\<\%(\d\{1,3}\.\)\{3}\d\{1,3}\>' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersNetworkInSpec contained '\<\%(\d\{1,3}\.\)\{3}\d\{1,3}/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\>' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersHostNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn match sudoersHostAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
syn keyword sudoersHostAllInSpec contained ALL nextgroup=@sudoersHostSpec skipwhite skipnl
|
||||
|
||||
syn match sudoersCmndAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndAliasEquals skipwhite skipnl
|
||||
syn match sudoersCmndNameInList contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite
|
||||
@@ -85,6 +98,13 @@ syn match sudoersCmndAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@s
|
||||
|
||||
syn match sudoersCmndNameInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite
|
||||
syn match sudoersCmndAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndSpec skipwhite skipnl
|
||||
syn keyword sudoersCmndSpecialInSpec contained list sudoedit ALL nextgroup=@sudoersCmndSpec skipwhite skipnl
|
||||
|
||||
syn keyword sudoersCmndDigestInList contained sha224 sha256 sha384 sha512 nextgroup=sudoersCmndDigestColon skipwhite skipnl
|
||||
syn match sudoersCmndDigestColon contained ':' nextgroup=sudoersDigestHex,sudoersDigestBase64 skipwhite skipnl
|
||||
syn match sudoersDigestHex contained '\<\x\+\>' nextgroup=sudoersCmndDigestComma,sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList skipwhite skipnl
|
||||
syn match sudoersDigestBase64 contained '\<[A-Za-z0-9+/]\+=*' nextgroup=sudoersCmndDigestComma,sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList skipwhite skipnl
|
||||
syn match sudoersCmndDigestComma contained ',' nextgroup=sudoersCmndDigestInList skipwhite skipnl
|
||||
|
||||
syn match sudoersUserAliasEquals contained '=' nextgroup=@sudoersUserInList skipwhite skipnl
|
||||
syn match sudoersUserListComma contained ',' nextgroup=@sudoersUserInList skipwhite skipnl
|
||||
@@ -94,10 +114,10 @@ syn cluster sudoersUserList contains=sudoersUserListComma,sudoersUserLis
|
||||
syn match sudoersUserSpecComma contained ',' nextgroup=@sudoersUserInSpec skipwhite skipnl
|
||||
syn cluster sudoersUserSpec contains=sudoersUserSpecComma,@sudoersHostInSpec
|
||||
|
||||
syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas,sudoersUserRunasColon skipwhite skipnl
|
||||
syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas,sudoersUserRunasColon,sudoersUserRunasEnd skipwhite skipnl
|
||||
syn match sudoersUserRunasComma contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl
|
||||
syn match sudoersUserRunasColon contained ':' nextgroup=@sudoersUserInRunas skipwhite skipnl
|
||||
syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersUserRunasColon contained ':' nextgroup=@sudoersUserInRunas,sudoersUserRunasEnd skipwhite skipnl
|
||||
syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn cluster sudoersUserRunas contains=sudoersUserRunasComma,sudoersUserRunasColon,@sudoersUserInRunas,sudoersUserRunasEnd
|
||||
|
||||
|
||||
@@ -116,20 +136,21 @@ syn match sudoersCmndListColon contained ':' nextgroup=sudoersCmndAlias
|
||||
syn cluster sudoersCmndList contains=sudoersCmndListComma,sudoersCmndListColon
|
||||
|
||||
syn match sudoersCmndSpecComma contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl
|
||||
syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersUserInSpec skipwhite skipnl
|
||||
syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersHostInSpec skipwhite skipnl
|
||||
syn cluster sudoersCmndSpec contains=sudoersCmndSpecComma,sudoersCmndSpecColon
|
||||
|
||||
syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList
|
||||
syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersGIDInList,sudoersUserNetgroupInList,sudoersUserAliasInList,sudoersUserAllInList
|
||||
syn cluster sudoersHostInList contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList
|
||||
syn cluster sudoersCmndInList contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList
|
||||
syn cluster sudoersCmndInList contains=sudoersCmndDigestInList,sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList
|
||||
|
||||
syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef
|
||||
syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef
|
||||
syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersGID,sudoersUserNetgroup,sudoersUserAliasRef,sudoersUserAll
|
||||
syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAll,sudoersHostAliasRef
|
||||
syn cluster sudoersCmnd contains=sudoersCmndNegation,sudoersCmndName,sudoersCmndSpecial,sudoersCmndAliasRef
|
||||
|
||||
syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec
|
||||
syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec
|
||||
syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas
|
||||
syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec
|
||||
syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersGIDInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec,sudoersUserAllInSpec
|
||||
syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec,sudoersHostAllInSpec
|
||||
syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersGIDInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas,sudoersUserAllInRunas
|
||||
syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec,sudoersCmndSpecialInSpec
|
||||
|
||||
syn match sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList skipwhite skipnl
|
||||
syn match sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList skipwhite skipnl
|
||||
@@ -137,6 +158,7 @@ syn match sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInLi
|
||||
|
||||
syn match sudoersUserNegation contained '!\+' nextgroup=@sudoersUser skipwhite skipnl
|
||||
syn match sudoersHostNegation contained '!\+' nextgroup=@sudoersHost skipwhite skipnl
|
||||
syn match sudoersCmndNegation contained '!\+' nextgroup=@sudoersCmnd skipwhite skipnl
|
||||
|
||||
syn match sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec skipwhite skipnl
|
||||
syn match sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec skipwhite skipnl
|
||||
@@ -149,17 +171,22 @@ syn match sudoersCommandEmpty contained '""' nextgroup=@sudoersCmndList sk
|
||||
syn match sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite
|
||||
syn match sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl
|
||||
|
||||
syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl
|
||||
syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,sudoersDefaultTypeBang,sudoersDefaultTypeAny
|
||||
syn match sudoersDefaultTypeAt contained '@' nextgroup=@sudoersHost skipwhite skipnl
|
||||
syn match sudoersDefaultTypeColon contained ':' nextgroup=@sudoersUser skipwhite skipnl
|
||||
syn match sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl
|
||||
syn match sudoersDefaultTypeBang contained '!' nextgroup=@sudoersCmnd skipwhite skipnl
|
||||
syn match sudoersDefaultTypeAny contained '\s' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
|
||||
" TODO: could also deal with special characters here
|
||||
syn match sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl
|
||||
syn match sudoersParameterNegation contained '!\+' nextgroup=sudoersBooleanParameter,sudoersIntegerOrBooleanParameter,sudoersModeOrBooleanParameter,sudoersFloatOrBooleanParameter,sudoersTimeoutOrBooleanParameter,sudoersStringOrBooleanParameter,sudoersListParameter skipwhite skipnl
|
||||
syn keyword sudoersBooleanParameter contained skipwhite skipnl
|
||||
\ nextgroup=sudoersParameterListComma
|
||||
\ always_query_group_plugin
|
||||
\ always_set_home
|
||||
\ authenticate
|
||||
\ case_insensitive_group
|
||||
\ case_insensitive_user
|
||||
\ closefrom_override
|
||||
\ compress_io
|
||||
\ env_editor
|
||||
@@ -174,9 +201,26 @@ syn keyword sudoersBooleanParameter contained skipwhite skipnl
|
||||
\ ignore_logfile_errors
|
||||
\ ignore_unknown_defaults
|
||||
\ insults
|
||||
\ intercept
|
||||
\ intercept_allow_setid
|
||||
\ intercept_authenticate
|
||||
\ intercept_verify
|
||||
\ iolog_flush
|
||||
\ log_allowed
|
||||
\ log_denied
|
||||
\ log_exit_status
|
||||
\ log_host
|
||||
\ log_input
|
||||
\ log_output
|
||||
\ log_passwords
|
||||
\ log_server_keepalive
|
||||
\ log_server_verify
|
||||
\ log_stderr
|
||||
\ log_stdin
|
||||
\ log_stdout
|
||||
\ log_subcmds
|
||||
\ log_ttyin
|
||||
\ log_ttyout
|
||||
\ log_year
|
||||
\ long_otp_prompt
|
||||
\ mail_all_cmnds
|
||||
@@ -188,8 +232,13 @@ syn keyword sudoersBooleanParameter contained skipwhite skipnl
|
||||
\ match_group_by_gid
|
||||
\ netgroup_tuple
|
||||
\ noexec
|
||||
\ noninteractive_auth
|
||||
\ pam_acct_mgmt
|
||||
\ pam_rhost
|
||||
\ pam_ruser
|
||||
\ pam_session
|
||||
\ pam_setcred
|
||||
\ pam_silent
|
||||
\ passprompt_override
|
||||
\ path_info
|
||||
\ preserve_groups
|
||||
@@ -197,7 +246,10 @@ syn keyword sudoersBooleanParameter contained skipwhite skipnl
|
||||
\ requiretty
|
||||
\ root_sudo
|
||||
\ rootpw
|
||||
\ runas_allow_unknown_id
|
||||
\ runas_check_shell
|
||||
\ runaspw
|
||||
\ selinux
|
||||
\ set_home
|
||||
\ set_logname
|
||||
\ set_utmp
|
||||
@@ -210,6 +262,7 @@ syn keyword sudoersBooleanParameter contained skipwhite skipnl
|
||||
\ targetpw
|
||||
\ tty_tickets
|
||||
\ umask_override
|
||||
\ use_loginclass
|
||||
\ use_netgroups
|
||||
\ use_pty
|
||||
\ user_command_timeouts
|
||||
@@ -220,81 +273,161 @@ syn keyword sudoersIntegerParameter contained
|
||||
\ nextgroup=sudoersIntegerParameterEquals
|
||||
\ skipwhite skipnl
|
||||
\ closefrom
|
||||
\ command_timeout
|
||||
\ loglinelen
|
||||
\ maxseq
|
||||
\ passwd_timeout
|
||||
\ passwd_tries
|
||||
\ syslog_maxlen
|
||||
|
||||
syn keyword sudoersIntegerOrBooleanParameter contained
|
||||
\ nextgroup=sudoersIntegerParameterEquals,sudoersParameterListComma
|
||||
\ skipwhite skipnl
|
||||
\ loglinelen
|
||||
|
||||
syn keyword sudoersFloatOrBooleanParameter contained
|
||||
\ nextgroup=sudoersFloatParameterEquals,sudoersParameterListComma
|
||||
\ skipwhite skipnl
|
||||
\ passwd_timeout
|
||||
\ timestamp_timeout
|
||||
|
||||
syn keyword sudoersModeParameter contained
|
||||
\ nextgroup=sudoersModeParameterEquals
|
||||
\ skipwhite skipnl
|
||||
\ iolog_mode
|
||||
|
||||
syn keyword sudoersModeOrBooleanParameter contained
|
||||
\ nextgroup=sudoersModeParameterEquals,sudoersParameterListComma
|
||||
\ skipwhite skipnl
|
||||
\ umask
|
||||
|
||||
syn keyword sudoersTimeoutOrBooleanParameter contained
|
||||
\ nextgroup=sudoersTimeoutParameterEquals,sudoersParameterListComma
|
||||
\ skipwhite skipnl
|
||||
\ command_timeout
|
||||
\ log_server_timeout
|
||||
|
||||
syn keyword sudoersStringParameter contained
|
||||
\ nextgroup=sudoersStringParameterEquals
|
||||
\ skipwhite skipnl
|
||||
\ apparmor_profile
|
||||
\ askpass
|
||||
\ authfail_message
|
||||
\ badpass_message
|
||||
\ cmddenial_message
|
||||
\ group_plugin
|
||||
\ intercept_type
|
||||
\ iolog_file
|
||||
\ limitprivs
|
||||
\ log_format
|
||||
\ mailsub
|
||||
\ noexec_file
|
||||
\ pam_askpass_service
|
||||
\ pam_login_service
|
||||
\ pam_service
|
||||
\ passprompt
|
||||
\ privs
|
||||
\ role
|
||||
\ runas_default
|
||||
\ sudoers_locale
|
||||
\ timestamp_type
|
||||
\ timestampowner
|
||||
\ type
|
||||
|
||||
syn keyword sudoersStringOrBooleanParameter contained
|
||||
\ nextgroup=sudoersStringParameterEquals,sudoersParameterListComma
|
||||
\ skipwhite skipnl
|
||||
\ admin_flag
|
||||
\ editor
|
||||
\ env_file
|
||||
\ exempt_group
|
||||
\ fdexec
|
||||
\ group_plugin
|
||||
\ iolog_dir
|
||||
\ iolog_file
|
||||
\ iolog_flush
|
||||
\ iolog_group
|
||||
\ iolog_mode
|
||||
\ iolog_user
|
||||
\ lecture
|
||||
\ lecture_file
|
||||
\ lecture_status_dir
|
||||
\ listpw
|
||||
\ log_server_cabundle
|
||||
\ log_server_peer_cert
|
||||
\ log_server_peer_key
|
||||
\ logfile
|
||||
\ mailerflags
|
||||
\ mailerpath
|
||||
\ mailfrom
|
||||
\ mailsub
|
||||
\ mailto
|
||||
\ noexec_file
|
||||
\ pam_login_service
|
||||
\ pam_service
|
||||
\ passprompt
|
||||
\ restricted_env_file
|
||||
\ role
|
||||
\ runas_default
|
||||
\ rlimit_as
|
||||
\ rlimit_core
|
||||
\ rlimit_cpu
|
||||
\ rlimit_data
|
||||
\ rlimit_fsize
|
||||
\ rlimit_locks
|
||||
\ rlimit_memlock
|
||||
\ rlimit_nofile
|
||||
\ rlimit_nproc
|
||||
\ rlimit_rss
|
||||
\ rlimit_stack
|
||||
\ runcwd
|
||||
\ secure_path
|
||||
\ sudoers_locale
|
||||
\ syslog
|
||||
\ syslog_badpri
|
||||
\ syslog_goodpri
|
||||
\ timestamp_type
|
||||
\ timestampdir
|
||||
\ timestampowner
|
||||
\ type
|
||||
\ verifypw
|
||||
|
||||
syn keyword sudoersListParameter contained
|
||||
\ nextgroup=sudoersListParameterEquals
|
||||
\ nextgroup=sudoersListParameterEquals,sudoersParameterListComma
|
||||
\ skipwhite skipnl
|
||||
\ env_check
|
||||
\ env_delete
|
||||
\ env_keep
|
||||
\ log_servers
|
||||
\ passprompt_regex
|
||||
|
||||
syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl
|
||||
|
||||
syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter
|
||||
syn cluster sudoersParameter contains=sudoersParameterNegation,sudoersBooleanParameter,sudoersIntegerParameter,sudoersIntegerOrBooleanParameter,sudoersModeParameter,sudoersModeOrBooleanParameter,sudoersFloatOrBooleanParameter,sudoersTimeoutOrBooleanParameter,sudoersStringParameter,sudoersStringOrBooleanParameter,sudoersListParameter
|
||||
|
||||
syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl
|
||||
syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl
|
||||
syn match sudoersIntegerParameterEquals contained '=' nextgroup=sudoersIntegerValue skipwhite skipnl
|
||||
syn match sudoersModeParameterEquals contained '=' nextgroup=sudoersModeValue skipwhite skipnl
|
||||
syn match sudoersFloatParameterEquals contained '=' nextgroup=sudoersFloatValue skipwhite skipnl
|
||||
syn match sudoersTimeoutParameterEquals contained '=' nextgroup=sudoersTimeoutValue skipwhite skipnl
|
||||
syn match sudoersStringParameterEquals contained '=' nextgroup=sudoersStringValue skipwhite skipnl
|
||||
syn match sudoersListParameterEquals contained '[+-]\==' nextgroup=sudoersListValue skipwhite skipnl
|
||||
|
||||
syn match sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersStringValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn region sudoersStringValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersListValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn region sudoersListValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersIntegerValue contained '\<\d\+\>' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersModeValue contained '\<\o\+\>' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersFloatValue contained '-\?\%(\<\d\+\>\|\<\d\+\%(\.\%(\d\+\>\)\?\)\?\|\.\d\+\>\)' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersTimeoutValue contained '\<\d\+\>' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersTimeoutValue contained '\<\%(\d\+[dDhHmMsS]\)\+\>' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersStringValue contained '\s*\zs[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn region sudoersStringValue contained start=+\s*\zs"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn match sudoersListValue contained '\s*\zs[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
syn region sudoersListValue contained start=+\s*\zs"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
|
||||
|
||||
syn match sudoersTagSpec contained '\%(NO\)\=\%(EXEC\|FOLLOW\|LOG_\%(INPUT\|OUTPUT\)\|MAIL\|INTERCEPT\|PASSWD\|SETENV\):' nextgroup=sudoersTagSpec,@sudoersCmndInSpec skipwhite
|
||||
syn keyword sudoersOptionSpec contained ROLE TYPE nextgroup=sudoersSELinuxSpecEquals skipwhite
|
||||
syn keyword sudoersOptionSpec contained APPARMOR_PROFILE nextgroup=sudoersAppArmorSpecEquals skipwhite
|
||||
syn keyword sudoersOptionSpec contained PRIVS LIMITPRIVS nextgroup=sudoersSolarisPrivSpecEquals skipwhite
|
||||
syn keyword sudoersOptionSpec contained NOTBEFORE NOTAFTER nextgroup=sudoersDateSpecEquals skipwhite
|
||||
syn keyword sudoersOptionSpec contained TIMEOUT nextgroup=sudoersTimeoutSpecEquals skipwhite
|
||||
syn keyword sudoersOptionSpec contained CWD CHROOT nextgroup=sudoersDirectorySpecEquals skipwhite
|
||||
|
||||
syn match sudoersSELinuxSpecEquals contained '=' nextgroup=sudoersSELinuxSpecParam skipwhite skipnl
|
||||
syn match sudoersAppArmorSpecEquals contained '=' nextgroup=sudoersAppArmorSpecParam skipwhite skipnl
|
||||
syn match sudoersSolarisPrivSpecEquals contained '=' nextgroup=sudoersSolarisPrivSpecParam skipwhite skipnl
|
||||
syn match sudoersDateSpecEquals contained '=' nextgroup=sudoersDateSpecParam skipwhite skipnl
|
||||
syn match sudoersTimeoutSpecEquals contained '=' nextgroup=sudoersTimeoutSpecParam skipwhite skipnl
|
||||
syn match sudoersDirectorySpecEquals contained '=' nextgroup=sudoersDirectorySpecParam,sudoersDirectorySpecParamError skipwhite skipnl
|
||||
|
||||
syn match sudoersSELinuxSpecParam contained /\<[A-Za-z0-9_]\+\>/ nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersAppArmorSpecParam contained /\S\+/ nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersSolarisPrivSpecParam contained /\S\+/ nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersDateSpecParam contained /\<\d\{10\}\%(\d\d\)\{0,2\}\%(Z\|[+-]\d\{4\}\)\?\>/ nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersTimeoutSpecParam contained /\<\d\+\>\|\<\%(\d\+[dDhHmMsS]\)\+\>/ nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersDirectorySpecParam contained '[/~]\f*\|\*' nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
syn match sudoersDirectorySpecParam contained '"\%([/~]\f\{-}\|\*\)"' nextgroup=sudoersOptionSpec,sudoersTagSpec,@sudoersCmndInSpec skipwhite skipnl
|
||||
|
||||
syn keyword sudoersTagSpec contained EXEC NOEXEC FOLLOW NOFOLLOW LOG_INPUT NOLOG_INPUT LOG_OUTPUT NOLOG_OUTPUT MAIL NOMAIL INTERCEPT NOINTERCEPT PASSWD NOPASSWD SETENV NOSETENV nextgroup=sudoersTagSpecColon skipwhite
|
||||
syn match sudoersTagSpecColon contained /:/ nextgroup=sudoersTagSpec,@sudoersCmndInSpec skipwhite
|
||||
|
||||
hi def link sudoersSpecEquals Operator
|
||||
hi def link sudoersTodo Todo
|
||||
@@ -304,23 +437,32 @@ hi def link sudoersUserAlias Identifier
|
||||
hi def link sudoersUserNameInList String
|
||||
hi def link sudoersUIDInList Number
|
||||
hi def link sudoersGroupInList PreProc
|
||||
hi def link sudoersGIDInList Number
|
||||
hi def link sudoersUserNetgroupInList PreProc
|
||||
hi def link sudoersUserAliasInList PreProc
|
||||
hi def link sudoersUserAllInList Special
|
||||
hi def link sudoersUserName String
|
||||
hi def link sudoersUID Number
|
||||
hi def link sudoersGroup PreProc
|
||||
hi def link sudoersGID Number
|
||||
hi def link sudoersUserNetgroup PreProc
|
||||
hi def link sudoersUserAliasRef PreProc
|
||||
hi def link sudoersUserAll Special
|
||||
hi def link sudoersUserComma Delimiter
|
||||
hi def link sudoersUserNameInSpec String
|
||||
hi def link sudoersUIDInSpec Number
|
||||
hi def link sudoersGroupInSpec PreProc
|
||||
hi def link sudoersGIDInSpec Number
|
||||
hi def link sudoersUserNetgroupInSpec PreProc
|
||||
hi def link sudoersUserAliasInSpec PreProc
|
||||
hi def link sudoersUserAllInSpec Special
|
||||
hi def link sudoersUserNameInRunas String
|
||||
hi def link sudoersUIDInRunas Number
|
||||
hi def link sudoersGroupInRunas PreProc
|
||||
hi def link sudoersGIDInRunas Number
|
||||
hi def link sudoersUserNetgroupInRunas PreProc
|
||||
hi def link sudoersUserAliasInRunas PreProc
|
||||
hi def link sudoersUserAllInRunas Special
|
||||
hi def link sudoersHostAlias Identifier
|
||||
hi def link sudoersHostNameInList String
|
||||
hi def link sudoersIPAddrInList Number
|
||||
@@ -331,17 +473,30 @@ hi def link sudoersHostName String
|
||||
hi def link sudoersIPAddr Number
|
||||
hi def link sudoersNetwork Number
|
||||
hi def link sudoersHostNetgroup PreProc
|
||||
hi def link sudoersHostAll Special
|
||||
hi def link sudoersHostComma Delimiter
|
||||
hi def link sudoersHostAliasRef PreProc
|
||||
hi def link sudoersCmndName String
|
||||
hi def link sudoersCmndSpecial Special
|
||||
hi def link sudoersCmndAliasRef PreProc
|
||||
hi def link sudoersCmndComma Delimiter
|
||||
hi def link sudoersHostNameInSpec String
|
||||
hi def link sudoersIPAddrInSpec Number
|
||||
hi def link sudoersNetworkInSpec Number
|
||||
hi def link sudoersHostNetgroupInSpec PreProc
|
||||
hi def link sudoersHostAliasInSpec PreProc
|
||||
hi def link sudoersHostAllInSpec Special
|
||||
hi def link sudoersCmndAlias Identifier
|
||||
hi def link sudoersCmndNameInList String
|
||||
hi def link sudoersCmndAliasInList PreProc
|
||||
hi def link sudoersCmndNameInSpec String
|
||||
hi def link sudoersCmndAliasInSpec PreProc
|
||||
hi def link sudoersCmndSpecialInSpec Special
|
||||
hi def link sudoersCmndDigestInList Type
|
||||
hi def link sudoersCmndDigestColon Operator
|
||||
hi def link sudoersDigestHex Number
|
||||
hi def link sudoersDigestBase64 Number
|
||||
hi def link sudoersCmndDigestComma Delimiter
|
||||
hi def link sudoersUserAliasEquals Operator
|
||||
hi def link sudoersUserListComma Delimiter
|
||||
hi def link sudoersUserListColon Delimiter
|
||||
@@ -364,6 +519,7 @@ hi def link sudoersHostNegationInList Operator
|
||||
hi def link sudoersCmndNegationInList Operator
|
||||
hi def link sudoersUserNegation Operator
|
||||
hi def link sudoersHostNegation Operator
|
||||
hi def link sudoersCmndNegation Operator
|
||||
hi def link sudoersUserNegationInSpec Operator
|
||||
hi def link sudoersHostNegationInSpec Operator
|
||||
hi def link sudoersUserNegationInRunas Operator
|
||||
@@ -374,18 +530,46 @@ hi def link sudoersDefaultEntry Keyword
|
||||
hi def link sudoersDefaultTypeAt Special
|
||||
hi def link sudoersDefaultTypeColon Special
|
||||
hi def link sudoersDefaultTypeGreaterThan Special
|
||||
hi def link sudoersDefaultTypeBang Special
|
||||
hi def link sudoersParameterNegation Operator
|
||||
hi def link sudoersBooleanParameter Identifier
|
||||
hi def link sudoersIntegerParameter Identifier
|
||||
hi def link sudoersIntegerOrBooleanParameter Identifier
|
||||
hi def link sudoersModeParameter Identifier
|
||||
hi def link sudoersModeOrBooleanParameter Identifier
|
||||
hi def link sudoersFloatOrBooleanParameter Identifier
|
||||
hi def link sudoersTimeoutOrBooleanParameter Identifier
|
||||
hi def link sudoersStringParameter Identifier
|
||||
hi def link sudoersStringOrBooleanParameter Identifier
|
||||
hi def link sudoersListParameter Identifier
|
||||
hi def link sudoersParameterListComma Delimiter
|
||||
hi def link sudoersIntegerParameterEquals Operator
|
||||
hi def link sudoersModeParameterEquals Operator
|
||||
hi def link sudoersFloatParameterEquals Operator
|
||||
hi def link sudoersTimeoutParameterEquals Operator
|
||||
hi def link sudoersStringParameterEquals Operator
|
||||
hi def link sudoersListParameterEquals Operator
|
||||
hi def link sudoersIntegerValue Number
|
||||
hi def link sudoersModeValue Number
|
||||
hi def link sudoersFloatValue Float
|
||||
hi def link sudoersTimeoutValue Number
|
||||
hi def link sudoersStringValue String
|
||||
hi def link sudoersListValue String
|
||||
hi def link sudoersOptionSpec Special
|
||||
hi def link sudoersSELinuxSpecEquals Operator
|
||||
hi def link sudoersAppArmorSpecEquals Operator
|
||||
hi def link sudoersSolarisPrivSpecEquals Operator
|
||||
hi def link sudoersDateSpecEquals Operator
|
||||
hi def link sudoersTimeoutSpecEquals Operator
|
||||
hi def link sudoersDirectorySpecEquals Operator
|
||||
hi def link sudoersSELinuxSpecParam String
|
||||
hi def link sudoersAppArmorSpecParam String
|
||||
hi def link sudoersSolarisPrivSpecParam String
|
||||
hi def link sudoersDateSpecParam Number
|
||||
hi def link sudoersTimeoutSpecParam Number
|
||||
hi def link sudoersDirectorySpecParam String
|
||||
hi def link sudoersTagSpec Special
|
||||
hi def link sudoersTagSpecColon Delimiter
|
||||
hi def link sudoersInclude Statement
|
||||
|
||||
let b:current_syntax = "sudoers"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|s|y|n|t|a|x|_|p|r|e|v|i|e|w|s| |=| |[|4|5@1|,| |4|8@1|,| |5|0|7|]| +0#0000000&@12
|
||||
>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|s|y|n|t|a|x|_|p|r|e|v|i|e|w|s| |=| |[|4|5@1|,| |4|8@1|,| |5|0|7|,| |5|3|0|]| +0#0000000&@7
|
||||
@75
|
||||
@75
|
||||
@75
|
||||
|
||||
20
runtime/syntax/testdir/dumps/po_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/po_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
>#+0#0000e05#ffffff0| |F+0#0000001#ffff4012|I|R|S|T| |A|U|T|H|O|R| |<|E|M|A|I|L|@|A|D@1|R|E|S@1|>|,| |Y|E|A|R|.+0#0000e05#ffffff0| +0#0000000&@37
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#e000e06&|,| |f+0#0000001#ffff4012|u|z@1|y| +0#0000000#ffffff0@66
|
||||
|m+0#af5f00255&|s|g|i|d| |"+0#e000002&@1| +0#0000000&@66
|
||||
|m+0#af5f00255&|s|g|s|t|r| |"+0#e000002&@1| +0#0000000&@65
|
||||
|"+0#e000002&|P+0#00e0e07&|r|o|j|e|c|t|-|I|d|-|V|e|r|s|i|o|n|:| |P+0#0000001#ffff4012|A|C|K|A|G|E| |V|E|R|S|I|O|N|\+0#e000e06#ffffff0|n|"+0#e000002&| +0#0000000&@35
|
||||
|"+0#e000002&|P+0#00e0e07&|O|T|-|C|r|e|a|t|i|o|n|-|D|a|t|e|:| |2+0#e000002&|0|2|6|-|0|3|-|0|2| |1|3|:|2|3|+|0|9|0@1|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@30
|
||||
|"+0#e000002&|P+0#00e0e07&|O|-|R|e|v|i|s|i|o|n|-|D|a|t|e|:| |Y+0#0000001#ffff4012|E|A|R|-|M|O|-|D|A| |H|O|:|M|I|+|Z|O|N|E|\+0#e000e06#ffffff0|n|"+0#e000002&| +0#0000000&@31
|
||||
|"+0#e000002&|L+0#00e0e07&|a|s|t|-|T|r|a|n|s|l|a|t|o|r|:| |F+0#0000001#ffff4012|U|L@1| |N|A|M|E| |<|E|M|A|I|L|@|A|D@1|R|E|S@1|>|\+0#e000e06#ffffff0|n|"+0#e000002&| +0#0000000&@28
|
||||
|"+0#e000002&|L+0#00e0e07&|a|n|g|u|a|g|e|-|T|e|a|m|:| |L+0#0000001#ffff4012|A|N|G|U|A|G|E| |<|L@1|@|l|i|.|o|r|g|>|\+0#e000e06#ffffff0|n|"+0#e000002&| +0#0000000&@35
|
||||
|"+0#e000002&|L+0#00e0e07&|a|n|g|u|a|g|e|:| |\+0#e000e06&|n|"+0#e000002&| +0#0000000&@60
|
||||
|"+0#e000002&|M+0#00e0e07&|I|M|E|-|V|e|r|s|i|o|n|:| |1+0#e000002&|.|0|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@53
|
||||
|"+0#e000002&|C+0#00e0e07&|o|n|t|e|n|t|-|T|y|p|e|:| |t+0#e000002&|e|x|t|/|p|l|a|i|n|;| |c|h|a|r|s|e|t|=|U|T|F|-|8|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@31
|
||||
|"+0#e000002&|C+0#00e0e07&|o|n|t|e|n|t|-|T|r|a|n|s|f|e|r|-|E|n|c|o|d|i|n|g|:| |8+0#e000002&|b|i|t|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@39
|
||||
|"+0#e000002&|P+0#00e0e07&|l|u|r|a|l|-|F|o|r|m|s|:| |n+0#e000002&|p|l|u|r|a|l|s|=|I+0#0000001#ffff4012|N|T|E|G|E|R|;+0#e000002#ffffff0| |p|l|u|r|a|l|=|E+0#0000001#ffff4012|X|P|R|E|S@1|I|O|N|;+0#e000002#ffffff0|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@20
|
||||
|"+0#e000002&|X+0#00e0e07&|-|G|e|n|e|r|a|t|o|r|:| |M+0#e000002&|a|n|u|a|l@1|y|G|e|n|e|r|a|t|e|d|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@40
|
||||
@75
|
||||
|#+0#e000e06&|:| |p|a|t|h|/|t|o|/|f|i|l|e|.|c|:|1|2|3| +0#0000000&@53
|
||||
|#+0#e000e06&|,| |f+0#0000001#ffff4012|u|z@1|y|,+0#e000e06#ffffff0| |c+0#0000001#ffff4012|-|f|o|r|m|a|t| +0#0000000#ffffff0@56
|
||||
@57|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/po_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/po_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|"+0#e000002#ffffff0|C+0#00e0e07&|o|n|t|e|n|t|-|T|r|a|n|s|f|e|r|-|E|n|c|o|d|i|n|g|:| |8+0#e000002&|b|i|t|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@39
|
||||
|"+0#e000002&|P+0#00e0e07&|l|u|r|a|l|-|F|o|r|m|s|:| |n+0#e000002&|p|l|u|r|a|l|s|=|I+0#0000001#ffff4012|N|T|E|G|E|R|;+0#e000002#ffffff0| |p|l|u|r|a|l|=|E+0#0000001#ffff4012|X|P|R|E|S@1|I|O|N|;+0#e000002#ffffff0|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@20
|
||||
|"+0#e000002&|X+0#00e0e07&|-|G|e|n|e|r|a|t|o|r|:| |M+0#e000002&|a|n|u|a|l@1|y|G|e|n|e|r|a|t|e|d|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@40
|
||||
@75
|
||||
|#+0#e000e06&|:| |p|a|t|h|/|t|o|/|f|i|l|e|.|c|:|1|2|3| +0#0000000&@53
|
||||
>#+0#e000e06&|,| |f+0#0000001#ffff4012|u|z@1|y|,+0#e000e06#ffffff0| |c+0#0000001#ffff4012|-|f|o|r|m|a|t| +0#0000000#ffffff0@56
|
||||
|#+0#0000e05&||| |m|s|g|i|d| |"|H|i|,| |%|s|.|\|n|"| +0#0000000&@54
|
||||
|m+0#af5f00255&|s|g|i|d| |"+0#e000002&|H|e|l@1|o|,| |%+0#e000e06&|s|.+0#e000002&|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@54
|
||||
|m+0#af5f00255&|s|g|s|t|r| |"+0#e000002&@1| +0#0000000&@65
|
||||
|"+0#e000002&|H|i|,| |%+0#e000e06&|s|.+0#e000002&|\+0#e000e06&|n|"+0#e000002&| +0#0000000&@63
|
||||
@75
|
||||
|#+0#e000e06&|:| |p|a|t|h|/|t|o|/|f|i|l|e|.|p|y|:|1|2|3| +0#0000000&@52
|
||||
|#+0#e000e06&|,| |p+0#0000001#ffff4012|y|t|h|o|n|-|f|o|r|m|a|t| +0#0000000#ffffff0@58
|
||||
|m+0#af5f00255&|s|g|i|d| |"+0#e000002&|%|(|n|u|m|)| |w|o|r|d|"| +0#0000000&@55
|
||||
|m+0#af5f00255&|s|g|i|d|_|p|l|u|r|a|l| +0#0000000&|"+0#e000002&|%|(|n|u|m|)| |w|o|r|d|s|"| +0#0000000&@47
|
||||
|m+0#af5f00255&|s|g|s|t|r|[|0|]| |"+0#e000002&@1| +0#0000000&@62
|
||||
|m+0#af5f00255&|s|g|s|t|r|[|1+0#e000002&|]+0#af5f00255&| +0#0000000&|"+0#e000002&@1| +0#0000000&@62
|
||||
@75
|
||||
|#+0#0000e05&|.| |c|o|m@1|e|n|t| |f|o|r| |t|r|a|n|s|l|a|t|o|r| +0#0000000&@49
|
||||
@57|1|9|,|1| @9|4|0|%|
|
||||
20
runtime/syntax/testdir/dumps/po_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/po_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|#+0#0000e05#ffffff0|.| |c|o|m@1|e|n|t| |f|o|r| |t|r|a|n|s|l|a|t|o|r| +0#0000000&@49
|
||||
|#+0#e000e06&|:| |p|a|t|h|/|t|o|/|f|i|l|e|.|c|p@1|:|2|3|4| +0#0000000&@51
|
||||
|#+0#e000e06&|:| |p|a|t|h|/|t|o|/|f|i|l|e|.|c|p@1|:|2|5|6| +0#0000000&@51
|
||||
|#+0#e000e06&|,| |q+0#0000001#ffff4012|t|-|f|o|r|m|a|t| +0#0000000#ffffff0@62
|
||||
|m+0#af5f00255&|s|g|c|t|x|t| |"+0#0000e05&|%|1| |i|s| |a| |v|a|r|i|a|b|l|e|"| +0#0000000&@48
|
||||
>m+0#af5f00255&|s|g|i|d| |"+0#e000002&|v|a|l|u|e| |o|f| |%+0#e000e06&|1|:+0#e000002&|\+0#e000e06&|t|%+0#e000002&|L|2|"| +0#0000000&@49
|
||||
|m+0#af5f00255&|s|g|s|t|r| |"+0#e000002&@1| +0#0000000&@65
|
||||
@75
|
||||
|#+0#e000e06&|:| |p|a|t|h|/|t|o|/|f|i|l|e|.|r|s|:|1|2|3| +0#0000000&@52
|
||||
|#+0#e000e06&|,| |r+0#0000001#ffff4012|u|s|t|-|f|o|r|m|a|t| +0#0000000#ffffff0@60
|
||||
|m+0#af5f00255&|s|g|i|d| |"+0#e000002&|H|e|l@1|o|,| |\+0#e000e06&|"|{+0#e000002&|:|?|}|\+0#e000e06&|"|.+0#e000002&|"| +0#0000000&@50
|
||||
|m+0#af5f00255&|s|g|s|t|r| |"+0#e000002&|H|a|l@1|o|,| |»|{|:|?|}|«|.|"| +0#0000000&@51
|
||||
@75
|
||||
|#+0#e000e06&|=| |n+0#0000001#ffff4012|o|-|w|r|a|p| +0#0000000#ffffff0@64
|
||||
|m+0#af5f00255&|s|g|i|d| |"+0#e000002&|L|o|r|e|m| |i|p|s|u|m| |d|o|l|o|r| |s|i|t| |a|m|e|t|,| |c|o|n|s|e|c|t|e|t|u|r| |a|d|i|p|i|s|c|i|n|g| |e|l|i|t|,| |s|e|d| |d|o| |e|i|u|s
|
||||
|m|o|d| |t|e|m|p|o|r| |i|n|c|i|d|i|d|u|n|t| |u|t| |l|a|b|o|r|e| |e|t| |d|o|l|o|r|e| |m|a|g|n|a| |a|l|i|q|u|a|.|"| +0#0000000&@18
|
||||
|m+0#af5f00255&|s|g|s|t|r| |"+0#e000002&|い*&|ろ|は|に|ほ|へ|と|"+&| +0#0000000&@51
|
||||
@75
|
||||
|#+0#0000e05&| |o|u|t|d|a|t|e|d| |e|n|t|r|i|e|s| +0#0000000&@56
|
||||
@57|3|7|,|1| @9|9|3|%|
|
||||
20
runtime/syntax/testdir/dumps/po_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/po_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|#+0#0000e05#ffffff0| |o|u|t|d|a|t|e|d| |e|n|t|r|i|e|s| +0#0000000&@56
|
||||
|#+0#0000e05&|~| |m|s|g|i|d| |"|f|o@1|"| +0#0000000&@60
|
||||
>#+0#0000e05&|~| |m|s|g|s|t|r| |"|f|o@1|"| +0#0000000&@59
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|5|1|,|1| @9|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/python_numbers_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/python_numbers_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
>#+0#0000e05#ffffff0| |N|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| +0#0000000&@56
|
||||
|#+0#0000e05&| |h|t@1|p|s|:|/@1|d|o|c|s|.|p|y|t|h|o|n|.|o|r|g|/|3|/|r|e|f|e|r|e|n|c|e|/|l|e|x|i|c|a|l|_|a|n|a|l|y|s|i|s|.|h|t|m|l|#|n|u|m|e|r|i|c|-|l|i|t|e|r|a|l
|
||||
|s| +0#0000000&@73
|
||||
@75
|
||||
|#+0#0000e05&| |I|n|t|e|g|e|r| |l|i|t|e|r|a|l|s| +0#0000000&@56
|
||||
@75
|
||||
|7+0#e000002&| +0#0000000&@73
|
||||
|3+0#e000002&| +0#0000000&@73
|
||||
|2+0#e000002&|1|4|7|4|8|3|6|4|7| +0#0000000&@64
|
||||
@75
|
||||
|7+0#e000002&|9|2@1|8|1|6|2|5|1|4|2|6|4|3@1|7|5|9|3|5|4|3|9|5|0|3@1|6|7|9|2@1|8|1|6|2|5|1|4|2|6|4|3@1|7|5|9|3|5|4|3|9|5|0|3@1|6| +0#0000000&@16
|
||||
@75
|
||||
|1+0#e000002&|0@1|_|0@2|_|0@2|_|0@2| +0#0000000&@59
|
||||
|1+0#e000002&|0@10| +0#0000000&@62
|
||||
|1+0#e000002&|_|0@1|_|0@1|_|0@1|_|0@1|_|0@2| +0#0000000&@57
|
||||
@75
|
||||
|0+0#e000002&|b|1|0@1|1@1|0|1@2| +0#0000000&@63
|
||||
|0+0#e000002&|b|_|1@2|0|_|0|1|0|1| +0#0000000&@62
|
||||
|0+0#e000002&|o|1|7@1| +0#0000000&@69
|
||||
@57|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/python_numbers_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/python_numbers_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|1+0#e000002#ffffff0|0@10| +0#0000000&@62
|
||||
|1+0#e000002&|_|0@1|_|0@1|_|0@1|_|0@1|_|0@2| +0#0000000&@57
|
||||
@75
|
||||
|0+0#e000002&|b|1|0@1|1@1|0|1@2| +0#0000000&@63
|
||||
|0+0#e000002&|b|_|1@2|0|_|0|1|0|1| +0#0000000&@62
|
||||
>0+0#e000002&|o|1|7@1| +0#0000000&@69
|
||||
|0+0#e000002&|o|3|7@1| +0#0000000&@69
|
||||
|0+0#e000002&|x|d|e|a|d|b|e@1|f| +0#0000000&@64
|
||||
|0+0#e000002&|x|D|e|a|d|_|B|e@1|f| +0#0000000&@63
|
||||
@75
|
||||
|#+0#0000e05&| |F|l|o|a|t|i|n|g|-|p|o|i|n|t| |l|i|t|e|r|a|l|s| +0#0000000&@49
|
||||
@75
|
||||
|2+0#e000002&|.|7|1|8|2|8| +0#0000000&@67
|
||||
|4+0#e000002&|.|0| +0#0000000&@71
|
||||
@75
|
||||
|9+0#e000002&|6|_|4|8|5|.|3@1|2|_|1|2|3| +0#0000000&@60
|
||||
|3+0#e000002&|.|1|4|_|1|5|_|9|3| +0#0000000&@64
|
||||
@75
|
||||
|1+0#e000002&|0|.| +0#0000000&@1|#+0#0000e05&| |(|e|q|u|i|v|a|l|e|n|t| |t|o| |1|0|.|0|)| +0#0000000&@47
|
||||
@57|1|8|,|1| @9|2|5|%|
|
||||
20
runtime/syntax/testdir/dumps/python_numbers_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/python_numbers_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|1+0#e000002#ffffff0|0|.| +0#0000000&@1|#+0#0000e05&| |(|e|q|u|i|v|a|l|e|n|t| |t|o| |1|0|.|0|)| +0#0000000&@47
|
||||
|.+0#e000002&|0@1|1| +0#0000000&@1|#+0#0000e05&| |(|e|q|u|i|v|a|l|e|n|t| |t|o| |0|.|0@1|1|)| +0#0000000&@45
|
||||
@75
|
||||
|1+0#e000002&|.|0|e|3| +0#0000000&@1|#+0#0000e05&| |(|r|e|p|r|e|s|e|n|t|s| |1|.|0|×|1|0|³|,| |o|r| |1|0@2|.|0|)| +0#0000000&@34
|
||||
|1+0#e000002&|.|1|6@1|e|-|5| +0#0000000&@1|#+0#0000e05&| |(|r|e|p|r|e|s|e|n|t|s| |1|.|1|6@1|×|1|0|⁻|⁵|,| |o|r| |0|.|0@3|1@1|6@1|)| +0#0000000&@24
|
||||
>6+0#e000002&|.|0|2@1|1|4|0|7|6|e|+|2|3| +0#0000000&@1|#+0#0000e05&| |(|r|e|p|r|e|s|e|n|t|s| |6|.|0|2@1|1|4|0|7|6|×|1|0|²|³|,| |o|r| |6|0|2@1|1|4|0|7|6|0@14|.
|
||||
|)| +0#0000000&@73
|
||||
@75
|
||||
|1+0#e000002&|e|3| +0#0000000&@1|#+0#0000e05&| |(|e|q|u|i|v|a|l|e|n|t| |t|o| |1|.|e|3| |a|n|d| |1|.|0|e|3|)| +0#0000000&@37
|
||||
|0+0#e000002&|e|0| +0#0000000&@1|#+0#0000e05&| |(|e|q|u|i|v|a|l|e|n|t| |t|o| |0|.|)| +0#0000000&@49
|
||||
@75
|
||||
|#+0#0000e05&| |I|m|a|g|i|n|a|r|y| |l|i|t|e|r|a|l|s| +0#0000000&@54
|
||||
@75
|
||||
|3+0#e000002&|++0#0000000&|4+0#e000002&|.|2|j| +0#0000000&@68
|
||||
@75
|
||||
|3+0#e000002&| +0#0000000&|+| |4+0#e000002&|.|2|j| +0#0000000&@66
|
||||
@75
|
||||
|4+0#e000002&|.|2|j| +0#0000000&@70
|
||||
|3+0#e000002&|.|1|4|j| +0#0000000&@69
|
||||
@57|3|6|,|1| @9|6|2|%|
|
||||
20
runtime/syntax/testdir/dumps/python_numbers_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/python_numbers_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|3+0#e000002#ffffff0|.|1|4|j| +0#0000000&@69
|
||||
|1+0#e000002&|0|.|j| +0#0000000&@70
|
||||
|.+0#e000002&|0@1|1|j| +0#0000000&@69
|
||||
|1+0#e000002&|e|1|0@1|j| +0#0000000&@68
|
||||
|3+0#e000002&|.|1|4|e|-|1|0|j| +0#0000000&@65
|
||||
>3+0#e000002&|.|1|4|_|1|5|_|9|3|j| +0#0000000&@63
|
||||
@75
|
||||
|1+0#e000002&|0|j| +0#0000000&@71
|
||||
|0+0#e000002&|j| +0#0000000&@72
|
||||
|1+0#e000002&|0@23|j| +0#0000000&@2|#+0#0000e05&| |e|q|u|i|v|a|l|e|n|t| |t|o| |1|e|+|2|4|j| +0#0000000&@23
|
||||
@75
|
||||
|3+0#e000002&|.|1|4|J| +0#0000000&@2|#+0#0000e05&| |e|q|u|i|v|a|l|e|n|t| |t|o| |3|.|1|4|j| +0#0000000&@45
|
||||
@75
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |I|s@1|u|e| |#|1|9|6|2|5| |(|r|u|n|t|i|m|e|(|p|y|t|h|o|n|)|:| |L|a|r|g|e| |n|u|m|b|e|r| |l|i|t|e|r|a|l|s| |c|a|u|s|e| |E|3|6|3|)| +0#0000000&@8
|
||||
@75
|
||||
|N|=|2+0#e000002&|1|4|0|3|2|4|6|5|0|2|4|0|7|4@1|9|6|1|2|6|4@1|2|3|0|7|2|8|3|9|3@2|5|6|3|0@1|8|6|1|4|7|1|5|1|4@1|7|5@1|0|1|7@1|9|7@1|5|4|9|2|0|8@1|1|4|1|8|0|2|3
|
||||
|4@1|7|1|4|0|1|3|6@1|4|3@1|4|5@1|1|9|0|9|5|8|0|4|6|7|9|6|1|0|9@1|2|8|5|1|8|7|2|4|7|0|9|1|4|5|8|7|6|8|7|3|9|6|2|6|1|9|2|1|5@1|7|3|6|3|0|4|7|4|5|4|@+0#4040ff13&@2
|
||||
| +0#0000000&@56|5|3|,|1| @9|9|5|%|
|
||||
20
runtime/syntax/testdir/dumps/python_numbers_04.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/python_numbers_04.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|N+0&#ffffff0|=|2+0#e000002&|1|4|0|3|2|4|6|5|0|2|4|0|7|4@1|9|6|1|2|6|4@1|2|3|0|7|2|8|3|9|3@2|5|6|3|0@1|8|6|1|4|7|1|5|1|4@1|7|5@1|0|1|7@1|9|7@1|5|4|9|2|0|8@1|1|4|1|8|0|2|3
|
||||
|4@1|7|1|4|0|1|3|6@1|4|3@1|4|5@1|1|9|0|9|5|8|0|4|6|7|9|6|1|0|9@1|2|8|5|1|8|7|2|4|7|0|9|1|4|5|8|7|6|8|7|3|9|6|2|6|1|9|2|1|5@1|7|3|6|3|0|4|7|4|5|4|7@1|0
|
||||
|5|2|0|8|0|5|1@1|9|0|5|6|4|9|3|1|0|6@1|8|1| +0#0000000&@53
|
||||
> @74
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|6@1|,|0|-|1| @7|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/sed_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sed_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
>#+0#0000e05#ffffff0| |s|e|d|(|1|)| +0#0000000&@66
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |A|d@1|r|e|s@1|e|s| +0#0000000&@63
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |l|i|n|e| |n|u|m|b|e|r| +0#0000000&@61
|
||||
@75
|
||||
|4+0#e000e06&|2|p+0#00e0e07&| +0#0000000&@71
|
||||
|$+0#e000e06&|p+0#00e0e07&| +0#0000000&@72
|
||||
@75
|
||||
|/+0#e000e06&|f|o@1|b|a|r|/|p+0#00e0e07&| +0#0000000&@65
|
||||
|/+0#e000e06&|f|o@1|[|/|]|b|a|r|/|p+0#00e0e07&| +0#0000000&@62
|
||||
|/+0#e000e06&|f|o@1|\|/|b|a|r|/|p+0#00e0e07&| +0#0000000&@63
|
||||
@75
|
||||
|\+0#e000e06&|x|f|o@1|b|a|r|x|p+0#00e0e07&| +0#0000000&@64
|
||||
|\+0#e000e06&|x|f|o@1|\|x|b|a|r|x|p+0#00e0e07&| +0#0000000&@62
|
||||
|\+0#e000e06&|x|f|o@1|[|x|]|b|a|r|x|p+0#00e0e07&| +0#0000000&@61
|
||||
@75
|
||||
@57|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sed_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sed_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|/+0#e000e06#ffffff0|f|o@1|\|/|b|a|r|/|p+0#00e0e07&| +0#0000000&@63
|
||||
@75
|
||||
|\+0#e000e06&|x|f|o@1|b|a|r|x|p+0#00e0e07&| +0#0000000&@64
|
||||
|\+0#e000e06&|x|f|o@1|\|x|b|a|r|x|p+0#00e0e07&| +0#0000000&@62
|
||||
|\+0#e000e06&|x|f|o@1|[|x|]|b|a|r|x|p+0#00e0e07&| +0#0000000&@61
|
||||
> @74
|
||||
|#+0#0000e05&| |s|k|i|p| |b|r|a|c|k|e|t| |e|x|p|r|e|s@1|i|o|n|s| +0#0000000&@48
|
||||
|\+0#e000e06&|a|_|\|a|_|[|a|[|:|a|s|c|i@1|:|]|a|[|.|a|.|]|a|[|=|a|=|]|a|]|_|a|p+0#00e0e07&| +0#0000000&@40
|
||||
|\+0#e000e06&|a|_|\|a|_|[|^|a|[|:|a|s|c|i@1|:|]|a|[|.|a|.|]|a|[|=|a|=|]|a|]|_|a|p+0#00e0e07&| +0#0000000&@39
|
||||
|\+0#e000e06&|a|_|\|a|_|[|]|a|[|:|a|s|c|i@1|:|]|a|[|.|a|.|]|a|[|=|a|=|]|a|]|_|a|p+0#00e0e07&| +0#0000000&@39
|
||||
|\+0#e000e06&|a|_|\|a|_|[|^|]|a|[|:|a|s|c|i@1|:|]|a|[|.|a|.|]|a|[|=|a|=|]|a|]|_|a|p+0#00e0e07&| +0#0000000&@38
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |r|a|n|g|e| +0#0000000&@67
|
||||
@75
|
||||
|4+0#e000e06&|2|,|8|4|p+0#00e0e07&| +0#0000000&@68
|
||||
|/+0#e000e06&|f|o@1|/|,|/|b|a|r|/|p+0#00e0e07&| +0#0000000&@62
|
||||
@75
|
||||
|/+0#e000e06&|f|o@1|/|,|4|2|p+0#00e0e07&| +0#0000000&@65
|
||||
@57|1|9|,|0|-|1| @7|2|8|%|
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user