Compare commits
230 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7088926316 | ||
|
|
fe05143f5d | ||
|
|
b2e55ed1d6 | ||
|
|
3e60f03d94 | ||
|
|
2c976d0de4 | ||
|
|
82ebaa79b0 | ||
|
|
8c8772c6b3 | ||
|
|
52169dbc28 | ||
|
|
75661a66a1 | ||
|
|
4cc3ab7401 | ||
|
|
309332a32e | ||
|
|
ac18dff65a | ||
|
|
e4502b6037 | ||
|
|
f4f175332c | ||
|
|
12c6417587 | ||
|
|
374f06ffd8 | ||
|
|
b5efce0765 | ||
|
|
e551e71d7e | ||
|
|
70afdfc127 | ||
|
|
068c0604c9 | ||
|
|
91900b9a5c | ||
|
|
aa5c9310f5 | ||
|
|
84a8ee4353 | ||
|
|
664701eb75 | ||
|
|
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 |
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
|
||||
|
||||
7
.github/MAINTAINERS
vendored
7
.github/MAINTAINERS
vendored
@@ -80,6 +80,7 @@ runtime/compiler/jjs.vim @dkearns
|
||||
runtime/compiler/jq.vim @vito-c
|
||||
runtime/compiler/jshint.vim @dkearns
|
||||
runtime/compiler/jsonlint.vim @dkearns
|
||||
runtime/compiler/just.vim @Alarcritty
|
||||
runtime/compiler/make.vim @Konfekt
|
||||
runtime/compiler/mypy.vim @Konfekt
|
||||
runtime/compiler/pandoc.vim @Konfekt
|
||||
@@ -349,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
|
||||
@@ -388,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
|
||||
@@ -469,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
|
||||
@@ -541,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
|
||||
@@ -551,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
|
||||
@@ -706,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:
|
||||
- "*"
|
||||
|
||||
11
.github/workflows/ci.yml
vendored
11
.github/workflows/ci.yml
vendored
@@ -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]
|
||||
@@ -335,7 +335,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Test
|
||||
timeout-minutes: 30
|
||||
timeout-minutes: 45
|
||||
run: |
|
||||
make ${SHADOWOPT} ${TEST}
|
||||
|
||||
@@ -370,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: |
|
||||
@@ -776,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
|
||||
|
||||
3
Filelist
3
Filelist
@@ -941,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 = \
|
||||
|
||||
15
SECURITY.md
15
SECURITY.md
@@ -2,9 +2,16 @@
|
||||
|
||||
## Reporting a vulnerability
|
||||
|
||||
If you want to report a security issue, please privately disclose the issue to the vim-security mailing list
|
||||
vim-security@googlegroups.com
|
||||
|
||||
This is a private list, read only by the maintainers, but anybody can post, after moderation.
|
||||
If you want to report a security issue, please privately disclose the issue either via:
|
||||
- The vim-security mailing list: vim-security@googlegroups.com
|
||||
This is a private list, read only by the maintainers, but anybody can post.
|
||||
- [GitHub Security Advisories](https://github.com/vim/vim/security/advisories/new)
|
||||
|
||||
**Please don't publicly disclose the issue until it has been addressed by us.**
|
||||
|
||||
## Guidelines for reporting
|
||||
- Clearly explain **why** the behaviour is a security issue, not just that a bug exists.
|
||||
- Keep reports concise and focused.
|
||||
- Do not flood us with a list of issues. Report them one by one to ensure to not overwhelm us with the work load.
|
||||
- Do **not** submit AI-generated reports without carefully reviewing them first. Low-quality or
|
||||
speculative reports waste maintainer time and will be closed without action, and repeat offenders **will be banned**.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
|
||||
Краткое описание для версии 9.2 программы Vim — Vi IMproved.
|
||||
|
||||
|
||||
ЧТО ТАКОЕ РЕДАКТОР VIM?
|
||||
@@ -10,8 +10,8 @@ README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
|
||||
наименований файлов и команд, операции с произвольными блоками текста,
|
||||
встроенный язык программирования и т. д. Также доступен графический интерфейс
|
||||
пользователя (GUI). И при этом сохраняется совместимость с редактором Vi,
|
||||
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности о
|
||||
различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
|
||||
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности
|
||||
о различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
|
||||
|
||||
Этот редактор очень удобен для работы с исходным кодом программ, а также
|
||||
разного рода других текстовых файлов. Все команды вводятся набором обычных
|
||||
@@ -25,9 +25,9 @@ README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
|
||||
функционала (обычно называемый vim.tiny). Данная сборка чаще всего используется
|
||||
во многих дистрибутивах Linux в качестве предустановленного редактора vi.
|
||||
|
||||
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS и
|
||||
практически во всех UNIX-подобных системах. А перенос на другие платформы не
|
||||
должен представлять особой сложности.
|
||||
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS
|
||||
и практически во всех UNIX-подобных системах. А перенос на другие платформы
|
||||
не должен представлять особой сложности.
|
||||
Предыдущие версии редактора Vim работают в операционных системах OS/2, MS-DOS,
|
||||
MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
|
||||
Но поддержка этих версий больше не осуществляется.
|
||||
@@ -45,11 +45,11 @@ MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
|
||||
программы. Этот архив включает в себя документацию, файлы подсветки синтаксиса
|
||||
и другие файлы, которые используются редактором во время работы. Чтобы
|
||||
запустить программу Vim, вы должны получить либо архив с исполняемыми файлами,
|
||||
либо архив с исходным кодом. Какой из них вам нужен, зависит от того, на какой
|
||||
системе вы хотите запустить редактор Vim, и есть ли для этой системы
|
||||
либо архив с исходным кодом. Какой из них вам нужен, зависит от того,
|
||||
на какой системе вы хотите запустить редактор Vim, и есть ли для этой системы
|
||||
исполняемые файлы или вы должны компилировать программу самостоятельно.
|
||||
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите на
|
||||
веб‐странице https://www.vim.org/download.php.
|
||||
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите
|
||||
на веб‐странице https://www.vim.org/download.php.
|
||||
|
||||
Несколько полезных мест, где можно получить последнюю версию редактора Vim:
|
||||
* Посмотрите в git-хранилище на GitHub: https://github.com/vim/vim.
|
||||
@@ -61,8 +61,8 @@ https://github.com/vim/vim-win32-installer/releases.
|
||||
КОМПИЛЯЦИЯ РЕДАКТОРА Vim
|
||||
|
||||
Если для вашей системы уже есть готовые исполняемые файлы, вам не нужно самому
|
||||
компилировать редактор Vim. Если вы скачали архив с исходным кодом, то всё
|
||||
необходимое для компиляции программы Vim находится в каталоге "src".
|
||||
компилировать редактор Vim. Если вы скачали архив с исходным кодом,
|
||||
то всё необходимое для компиляции программы Vim находится в каталоге "src".
|
||||
Инструкции смотрите в файле src/INSTALL.
|
||||
|
||||
|
||||
@@ -85,12 +85,12 @@ README_vms.txt VMS
|
||||
|
||||
ДОКУМЕНТАЦИЯ ПО РЕДАКТОРУ Vim
|
||||
|
||||
Учебник Vim — это часовой практический курс для начинающих. Как правило, для
|
||||
работы с ним нужно набрать команду "vimtutor". Чтобы получить дополнительную
|
||||
информацию, смотрите раздел документации ":help tutor".
|
||||
Учебник Vim — это часовой практический курс для начинающих. Как правило,
|
||||
для работы с ним нужно набрать команду "vimtutor". Чтобы получить
|
||||
дополнительную информацию, смотрите раздел документации ":help tutor".
|
||||
|
||||
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас ещё
|
||||
нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
|
||||
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас
|
||||
ещё нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
|
||||
В нём содержатся отсылки на другие полезные файлы документации. Руководство
|
||||
пользователя можно читать как книгу, и оно рекомендуется для обучения работе
|
||||
с редактором Vim. Смотрите ":help user-manual".
|
||||
@@ -100,7 +100,7 @@ README_vms.txt VMS
|
||||
|
||||
Редактор Vim является благотворительным программным обеспечением.
|
||||
Использование и копирование программы Vim не ограничено, однако рекомендуется
|
||||
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
|
||||
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
|
||||
подробности, прочитайте, пожалуйста, файл "runtime/doc/uganda.txt" (введите
|
||||
команду ":help uganda" в редакторе Vim).
|
||||
|
||||
@@ -125,8 +125,8 @@ README_vms.txt VMS
|
||||
будет способствовать повышению заинтересованности команды разработчиков
|
||||
в продолжении работы над редактором Vim!
|
||||
|
||||
Самая свежая информация об оказании финансовой поддержки публикуется на
|
||||
веб-сайте программы Vim:
|
||||
Самая свежая информация об оказании финансовой поддержки публикуется
|
||||
на веб-сайте программы Vim:
|
||||
https://www.vim.org/sponsor/
|
||||
|
||||
|
||||
@@ -142,8 +142,8 @@ README_vms.txt VMS
|
||||
Последние новости о редакторе Vim можно найти на его домашней странице:
|
||||
https://www.vim.org/
|
||||
|
||||
Если у вас возникли вопросы, посмотрите полезные советы или документацию по
|
||||
редактору Vim:
|
||||
Если у вас возникли вопросы, посмотрите полезные советы или документацию
|
||||
по редактору Vim:
|
||||
https://www.vim.org/docs.php
|
||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ vim9script
|
||||
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
|
||||
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
|
||||
# Latest Revision: 2026 Feb 03
|
||||
# Last Change:
|
||||
# 2026 Mar 30 by Vim project: Use fnameescape for the Log command
|
||||
|
||||
# Typesetting {{{
|
||||
import autoload './typeset.vim'
|
||||
@@ -33,7 +35,7 @@ export def Log(bufname: string)
|
||||
var logpath = typeset.LogPath(bufname)
|
||||
|
||||
if filereadable(logpath)
|
||||
execute 'edit' typeset.LogPath(bufname)
|
||||
execute 'edit' .. fnameescape(typeset.LogPath(bufname))
|
||||
return
|
||||
endif
|
||||
|
||||
|
||||
54
runtime/autoload/dist/ft.vim
vendored
54
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 24
|
||||
# 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",
|
||||
|
||||
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
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Last Change:
|
||||
" 2025 Oct 27 by Vim project: don't use rustfmt as 'formatprg' by default
|
||||
" 2026 Jan 25 by Vim project: don't hide rustfmt errors, restore default var
|
||||
"
|
||||
" 2026 Mar 30 by Vim project: use fnameescape for :chdir commands
|
||||
"
|
||||
" Adapted from https://github.com/fatih/vim-go
|
||||
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||
@@ -135,7 +135,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
|
||||
" chdir to the directory of the file
|
||||
let l:has_lcd = haslocaldir()
|
||||
let l:prev_cd = getcwd()
|
||||
execute 'lchdir! '.expand('%:h')
|
||||
execute 'lchdir! ' . fnameescape(expand('%:h'))
|
||||
|
||||
let l:buffer = getline(1, '$')
|
||||
if exists("*systemlist")
|
||||
@@ -215,6 +215,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
|
||||
endif
|
||||
|
||||
" Restore the current directory if needed
|
||||
let l:prev_cd = fnameescape(l:prev_cd)
|
||||
if a:tmpname ==# ''
|
||||
if l:has_lcd
|
||||
execute 'lchdir! '.l:prev_cd
|
||||
|
||||
@@ -3,6 +3,8 @@ vim9script
|
||||
# Language: Generic TeX typesetting engine
|
||||
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
|
||||
# Latest Revision: 2026 Feb 19
|
||||
# Last Change:
|
||||
# 2026 Mar 30 by Vim project: Use fnameescape for the ProcessOutput command
|
||||
|
||||
# Constants and helpers {{{
|
||||
const SLASH = !exists("+shellslash") || &shellslash ? '/' : '\'
|
||||
@@ -60,7 +62,7 @@ def ProcessOutput(qfid: number, wd: string, efm: string, ch: channel, msg: strin
|
||||
endif
|
||||
|
||||
# Make sure the working directory is correct
|
||||
silent execute "lcd" wd
|
||||
silent execute "lcd" .. fnameescape(wd)
|
||||
setqflist([], 'a', {'id': qfid, 'lines': [msg], 'efm': efm})
|
||||
silent lcd -
|
||||
enddef
|
||||
|
||||
@@ -5,7 +5,7 @@ vim9script
|
||||
# Shane-XB-Qian
|
||||
# Andrew Radev
|
||||
# thinca
|
||||
# Last Change: 2026 Feb 10
|
||||
# Last Change: 2026 Mar 30
|
||||
#
|
||||
# Vim script to handle jumping to the targets of several types of Vim commands
|
||||
# (:import, :packadd, :runtime, :colorscheme), and to autoloaded functions of
|
||||
@@ -168,7 +168,7 @@ def HandleImportLine(editcmd: string, curline: string) #{{{2
|
||||
"\<C-W>F": 'split',
|
||||
"\<C-W>gF": 'tab split',
|
||||
}[editcmd]
|
||||
execute how_to_split .. ' ' .. filepath
|
||||
execute how_to_split .. ' ' .. fnameescape(filepath)
|
||||
enddef
|
||||
|
||||
def Open(target: any, editcmd: string, search_pattern: string = '') #{{{2
|
||||
@@ -193,7 +193,7 @@ def Open(target: any, editcmd: string, search_pattern: string = '') #{{{2
|
||||
cmd = $'+silent\ call\ search(''{escaped_pattern}'')'
|
||||
endif
|
||||
|
||||
execute $'{split} {cmd} {fname}'
|
||||
execute $'{split} {cmd} {fnameescape(fname)}'
|
||||
|
||||
# If there are several files to open, put them into an arglist.
|
||||
if target->typename() == 'list<string>'
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
" 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
|
||||
" 2026 Apr 01 by Vim Project: Detect more path traversal attacks
|
||||
" 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 +161,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
|
||||
@@ -366,6 +368,11 @@ fun! zip#Write(fname)
|
||||
return
|
||||
endif
|
||||
|
||||
if simplify(a:fname) =~ '\.\.[/\\]'
|
||||
call s:Mess('Error', "***error*** (zip#Write) Path Traversal Attack detected, not writing!")
|
||||
return
|
||||
endif
|
||||
|
||||
let curdir= getcwd()
|
||||
let tmpdir= tempname()
|
||||
if tmpdir =~ '\.'
|
||||
@@ -480,7 +487,7 @@ fun! zip#Extract()
|
||||
if fname =~ '/$'
|
||||
call s:Mess('Error', "***error*** (zip#Extract) Please specify a file, not a directory")
|
||||
return
|
||||
elseif fname =~ '^[.]\?[.]/'
|
||||
elseif fname =~ '^[.]\?[.]/' || simplify(fname) =~ '\.\.[/\\]'
|
||||
call s:Mess('Error', "***error*** (zip#Browse) Path Traversal Attack detected, not extracting!")
|
||||
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 @@
|
||||
*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 @@
|
||||
*change.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*change.txt* For Vim version 9.2. Last change: 2026 Mar 31
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1157,9 +1157,9 @@ inside of strings can change! Also see 'softtabstop' option. >
|
||||
current line).
|
||||
|
||||
*:ip* *:iput*
|
||||
:[line]ip[ut] [x] like |:put|, but adjust indent to the current line
|
||||
:[line]ip[ut] [x] Like |:put|, but adjust indent to the current line.
|
||||
|
||||
:[line]ip[ut]! [x] like |:put|!, but adjust indent to the current line
|
||||
:[line]ip[ut]! [x] Like |:put|!, but adjust indent to the current line.
|
||||
|
||||
["x]]p or *]p* *]<MiddleMouse>*
|
||||
["x]]<MiddleMouse> Like "p", but adjust the indent to the current line.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*channel.txt* For Vim version 9.2. Last change: 2026 Feb 25
|
||||
*channel.txt* For Vim version 9.2. Last change: 2026 Mar 13
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -114,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*
|
||||
|
||||
@@ -641,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()|.
|
||||
@@ -695,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()
|
||||
<
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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 Mar 02
|
||||
*options.txt* For Vim version 9.2. Last change: 2026 Apr 01
|
||||
|
||||
|
||||
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
|
||||
@@ -2204,6 +2226,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Note: The match limit takes effect only during forward completion
|
||||
(CTRL-N) and is ignored during backward completion (CTRL-P).
|
||||
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
|
||||
*'completefunc'* *'cfu'*
|
||||
'completefunc' 'cfu' string (default: empty)
|
||||
local to buffer
|
||||
@@ -3210,7 +3234,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*
|
||||
@@ -4661,6 +4688,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
You can include a line break. Simplest method is to use |:let|: >
|
||||
:let &guitabtooltip = "line one\nline two"
|
||||
<
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
|
||||
*'helpfile'* *'hf'*
|
||||
'helpfile' 'hf' string (default (MS-Windows) "$VIMRUNTIME\doc\help.txt"
|
||||
@@ -6001,7 +6029,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)
|
||||
@@ -6821,6 +6850,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The format of the header produced in |:hardcopy| output.
|
||||
See |pheader-option|.
|
||||
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
|
||||
*'printmbcharset'* *'pmbcs'*
|
||||
'printmbcharset' 'pmbcs' string (default "")
|
||||
global
|
||||
@@ -8532,8 +8563,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
windows.
|
||||
The number N must be between 1 and 9. See |hl-User1..9|
|
||||
*stl-%@*
|
||||
@ - Insert a line break (for the |tabpanel| or when the status line
|
||||
'statuslineopt' has a "maxheight" value greater than 1).
|
||||
@ - 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
|
||||
@@ -8594,31 +8625,48 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
<
|
||||
*'statuslineopt'* *'stlo'*
|
||||
'statuslineopt' 'stlo' string (default "")
|
||||
global
|
||||
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.
|
||||
|
||||
maxheight:{n} Set the maximum status line height to {n}.
|
||||
{n} must be 1 or greater.
|
||||
If not present, 1 is used.
|
||||
Check whether {n} is applicable to all windows
|
||||
on all tab pages, and if not, set it to the
|
||||
closest possible value.
|
||||
The option value is updated to the actual
|
||||
applied value. For example, setting
|
||||
maxheight:999 may result in a smaller value
|
||||
depending on the available space.
|
||||
When {n} is set to 2 or more, you can use "@"
|
||||
in 'statusline' to display information on
|
||||
multiple lines in the status line.
|
||||
See |stl-%@|.
|
||||
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
|
||||
:set stlo+=maxheight:3
|
||||
:set stlo=maxheight:2,fixedheight
|
||||
:set stlo-=fixedheight
|
||||
<
|
||||
*'suffixes'* *'su'*
|
||||
'suffixes' 'su' string (default ".bak,~,.o,.h,.info,.swp,.obj")
|
||||
@@ -8805,7 +8853,7 @@ 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.
|
||||
You can use "%@" or "\n" to insert a new line: >
|
||||
You can use "%@" or "\n" to insert a newline: >
|
||||
|
||||
set tabpanel=%!TabPanel()
|
||||
function! TabPanel() abort
|
||||
@@ -9096,6 +9144,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 9.2. Last change: 2026 Mar 02
|
||||
*quickref.txt* For Vim version 9.2. Last change: 2026 Mar 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -963,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 9.2. Last change: 2026 Feb 25
|
||||
*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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1071,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'*
|
||||
@@ -1081,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'*
|
||||
@@ -1235,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'*
|
||||
@@ -1266,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'*
|
||||
@@ -4567,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*
|
||||
@@ -4764,6 +4769,9 @@ 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*
|
||||
@@ -6223,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*
|
||||
@@ -6578,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()*
|
||||
@@ -6628,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*
|
||||
@@ -10654,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_.*
|
||||
@@ -10673,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*
|
||||
@@ -11071,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*
|
||||
|
||||
@@ -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 24
|
||||
*terminal.txt* For Vim version 9.2. Last change: 2026 Mar 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -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)
|
||||
|
||||
@@ -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 Mar 02
|
||||
*version9.txt* For Vim version 9.2. Last change: 2026 Mar 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -52588,6 +52588,20 @@ Popups ~
|
||||
- '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.
|
||||
@@ -52595,24 +52609,44 @@ Other ~
|
||||
- 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 options for the 'statusline', e.g. use the
|
||||
"maxheight" suboption to use several lines.
|
||||
'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.
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -122,10 +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 height of the status line with the 'statuslineopt' option.
|
||||
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
|
||||
|
||||
@@ -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" "Справочник по программе xxd"
|
||||
.TH XXD 1 "Март 2026" "Справочник по программе xxd"
|
||||
.\"
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
@@ -203,6 +203,10 @@ ASCII,
|
||||
Если аргумент \-s не используется, то программа xxd начинает обработку
|
||||
от текущей позиции в файле.
|
||||
.TP
|
||||
.I \-t
|
||||
При использовании аргумента \-i для вывода в стиле подключаемых заголовочных
|
||||
файлов языка Си также включать завершающий нулевой символ
|
||||
.TP
|
||||
.I \-u
|
||||
Указывает, что в выводе отображать шестнадцатеричные цифры в верхнем регистре.
|
||||
По умолчанию используются символы в нижнем регистре символов.
|
||||
@@ -304,7 +308,7 @@ PostScript
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
||||
.br
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
20224d616e75616c207061676520666f72207878
|
||||
.br
|
||||
@@ -327,7 +331,7 @@ PostScript
|
||||
.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
|
||||
@@ -433,6 +437,20 @@ PostScript
|
||||
.br
|
||||
\fI% echo \-n foo \> /dev/term/b\fR
|
||||
.PP
|
||||
Вывод в стиле подключаемых заголовочных файлв языка Си с завершающим нулём
|
||||
.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 КОДЫ ЗАВЕРШЕНИЯ
|
||||
При завершении работы, программа xxd возвращает следующие значения:
|
||||
.TP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH XXD 1 "May 2024" "Справочник по программе xxd"
|
||||
.TH XXD 1 "Март 2026" "Справочник по программе xxd"
|
||||
.\"
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
@@ -203,6 +203,10 @@ ASCII, которые можно передавать по электронно
|
||||
Если аргумент \-s не используется, то программа xxd начинает обработку
|
||||
от текущей позиции в файле.
|
||||
.TP
|
||||
.I \-t
|
||||
При использовании аргумента \-i для вывода в стиле подключаемых заголовочных
|
||||
файлов языка Си также включать завершающий нулевой символ
|
||||
.TP
|
||||
.I \-u
|
||||
Указывает, что в выводе отображать шестнадцатеричные цифры в верхнем регистре.
|
||||
По умолчанию используются символы в нижнем регистре символов.
|
||||
@@ -304,7 +308,7 @@ PostScript с помощью команды xxd \-r \-p количество к
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
||||
.br
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
20224d616e75616c207061676520666f72207878
|
||||
.br
|
||||
@@ -327,7 +331,7 @@ PostScript с помощью команды xxd \-r \-p количество к
|
||||
.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
|
||||
@@ -433,6 +437,20 @@ PostScript с помощью команды xxd \-r \-p количество к
|
||||
.br
|
||||
\fI% echo \-n foo \> /dev/term/b\fR
|
||||
.PP
|
||||
Вывод в стиле подключаемых заголовочных файлв языка Си с завершающим нулём
|
||||
.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 КОДЫ ЗАВЕРШЕНИЯ
|
||||
При завершении работы, программа xxd возвращает следующие значения:
|
||||
.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 Feb 18
|
||||
" 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()
|
||||
@@ -572,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
|
||||
@@ -886,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()
|
||||
|
||||
@@ -1054,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
|
||||
@@ -1571,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')
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
" Previous Maintainer: Will Langstroth <will@langstroth.com>
|
||||
" URL: https://github.com/benknoble/vim-racket
|
||||
" Last Change: 2025 Aug 09
|
||||
" 2026 Mar 31 by Vim project: use shellescape for the K mapping
|
||||
" 2026 Apr 01 by Vim project: make K mapping more robust for shell injection
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -51,7 +53,7 @@ if !exists("no_plugin_maps") && !exists("no_racket_maps")
|
||||
try
|
||||
let l:old_a = @a
|
||||
normal! gv"ay
|
||||
call system("raco docs '". @a . "'")
|
||||
call system("raco docs -- ". string(shellescape(@a)))
|
||||
redraw!
|
||||
return @a
|
||||
finally
|
||||
|
||||
@@ -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<'
|
||||
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
|
||||
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Mar 02
|
||||
" 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)
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
" 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
|
||||
" 2026 Apr 01 by Vim Project use fnameescape() with netrw#FileUrlEdit()
|
||||
" 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
|
||||
@@ -8282,7 +8283,7 @@ function netrw#FileUrlEdit(fname)
|
||||
endif
|
||||
|
||||
exe "sil doau BufReadPre ".fname2396e
|
||||
exe 'NetrwKeepj keepalt edit '.plainfname
|
||||
exe 'NetrwKeepj keepalt edit '. fnameescape(plainfname)
|
||||
exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname)
|
||||
|
||||
exe "sil doau BufReadPost ".fname2396e
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -6,13 +6,8 @@
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Karsten Hopp <karsten@redhat.com>
|
||||
" Dean, Adam Kenneth <adam.ken.dean@hpe.com>
|
||||
" Last Change: 2022 Nov 10
|
||||
" Last Update: 2026 Feb 24
|
||||
" Added RemoteCommand from pull request #4809
|
||||
" Included additional keywords from Martin.
|
||||
" Included PR #5753
|
||||
" Update missing keywords #19488
|
||||
" SSH Version: 8.5p1
|
||||
" Last Change: 2026 Mar 31
|
||||
" SSH Version: 10.1p1
|
||||
"
|
||||
|
||||
" Setup
|
||||
@@ -110,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
|
||||
@@ -125,6 +121,8 @@ syn keyword sshconfigKexAlgo ecdh-sha2-nistp384
|
||||
syn keyword sshconfigKexAlgo ecdh-sha2-nistp521
|
||||
syn match sshconfigKexAlgo "\<curve25519-sha256\%(@libssh\.org\)\?\>"
|
||||
syn match sshconfigKexAlgo "\<sntrup761x25519-sha512@openssh\.com\>"
|
||||
syn keyword sshconfigKexAlgo sntrup761x25519-sha512
|
||||
syn keyword sshconfigKexAlgo mlkem768x25519-sha256
|
||||
|
||||
syn keyword sshconfigTunnel point-to-point ethernet
|
||||
|
||||
@@ -288,6 +286,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"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
" Language: Tera
|
||||
" Maintainer: Muntasir Mahmud <muntasir.joypurhat@gmail.com>
|
||||
" Last Change: 2026 Jan 29
|
||||
" 2026 Mar 31 by Vim project: prevent code execution in filename
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -22,7 +23,7 @@ endif
|
||||
|
||||
" Load the underlying language syntax if detected
|
||||
if s:underlying_filetype != ""
|
||||
execute "runtime! syntax/" . s:underlying_filetype . ".vim"
|
||||
execute "runtime! syntax/" . fnameescape(s:underlying_filetype) . ".vim"
|
||||
unlet! b:current_syntax
|
||||
else
|
||||
" Default to HTML if no specific language detected
|
||||
|
||||
@@ -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/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|%|
|
||||
20
runtime/syntax/testdir/dumps/sed_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sed_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|/+0#e000e06#ffffff0|f|o@1|/|,|4|2|p+0#00e0e07&| +0#0000000&@65
|
||||
|4+0#e000e06&|2|,|/|b|a|r|/|p+0#00e0e07&| +0#0000000&@65
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |G|N|U| |e|x|t|e|n|s|i|o|n|s| +0#0000000&@58
|
||||
> @74
|
||||
@75
|
||||
|#+0#0000e05&| |s|t|e|p| +0#0000000&@68
|
||||
@75
|
||||
|1+0#e000e06&|~|2|p+0#00e0e07&| +0#0000000&@70
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |i|g|n|o|r|e| |c|a|s|e|,| |m|u|l|t|i|l|i|n|e| +0#0000000&@50
|
||||
@75
|
||||
|/+0#e000e06&|f|o@1|b|a|r|/|I|p+0#00e0e07&| +0#0000000&@64
|
||||
|/+0#e000e06&|f|o@1|b|a|r|/|M|p+0#00e0e07&| +0#0000000&@64
|
||||
|/+0#e000e06&|f|o@1|b|a|r|/|I|M|p+0#00e0e07&| +0#0000000&@63
|
||||
|/+0#e000e06&|f|o@1|b|a|r|/|M|I|p+0#00e0e07&| +0#0000000&@63
|
||||
@75
|
||||
@57|3|7|,|0|-|1| @7|6|7|%|
|
||||
20
runtime/syntax/testdir/dumps/sed_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sed_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@74
|
||||
|\+0#e000e06&|a|f|o@1|b|\|a|r|a|I|p+0#00e0e07&| +0#0000000&@62
|
||||
|\+0#e000e06&|a|f|o@1|b|\|a|r|a|M|p+0#00e0e07&| +0#0000000&@62
|
||||
|\+0#e000e06&|a|f|o@1|b|\|a|r|a|I|M|p+0#00e0e07&| +0#0000000&@61
|
||||
|\+0#e000e06&|a|f|o@1|b|\|a|r|a|M|I|p+0#00e0e07&| +0#0000000&@61
|
||||
> @74
|
||||
@75
|
||||
|#+0#0000e05&| |i|n|c|r|e|m|e|n|t| +0#0000000&@63
|
||||
@75
|
||||
|4+0#e000e06&|2|,|+|4|2|p+0#00e0e07&| +0#0000000&@67
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&| |s|t|e|p| +0#0000000&@68
|
||||
@75
|
||||
|4+0#e000e06&|2|,|~|2|p+0#00e0e07&| +0#0000000&@68
|
||||
@75
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|5@1|,|0|-|1| @7|B|o|t|
|
||||
2
runtime/syntax/testdir/dumps/sh_06_00.dump
generated
2
runtime/syntax/testdir/dumps/sh_06_00.dump
generated
@@ -11,7 +11,7 @@
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |D|i|s|p|l|a|y| |s|o|m|e| |H|e|l|p| +0#0000000&@55
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|U+0#00e0e07&|s|a|g|e| |(|)| |{| +0#0000000&@64
|
||||
|U+0#00e0e07&|s|a|g|e| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@75
|
||||
|#+0#0000e05&| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
|
||||
|V+0#00e0e07&|a|r|i|a|b|l|e|N|a|m|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|B|a|s|i|c|C|o|n|f|i|g|N|a|m|e|}|_+0#e000002&|*|"+0#af5f00255&| +0#0000000&@39
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_06_01.dump
generated
2
runtime/syntax/testdir/dumps/sh_06_01.dump
generated
@@ -1,4 +1,4 @@
|
||||
|U+0#00e0e07#ffffff0|s|a|g|e| |(|)| |{| +0#0000000&@64
|
||||
|U+0#00e0e07#ffffff0|s|a|g|e| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@75
|
||||
|#+0#0000e05&| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
|
||||
|V+0#00e0e07&|a|r|i|a|b|l|e|N|a|m|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|B|a|s|i|c|C|o|n|f|i|g|N|a|m|e|}|_+0#e000002&|*|"+0#af5f00255&| +0#0000000&@39
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_06_02.dump
generated
2
runtime/syntax/testdir/dumps/sh_06_02.dump
generated
@@ -14,7 +14,7 @@
|
||||
@75
|
||||
|"+0#af5f00255&| +0#0000000&@73
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |U|s|a|g|e| +0#0000000&@58
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |U|s|a|g|e| +0#0000000&@58
|
||||
@75
|
||||
@75
|
||||
@57|3|5|,|1| @9|5@1|%|
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_06_03.dump
generated
4
runtime/syntax/testdir/dumps/sh_06_03.dump
generated
@@ -4,13 +4,13 @@
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |C|r|e|a|t|e| |a| |b|a|c|k|u|p| |u|s|i|n|g| |f|b|a|c|k|u|p|/|f|r|e|c|o|v|e|r| +0#0000000&@34
|
||||
>#+0#0000e05&| +0#0000000&@73
|
||||
|E+0#00e0e07&|x|e|c|u|t|e|F|b|a|c|k|u|p| |(|)| |{| +0#0000000&|#+0#0000e05&| |T|E|S|T|I|N|G| +0#0000000&@45
|
||||
|E+0#00e0e07&|x|e|c|u|t|e|F|b|a|c|k|u|p| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&|#+0#0000e05&| |T|E|S|T|I|N|G| +0#0000000&@45
|
||||
@75
|
||||
|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|D|e|b|u|g|S|c|r|i|p|t|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&@3|&+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|-+0#e000e06&|x| +0#00e0e07&||+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|++0#e000e06&|x| +0#0000000&@33
|
||||
@75
|
||||
|c+0#af5f00255&|d| +0#0000000&|$+0#e000e06&|c|w|d| +0#0000000&@67
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |E|x|e|c|u|t|e|F|b|a|c|k|u|p| +0#0000000&@49
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |E|x|e|c|u|t|e|F|b|a|c|k|u|p| +0#0000000&@49
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_07_00.dump
generated
2
runtime/syntax/testdir/dumps/sh_07_00.dump
generated
@@ -14,7 +14,7 @@
|
||||
| | +0#0000000&@73
|
||||
|#+0#0000e05&| |a|v|a|i|l|a|b|l|e|!| +0#0000000&@62
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
|i|s|_|d|a|s|h|:| |1|,| |i|s|_|p|o|s|i|x|:| |1|,| |i|s|_|s|h|:| |1|,| @22|1|,|1| @10|T|o|p|
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_07_01.dump
generated
4
runtime/syntax/testdir/dumps/sh_07_01.dump
generated
@@ -2,7 +2,7 @@
|
||||
| | +0#0000000&@73
|
||||
|#+0#0000e05&| |a|v|a|i|l|a|b|l|e|!| +0#0000000&@62
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|*|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o|n|e|\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@49
|
||||
@@ -13,7 +13,7 @@
|
||||
|d+0#af5f00255&|o|n|e| +0#0000000&@70
|
||||
|e+0#af5f00255&|c|h|o| +0#0000000&@70
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|1| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|1| +0#0000000&@54
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
@5| +0#0000000&@69
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_07_02.dump
generated
4
runtime/syntax/testdir/dumps/sh_07_02.dump
generated
@@ -3,7 +3,7 @@
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|*| +0#0000000&@46
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
>F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| |{| +0#0000000&@60
|
||||
>F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|2|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|*| +0#0000000&@61
|
||||
@@ -11,7 +11,7 @@
|
||||
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|
||||
|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|2| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|2| +0#0000000&@54
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
@5| +0#0000000&@69
|
||||
|
||||
6
runtime/syntax/testdir/dumps/sh_07_03.dump
generated
6
runtime/syntax/testdir/dumps/sh_07_03.dump
generated
@@ -1,6 +1,6 @@
|
||||
|#+0#0000e05#ffffff0| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|@|.| |W|o|r|k|s| |t|h|e| |s|a|m|e| |w|a|y| |a|s| |$|*| +0#0000000&@20
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|3|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
>f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|@| +0#0000000&@61
|
||||
@@ -8,13 +8,13 @@
|
||||
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|
||||
|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|3| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|3| +0#0000000&@54
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
@5| +0#0000000&@69
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |"|$|@|"|.| |S|p|e|c|i|a|l| |c|a|s|e|.| |W|o|r|k|s| |l|i|k|e| |"|$|1|"| |"|$|2|"| |.@2| +0#0000000&@4
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|4| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|4| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
@57|4|8|,|1| @9|5|6|%|
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_07_04.dump
generated
2
runtime/syntax/testdir/dumps/sh_07_04.dump
generated
@@ -5,7 +5,7 @@
|
||||
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|
||||
>d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|b|a|s|h| +0#0000000&@61
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@58
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:| @67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|b|a|s|h|:| |1|,| @45|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:| @67
|
||||
@57|1|9|,|1| @9|3|6|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:| @67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|i+0#00e0e07#ffffff0|f@1|y|(|)| +0#0000000&|f+0#af5f00255&|o|r| |(@1|;@1|)@1| +0#0000000&@55
|
||||
|-+0#0000e05#a8a8a8255| >d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|f@1|y| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|!+0#00e0e07&|?|#|(|)| +0#0000000&@54
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|@+0#00e0e07&|α|!| +0#0000000&|{+0#e000e06&| +0#0000000&@50
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|@|α|!+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@56
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|e+0#af5f00255&|v|a|l| +0#0000000&|!+0#af5f00255&|?+0#0000000&|\+0#e000e06&|#| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@54
|
||||
@57|3|7|,|1| @9|8|6|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|e+0#af5f00255&|v|a|l| +0#0000000&|!+0#af5f00255&|?+0#0000000&|\+0#e000e06&|#| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@54
|
||||
||+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|n+0#00e0e07#ffffff0|a|m|e|s|p|a|c|e| |(|)| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |{+0#e000e06#ffffff0| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|#|;+0#af5f00255&| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| >}+0#e000e06#ffffff0|;+0#0000000&| |n|a|m|e|s|p|a|c|e| |$+0#e000e06&|@| +0#0000000&@57
|
||||
|~+0#4040ff13&| @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/sh_functions_dash_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_dash_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|d|a|s|h| +0#0000000&@61
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|i|s|_|d|a|s|h|:| |1|,| |i|s|_|p|o|s|i|x|:| |1|,| |i|s|_|s|h|:| |1|,| @22|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_dash_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_dash_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i+0#00e0e07&|d|2|(|)| +0#0000000&@63
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|i+0#00e0e07&|d|1|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@57
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
@57|1|9|,|0|-|1| @7|6|1|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_dash_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_dash_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|i|d|1| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@56
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|2| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
||+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|u|n|c|t|i|o|n| |(|)| +0#0000000&@61
|
||||
|-+0#0000e05#a8a8a8255| |{+0#e000e06#ffffff0| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|#|;+0#af5f00255&| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| |}+0#e000e06#ffffff0|;+0#0000000&| |f|u|n|c|t|i|o|n| |$+0#e000e06&|@| +0#0000000&@58
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|3|7|,|0|-|1| @7|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|k|s|h|2|0|2|0| +0#0000000&@58
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i| +0#0000000&|1+0#e000002&|0| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@55
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|k|o|r|n|s|h|e|l@1|:| |1|,| |i|s|_|k|s|h|2|0|2|0|:| |1|,| @25|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
@57|1|9|,|1| @9|4|0|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|i+0#00e0e07#ffffff0|f@1|y|(|)| +0#0000000&|f+0#af5f00255&|o|r| |(@1|;@1|)@1| +0#0000000&@55
|
||||
|-+0#0000e05#a8a8a8255| >d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|f@1|y| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i+0#00e0e07&|d|_|(|)| +0#0000000&@63
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|n+0#00e0e07&|.|s|e|t| +0#0000000&|{+0#e000e06&| +0#0000000&@48
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|n|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|d|o@1|s|i|e| @58
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|_| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
@57|3|7|,|1| @9|9|6|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|_| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
||+0#0000e05#a8a8a8255| >f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @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/sh_functions_ksh88_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|k|s|h|8@1| +0#0000000&@60
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i| +0#0000000&|1+0#e000002&|0| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@55
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|k|o|r|n|s|h|e|l@1|:| |1|,| |i|s|_|k|s|h|8@1|:| |1|,| @27|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
@57|1|9|,|1| @9|5|0|%|
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user