diff --git a/.editorconfig b/.editorconfig index dd6d050efb..93dd8dadb3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -24,6 +24,14 @@ indent_size = 2 # https://spec.commonmark.org/0.31.2/#hard-line-breaks trim_trailing_whitespace = false +[*.vim] +indent_style = space +indent_size = 2 + +[runtime/pack/dist/opt/{comment,nohlsearch}/**.vim] +indent_style = space +indent_size = 4 + [runtime/doc/**.txt] # It can mess up some documentation by trying to strip trailing whitespaces trim_trailing_whitespace = false diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index a17e53281b..f0d11a38fe 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -98,6 +98,7 @@ runtime/compiler/se.vim @dkearns runtime/compiler/shellcheck.vim @dkearns runtime/compiler/sml.vim @dkearns runtime/compiler/spectral.vim @romainl +runtime/compiler/svelte-check.vim @Konfekt runtime/compiler/stylelint.vim @dkearns runtime/compiler/tcl.vim @dkearns runtime/compiler/tidy.vim @dkearns @@ -224,6 +225,7 @@ runtime/ftplugin/liquid.vim @tpope runtime/ftplugin/lua.vim @dkearns runtime/ftplugin/lc.vim @ribru17 runtime/ftplugin/lynx.vim @dkearns +runtime/ftplugin/m17ndb.vim @dseomn runtime/ftplugin/m3build.vim @dkearns runtime/ftplugin/m3quake.vim @dkearns runtime/ftplugin/markdown.vim @tpope @@ -248,6 +250,7 @@ runtime/ftplugin/pbtxt.vim @lakshayg runtime/ftplugin/pdf.vim @tpope runtime/ftplugin/perl.vim @petdance @dkearns runtime/ftplugin/php.vim @dkearns +runtime/ftplugin/plsql.vim @lee-lindley runtime/ftplugin/pod.vim @petdance @dkearns runtime/ftplugin/poefilter.vim @ObserverOfTime runtime/ftplugin/postscr.vim @mrdubya @@ -282,6 +285,7 @@ runtime/ftplugin/slint.vim @ribru17 runtime/ftplugin/snakemake.vim @ribru17 runtime/ftplugin/solidity.vim @cothi runtime/ftplugin/solution.vim @dkearns +runtime/ftplugin/spajson.vim @dseomn runtime/ftplugin/spec.vim @ignatenkobrain runtime/ftplugin/squirrel.vim @ribru17 runtime/ftplugin/ssa.vim @ObserverOfTime @@ -293,6 +297,7 @@ runtime/ftplugin/systemverilog.vim @Kocha runtime/ftplugin/swig.vim @jmarrec runtime/ftplugin/tap.vim @petdance runtime/ftplugin/tcsh.vim @dkearns +runtime/ftplugin/tera.vim @MuntasirSZN runtime/ftplugin/terraform.vim @JannoTjarks runtime/ftplugin/tf.vim @ribru17 runtime/ftplugin/thrift.vim @jiangyinzuo @@ -366,6 +371,7 @@ runtime/indent/ld.vim @dkearns runtime/indent/less.vim @genoma runtime/indent/liquid.vim @tpope runtime/indent/lua.vim @marcuscf +runtime/indent/m17ndb.vim @dseomn runtime/indent/make.vim @dkearns runtime/indent/meson.vim @Liambeguin runtime/indent/mma.vim @dkearns @@ -391,6 +397,7 @@ runtime/indent/scheme.vim @evhan runtime/indent/scss.vim @tpope runtime/indent/sh.vim @chrisbra runtime/indent/solidity.vim @cothi +runtime/indent/spajson.vim @dseomn runtime/indent/systemverilog.vim @Kocha runtime/indent/tcl.vim @dkearns runtime/indent/tcsh.vim @dkearns @@ -419,6 +426,7 @@ runtime/pack/dist/opt/nohlsearch/ @habamax runtime/plugin/manpager.vim @Konfekt runtime/syntax/shared/hgcommitDiff.vim @vegerot runtime/syntax/abaqus.vim @costerwi +runtime/syntax/abnf.vim @A4-Tacks runtime/syntax/aidl.vim @dpelle runtime/syntax/ant.vim @dkearns runtime/syntax/antlr4.vim @jiangyinzuo @@ -532,6 +540,7 @@ runtime/syntax/liquid.vim @tpope runtime/syntax/lua.vim @marcuscf runtime/syntax/lyrics.vim @ObserverOfTime runtime/syntax/lynx.vim @dkearns +runtime/syntax/m17ndb.vim @dseomn runtime/syntax/m3build.vim @dkearns runtime/syntax/m3quake.vim @dkearns runtime/syntax/mailcap.vim @dkearns @@ -553,6 +562,7 @@ runtime/syntax/ninja.vim @nico runtime/syntax/nix.vim @equill runtime/syntax/nroff.vim @jmarshall runtime/syntax/nsis.vim @k-takata +runtime/syntax/omnimark.vim @kennypete runtime/syntax/ondir.vim @jparise runtime/syntax/opencl.vim @Freed-Wu runtime/syntax/openvpn.vim @ObserverOfTime @@ -570,6 +580,7 @@ runtime/syntax/postscr.vim @mrdubya runtime/syntax/privoxy.vim @dkearns runtime/syntax/progress.vim @rdnlsmith runtime/syntax/prolog.vim @XVilka +runtime/syntax/prql.vim @vanillajonathan runtime/syntax/ps1.vim @heaths runtime/syntax/ps1xml.vim @heaths runtime/syntax/psl.vim @danielkho @@ -601,6 +612,7 @@ runtime/syntax/sed.vim @dkearns runtime/syntax/shared/debversions.vim @jamessan runtime/syntax/shaderslang.vim @mTvare6 runtime/syntax/solidity.vim @cothi +runtime/syntax/spajson.vim @dseomn runtime/syntax/spec.vim @ignatenkobrain runtime/syntax/sqloracle.vim @chrisbra runtime/syntax/squirrel.vim @zenmatic @@ -615,6 +627,7 @@ runtime/syntax/swig.vim @jmarrec runtime/syntax/systemverilog.vim @Kocha runtime/syntax/tap.vim @petdance runtime/syntax/tcsh.vim @dkearns +runtime/syntax/tera.vim @MuntasirSZN runtime/syntax/teraterm.vim @k-takata runtime/syntax/terraform.vim @gpanders runtime/syntax/thrift.vim @jiangyinzuo diff --git a/.github/workflows/ci-macvim.yaml b/.github/workflows/ci-macvim.yaml index 8cc41bd1aa..c0018e8b3b 100644 --- a/.github/workflows/ci-macvim.yaml +++ b/.github/workflows/ci-macvim.yaml @@ -52,6 +52,7 @@ jobs: os: ${{ matrix.os }} legacy: ${{ matrix.legacy && true || false }} xcode: ${{ matrix.xcode }} + testgui: ${{ matrix.testgui && true || false }} publish: ${{ matrix.publish && true || false }} publish_postfix: ${{ matrix.publish_postfix }} optimized: ${{ matrix.optimized && true || false }} diff --git a/.github/workflows/macvim-buildtest.yaml b/.github/workflows/macvim-buildtest.yaml index a94f994465..8c642cb328 100644 --- a/.github/workflows/macvim-buildtest.yaml +++ b/.github/workflows/macvim-buildtest.yaml @@ -13,6 +13,8 @@ on: type: boolean xcode: type: string + testgui: + type: boolean publish: type: boolean publish_postfix: @@ -363,7 +365,7 @@ jobs: make ${MAKE_BUILD_ARGS} -j${NPROC} -C src unittesttargets - name: Test Vim - if: startsWith(github.ref, 'refs/tags/') || !matrix.testgui + if: startsWith(github.ref, 'refs/tags/') || !inputs.testgui timeout-minutes: 30 run: | defaults delete org.vim.MacVim # Clean up stale states @@ -373,7 +375,7 @@ jobs: make ${MAKE_BUILD_ARGS} -C src test - name: Test Vim (GUI) - if: startsWith(github.ref, 'refs/tags/') || matrix.testgui + if: startsWith(github.ref, 'refs/tags/') || inputs.testgui timeout-minutes: 30 run: | defaults delete org.vim.MacVim # Clean up stale states diff --git a/.gitignore b/.gitignore index fec0abeaa5..1d0d3d644e 100644 --- a/.gitignore +++ b/.gitignore @@ -148,6 +148,11 @@ src/xxd/xxd src/xxd/xxd.dSYM src/a.out.dSYM +runtime/syntax/testdir/done/ +runtime/syntax/testdir/messages +runtime/syntax/testdir/testdeps.mk +runtime/syntax/testdir/vimcmd + # Generated by "make install" runtime/doc/doctags runtime/doc/tags-* diff --git a/.hgignore b/.hgignore index 5c9754e2ec..38388a5309 100644 --- a/.hgignore +++ b/.hgignore @@ -98,21 +98,33 @@ src/json_test src/message_test src/kword_test +runtime/syntax/testdir/done/ +runtime/syntax/testdir/messages +runtime/syntax/testdir/testdeps.mk +runtime/syntax/testdir/vimcmd + # Generated by "make install" runtime/doc/doctags runtime/doc/tags-* +# Temporarily generated by "runtime/syntax/generator/make" +runtime/syntax/generator/generator.err +runtime/syntax/generator/sanity_check.err +runtime/syntax/generator/vim.vim.rc + # Generated by "make shadow". The directory names could be anything but we # restrict them to shadow (the default) or shadow-* src/shadow src/shadow-* src/runtime src/pixmaps +src/LICENSE +src/README.txt # other files possibly created by tools src/cscope.out # Linter/language server files -/.cache/clangd/ -/.ccls-cache/ -/compile_commands.json +.cache/clangd/ +.ccls-cache/ +compile_commands.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 17bb9b307d..c766d71d51 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,6 +21,31 @@ Contributions will be distributed with Vim under the Vim license. Providing a change to be included implies that you agree with this and your contribution does not cause us trouble with trademarks or patents. There is no CLA to sign. +## Signing-off commits + +While not required, it's recommended to use **Signed-off commits** to ensure +transparency, accountability, and compliance with open-source best practices. +Signed-off commits follow the [Developer Certificate of Origin (DCO)][15], +which confirms that contributors have the right to submit their changes under +the project's license. This process adds a `Signed-off-by` line to commit +messages, verifying that the contributor agrees to the project's licensing +terms. To sign off a commit, simply use the -s flag when committing: + +```sh +git commit -s +``` + +This ensures that every contribution is properly documented and traceable, +aligning with industry standards used in projects like the Linux Kernel or +the git project. By making Signed-off commits a standard practice, we help +maintain a legally compliant and well-governed codebase while fostering trust +within our contributor community. + +When merging PRs into Vim, the current maintainer @chrisbra usually adds missing +`Signed-off-by` trailers for the author user name and email address as well for +anybody that explicitly *ACK*s a pull request as a statement that those +approvers are happy with that particular change. + # Reporting issues We use GitHub issues, but that is not a requirement. Writing to the Vim @@ -113,3 +138,4 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website, [12]: https://github.com/vim/vim/blob/master/src/testdir/test_filetype.vim [13]: https://github.com/vim/vim/blob/master/runtime/doc/filetype.txt [14]: https://github.com/vim/vim/blob/master/runtime/doc/syntax.txt +[15]: https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin diff --git a/Filelist b/Filelist index 22a987c4db..7302788fea 100644 --- a/Filelist +++ b/Filelist @@ -157,6 +157,7 @@ SRC_ALL = \ src/textobject.c \ src/textprop.c \ src/time.c \ + src/tuple.c \ src/typval.c \ src/ui.c \ src/undo.c \ @@ -223,6 +224,7 @@ SRC_ALL = \ src/testdir/samples/*.html \ src/testdir/samples/*.txt \ src/testdir/samples/*.vim \ + src/testdir/samples/poc.zip \ src/testdir/samples/test000 \ src/testdir/samples/test.zip \ src/testdir/samples/test_undo.txt.undo \ @@ -338,6 +340,7 @@ SRC_ALL = \ src/proto/textobject.pro \ src/proto/textprop.pro \ src/proto/time.pro \ + src/proto/tuple.pro \ src/proto/typval.pro \ src/proto/ui.pro \ src/proto/undo.pro \ @@ -771,16 +774,16 @@ RT_ALL = \ runtime/tools/[a-z]*[a-z0-9] \ runtime/tutor/README.txt \ runtime/tutor/tutor1 \ + runtime/tutor/tutor1.utf-8 \ runtime/tutor/en/vim-01-beginner.tutor \ runtime/tutor/en/vim-01-beginner.tutor.json \ - runtime/tutor/it/vim-01-beginner.tutor \ - runtime/tutor/it/vim-01-beginner.tutor.json \ - runtime/tutor/sr/vim-01-beginner.tutor \ - runtime/tutor/sr/vim-01-beginner.tutor.json \ + runtime/tutor/en/vim-02-beginner.tutor \ + runtime/tutor/en/vim-02-beginner.tutor.json \ runtime/tutor/tutor.tutor \ runtime/tutor/tutor.tutor.json \ runtime/tutor/tutor.vim \ runtime/tutor/tutor2 \ + runtime/tutor/tutor2.utf-8 \ runtime/vimrc_example.vim \ runtime/pack/dist/opt/cfilter/plugin/cfilter.vim \ runtime/pack/dist/opt/comment/plugin/comment.vim \ @@ -804,6 +807,7 @@ RT_ALL = \ runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim \ runtime/pack/dist/opt/helptoc/autoload/helptoc.vim \ runtime/pack/dist/opt/helptoc/plugin/helptoc.vim \ + runtime/pack/dist/opt/hlyank/plugin/hlyank.vim \ runtime/pack/dist/opt/justify/plugin/justify.vim \ runtime/pack/dist/opt/matchit/plugin/matchit.vim \ runtime/pack/dist/opt/matchit/doc/matchit.txt \ @@ -816,7 +820,9 @@ RT_ALL = \ runtime/pack/dist/opt/netrw/LICENSE.txt \ runtime/pack/dist/opt/netrw/README.md \ runtime/pack/dist/opt/netrw/autoload/netrw.vim \ - runtime/pack/dist/opt/netrw/autoload/netrw/own.vim \ + runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim \ + runtime/pack/dist/opt/netrw/autoload/netrw/os.vim \ + runtime/pack/dist/opt/netrw/autoload/netrw/msg.vim \ runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim \ runtime/pack/dist/opt/netrw/autoload/netrw_gitignore.vim \ runtime/pack/dist/opt/netrw/doc/netrw.txt \ @@ -876,6 +882,7 @@ RT_SCRIPTS = \ runtime/syntax/testdir/input/setup/*.* \ runtime/syntax/testdir/dumps/*.dump \ runtime/syntax/testdir/dumps/*.vim \ + runtime/syntax/testdir/tools/* \ runtime/syntax/generator/Makefile \ runtime/syntax/generator/README.md \ runtime/syntax/generator/gen_syntax_vim.vim \ @@ -1074,7 +1081,16 @@ LANG_GEN = \ runtime/tutor/README.*.txt \ runtime/tutor/Makefile \ runtime/tutor/Make_all.mak \ - runtime/tutor/tutor1.utf-8 \ + runtime/tutor/it/vim-01-beginner.tutor \ + runtime/tutor/it/vim-01-beginner.tutor.json \ + runtime/tutor/ru/vim-01-beginner.tutor \ + runtime/tutor/ru/vim-01-beginner.tutor.json \ + runtime/tutor/ru/vim-02-beginner.tutor \ + runtime/tutor/ru/vim-02-beginner.tutor.json \ + runtime/tutor/sr/vim-01-beginner.tutor \ + runtime/tutor/sr/vim-01-beginner.tutor.json \ + runtime/tutor/sr/vim-02-beginner.tutor \ + runtime/tutor/sr/vim-02-beginner.tutor.json \ runtime/tutor/tutor1.?? \ runtime/tutor/tutor1.??.utf-8 \ runtime/tutor/tutor1.??.euc \ @@ -1087,7 +1103,6 @@ LANG_GEN = \ runtime/tutor/tutor1.??_??.utf-8 \ runtime/tutor/tutor1.bar \ runtime/tutor/tutor1.bar.utf-8 \ - runtime/tutor/tutor2.utf-8 \ runtime/tutor/tutor2.?? \ runtime/tutor/tutor2.??.utf-8 \ runtime/spell/README.txt \ @@ -1148,6 +1163,8 @@ IGNORE = \ .github/workflows/label.yml \ SECURITY.md \ ci/unlisted.make \ + ci/hlgroups.make \ + ci/hlgroups.ignore \ src/libvterm/CODE-MAP \ runtime/syntax/testdir/input/html_html \ diff --git a/Makefile b/Makefile index 12aa1f37da..4d726991d3 100644 --- a/Makefile +++ b/Makefile @@ -63,6 +63,7 @@ VIM_FOR_SYNTAXTEST = ../../src/vim # (For local testing only with GNU Make.) VIM_SYNTAX_TEST_FILTER = +VIM_SYNTAX_TEST_WAIT_TIME = syntaxtest: cd runtime/syntax && \ diff --git a/ci/hlgroups.ignore b/ci/hlgroups.ignore new file mode 100644 index 0000000000..41e06f1bde --- /dev/null +++ b/ci/hlgroups.ignore @@ -0,0 +1,66 @@ +ColorColumn +ComplMatchIns +Conceal +Cursor +CursorColumn +CursorIM +CursorLine +CursorLineNr +debugBreakpoint +debugPC +DiffAdd +DiffChange +DiffDelete +DiffText +Directory +ErrorMsg +FoldColumn +Folded +Ignore +IncSearch +lCursor +LineNr +LineNrAbove +LineNrBelow +MatchParen +Menu +ModeMsg +MoreMsg +MsgArea +NonText +Normal +Pmenu +PmenuSbar +PmenuSel +PmenuThumb +Question +Scrollbar +Search +SignColumn +SpecialKey +SpellBad +SpellCap +SpellLocal +SpellRare +StatusLine +StatusLineNC +StatusLineTerm +StatusLineTermNC +TabLine +TabLineFill +TabLineSel +Terminal +Title +TOhtmlProgress +TOhtml-progress-color +ToolbarButton +ToolbarLine +Tooltip +User1 +User1..9 +User9 +VertSplit +Visual +VisualNOS +WarningMsg +WildMenu diff --git a/ci/hlgroups.make b/ci/hlgroups.make new file mode 100644 index 0000000000..65b39a8c1d --- /dev/null +++ b/ci/hlgroups.make @@ -0,0 +1,18 @@ +# vim: ft=make +SHELL = /bin/bash + +# Default target to actually run the comparison: +.PHONY: check +.INTERMEDIATE: hlgroups deflinks hlgroups.stripped + +check: hlgroups.stripped deflinks + diff hlgroups.stripped deflinks + +hlgroups: + grep '\*hl-' ../runtime/doc/*txt | sed -E -e 's/.*: hlgroups + +deflinks: ../src/highlight.c + grep '"default link' $< | sed 's/.*default link\s*\(.*\)\s.*/\1/' | sort > deflinks + +hlgroups.stripped: hlgroups.ignore hlgroups + grep -v -x -F -f hlgroups.ignore hlgroups > hlgroups.stripped diff --git a/ci/unlisted.make b/ci/unlisted.make index 04dfcb53f3..6d506eb79c 100644 --- a/ci/unlisted.make +++ b/ci/unlisted.make @@ -21,7 +21,7 @@ $(eval all_patterns := $(shell \ p; \ }')) -# In Makefile's `prepeare` target, all the IN_README_DIR files are moved from +# In Makefile's `prepare` target, all the IN_README_DIR files are moved from # READMEdir to the root, so add those files in their Git-tracked location: all_patterns := $(all_patterns) \ $(foreach readme, $(IN_README_DIR), READMEdir/$(readme)) diff --git a/lang/LICENSE.pt_br.txt b/lang/LICENSE.pt_br.txt new file mode 100644 index 0000000000..a3d6e9e1f9 --- /dev/null +++ b/lang/LICENSE.pt_br.txt @@ -0,0 +1,81 @@ +LICENÇA DO VIM + +I) Não há restrições para distribuir cópias não modificadas do Vim, exceto + que elas devem incluir este texto de licença. Você também pode distribuir + partes não modificadas do Vim, igualmente irrestritas, exceto que elas + devem incluir este texto de licença. Você também tem permissão para incluir + executáveis que você fez a partir das fontes não modificadas do Vim, além + de seus próprios exemplos de uso e scripts do Vim. + +II) É permitido distribuir uma versão modificada (ou estendida) do Vim, + incluindo executáveis e/ou código-fonte, quando as quatro + condições a seguir forem atendidas: + 1) Este texto de licença deve ser incluído sem modificações. + 2) O Vim modificado deve ser distribuído de uma das cinco formas a seguir: + a) Se você fizer alterações no Vim, deverá descrever claramente na + distribuição como entrar em contato com você. Quando o mantenedor + solicitar a você (de qualquer forma) uma cópia do Vim modificado que + você distribuiu, você deverá disponibilizar suas alterações, + incluindo o código-fonte, ao mantenedor sem taxa. O mantenedor + reserva o direito de incluir suas alterações na versão oficial + do Vim. O que o mantenedor fará com suas alterações e sob qual + licença elas serão distribuídas é negociável. Se não houve negociação + então esta licença, ou uma versão posterior, também se aplica às suas + alterações. Os mantenedores atuais estão listados aqui: + https://github.com/orgs/vim/people. Se isso mudar, será anunciado em + lugares apropriados (provavelmente vim.sf.net, www.vim.org e/ou + comp.editors). Quando for completamente impossível contatar o + mantenedor, a obrigação de enviar a ele suas alterações cessa. + Uma vez que o mantenedor tenha confirmado que ele recebeu suas + alterações, elas não precisarão ser enviadas novamente. + b) Se você recebeu um Vim modificado que foi distribuído como + mencionado em a), você tem permissão para distribuí-lo sem + modificações, como mencionado em I). Se você fizer alterações + adicionais, o texto em a) se aplica a essas alterações. + c) Forneça todas as alterações, incluindo o código-fonte, com cada cópia + do Vim modificado que você distribuir. Isso pode ser feito na forma + de um diff de contexto. Você pode escolher qual licença usar para o + novo código que você adicionar. As alterações e sua licença não devem + restringir outros de fazer suas próprias alterações na versão oficial + do Vim. + d) Quando você tem um Vim modificado que inclui alterações conforme + mencionado em c), você pode distribuí-lo sem o código-fonte para as + alterações se as três condições a seguir forem atendidas: + - A licença que se aplica às alterações permite que você distribua + as alterações para o mantenedor do Vim sem taxa ou restrição, e + permite que o mantenedor do Vim inclua as alterações na + versão oficial do Vim sem taxa ou restrição. + - Você mantém as alterações por pelo menos três anos após a última + distribuição do Vim modificado correspondente. Quando o mantenedor + ou alguém para quem você distribuiu o Vim modificado solicitar a + você (de qualquer forma) as alterações dentro deste período, você + deve disponibilizá-las a ele. + - Você descreve claramente na distribuição como entrar em contato + com você. Estas informações de contato devem permanecer válidas por + pelo menos três anos após a última distribuição do Vim modificado + correspondente, ou pelo maior tempo possível. + e) Quando a Licença Pública Geral GNU (GPL) se aplica às alterações, + você pode distribuir o Vim modificado sob a GNU GPL versão 2 ou + qualquer versão posterior. + 3) Uma mensagem deve ser adicionada, no mínimo na saída do comando + ":version" e na tela de introdução, de modo que o usuário do Vim + modificado seja capaz de ver que ele foi modificado. Ao distribuir + conforme mencionado em 2)e), só é necessário adicionar a mensagem + na medida em que isso não entre em conflito com a licença usada para + as alterações. + 4) As informações de contato conforme exigido em 2)a) e 2)d) não devem ser + removidas ou alteradas, exceto que a própria pessoa pode fazer + correções. + +III) Se você distribuir uma versão modificada do Vim, encorajamos que use + a licença do Vim para suas alterações e disponibilizá-las ao + mantenedor, incluindo o código-fonte. A maneira preferida de fazer isso é + por e-mail ou enviando os arquivos para um servidor e enviando a URL por + e-mail. Se o número de alterações for pequeno (por exemplo, um Makefile + modificado), enviar um diff de contexto por e-mail será suficiente. + O endereço de e-mail a ser usado é + +IV) Não é permitido remover esta licença da distribuição das fontes do Vim, + partes dela ou de uma versão modificada. Você pode usar esta licença + para versões anteriores do Vim em vez da licença com a qual elas vieram, + a seu critério. diff --git a/lang/README.pt_br.txt b/lang/README.pt_br.txt new file mode 100644 index 0000000000..f5084ce1d6 --- /dev/null +++ b/lang/README.pt_br.txt @@ -0,0 +1,131 @@ +README.txt para a versão 9.1 do Vim: Vi IMproved. + +O QUE É VIM? + +Vim é uma versão muito melhorada do bom e velho editor UNIX Vi. Muitos novos +recursos foram adicionados: desfazer multinível, destaque de sintaxe, histórico +de linha de comando, ajuda on-line, verificação ortográfica, completar +nome de arquivo, operações de bloco, linguagem de script, etc. Há também uma +interface gráfica (GUI) disponível. Ainda assim, a compatibilidade com Vi é +mantida, aqueles que têm Vi "nos dedos" se sentirão em casa. +Veja "runtime/doc/vi_diff.txt" para diferenças com Vi. + +Este editor é muito útil para editar programas e outros arquivos de texto +simples. Todos os comandos são fornecidos com caracteres normais do teclado, +então aqueles que podem digitar com dez dedos podem trabalhar muito rápido. +Além disso, as teclas de função podem ser mapeadas para comandos pelo usuário, +e o mouse pode ser usado. + +O Vim funciona em MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS e quase todos +os sabores do UNIX. A portabilidade para outros sistemas não deve ser difícil. +Versões mais antigas do Vim rodam em MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista, +Amiga DOS, Atari MiNT, BeOS, RISC OS e OS/2. Eles não são mais mantidos. + +DISTRIBUIÇÃO + +Você pode frequentemente usar seu gerenciador de pacotes favorito para +instalar o Vim. No Mac e Linux, uma pequena versão do Vim é pré-instalada, +você ainda precisa instalar o Vim se quiser mais recursos. + +Existem distribuições separadas para Unix, PC, Amiga e alguns outros sistemas. +Este arquivo README.txt vem com o arquivo de tempo de execução. Ele inclui a +documentação, arquivos de sintaxe e outros arquivos que são usados ​​em +tempo de execução. Para executar o Vim, você deve obter um dos arquivos +binários ou um arquivo fonte. Qual deles você precisa depende do sistema em +que deseja executá-lo e se você deseja ou deve compilá-lo você mesmo. +Verifique "https://www.vim.org/download.php" para uma visão geral das +distribuições disponíveis atualmente. + +Alguns lugares populares para obter o Vim mais recente: +* Confira o repositório git do github: https://github.com/vim/vim. +* Obtenha o código-fonte como um arquivo: https://github.com/vim/vim/tags. +* Obtenha um executável do Windows do repositório vim-win32-installer: +https://github.com/vim/vim-win32-installer/releases. + +COMPILAR + +Se você obteve uma distribuição binária, não precisa compilar o Vim. Se você +obteve uma distribuição de origem, todo o material para compilar o Vim está no +diretório "src". Veja src/INSTALL para instruções. + +INSTALAÇÃO + +Veja um desses arquivos para instruções específicas do sistema. No diretório +READMEdir (no repositório) ou no diretório superior (se você descompactar um +arquivo): + +README_ami.txt Amiga +README_unix.txt Unix +README_dos.txt MS-DOS e MS-Windows +README_mac.txt Macintosh +README_haiku.txt Haiku +README_vms.txt VMS + +Existem outros arquivos README_*.txt, dependendo da distribuição que você usou. + +DOCUMENTAÇÃO + +O tutor do Vim é um curso de treinamento de uma hora para iniciantes. +Frequentemente, ele pode ser iniciado como "vimtutor". Veja ":help tutor" +para mais informações. + +O melhor é usar ":help" no Vim. Se você ainda não tem um executável, leia +"runtime/doc/help.txt". Ele contém direcionamentos para os outros arquivos +de documentação. O Manual do Usuário é lido como um livro e é recomendado +para aprender a usar o Vim. Veja ":help user-manual". + +CÓPIA + +O Vim é um Charityware. Você pode usá-lo e copiá-lo o quanto quiser, mas +encorajamos que faça uma doação para ajudar órfãos em Uganda. Leia o arquivo +"runtime/doc/uganda.txt" para detalhes (execute ":help uganda" dentro do Vim). + +Resumo da licença: Não há restrições quanto ao uso ou distribuição de uma +cópia não modificada do Vim. Partes do Vim também podem ser distribuídas, mas +o texto da licença deve sempre ser incluído. Para versões modificadas, algumas +restrições se aplicam. A licença é compatível com GPL, você pode compilar o Vim +com bibliotecas GPL e distribuí-lo. + +PATROCÍNIO + +Corrigir bugs e adicionar novos recursos exige muito tempo e esforço. +Para mostrar seu apreço pelo trabalho e motivar os desenvolvedores a continuar +trabalhando no Vim, envie uma doação. + +O dinheiro que você doou será usado principalmente para ajudar crianças em +Uganda. Veja "runtime/doc/uganda.txt". Mas, ao mesmo tempo, as doações aumentam +a motivação da equipe de desenvolvimento para continuar trabalhando no Vim! + +Para as informações mais recentes sobre patrocínio, consulte o site do Vim: + https://www.vim.org/sponsor/ + +CONTRIBUIÇÕES + +Se você gostaria de ajudar a tornar o Vim melhor, veja o arquivo CONTRIBUTING.md. + +INFORMAÇÕES + +Se você estiver no macOS, pode usar o MacVim: https://macvim.org + +As últimas notícias sobre o Vim podem ser encontradas na página inicial do Vim: + https://www.vim.org/ + +Se você tiver problemas, dê uma olhada na documentação ou dicas do Vim: + https://www.vim.org/docs.php + https://vim.fandom.com/wiki/Vim_Tips_Wiki + +Se você ainda tiver problemas ou quaisquer outras perguntas, use uma das listas +de discussão para discuti-las com usuários e desenvolvedores do Vim: + https://www.vim.org/maillist.php + +Se nada mais funcionar, relate os bugs diretamente para a lista de discussão +vim-dev: + + +AUTOR PRINCIPAL + +A maior parte do Vim foi criada por Bram Moolenaar , +":help Bram-Moolenaar" + +Envie quaisquer outros comentários, patches, flores e sugestões para +a lista de discussão vim-dev: diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi index 878867f68f..8842dac639 100644 --- a/nsis/gvim.nsi +++ b/nsis/gvim.nsi @@ -1,6 +1,6 @@ # NSIS file to create a self-installing exe for Vim. # It requires NSIS version 3.0 or later. -# Last Change: 2025 Jan 05 +# Last Change: 2025 Feb 24 Unicode true @@ -216,6 +216,7 @@ Page custom SetCustom ValidateCustom # Include support for other languages: !if ${HAVE_MULTI_LANG} + !include "lang\portuguesebr.nsi" !include "lang\danish.nsi" !include "lang\dutch.nsi" !include "lang\german.nsi" @@ -806,7 +807,8 @@ Function .onInit ClearErrors System::Call 'kernel32::GetUserDefaultLocaleName(t.r19, *i${NSIS_MAX_STRLEN})' StrCmp $R9 "zh-cn" coincide 0 - StrCmp $R9 "zh-tw" 0 part + StrCmp $R9 "zh-tw" coincide 0 + StrCmp $R9 "pt-br" 0 part coincide: System::Call 'User32::CharLower(t r19 r19)*i${NSIS_MAX_STRLEN}' ${StrRep} $lng_usr "$R9" "-" "_" diff --git a/nsis/lang/README.txt b/nsis/lang/README.txt index 07899cbe2d..0340c308b1 100644 --- a/nsis/lang/README.txt +++ b/nsis/lang/README.txt @@ -18,6 +18,13 @@ allowable length of strings. For example: drop-down lists on the .vimrc page - 55 characters. Characters in this case mean characters of the English alphabet. +Once the message translation file is ready, it must be included in the +"gvim.nsi" file. +Find the line "# Include support for other languages:" in the file "gvim.nsi" +and specify the name of the file with your translation below the line +!if ${HAVE_MULTI_LANG}, similar to the entries already there. File names are +specified in alphabetical order. + If you do not yet have a translated "LICENSE" file and/or a main "README.txt" file, set the following values: @@ -32,3 +39,25 @@ variables similarly to what is done in the other translation files. Translation files should be located in the "lang" subdirectory of the root directory. The name of the files is as follows: "README.xx.txt", where xx is the language code according to ISO639. + + +There are two ways to test the installer in different languages: + +1. Find and uncomment the "!define MUI_LANGDLL_ALWAYSSHOW" line in the + "gvim.nsi" file and rebuild the installer. + Now every time you run it, you will see a dialog box with the possibility to + select the language of the installer. + +2. If the Vim editor is already installed in your system, delete the + "Installer Language" parameter in the Windows registry under + "HKEY_CURRENT_USER\Software\Vim". + Or you can create a file "NoLangInstallerVim.reg" with the following content: + + Windows Registry Editor Version 5.00 + + [HKEY_CURRENT_USER\Software\Vim] + "Installer Language"=- + + and apply it by double-clicking on it. + After these steps, when you start the installer, a window with the installer + language selection will also be displayed. diff --git a/nsis/lang/portuguesebr.nsi b/nsis/lang/portuguesebr.nsi new file mode 100644 index 0000000000..ea92f54e80 --- /dev/null +++ b/nsis/lang/portuguesebr.nsi @@ -0,0 +1,291 @@ +# vi:set ts=8 sts=4 sw=4 et fdm=marker: +# +# portuguesebr.nsi: Brazilian Portuguese strings for gvim NSIS installer. +# +# Locale ID : 1046 +# Locale Name : pt-BR +# fileencoding : UTF-8 +# Author : Rafael Fontenelle + +!insertmacro MUI_LANGUAGE "PortugueseBR" + + +# Overwrite the default translation. +# These strings should be always English. Otherwise dosinst.c fails. +LangString ^SetupCaption ${LANG_PORTUGUESEBR} \ + "Configuração do $(^Name)" +LangString ^UninstallCaption ${LANG_PORTUGUESEBR} \ + "Desinstalação do $(^Name)" + +############################################################################## +# License file for the license page {{{1 +############################################################################## + +LicenseLangString page_lic_file ${LANG_PORTUGUESEBR} "..\lang\LICENSE.pt_br.nsis.txt" + +############################################################################## +# README.txt file, which is opened after installation {{{1 +############################################################################## + +LangString vim_readme_file ${LANG_PORTUGUESEBR} "README.pt_br.txt" + +############################################################################## +# MUI Configuration Strings {{{1 +############################################################################## + +#LangString str_dest_folder ${LANG_PORTUGUESEBR} \ +# "Pasta de destino (Deve terminar com $\"vim$\")" + +LangString str_show_readme ${LANG_PORTUGUESEBR} \ + "Mostrar o README ao concluir a instalação" + +# Install types: +LangString str_type_typical ${LANG_PORTUGUESEBR} \ + "Típica" + +LangString str_type_minimal ${LANG_PORTUGUESEBR} \ + "Mínima" + +LangString str_type_full ${LANG_PORTUGUESEBR} \ + "Completa" + + +############################################################################## +# Section Titles & Description {{{1 +############################################################################## + +LangString str_section_old_ver ${LANG_PORTUGUESEBR} \ + "Desinstalar versões existentes" +LangString str_desc_old_ver ${LANG_PORTUGUESEBR} \ + "Desinstala versões do Vim existentes no seu sistema." + +LangString str_section_exe ${LANG_PORTUGUESEBR} \ + "Vim GUI e arquivos de runtime" +LangString str_desc_exe ${LANG_PORTUGUESEBR} \ + "Executáveis ​​e arquivos de runtime do Vim GUI. Este componente \ + é obrigatório." + +LangString str_section_console ${LANG_PORTUGUESEBR} \ + "Programa de console do Vim" +LangString str_desc_console ${LANG_PORTUGUESEBR} \ + "Versão de console do Vim (vim.exe)." + +LangString str_section_batch ${LANG_PORTUGUESEBR} \ + "Criar arquivos .bat" +LangString str_desc_batch ${LANG_PORTUGUESEBR} \ + "Cria arquivos .bat para variantes do Vim no diretório Windows para \ + usar na linha de comando." + +LangString str_group_icons ${LANG_PORTUGUESEBR} \ + "Criar ícones para o Vim" +LangString str_desc_icons ${LANG_PORTUGUESEBR} \ + "Cria ícones para Vim em vários locais para facilitar o acesso rápido." + +LangString str_section_desktop ${LANG_PORTUGUESEBR} \ + "Na área de trabalho" +LangString str_desc_desktop ${LANG_PORTUGUESEBR} \ + "Cria ícones para executáveis do gVim na área de trabalho." + +LangString str_section_start_menu ${LANG_PORTUGUESEBR} \ + "Na pasta Programas do Menu Iniciar" +LangString str_desc_start_menu ${LANG_PORTUGUESEBR} \ + "Adiciona Vim na pasta de programas do menu iniciar." + +#LangString str_section_quick_launch ${LANG_PORTUGUESEBR} \ +# "Na barra de Inicialização Rápida" +#LangString str_desc_quick_launch ${LANG_PORTUGUESEBR} \ +# "Adiciona um atalho para o Vim na barra de inicialização rápida." + +LangString str_section_edit_with ${LANG_PORTUGUESEBR} \ + "Adicionar menu de contexto do Vim" +LangString str_desc_edit_with ${LANG_PORTUGUESEBR} \ + "Adiciona o Vim à lista $\"Abrir com...$\" do menu de contexto." + +#LangString str_section_edit_with32 ${LANG_PORTUGUESEBR} \ +# "Versão 32 bits" +#LangString str_desc_edit_with32 ${LANG_PORTUGUESEBR} \ +# "Adiciona o Vim à lista $\"Abrir com...$\" do menu de contexto \ +# para aplicativos 32 bits." + +#LangString str_section_edit_with64 ${LANG_PORTUGUESEBR} \ +# "Versão 64 bits" +#LangString str_desc_edit_with64 ${LANG_PORTUGUESEBR} \ +# "Adiciona o Vim à lista $\"Abrir com...$\" do menu de contexto \ +# para aplicativos 64 bits." + +LangString str_section_vim_rc ${LANG_PORTUGUESEBR} \ + "Criar configuração padrão" +LangString str_desc_vim_rc ${LANG_PORTUGUESEBR} \ + "Cria um arquivo de configuração padrão (_vimrc) se não já existir." + +LangString str_group_plugin ${LANG_PORTUGUESEBR} \ + "Criar diretórios de plugins" +LangString str_desc_plugin ${LANG_PORTUGUESEBR} \ + "Cria diretórios de plugins. Diretórios de plugins permitem estender \ + o Vim adicionando um arquivo a um direótrio." + +LangString str_section_plugin_home ${LANG_PORTUGUESEBR} \ + "Privados" +LangString str_desc_plugin_home ${LANG_PORTUGUESEBR} \ + "Cria diretórios de plugins no diretório HOME." + +LangString str_section_plugin_vim ${LANG_PORTUGUESEBR} \ + "Compartilhados" +LangString str_desc_plugin_vim ${LANG_PORTUGUESEBR} \ + "Cria diretórios de plugins no diretório de instalação do Vim, \ + o qual é usado por todos os usuários do sistema." + +LangString str_section_nls ${LANG_PORTUGUESEBR} \ + "Suporte ao idioma nativo" +LangString str_desc_nls ${LANG_PORTUGUESEBR} \ + "Instala arquivos para suporte ao idioma nativo." + +LangString str_unsection_register ${LANG_PORTUGUESEBR} \ + "Desregistrar Vim" +LangString str_desc_unregister ${LANG_PORTUGUESEBR} \ + "Remove os registras do Vim do sistema." + +LangString str_unsection_exe ${LANG_PORTUGUESEBR} \ + "Remover arquivos executáveis/runtime do Vim" +LangString str_desc_rm_exe ${LANG_PORTUGUESEBR} \ + "Remove todos os arquivos executáveis e de runtime do Vim." + +LangString str_ungroup_plugin ${LANG_PORTUGUESEBR} \ + "Remover diretórios de plugins" +LangString str_desc_rm_plugin ${LANG_PORTUGUESEBR} \ + "Remove os diretórios de plugins se eles estiverem vazios." + +LangString str_unsection_plugin_home ${LANG_PORTUGUESEBR} \ + "Privados" +LangString str_desc_rm_plugin_home ${LANG_PORTUGUESEBR} \ + "Remove os diretórios de plugins do diretório HOME." + +LangString str_unsection_plugin_vim ${LANG_PORTUGUESEBR} \ + "Compartilhados" +LangString str_desc_rm_plugin_vim ${LANG_PORTUGUESEBR} \ + "Remove os diretórios de plugins do diretório de instalação do Vim." + +LangString str_unsection_rootdir ${LANG_PORTUGUESEBR} \ + "Remover diretório raiz do Vim" +LangString str_desc_rm_rootdir ${LANG_PORTUGUESEBR} \ + "Remove o diretório raiz do Vim. Ele contém seus \ + arquivos de configuração do Vim!" + + +############################################################################## +# Messages {{{1 +############################################################################## + +#LangString str_msg_too_many_ver ${LANG_PORTUGUESEBR} \ +# "Encontradas $vim_old_ver_count versões do Vim em seu sistema.$\r$\n\ +# Este instalador só consegue lidar com ${VIM_MAX_OLD_VER} versões\ +# no máximo.$\r$\n\ +# Por favor, remova algumas versões e comece novamente." + +#LangString str_msg_invalid_root ${LANG_PORTUGUESEBR} \ +# "Caminho de instalação inválido: $vim_install_root!$\r$\n\ +# Ele deve terminar com $\"vim$\"." + +#LangString str_msg_bin_mismatch ${LANG_PORTUGUESEBR} \ +# "Incompatibilidade de caminho de binários!$\r$\n$\r$\n\ +# Esperava que o caminho de binários fosse $\"$vim_bin_path$\",$\r$\n\ +# mas o sistema indica que o caminho de binários é $\"$INSTDIR$\"." + +#LangString str_msg_vim_running ${LANG_PORTUGUESEBR} \ +# "Vim ainda está em execução em seu sistema.$\r$\n\ +# Por favor, feche todas as instâncias do Vim para poder continuar." + +#LangString str_msg_register_ole ${LANG_PORTUGUESEBR} \ +# "Tentativa de registrar o Vim com OLE. \ +# Não há mensagem que indique se isso funciona ou não." + +#LangString str_msg_unreg_ole ${LANG_PORTUGUESEBR} \ +# "Tentando desregistrar o Vim com OLE. \ +# Não há mensagem que indique se isso funciona ou não." + +#LangString str_msg_rm_start ${LANG_PORTUGUESEBR} \ +# "Desinstalando a seguinte versão:" + +#LangString str_msg_rm_fail ${LANG_PORTUGUESEBR} \ +# "Falha ao desinstalar a seguinte versão:" + +#LangString str_msg_no_rm_key ${LANG_PORTUGUESEBR} \ +# "Não foi possível encontrar a chave de registro do desinstalador." + +#LangString str_msg_no_rm_reg ${LANG_PORTUGUESEBR} \ +# "Não foi possível encontrar o desinstalador a partir do registro." + +#LangString str_msg_no_rm_exe ${LANG_PORTUGUESEBR} \ +# "Não foi possível acessar o desinstalador." + +#LangString str_msg_rm_copy_fail ${LANG_PORTUGUESEBR} \ +# "Falha ao copiar o desinstalador para um diretório temporário." + +#LangString str_msg_rm_run_fail ${LANG_PORTUGUESEBR} \ +# "Falha ao executar o desinstalador." + +#LangString str_msg_abort_install ${LANG_PORTUGUESEBR} \ +# "Instalador será interrompido." + +LangString str_msg_install_fail ${LANG_PORTUGUESEBR} \ + "A instalação falhou. Mais sorte na próxima vez." + +LangString str_msg_rm_exe_fail ${LANG_PORTUGUESEBR} \ + "Alguns arquivos em $0 não foram excluídos!$\r$\n\ + Você deve fazê-lo manualmente." + +#LangString str_msg_rm_root_fail ${LANG_PORTUGUESEBR} \ +# "AVISO: Não foi possível remover $\"$vim_install_root$\", \ +# pois não está vazio!" + +LangString str_msg_uninstalling ${LANG_PORTUGUESEBR} \ + "Desinstalando a versão antiga..." + +LangString str_msg_registering ${LANG_PORTUGUESEBR} \ + "Registrando..." + +LangString str_msg_unregistering ${LANG_PORTUGUESEBR} \ + "Desregistrando..." + + +############################################################################## +# Dialog Box {{{1 +############################################################################## + +LangString str_vimrc_page_title ${LANG_PORTUGUESEBR} \ + "Escolher configurações do _vimrc" +LangString str_vimrc_page_subtitle ${LANG_PORTUGUESEBR} \ + "Escolha as configurações para melhorias, teclado e mouse." + +LangString str_msg_compat_title ${LANG_PORTUGUESEBR} \ + " Comportamento Vi / Vim " +LangString str_msg_compat_desc ${LANG_PORTUGUESEBR} \ + "&Compatibilidade e melhorias" +LangString str_msg_compat_vi ${LANG_PORTUGUESEBR} \ + "Compatível com Vi" +LangString str_msg_compat_vim ${LANG_PORTUGUESEBR} \ + "Vim original" +LangString str_msg_compat_defaults ${LANG_PORTUGUESEBR} \ + "Vim com algumas melhorias (carrega defaults.vim)" +LangString str_msg_compat_all ${LANG_PORTUGUESEBR} \ + "Vim com todas as melhorias (carrega vimrc_example.vim) (Padrão)" + +LangString str_msg_keymap_title ${LANG_PORTUGUESEBR} \ + " Mapeamentos " +LangString str_msg_keymap_desc ${LANG_PORTUGUESEBR} \ + "&Remapear algumas teclas para o Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)" +LangString str_msg_keymap_default ${LANG_PORTUGUESEBR} \ + "Não remapear teclas (Padrão)" +LangString str_msg_keymap_windows ${LANG_PORTUGUESEBR} \ + "Remapear algumas teclas" + +LangString str_msg_mouse_title ${LANG_PORTUGUESEBR} \ + " Mouse " +LangString str_msg_mouse_desc ${LANG_PORTUGUESEBR} \ + "&Comportamento de botões direito e esquerdo" +LangString str_msg_mouse_default ${LANG_PORTUGUESEBR} \ + "Direito: menu popup, Esquerdo: modo visual (Padrão)" +LangString str_msg_mouse_windows ${LANG_PORTUGUESEBR} \ + "Direito: menu popup, Esquerdo: modo de seleção (Windows)" +LangString str_msg_mouse_unix ${LANG_PORTUGUESEBR} \ + "Direito: estende seleção, Esquerdo: modo visual (Unix)" diff --git a/runtime/autoload/dist/man.vim b/runtime/autoload/dist/man.vim index d9dbaf47d4..32bf80c765 100644 --- a/runtime/autoload/dist/man.vim +++ b/runtime/autoload/dist/man.vim @@ -5,6 +5,8 @@ " Autoload Split: Bram Moolenaar " Last Change: 2024 Jan 17 (make it work on AIX, see #13847) " 2024 Jul 06 (honor command modifiers, #15117) +" 2025 Mar 05 (add :keepjumps, #16791) +" 2025 Mar 09 (improve :Man completion for man-db, #16843) let s:cpo_save = &cpo set cpo-=C @@ -34,6 +36,88 @@ endtry unlet! uname_s +let s:man_db_pages_by_section = v:null +func! s:ManDbPagesBySection() abort + if s:man_db_pages_by_section isnot v:null + return s:man_db_pages_by_section + endif + let s:man_db_pages_by_section = {} + let list_command = 'apropos --long .' + let unparsed_lines = [] + for line in systemlist(list_command) + " Typical lines: + " vim (1) - Vi IMproved, a programmer's text editor + " + " Unusual lines: + " pgm_read_ T _ (3avr) - (unknown subject) + " + " Code that shows the line's format: + " https://gitlab.com/man-db/man-db/-/blob/2607d203472efb036d888e9e7997724a41a53876/src/whatis.c#L409 + let match = matchlist(line, '^\(.\{-1,}\) (\(\S\+\)) ') + if empty(match) + call add(unparsed_lines, line) + continue + endif + let [page, section] = match[1:2] + if !has_key(s:man_db_pages_by_section, section) + let s:man_db_pages_by_section[section] = [] + endif + call add(s:man_db_pages_by_section[section], page) + endfor + if !empty(unparsed_lines) + echomsg 'Unable to parse ' .. string(len(unparsed_lines)) .. ' lines ' .. + \ 'from the output of `' .. list_command .. '`. Example lines:' + for line in unparsed_lines[:9] + echomsg line + endfor + endif + return s:man_db_pages_by_section +endfunc + +func! dist#man#Reload() abort + if g:ft_man_implementation ==# 'man-db' + let s:man_db_pages_by_section = v:null + call s:ManDbPagesBySection() + endif +endfunc + +func! s:StartsWithCaseInsensitive(haystack, needle) abort + if empty(a:needle) + return v:true + endif + return a:haystack[:len(a:needle)-1] ==? a:needle +endfunc + +func! dist#man#ManDbComplete(arg_lead, cmd_line, cursor_pos) abort + let args = split(trim(a:cmd_line[: a:cursor_pos - 1], '', 1), '', v:true) + let pages_by_section = s:ManDbPagesBySection() + if len(args) > 2 + " Page in the section args[1]. At least on Debian testing as of + " 2025-03-06, man seems to match sections case-insensitively and match any + " prefix of the section. E.g., `man 3 sigprocmask` and `man 3PoSi + " sigprocmask` with both load sigprocmask(3posix) even though the 3 in the + " first command is also the name of a different section. + let results = [] + for [section, pages] in items(pages_by_section) + if s:StartsWithCaseInsensitive(section, args[1]) + call extend(results, pages) + endif + endfor + else + " Could be a section, or a page in any section. Add space after sections + " since there has to be a second argument in that case. + let results = flattennew(values(pages_by_section), 1) + for section in keys(pages_by_section) + call add(results, section .. ' ') + endfor + endif + call sort(results) + call uniq(results) + call filter(results, + \ {_, val -> s:StartsWithCaseInsensitive(val, a:arg_lead)}) + return results +endfunc + func s:ParseIntoPageAndSection() " Accommodate a reference that terminates in a hyphen. " @@ -188,7 +272,7 @@ func dist#man#GetPage(cmdmods, ...) setl buftype=nofile noswapfile setl fdc=0 ma nofen nonu nornu - %delete _ + keepjumps %delete _ let unsetwidth = 0 if empty($MANWIDTH) let $MANWIDTH = winwidth(0) @@ -218,10 +302,10 @@ func dist#man#GetPage(cmdmods, ...) endif " Remove blank lines from top and bottom. while line('$') > 1 && getline(1) =~ '^\s*$' - 1delete _ + keepjumps 1delete _ endwhile while line('$') > 1 && getline('$') =~ '^\s*$' - $delete _ + keepjumps $delete _ endwhile 1 setl ft=man nomod diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim index 39060508bf..e599d1ed95 100644 --- a/runtime/autoload/getscript.vim +++ b/runtime/autoload/getscript.vim @@ -12,6 +12,7 @@ " autoloading search path fix " substitution of hardcoded commands with global variables " 2024 Nov 12 by Vim Project: fix problems on Windows (#16036) +" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755) " }}} " " GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim @@ -100,6 +101,10 @@ if !exists("g:GetLatestVimScripts_bunzip2") let g:GetLatestVimScripts_bunzip2= "bunzip2" endif +if !exists("g:GetLatestVimScripts_bunzip3") + let g:GetLatestVimScripts_bunzip3= "bunzip3" +endif + if !exists("g:GetLatestVimScripts_gunzip") let g:GetLatestVimScripts_gunzip= "gunzip" endif @@ -565,73 +570,55 @@ fun! s:GetOneScript(...) " -------------------------------------------------------------------------- " call Decho("checking if plugin requested autoinstall: doautoinstall=".doautoinstall) if doautoinstall -" call Decho(" ") -" call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname)) if filereadable(sname) -" call Decho("<".sname."> is readable") -" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)) exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall) let curdir = fnameescape(substitute(getcwd(),'\','/','ge')) let installdir= curdir."/Installed" if !isdirectory(installdir) call mkdir(installdir) endif -" call Decho("curdir<".curdir."> installdir<".installdir.">") -" call Decho("exe cd ".fnameescape(s:autoinstall)) exe "cd ".fnameescape(s:autoinstall) " determine target directory for moves let firstdir= substitute(&rtp,',.*$','','') let pname = substitute(sname,'\..*','.vim','') -" call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?") if filereadable(firstdir.'/AsNeeded/'.pname) let tgtdir= "AsNeeded" else let tgtdir= "plugin" endif -" call Decho("tgtdir<".tgtdir."> pname<".pname.">") - + " decompress if sname =~ '\.bz2$' -" call Decho("decompress: attempt to bunzip2 ".sname) exe "sil !".g:GetLatestVimScripts_bunzip2." ".shellescape(sname) let sname= substitute(sname,'\.bz2$','','') -" call Decho("decompress: new sname<".sname."> after bunzip2") + elseif sname =~ '\.bz3$' + exe "sil !".g:GetLatestVimScripts_bunzip3." ".shellescape(sname) + let sname= substitute(sname,'\.bz3$','','') elseif sname =~ '\.gz$' -" call Decho("decompress: attempt to gunzip ".sname) exe "sil !".g:GetLatestVimScripts_gunzip." ".shellescape(sname) let sname= substitute(sname,'\.gz$','','') -" call Decho("decompress: new sname<".sname."> after gunzip") elseif sname =~ '\.xz$' -" call Decho("decompress: attempt to unxz ".sname) exe "sil !".g:GetLatestVimScripts_unxz." ".shellescape(sname) let sname= substitute(sname,'\.xz$','','') -" call Decho("decompress: new sname<".sname."> after unxz") else " call Decho("no decompression needed") endif - + " distribute archive(.zip, .tar, .vba, .vmb, ...) contents if sname =~ '\.zip$' -" call Decho("dearchive: attempt to unzip ".sname) exe "silent !".g:GetLatestVimScripts_unzip." -o ".shellescape(sname) elseif sname =~ '\.tar$' -" call Decho("dearchive: attempt to untar ".sname) exe "silent !tar -xvf ".shellescape(sname) elseif sname =~ '\.tgz$' -" call Decho("dearchive: attempt to untar+gunzip ".sname) exe "silent !tar -zxvf ".shellescape(sname) elseif sname =~ '\.taz$' -" call Decho("dearchive: attempt to untar+uncompress ".sname) exe "silent !tar -Zxvf ".shellescape(sname) elseif sname =~ '\.tbz$' -" call Decho("dearchive: attempt to untar+bunzip2 ".sname) exe "silent !tar -jxvf ".shellescape(sname) elseif sname =~ '\.txz$' -" call Decho("dearchive: attempt to untar+xz ".sname) exe "silent !tar -Jxvf ".shellescape(sname) elseif sname =~ '\.vba$\|\.vmb$' -" call Decho("dearchive: attempt to handle a vimball: ".sname) silent 1split if exists("g:vimball_home") let oldvimballhome= g:vimball_home @@ -648,25 +635,21 @@ fun! s:GetOneScript(...) else " call Decho("no dearchiving needed") endif - + " --------------------------------------------- " move plugin to plugin/ or AsNeeded/ directory " --------------------------------------------- if sname =~ '.vim$' -" call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir) exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir else -" call Decho("dearchive: move <".sname."> to installdir<".installdir.">") exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir endif if tgtdir != "plugin" -" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape("plugin/".pname)." ".tgtdir) exe "silent !".g:GetLatestVimScripts_mv." ".shellescape("plugin/".pname)." ".tgtdir endif - + " helptags step let docdir= substitute(&rtp,',.*','','e')."/doc" -" call Decho("helptags: docdir<".docdir.">") exe "helptags ".fnameescape(docdir) exe "cd ".fnameescape(curdir) endif @@ -681,13 +664,8 @@ fun! s:GetOneScript(...) " update the data in the file call setline(line("."),modline) -" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">") -" else " Decho -" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update") endif -" call Dredir("BUFFER TEST (GetOneScript)","ls!") -" call Dret("GetOneScript") endfun " --------------------------------------------------------------------- diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim index 5c4499fa6b..4aab915661 100644 --- a/runtime/autoload/tar.vim +++ b/runtime/autoload/tar.vim @@ -1,9 +1,19 @@ " tar.vim: Handles browsing tarfiles - AUTOLOAD PORTION -" Date: Feb 06, 2025 +" Date: Mar 01, 2025 " Version: 32b (with modifications from the Vim Project) " Maintainer: This runtime file is looking for a new maintainer. " Former Maintainer: Charles E Campbell " License: Vim License (see vim's :help license) +" Last Change: +" 2024 Jan 08 by Vim Project: fix a few problems (#138331, #12637, #8109) +" 2024 Feb 19 by Vim Project: announce adoption +" 2024 Nov 11 by Vim Project: support permissions (#7379) +" 2025 Feb 06 by Vim Project: add support for lz4 (#16591) +" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755) +" 2025 Mar 01 by Vim Project: fix syntax error in tar#Read() +" 2025 Mar 02 by Vim Project: escape the filename before using :read +" 2025 Mar 02 by Vim Project: determine the compression using readblob() +" instead of shelling out to file(1) " " Contains many ideas from Michael Toren's " @@ -153,21 +163,19 @@ fun! tar#Browse(tarfile) elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || \ tarfile =~# '\.\(tzst\)$' || tarfile =~# '\.\(tlz4\)$' - if has("unix") && executable("file") - let filekind= system("file ".shellescape(tarfile,1)) - else - let filekind= "" - endif + let header= s:Header(tarfile) - if filekind =~ "bzip2" + if header =~? 'bzip2' exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " - elseif filekind =~ "XZ" + elseif header =~? 'bzip3' + exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " + elseif header =~? 'xz' exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " - elseif filekind =~ "Zstandard" + elseif header =~? 'zstd' exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " - elseif filekind =~ "LZ4" + elseif header =~? 'lz4' exe "sil! r! lz4 --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " - else + elseif header =~? 'gzip' exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " endif @@ -175,6 +183,8 @@ fun! tar#Browse(tarfile) exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$' exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " + elseif tarfile =~# '\.\(bz3\|tb3\)$' + exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(lzma\|tlz\)$' exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(xz\|txz\)$' @@ -273,6 +283,8 @@ fun! tar#Read(fname,mode) set report=10 let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','') let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','') + " be careful not to execute special crafted files + let escape_file = fname->fnameescape() " changing the directory to the temporary earlier to allow tar to extract the file with permissions intact if !exists("*mkdir") @@ -316,6 +328,9 @@ fun! tar#Read(fname,mode) if fname =~ '\.bz2$' && executable("bzcat") let decmp= "|bzcat" let doro = 1 + elseif fname =~ '\.bz3$' && executable("bz3cat") + let decmp= "|bz3cat" + let doro = 1 elseif fname =~ '\.t\=gz$' && executable("zcat") let decmp= "|zcat" let doro = 1 @@ -334,7 +349,7 @@ fun! tar#Read(fname,mode) else let decmp="" let doro = 0 - if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$' + if fname =~ '\.bz2$\|\.bz3$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$' setlocal bin endif endif @@ -347,49 +362,51 @@ fun! tar#Read(fname,mode) if tarfile =~# '\.bz2$' exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file + elseif tarfile =~# '\.bz3$' + exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp + exe "read ".escape_file elseif tarfile =~# '\.\(gz\)$' exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file elseif tarfile =~# '\(\.tgz\|\.tbz\|\.txz\)' - if has("unix") && executable("file") - let filekind= system("file ".shellescape(tarfile,1)) - else - let filekind= "" - endif - if filekind =~ "bzip2" + let filekind= s:Header(tarfile) + if filekind =~? "bzip2" exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname - elseif filekind =~ "XZ" + exe "read ".escape_file + elseif filekind =~ "bzip3" + exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp + exe "read ".escape_file + elseif filekind =~? "xz" exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname - elseif filekind =~ "Zstandard" + exe "read ".escape_file + elseif filekind =~? "zstd" exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname - else + exe "read ".escape_file + elseif filekind =~? "gzip" exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file endif elseif tarfile =~# '\.lrp$' exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file elseif tarfile =~# '\.lzma$' exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file elseif tarfile =~# '\.\(xz\|txz\)$' exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file elseif tarfile =~# '\.\(lz4\|tlz4\)$' exe "sil! r! lz4 --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file else if tarfile =~ '^\s*-' " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. let tarfile = substitute(tarfile, '-', './-', '') endif exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp - exe "read ".fname + exe "read ".escape_file endif redraw! @@ -446,6 +463,10 @@ fun! tar#Write(fname) call system("bzip2 -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.bz2','','e') let compress= "bzip2 -- ".shellescape(tarfile,0) + elseif tarfile =~# '\.bz3' + call system("bzip3 -d -- ".shellescape(tarfile,0)) + let tarfile = substitute(tarfile,'\.bz3','','e') + let compress= "bzip3 -- ".shellescape(tarfile,0) elseif tarfile =~# '\.gz' call system("gzip -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.gz','','e') @@ -472,6 +493,7 @@ fun! tar#Write(fname) let tarfile = substitute(tarfile,'\.lzma','','e') let compress= "lzma -- ".shellescape(tarfile,0) endif + " Note: no support for name.tar.tbz/.txz/.tgz/.tlz4/.tzst if v:shell_error != 0 redraw! @@ -638,6 +660,15 @@ fun! tar#Extract() echo "***note*** successfully extracted ".fname endif + elseif filereadable(tarbase.".tar.bz3") + let extractcmd= substitute(extractcmd,"-","-j","") + call system(extractcmd." ".shellescape(tarbase).".tar.bz3 ".shellescape(fname)) + if v:shell_error != 0 + echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz3 ".fname.": failed!" | echohl NONE + else + echo "***note*** successfully extracted ".fname + endif + elseif filereadable(tarbase.".txz") let extractcmd= substitute(extractcmd,"-","-J","") call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname)) @@ -711,6 +742,29 @@ fun! s:Rmdir(fname) endif endfun +" s:FileHeader: {{{2 +fun! s:Header(fname) + let header= readblob(a:fname, 0, 6) + if header[0:2] == str2blob(['BZh']) " bzip2 header + return "bzip2" + elseif header[0:2] == str2blob(['BZ3']) " bzip3 header + return "bzip3" + elseif header == str2blob(["\3757zXZ\n"]) " xz header + return "xz" + elseif header[0:3] == str2blob(["\x28\xB5\x2F\xFD"]) " zstd header + return "zstd" + elseif header[0:3] == str2blob(["\004\"M\030"]) " lz4 header + return "lz4" + elseif (header[0:1] == str2blob(["\037\235"]) || + \ header[0:1] == str2blob(["\037\213"]) || + \ header[0:1] == str2blob(["\037\236"]) || + \ header[0:1] == str2blob(["\037\240"]) || + \ header[0:1] == str2blob(["\037\036"])) + return "gzip" + endif + return "unknown" +endfun + " --------------------------------------------------------------------- " tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2 fun! tar#Vimuntar(...) diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim index 774b798a83..6456984411 100644 --- a/runtime/autoload/vimball.vim +++ b/runtime/autoload/vimball.vim @@ -2,8 +2,10 @@ " Maintainer: This runtime file is looking for a new maintainer. " Original Author: Charles E. Campbell " Date: Apr 11, 2016 -" Version: 37 +" Version: 37 (with modifications from the Vim Project) " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim +" Last Change: +" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755) " Copyright: (c) 2004-2011 by Charles E. Campbell " The VIM LICENSE applies to Vimball.vim, and Vimball.txt " (see |copyright|) except use "Vimball" instead of "Vim". @@ -530,6 +532,26 @@ fun! vimball#Decompress(fname,...) exe "e ".escape(fname,' \') if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif + elseif expand("%") =~ '.*\.bz3' && executable("bunzip3") + " handle *.bz3 with bunzip3 + silent exe "!bunzip3 ".shellescape(a:fname) + if v:shell_error != 0 + call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip3 may have failed with <".a:fname.">") + endif + let fname= substitute(a:fname,'\.bz3$','','') + exe "e ".escape(fname,' \') + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif + + elseif expand("%") =~ '.*\.bz3' && executable("bzip3") + " handle *.bz3 with bzip3 -d + silent exe "!bzip3 -d ".shellescape(a:fname) + if v:shell_error != 0 + call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip3 -d" may have failed with <'.a:fname.">") + endif + let fname= substitute(a:fname,'\.bz3$','','') + exe "e ".escape(fname,' \') + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif + elseif expand("%") =~ '.*\.zip' && executable("unzip") " handle *.zip with unzip silent exe "!unzip ".shellescape(a:fname) diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim index 4a53fc5f28..dae4ddeb99 100644 --- a/runtime/autoload/zip.vim +++ b/runtime/autoload/zip.vim @@ -14,6 +14,7 @@ " 2024 Aug 05 by Vim Project: clean-up and make it work with shellslash on Windows " 2024 Aug 18 by Vim Project: correctly handle special globbing chars " 2024 Aug 21 by Vim Project: simplify condition to detect MS-Windows +" 2025 Mar 11 by Vim Project: handle filenames with leading '-' correctly " 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, @@ -343,6 +344,11 @@ fun! zip#Extract() return endif let target = fname->substitute('\[', '[[]', 'g') + " unzip 6.0 does not support -- to denote end-of-arguments + " unzip 6.1 (2010) apparently supports, it, but hasn't been released + " so the workaround is to use glob '[-]' so that it won't be considered an argument + " else, it would be possible to use 'unzip -o '-d/tmp' to extract the whole archive + let target = target->substitute('^-', '[&]', '') if &shell =~ 'cmd' && has("win32") let target = target \ ->substitute('[?*]', '[&]', 'g') diff --git a/runtime/compiler/context.vim b/runtime/compiler/context.vim index 093943e22d..c3780d461b 100644 --- a/runtime/compiler/context.vim +++ b/runtime/compiler/context.vim @@ -6,6 +6,7 @@ vim9script # Contributors: Enno Nagel # Last Change: 2024 Mar 29 # 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) +# 2025 Mar 11 by The Vim Project (add comment for Dispatch) if exists("g:current_compiler") finish @@ -15,6 +16,7 @@ import autoload '../autoload/context.vim' g:current_compiler = 'context' +# CompilerSet makeprg=context if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) || (!filereadable('Makefile') && !filereadable('makefile')) var makeprg = join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ') diff --git a/runtime/compiler/javac.vim b/runtime/compiler/javac.vim index 53cd772ed8..d4f24cd210 100644 --- a/runtime/compiler/javac.vim +++ b/runtime/compiler/javac.vim @@ -2,6 +2,7 @@ " Compiler: Java Development Kit Compiler " Maintainer: Doug Kearns " Last Change: 2024 Nov 19 (enable local javac_makeprg_params) +" 2025 Mar 11 (add comment for Dispatch) if exists("current_compiler") finish @@ -11,6 +12,7 @@ let current_compiler = "javac" let s:cpo_save = &cpo set cpo&vim +" CompilerSet makeprg=javac execute $'CompilerSet makeprg=javac\ {escape(get(b:, 'javac_makeprg_params', get(g:, 'javac_makeprg_params', '')), ' \|"')}' CompilerSet errorformat=%E%f:%l:\ error:\ %m, diff --git a/runtime/compiler/powershell.vim b/runtime/compiler/powershell.vim index 3d37d7c847..d5dd692096 100644 --- a/runtime/compiler/powershell.vim +++ b/runtime/compiler/powershell.vim @@ -6,6 +6,7 @@ " 2024 Apr 03 by the Vim Project (removed :CompilerSet definition) " 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg) " 2024 Nov 19 by the Vim Project (properly escape makeprg setting) +" 2025 Mar 11 by the Vim Project (add comment for Dispatch) if exists("current_compiler") finish @@ -50,6 +51,8 @@ let s:makeprg = g:ps1_makeprg_cmd .. ' %:p:S' " + CategoryInfo : ObjectNotFound: (Write-Ouput:String) [], CommandNotFoundException " + FullyQualifiedErrorId : CommandNotFoundException +" CompilerSet makeprg=pwsh +" CompilerSet makeprg=powershell execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"') " Showing error in context with underlining. diff --git a/runtime/compiler/svelte-check.vim b/runtime/compiler/svelte-check.vim new file mode 100644 index 0000000000..bfffe28108 --- /dev/null +++ b/runtime/compiler/svelte-check.vim @@ -0,0 +1,21 @@ +" Vim compiler file +" Compiler: svelte-check +" Maintainer: @Konfekt +" Last Change: 2025 Feb 27 + +if exists("current_compiler") | finish | endif +let current_compiler = "svelte-check" + +CompilerSet makeprg=npx\ svelte-check\ --output\ machine +CompilerSet errorformat=%*\\d\ %t%*\\a\ \"%f\"\ %l:%c\ \"%m\", +CompilerSet errorformat+=%-G%*\\d\ START\ %.%#, +CompilerSet errorformat+=%-G%*\\d\ COMPLETED\ %.%#, +CompilerSet errorformat+=%-G%.%# + +" " Fall-back for versions of svelte-check that don't support --output machine +" " before May 2020 https://github.com/sveltejs/language-tools/commit/9f7a90379d287a41621a5e78af5b010a8ab810c3 +" " which is before the first production release 1.1.31 of Svelte-Check +" CompilerSet makeprg=npx\ svelte-check +" CompilerSet errorformat=%A%f:%l:%c, +" CompilerSet errorformat+=%C%t%*\\a\\:\ %m, +" CompilerSet errorformat+=%-G%.%#, diff --git a/runtime/compiler/tex.vim b/runtime/compiler/tex.vim index bc1623729a..529f7f7710 100644 --- a/runtime/compiler/tex.vim +++ b/runtime/compiler/tex.vim @@ -6,6 +6,7 @@ " 2024 Apr 03 by the Vim Project (removed :CompilerSet definition) " 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg) " 2024 Nov 19 by the Vim Project (properly escape makeprg setting) +" 2025 Mar 11 by the Vim Project (add comment for Dispatch) if exists("current_compiler") finish @@ -28,6 +29,7 @@ if exists('b:tex_ignore_makefile') || exists('g:tex_ignore_makefile') || let current_compiler = "latex" endif let s:makeprg=current_compiler .. ' -interaction=nonstopmode' + " CompilerSet makeprg=latex execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"') else let current_compiler = 'make' diff --git a/runtime/compiler/tsc.vim b/runtime/compiler/tsc.vim index 76f525baa6..9922cd7dfa 100644 --- a/runtime/compiler/tsc.vim +++ b/runtime/compiler/tsc.vim @@ -2,6 +2,7 @@ " Compiler: TypeScript Compiler " Maintainer: Doug Kearns " Last Change: 2024 Apr 03 +" 2025 Mar 11 by The Vim Project (add comment for Dispatch, add tsc_makeprg variable) if exists("current_compiler") finish @@ -11,9 +12,9 @@ let current_compiler = "tsc" let s:cpo_save = &cpo set cpo&vim +" CompilerSet makeprg=tsc " CompilerSet makeprg=npx\ tsc - -CompilerSet makeprg=tsc +execute $'CompilerSet makeprg={escape(get(b:, 'tsc_makeprg', get(g:, 'tsc_makeprg', 'tsc')), ' \|"')}' CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m, \%trror\ TS%n:\ %m, \%-G%.%# diff --git a/runtime/compiler/typst.vim b/runtime/compiler/typst.vim index 13699f4675..b7e5ff5507 100644 --- a/runtime/compiler/typst.vim +++ b/runtime/compiler/typst.vim @@ -2,8 +2,9 @@ " Language: Typst " Previous Maintainer: Gregory Anders " Maintainer: Luca Saccarola +" Based On: https://github.com/kaarmu/typst.vim " Last Change: 2024 Dec 09 -" Based on: https://github.com/kaarmu/typst.vim +" 2025 Mar 11 by the Vim Project (add comment for Dispatch) if exists('current_compiler') finish @@ -13,4 +14,5 @@ let current_compiler = get(g:, 'typst_cmd', 'typst') " With `--diagnostic-format` we can use the default errorformat let s:makeprg = [current_compiler, 'compile', '--diagnostic-format', 'short', '%:S'] +" CompilerSet makeprg=typst execute 'CompilerSet makeprg=' . join(s:makeprg, '\ ') diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile index 82b5680812..41fdb17f5f 100644 --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -141,6 +141,11 @@ os_risc.txt: os_win32.txt: touch $@ +pi_netrw.txt: ../pack/dist/opt/netrw/doc/netrw.txt + cp ../pack/dist/opt/netrw/doc/netrw.txt $@.tmp + sed -e '1s/\(.*\)/\1 *pi_netrw.txt*/' $@.tmp > $@ && \ + rm -f $@.tmp + vietnamese.txt: touch $@ diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index dde27c4d92..60f5f2db69 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 9.1. Last change: 2025 Feb 08 +*autocmd.txt* For Vim version 9.1. Last change: 2025 Mar 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -389,6 +389,7 @@ Name triggered by ~ |TabNew| after creating a new tab page |WinClosed| after closing a window |TabClosed| after closing a tab page +|TabClosedPre| before closing a tab page |WinEnter| after entering another window |WinLeave| before leaving a window |TabEnter| after entering another tab page @@ -605,6 +606,8 @@ CmdUndefined When a user command is used but it isn't when it's used. The pattern is matched against the command name. Both and are set to the name of the command. + This is triggered even when inside an + autocommand defined without |autocmd-nested|. NOTE: Autocompletion won't work until the command is defined. An alternative is to always define the user command and have it @@ -936,7 +939,9 @@ FuncUndefined When a user function is used but it isn't when it's used. The pattern is matched against the function name. Both and are set to the name of the function. - Not triggered when compiling a |Vim9| + This is triggered even when inside an + autocommand defined without |autocmd-nested|, + but not triggered when compiling a |Vim9| function. NOTE: When writing Vim scripts a better alternative is to use an autoloaded function. @@ -1236,6 +1241,10 @@ Syntax When the 'syntax' option has been set. The See |:syn-on|. *TabClosed* TabClosed After closing a tab page. + *TabClosedPre* +TabClosedPre Before closing a tab page. The window layout + is locked, thus opening and closing of windows + is prohibited. *TabEnter* TabEnter Just after entering a tab page. |tab-page| After triggering the WinEnter and before @@ -1350,6 +1359,10 @@ TextYankPost After text has been yanked or deleted in the called recursively. It is not allowed to change the buffer text, see |textlock|. *E1064* + Also triggered indirectly when Vim tries to + become owner of the Visual selection because + of setting "autoselect" for 'guioptions' or + 'clipboard'. {only when compiled with the +eval feature} *User* diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index 9d00ab20e1..766e4fafc3 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2025 Feb 17 +*builtin.txt* For Vim version 9.1. Last change: 2025 Mar 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -207,7 +207,7 @@ foldclosedend({lnum}) Number last line of fold at {lnum} if closed foldlevel({lnum}) Number fold level at {lnum} foldtext() String line displayed for closed fold foldtextresult({lnum}) String text for closed fold at {lnum} -foreach({expr1}, {expr2}) List/Dict/Blob/String +foreach({expr1}, {expr2}) List/Tuple/Dict/Blob/String for each item in {expr1} call {expr2} foreground() Number bring the Vim window to the foreground fullcommand({name} [, {vim9}]) String get full command from {name} @@ -348,7 +348,7 @@ job_start({command} [, {options}]) Job start a job job_status({job}) String get the status of {job} job_stop({job} [, {how}]) Number stop {job} -join({list} [, {sep}]) String join {list} items into one String +join({expr} [, {sep}]) String join items in {expr} into one String js_decode({string}) any decode JS style JSON js_encode({expr}) String encode JS style JSON json_decode({string}) any decode JSON @@ -364,6 +364,7 @@ line2byte({lnum}) Number byte count of line {lnum} lispindent({lnum}) Number Lisp indent for line {lnum} list2blob({list}) Blob turn {list} of numbers into a Blob list2str({list} [, {utf8}]) String turn {list} of numbers into a String +list2tuple({list}) Tuple turn {list} of items into a tuple listener_add({callback} [, {buf}]) Number add a callback to listen to changes listener_flush([{buf}]) none invoke listener callbacks @@ -511,10 +512,10 @@ remove({blob}, {idx} [, {end}]) Number/Blob remove bytes {idx}-{end} from {blob} remove({dict}, {key}) any remove entry {key} from {dict} rename({from}, {to}) Number rename (move) file from {from} to {to} -repeat({expr}, {count}) List/Blob/String +repeat({expr}, {count}) List/Tuple/Blob/String repeat {expr} {count} times resolve({filename}) String get filename a shortcut points to -reverse({obj}) List/Blob/String +reverse({obj}) List/Tuple/Blob/String reverse {obj} round({expr}) Float round off {expr} rubyeval({expr}) any evaluate |Ruby| expression @@ -715,6 +716,7 @@ test_null_job() Job null value for testing test_null_list() List null value for testing test_null_partial() Funcref null value for testing test_null_string() String null value for testing +test_null_tuple() Tuple null value for testing test_option_not_set({name}) none reset flag indicating option was set test_override({expr}, {val}) none test with Vim internal overrides test_refcount({expr}) Number get the reference count of {expr} @@ -736,6 +738,7 @@ tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} trim({text} [, {mask} [, {dir}]]) String trim characters in {mask} from {text} trunc({expr}) Float truncate Float {expr} +tuple2list({tuple}) List turn {tuple} of items into a list type({expr}) Number type of value {expr} typename({expr}) String representation of the type of {expr} undofile({name}) String undo file name for {name} @@ -1311,19 +1314,25 @@ blob2str({blob} [, {options}]) *blob2str()* items: encoding Decode the bytes in {blob} using this encoding. The value is a |String|. See - |encoding-names| for the supported values. - *E1515* - An error is given and an empty List is returned if - an invalid byte sequence is encountered in {blob}, + |encoding-names| for the supported values + (plus the special value "none"). + *E1515* *E1516* + When current 'encoding' is "utf-8", an error is given and an + empty List is returned if an invalid byte sequence is + encountered in {blob}. To suppress this validation and get + potentially invalid string, set "encoding" in {options} to + "none". Returns an empty List if blob is empty. See also |str2blob()| Examples: > - blob2str(0z6162) returns ["ab"] - blob2str(0zC2ABC2BB) returns ["«»"] - blob2str(0zABBB, {'encoding': 'latin1'}) returns ["«»"] + blob2str(0z6162) returns ['ab'] + blob2str(0zC2ABC2BB) returns ['«»'] + blob2str(0z610A62) returns ['a', 'b'] + blob2str(0z610062) returns ['a\nb'] + blob2str(0zABBB, {'encoding': 'latin1'}) returns ['«»'] < Can also be used as a |method|: > GetBlob()->blob2str() @@ -2069,7 +2078,8 @@ copy({expr}) *copy()* that the original |List| can be changed without changing the copy, and vice versa. But the items are identical, thus changing an item changes the contents of both |Lists|. - A |Dictionary| is copied in a similar way as a |List|. + A |Tuple| or |Dictionary| is copied in a similar way as a + |List|. Also see |deepcopy()|. Can also be used as a |method|: > mylist->copy() @@ -2112,10 +2122,10 @@ cosh({expr}) *cosh()* count({comp}, {expr} [, {ic} [, {start}]]) *count()* *E706* Return the number of times an item with value {expr} appears - in |String|, |List| or |Dictionary| {comp}. + in |String|, |List|, |Tuple| or |Dictionary| {comp}. If {start} is given then start with the item with this index. - {start} can only be used with a |List|. + {start} can only be used with a |List| or a |Tuple|. When {ic} is given and it's |TRUE| then case is ignored. @@ -2235,7 +2245,8 @@ deepcopy({expr} [, {noref}]) *deepcopy()* *E698* |Dictionary|, a copy for it is made, recursively. Thus changing an item in the copy does not change the contents of the original |List|. - A |Dictionary| is copied in a similar way as a |List|. + A |Tuple| or |Dictionary| is copied in a similar way as a + |List|. When {noref} is omitted or zero a contained |List| or |Dictionary| is only copied once. All references point to @@ -2543,8 +2554,8 @@ echoraw({string}) *echoraw()* empty({expr}) *empty()* Return the Number 1 if {expr} is empty, zero otherwise. - - A |List| or |Dictionary| is empty when it does not have any - items. + - A |List|, |Tuple| or |Dictionary| is empty when it does + not have any items. - A |String| is empty when its length is zero. - A |Number| and |Float| are empty when their value is zero. - |v:false|, |v:none| and |v:null| are empty, |v:true| is not. @@ -3471,8 +3482,9 @@ foldtextresult({lnum}) *foldtextresult()* Return type: |String| -foreach({expr1}, {expr2}) *foreach()* - {expr1} must be a |List|, |String|, |Blob| or |Dictionary|. +foreach({expr1}, {expr2}) *foreach()* *E1525* + {expr1} must be a |List|, |Tuple|, |String|, |Blob| or + |Dictionary|. For each item in {expr1} execute {expr2}. {expr1} is not modified; its values may be, as with |:lockvar| 1. |E741| See |map()| and |filter()| to modify {expr1}. @@ -3481,10 +3493,10 @@ foreach({expr1}, {expr2}) *foreach()* If {expr2} is a |string|, inside {expr2} |v:val| has the value of the current item. For a |Dictionary| |v:key| has the key - of the current item and for a |List| |v:key| has the index of - the current item. For a |Blob| |v:key| has the index of the - current byte. For a |String| |v:key| has the index of the - current character. + of the current item and for a |List| or a |Tuple| |v:key| has + the index of the current item. For a |Blob| |v:key| has the + index of the current byte. For a |String| |v:key| has the + index of the current character. Examples: > call foreach(mylist, 'used[v:val] = true') < This records the items that are in the {expr1} list. @@ -3510,8 +3522,8 @@ foreach({expr1}, {expr2}) *foreach()* Can also be used as a |method|: > mylist->foreach(expr2) < - Return type: |String|, |Blob| list<{type}> or dict<{type}> - depending on {expr1} + Return type: |String|, |Blob|, list<{type}>, tuple<{type}> or + dict<{type}> depending on {expr1} *foreground()* foreground() Move the Vim window to the foreground. Useful when sent from @@ -3684,6 +3696,15 @@ get({list}, {idx} [, {default}]) *get()* *get()-list* < Return type: any, depending on {list} +get({tuple}, {idx} [, {default}]) *get()-tuple* + Get item {idx} from |Tuple| {tuple}. When this item is not + available return {default}. Return zero when {default} is + omitted. + Preferably used as a |method|: > + mytuple->get(idx) +< + Return type: any, depending on {tuple} + get({blob}, {idx} [, {default}]) *get()-blob* Get byte {idx} from |Blob| {blob}. When this byte is not available return {default}. Return -1 when {default} is @@ -4998,6 +5019,8 @@ getregionpos({pos1}, {pos2} [, {opts}]) *getregionpos()* Can also be used as a |method|: > getpos('.')->getregionpos(getpos("'a")) < + For an example, see the highlight-yank plugin |52.6| + Return type: list>> @@ -5817,8 +5840,8 @@ id({item}) *id()* < prevents {item} from being garbage collected and provides a way to get the {item} from the `id`. - {item} may be a List, Dictionary, Object, Job, Channel or - Blob. If the item is not a permitted type, or it is a null + {item} may be a List, Tuple, Dictionary, Object, Job, Channel + or Blob. If the item is not a permitted type, or it is a null value, then an empty String is returned. Can also be used as a |method|: > @@ -5845,12 +5868,12 @@ index({object}, {expr} [, {start} [, {ic}]]) *index()* Find {expr} in {object} and return its index. See |indexof()| for using a lambda to select the item. - If {object} is a |List| return the lowest index where the item - has a value equal to {expr}. There is no automatic - conversion, so the String "4" is different from the Number 4. - And the number 4 is different from the Float 4.0. The value - of 'ignorecase' is not used here, case matters as indicated by - the {ic} argument. + If {object} is a |List| or a |Tuple| return the lowest index + where the item has a value equal to {expr}. There is no + automatic conversion, so the String "4" is different from the + Number 4. And the number 4 is different from the Float 4.0. + The value of 'ignorecase' is not used here, case matters as + indicated by the {ic} argument. If {object} is |Blob| return the lowest index where the byte value is equal to {expr}. @@ -5874,11 +5897,11 @@ index({object}, {expr} [, {start} [, {ic}]]) *index()* indexof({object}, {expr} [, {opts}]) *indexof()* Returns the index of an item in {object} where {expr} is - v:true. {object} must be a |List| or a |Blob|. + v:true. {object} must be a |List|, a |Tuple| or a |Blob|. - If {object} is a |List|, evaluate {expr} for each item in the - List until the expression is v:true and return the index of - this item. + If {object} is a |List| or a |Tuple|, evaluate {expr} for each + item in the List or Tuple until the expression is v:true + and return the index of this item. If {object} is a |Blob| evaluate {expr} for each byte in the Blob until the expression is v:true and return the index of @@ -5886,11 +5909,11 @@ indexof({object}, {expr} [, {opts}]) *indexof()* {expr} must be a |string| or |Funcref|. - If {expr} is a |string|: If {object} is a |List|, inside - {expr} |v:key| has the index of the current List item and - |v:val| has the value of the item. If {object} is a |Blob|, - inside {expr} |v:key| has the index of the current byte and - |v:val| has the byte value. + If {expr} is a |string|: If {object} is a |List| or a |Tuple|, + inside {expr} |v:key| has the index of the current List or + Tuple item and |v:val| has the value of the item. If {object} + is a |Blob|, inside {expr} |v:key| has the index of the + current byte and |v:val| has the byte value. If {expr} is a |Funcref| it must take two arguments: 1. the key or the index of the current item. @@ -6200,9 +6223,9 @@ items({dict}) *items()* echo key .. ': ' .. value endfor < - A List or a String argument is also supported. In these - cases, items() returns a List with the index and the value at - the index. + A |List|, a |Tuple| or a |String| argument is also supported. + In these cases, items() returns a List with the index and the + value at the index. Can also be used as a |method|: > mydict->items() @@ -6213,16 +6236,17 @@ items({dict}) *items()* job_ functions are documented here: |job-functions-details| -join({list} [, {sep}]) *join()* - Join the items in {list} together into one String. +join({expr} [, {sep}]) *join()* + Join the items in {expr} together into one String. {expr} can + be a |List| or a |Tuple|. When {sep} is specified it is put in between the items. If {sep} is omitted a single space is used. Note that {sep} is not added at the end. You might want to add it there too: > let lines = join(mylist, "\n") .. "\n" -< String items are used as-is. |Lists| and |Dictionaries| are - converted into a string like with |string()|. - The opposite function is |split()|. +< String items are used as-is. |Lists|, |Tuples| and + |Dictionaries| are converted into a string like with + |string()|. The opposite function is |split()|. Can also be used as a |method|: > mylist->join() @@ -6316,6 +6340,8 @@ json_encode({expr}) *json_encode()* |Funcref| not possible, error |List| as an array (possibly null); when used recursively: [] + |Tuple| as an array (possibly null); when + used recursively: [] |Dict| as an object (possibly null); when used recursively: {} |Blob| as an array of the individual bytes @@ -6364,6 +6390,8 @@ len({expr}) *len()* *E701* used, as with |strlen()|. When {expr} is a |List| the number of items in the |List| is returned. + When {expr} is a |Tuple| the number of items in the |Tuple| is + returned. When {expr} is a |Blob| the number of bytes is returned. When {expr} is a |Dictionary| the number of entries in the |Dictionary| is returned. @@ -6545,6 +6573,25 @@ list2str({list} [, {utf8}]) *list2str()* Return type: |String| +list2tuple({list}) *list2tuple()* + Create a Tuple from a shallow copy of the list items. + Examples: > + list2tuple([1, 2, 3]) returns (1, 2, 3) +< |tuple2list()| does the opposite. + + This function doesn't recursively convert all the List items + in {list} to a Tuple. Note that the items are identical + between the list and the tuple, changing an item changes the + contents of both the tuple and the list. + + Returns an empty tuple on error. + + Can also be used as a |method|: > + GetList()->list2tuple() +< + Return type: tuple<{type}> (depending on the given |List|) + + listener_add({callback} [, {buf}]) *listener_add()* Add a callback function that will be invoked when changes have been made to buffer {buf}. @@ -7275,6 +7322,9 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()* given sequence. limit Maximum number of matches in {list} to be returned. Zero means no limit. + camelcase Use enhanced camel case scoring making results + better suited for completion related to + programming languages. Defaults to v:true. If {list} is a list of dictionaries, then the optional {dict} argument supports the following additional items: @@ -7457,11 +7507,12 @@ max({expr}) *max()* Return the maximum value of all items in {expr}. Example: > echo max([apples, pears, oranges]) -< {expr} can be a |List| or a |Dictionary|. For a Dictionary, - it returns the maximum of all values in the Dictionary. - If {expr} is neither a List nor a Dictionary, or one of the - items in {expr} cannot be used as a Number this results in - an error. An empty |List| or |Dictionary| results in zero. +< {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a + Dictionary, it returns the maximum of all values in the + Dictionary. If {expr} is neither a List nor a Tuple nor a + Dictionary, or one of the items in {expr} cannot be used as a + Number this results in an error. An empty |List|, |Tuple| + or |Dictionary| results in zero. Can also be used as a |method|: > mylist->max() @@ -7548,11 +7599,12 @@ min({expr}) *min()* Return the minimum value of all items in {expr}. Example: > echo min([apples, pears, oranges]) -< {expr} can be a |List| or a |Dictionary|. For a Dictionary, - it returns the minimum of all values in the Dictionary. - If {expr} is neither a List nor a Dictionary, or one of the - items in {expr} cannot be used as a Number this results in - an error. An empty |List| or |Dictionary| results in zero. +< {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a + Dictionary, it returns the minimum of all values in the + Dictionary. If {expr} is neither a List nor a Tuple nor a + Dictionary, or one of the items in {expr} cannot be used as a + Number this results in an error. An empty |List|, |Tuple| or + |Dictionary| results in zero. Can also be used as a |method|: > mylist->min() @@ -7587,9 +7639,8 @@ mkdir({name} [, {flags} [, {prot}]]) *mkdir()* *E739* If {prot} is given it is used to set the protection bits of the new directory. The default is 0o755 (rwxr-xr-x: r/w for the user, readable for others). Use 0o700 to make it - unreadable for others. This is only used for the last part of - {name}. Thus if you create /tmp/foo/bar then /tmp/foo will be - created with 0o755. + unreadable for others. This is used for the newly created + directories. Note: umask is applied to {prot} (on Unix). Example: > :call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700) @@ -8289,13 +8340,14 @@ py3eval({expr} [, {locals}]) *py3eval()* converted to Vim data structures. If a {locals} |Dictionary| is given, it defines set of local variables available in the expression. The keys are variable - names and the values are the variable values. |Dictionary| and - |List| values are referenced, and may be updated by the - expression (as if |python-bindeval| was used). + names and the values are the variable values. |Dictionary|, + |List| and |Tuple| values are referenced, and may be updated + by the expression (as if |python-bindeval| was used). Numbers and strings are returned as they are (strings are copied though, Unicode strings are additionally converted to 'encoding'). Lists are represented as Vim |List| type. + Tuples are represented as Vim |Tuple| type. Dictionaries are represented as Vim |Dictionary| type with keys converted to strings. Note that in a `:def` function local variables are not visible @@ -8317,6 +8369,7 @@ pyeval({expr} [, {locals}]) *pyeval()* Numbers and strings are returned as they are (strings are copied though). Lists are represented as Vim |List| type. + Tuples are represented as Vim |Tuple| type. Dictionaries are represented as Vim |Dictionary| type, non-string keys result in error. Note that in a `:def` function local variables are not visible @@ -8576,8 +8629,8 @@ readfile({fname} [, {type} [, {max}]]) reduce({object}, {func} [, {initial}]) *reduce()* *E998* {func} is called for every item in {object}, which can be a - |String|, |List| or a |Blob|. {func} is called with two - arguments: the result so far and current item. After + |String|, |List|, |Tuple| or a |Blob|. {func} is called with + two arguments: the result so far and current item. After processing all items the result is returned. *E1132* {initial} is the initial result. When omitted, the first item @@ -8898,16 +8951,16 @@ repeat({expr}, {count}) *repeat()* result. Example: > :let separator = repeat('-', 80) < When {count} is zero or negative the result is empty. - When {expr} is a |List| or a |Blob| the result is {expr} - concatenated {count} times. Example: > + When {expr} is a |List|, a |Tuple| or a |Blob| the result is + {expr} concatenated {count} times. Example: > :let longlist = repeat(['a', 'b'], 3) < Results in ['a', 'b', 'a', 'b', 'a', 'b']. Can also be used as a |method|: > mylist->repeat(count) < - Return type: |String|, |Blob| or list<{type}> depending on - {expr} + Return type: |String|, |Blob|, list<{type}> or tuple<{type}> + depending on {expr} resolve({filename}) *resolve()* *E655* @@ -8934,18 +8987,19 @@ resolve({filename}) *resolve()* *E655* reverse({object}) *reverse()* Reverse the order of items in {object}. {object} can be a - |List|, a |Blob| or a |String|. For a List and a Blob the - items are reversed in-place and {object} is returned. + |List|, a |Tuple|, a |Blob| or a |String|. For a List and a + Blob the items are reversed in-place and {object} is returned. + For a Tuple, a new Tuple is returned. For a String a new String is returned. - Returns zero if {object} is not a List, Blob or a String. - If you want a List or Blob to remain unmodified make a copy - first: > + Returns zero if {object} is not a List, Tuple, Blob or a + String. If you want a List or Blob to remain unmodified make + a copy first: > :let revlist = reverse(copy(mylist)) < Can also be used as a |method|: > mylist->reverse() < - Return type: |String|, |Blob| or list<{type}> depending on - {object} + Return type: |String|, |Blob|, list<{type}> or tuple<{type}> + depending on {object} round({expr}) *round()* @@ -10320,7 +10374,7 @@ slice({expr}, {start} [, {end}]) *slice()* Can also be used as a |method|: > GetList()->slice(offset) < - Return type: list<{type}> + Return type: list<{type}> or tuple<{type}> sort({list} [, {how} [, {dict}]]) *sort()* *E702* @@ -10671,7 +10725,8 @@ str2blob({list} [, {options}]) *str2blob()* The argument {options} is a |Dict| and supports the following items: - encoding Encode the characters using this encoding. + encoding Convert the characters using this encoding + before making the Blob. The value is a |String|. See |encoding-names| for the supported values. @@ -10683,11 +10738,12 @@ str2blob({list} [, {options}]) *str2blob()* See also |blob2str()| Examples: > - str2blob(["ab"]) returns 0z6162 - str2blob(["«»"]) returns 0zC2ABC2BB - str2blob(["a\nb"]) returns 0z610A62 - str2blob(readfile('myfile.txt')) + str2blob(["ab"]) returns 0z6162 + str2blob(["«»"]) returns 0zC2ABC2BB + str2blob(["a\nb"]) returns 0z610062 + str2blob(["a","b"]) returns 0z610A62 str2blob(["«»"], {'encoding': 'latin1'}) returns 0zABBB + str2blob(readfile('myfile.txt')) < Can also be used as a |method|: > GetListOfStrings()->str2blob() @@ -10930,15 +10986,16 @@ string({expr}) *string()* Funcref function('name') Blob 0z00112233.44556677.8899 List [item, item] + Tuple (item, item) Dictionary {key: value, key: value} Class class SomeName Object object of SomeName {lnum: 1, col: 3} Enum enum EnumName EnumValue enum name.value {name: str, ordinal: nr} - When a |List| or |Dictionary| has a recursive reference it is - replaced by "[...]" or "{...}". Using eval() on the result - will then fail. + When a |List|, |Tuple| or |Dictionary| has a recursive + reference it is replaced by "[...]" or "(...)" or "{...}". + Using eval() on the result will then fail. For an object, invokes the string() method to get a textual representation of the object. If the method is not present, @@ -11892,6 +11949,25 @@ trunc({expr}) *trunc()* Return type: |Float| +tuple2list({list}) *tuple2list()* + Create a List from a shallow copy of the tuple items. + Examples: > + tuple2list((1, 2, 3)) returns [1, 2, 3] +< |list2tuple()| does the opposite. + + This function doesn't recursively convert all the Tuple items + in {tuple} to a List. Note that the items are identical + between the list and the tuple, changing an item changes the + contents of both the tuple and the list. + + Returns an empty list on error. + + Can also be used as a |method|: > + GetTuple()->tuple2list() +< + Return type: list<{type}> (depending on the given |Tuple|) + + *type()* type({expr}) The result is a Number representing the type of {expr}. Instead of using the number directly, it is better to use the @@ -11912,6 +11988,7 @@ type({expr}) The result is a Number representing the type of {expr}. Typealias: 14 |v:t_typealias| Enum: 15 |v:t_enum| EnumValue: 16 |v:t_enumvalue| + Tuple: 17 |v:t_tuple| For backward compatibility, this method can be used: > :if type(myvar) == type(0) :if type(myvar) == type("") diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 4ab2cebb34..09d298fe57 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 9.1. Last change: 2024 Dec 15 +*change.txt* For Vim version 9.1. Last change: 2025 Mar 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1149,6 +1149,11 @@ inside of strings can change! Also see 'softtabstop' option. > :[line]pu[t]! [x] Put the text [from register x] before [line] (default 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 + ["x]]p or *]p* *]* ["x]] Like "p", but adjust the indent to the current line. Using the mouse only works when 'mouse' contains 'n' diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index a50fc74e55..93431f8fcc 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 9.1. Last change: 2024 Oct 05 +*cmdline.txt* For Vim version 9.1. Last change: 2025 Mar 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -88,6 +88,10 @@ CTRL-SHIFT-V *c_CTRL-SHIFT-V* *c_CTRL-SHIFT-Q* CTRL-SHIFT-Q Works just like CTRL-V, unless |modifyOtherKeys| is active, then it inserts the Escape sequence for a key with modifiers. In the GUI the |key-notation| is inserted without simplifying. + Note: When CTRL-SHIFT-V is intercepted by your system (e.g., + to paste text) you can often use CTRL-SHIFT-Q instead. + However, in some terminals (e.g. GNOME Terminal), CTRL-SHIFT-Q + quits the terminal without confirmation. *c_* *c_Left* cursor left. See 'wildmenu' for behavior during wildmenu diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt index e3abbdeff5..0dbc7f872e 100644 --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 9.1. Last change: 2024 Feb 01 +*diff.txt* For Vim version 9.1. Last change: 2024 Mar 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -226,14 +226,29 @@ The diffs are highlighted with these groups: |hl-DiffAdd| DiffAdd Added (inserted) lines. These lines exist in this buffer but not in another. |hl-DiffChange| DiffChange Changed lines. -|hl-DiffText| DiffText Changed text inside a Changed line. Vim - finds the first character that is different, - and the last character that is different - (searching from the end of the line). The - text in between is highlighted. This means - that parts in the middle that are still the - same are highlighted anyway. The 'diffopt' - flags "iwhite" and "icase" are used here. +|hl-DiffText| DiffText Changed text inside a Changed line. Exact + behavior depends on the `inline:` setting in + 'diffopt'. + With `inline:` set to "simple", Vim finds the + first character that is different, and the + last character that is different (searching + from the end of the line). The text in + between is highlighted. This means that parts + in the middle that are still the same are + highlighted anyway. The 'diffopt' flags + "iwhite" and "icase" are used here. + With `inline:` set to "char" or "word", Vim + uses the internal diff library to perform a + detailed diff between the changed blocks and + highlight the exact difference between the + two. Will respect any 'diffopt' flag that + affects internal diff. + Not used when `inline:` set to "none". +|hl-DiffTextAdd| DiffTextAdd Added text inside a Changed line. Similar to + DiffText, but used when there is no + corresponding text in other buffers. Will not + be used when `inline:` is set to "simple" or + "none". |hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines, because they don't really exist in this buffer. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 169ded3267..9b0347c9ca 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 9.1. Last change: 2025 Jan 29 +*eval.txt* For Vim version 9.1. Last change: 2025 Mar 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,9 +21,10 @@ a remark is given. 1.1 Variable types 1.2 Function references |Funcref| 1.3 Lists |Lists| - 1.4 Dictionaries |Dictionaries| - 1.5 Blobs |Blobs| - 1.6 More about variables |more-variables| + 1.4 Tuples |Tuples| + 1.5 Dictionaries |Dictionaries| + 1.6 Blobs |Blobs| + 1.7 More about variables |more-variables| 2. Expression syntax |expression-syntax| 3. Internal variable |internal-variables| 4. Builtin Functions |functions| @@ -46,8 +47,8 @@ Profiling is documented at |profiling|. 1.1 Variable types ~ *E712* *E896* *E897* *E899* *E1098* - *E1107* *E1135* *E1138* -There are ten types of variables: + *E1107* *E1135* *E1138* *E1523* +There are eleven types of variables: *Number* *Integer* Number A 32 or 64 bit signed number. |expr-number| @@ -63,6 +64,10 @@ String A NUL terminated string of 8-bit unsigned characters (bytes). List An ordered sequence of items, see |List| for details. Example: [1, 2, ['a', 'b']] +Tuple An ordered immutable sequence of items, see |Tuple| for + details. + Example: (1, 2, ('a', 'b')) + Dictionary An associative, unordered array: Each entry has a key and a value. |Dictionary| Examples: @@ -165,16 +170,17 @@ A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE. *E611* *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* *E913* *E974* *E975* *E976* *E1319* *E1320* *E1321* *E1322* - *E1323* *E1324* -|List|, |Dictionary|, |Funcref|, |Job|, |Channel|, |Blob|, |Class| and -|object| types are not automatically converted. + *E1323* *E1324* *E1520* *E1522* +|List|, |Tuple|, |Dictionary|, |Funcref|, |Job|, |Channel|, |Blob|, |Class| +and |object| types are not automatically converted. *E805* *E806* *E808* When mixing Number and Float the Number is converted to Float. Otherwise there is no automatic conversion of Float. You can use str2float() for String to Float, printf() for Float to String and float2nr() for Float to Number. - *E362* *E891* *E892* *E893* *E894* *E907* *E911* *E914* + *E362* *E891* *E892* *E893* *E894* + *E907* *E911* *E914* *E1521* When expecting a Float a Number can also be used, but nothing else. *no-type-checking* @@ -267,9 +273,9 @@ position in the sequence. List creation ~ *E696* *E697* -A List is created with a comma-separated list of items in square brackets. +A List is created with a comma-separated sequence of items in square brackets. Examples: > - :let mylist = [1, two, 3, "four"] + :let mylist = [1, "two", 3, "four"] :let emptylist = [] An item can be any expression. Using a List for an item creates a @@ -327,13 +333,13 @@ similar to -1. > :let otherlist = mylist[:] " make a copy of the List Notice that the last index is inclusive. If you prefer using an exclusive -index use the |slice()| method. +index use the |slice()| function. -If the first index is beyond the last item of the List or the second item is +If the first index is beyond the last item of the List or the last index is before the first item, the result is an empty list. There is no error message. -If the second index is equal to or greater than the length of the list the +If the last index is equal to or greater than the length of the list the length minus one is used: > :let mylist = [0, 1, 2, 3] :echo mylist[2:8] " result: [2, 3] @@ -463,8 +469,8 @@ Changing the order of items in a list: > For loop ~ -The |:for| loop executes commands for each item in a List, String or Blob. -A variable is set to each item in sequence. Example with a List: > +The |:for| loop executes commands for each item in a List, Tuple, String or +Blob. A variable is set to each item in sequence. Example with a List: > :for item in mylist : call Doit(item) :endfor @@ -497,6 +503,8 @@ It is also possible to put remaining items in a List variable: > : endif :endfor +For a Tuple one tuple item at a time is used. + For a Blob one byte at a time is used. For a String one character, including any composing characters, is used as a @@ -527,8 +535,206 @@ Don't forget that a combination of features can make things simple. For example, to add up all the numbers in a list: > :exe 'let sum = ' .. join(nrlist, '+') +1.4 Tuples ~ + *tuple* *Tuple* *Tuples* + *E1532* *E1533* +A Tuple is an ordered sequence of items. An item can be of any type. Items +can be accessed by their index number. A Tuple is immutable. + +A Tuple uses less memory compared to a List and provides O(1) lookup time. + +Tuple creation ~ + *E1526* *E1527* +A Tuple is created with a comma-separated sequence of items in parentheses. +Examples: > + :let mytuple = (1, "two", 3, "four") + :let tuple = (5,) + :let emptytuple = () + +An item can be any expression. If there is only one item in the tuple, then +the item must be followed by a comma. + +Using a Tuple for an item creates a Tuple of Tuples: > + :let nesttuple = ((11, 12), (21, 22), (31, 32)) + + +Tuple index ~ + *tuple-index* *E1519* +An item in the Tuple can be accessed by putting the index in square brackets +after the Tuple. Indexes are zero-based, thus the first item has index zero. +> + :let item = mytuple[0] " get the first item: 1 + :let item = mytuple[2] " get the third item: 3 + +When the resulting item is a tuple this can be repeated: > + :let item = nesttuple[0][1] " get the first tuple, second item: 12 +< +A negative index is counted from the end. Index -1 refers to the last item in +the Tuple, -2 to the last but one item, etc. > + :let last = mytuple[-1] " get the last item: "four" + +To avoid an error for an invalid index use the |get()| function. When an item +is not available it returns zero or the default value you specify: > + :echo get(mytuple, idx) + :echo get(mytuple, idx, "NONE") + + +Tuple concatenation ~ + *tuple-concatenation* +Two tuples can be concatenated with the "+" operator: > + :let longtuple = mytuple + (5, 6) + :let longtuple = (5, 6) + mytuple +To prepend or append an item, turn it into a tuple by putting () around it. +The item must be followed by a comma. + + *E1540* +Two variadic tuples with same item type can be concatenated but with different +item types cannot be concatenated. Examples: > + var a: tuple<...list> = (1, 2) + var b: tuple<...list> = ('a', 'b') + echo a + b # not allowed + + var a: tuple = (1, 2) + var b: tuple<...list> = ('a', 'b') + echo a + b # allowed + + var a: tuple<...list> = (1, 2) + var b: tuple = (3, 4) + echo a + b # not allowed + + var a: tuple<...list> = (1, 2) + var b: tuple> = (3, 4) + echo a + b # not allowed +< +Note that a tuple is immutable and items cannot be added or removed from a +tuple. + + +Subtuple ~ + *subtuple* +A part of the Tuple can be obtained by specifying the first and last index, +separated by a colon in square brackets: > + :let shorttuple = mytuple[2:-1] " get Tuple (3, "four") + +Omitting the first index is similar to zero. Omitting the last index is +similar to -1. > + :let endtuple = mytuple[2:] " from item 2 to the end: (3, "four") + :let shorttuple = mytuple[2:2] " Tuple with one item: (3,) + :let othertuple = mytuple[:] " make a copy of the Tuple + +Notice that the last index is inclusive. If you prefer using an exclusive +index, use the |slice()| function. + +If the first index is beyond the last item of the Tuple or the last index is +before the first item, the result is an empty tuple. There is no error +message. + +If the last index is equal to or greater than the length of the tuple, the +length minus one is used: > + :let mytuple = (0, 1, 2, 3) + :echo mytuple[2:8] " result: (2, 3) + +NOTE: mytuple[s:e] means using the variable "s:e" as index. Watch out for +using a single letter variable before the ":". Insert a space when needed: +mytuple[s : e]. + + +Tuple identity ~ + *tuple-identity* +When variable "aa" is a tuple and you assign it to another variable "bb", both +variables refer to the same tuple: > + :let aa = (1, 2, 3) + :let bb = aa +< + +Making a copy of a tuple is done with the |copy()| function. Using [:] also +works, as explained above. This creates a shallow copy of the tuple: For +example, changing a list item in the tuple will also change the item in the +copied tuple: > + :let aa = ([1, 'a'], 2, 3) + :let bb = copy(aa) + :let aa[0][1] = 'aaa' + :echo aa +< ([1, aaa], 2, 3) > + :echo bb +< ([1, aaa], 2, 3) + +To make a completely independent tuple, use |deepcopy()|. This also makes a +copy of the values in the tuple, recursively. Up to a hundred levels deep. + +The operator "is" can be used to check if two variables refer to the same +Tuple. "isnot" does the opposite. In contrast, "==" compares if two tuples +have the same value. > + :let atuple = (1, 2, 3) + :let btuple = (1, 2, 3) + :echo atuple is btuple +< 0 > + :echo atuple == btuple +< 1 + +Note about comparing tuples: Two tuples are considered equal if they have the +same length and all items compare equal, as with using "==". There is one +exception: When comparing a number with a string they are considered +different. There is no automatic type conversion, as with using "==" on +variables. Example: > + echo 4 == "4" +< 1 > + echo (4,) == ("4",) +< 0 + +Thus comparing Tuples is more strict than comparing numbers and strings. You +can compare simple values this way too by putting them in a tuple: > + + :let a = 5 + :let b = "5" + :echo a == b +< 1 > + :echo (a,) == (b,) +< 0 + -1.4 Dictionaries ~ +Tuple unpack ~ + +To unpack the items in a tuple to individual variables, put the variables in +square brackets, like list items: > + :let [var1, var2] = mytuple + +When the number of variables does not match the number of items in the tuple +this produces an error. To handle any extra items from the tuple, append ";" +and a variable name (which will then be of type tuple): > + :let [var1, var2; rest] = mytuple + +This works like: > + :let var1 = mytuple[0] + :let var2 = mytuple[1] + :let rest = mytuple[2:] + +Except that there is no error if there are only two items. "rest" will be an +empty tuple then. + + +Tuple functions ~ + *E1536* +Functions that are useful with a Tuple: > + :let xs = count(tuple, 'x') " count number of 'x's in tuple + :if empty(tuple) " check if tuple is empty + :let i = index(tuple, 'x') " index of first 'x' in tuple + :let l = items(tuple) " list of items in a tuple + :let string = join(tuple, ', ') " create string from tuple items + :let l = len(tuple) " number of items in tuple + :let big = max(tuple) " maximum value in tuple + :let small = min(tuple) " minimum value in tuple + :let r = repeat(tuple, n) " repeat a tuple n times + :let r = reverse(tuple) " reverse a tuple + :let s = slice(tuple, n1, n2) " slice a tuple + :let s = string(tuple) " String representation of tuple + :let l = tuple2list(tuple) " convert a tuple to list + :let t = list2tuple(list) " convert a list to tuple +< + *E1524* +A tuple cannot be used with the |map()|, |mapnew()| and |filter()| functions. + +1.5 Dictionaries ~ *dict* *Dict* *Dictionaries* *Dictionary* A Dictionary is an associative array: Each entry has a key and a value. The entry can be located with the key. The entries are stored without a specific @@ -537,10 +743,10 @@ ordering. Dictionary creation ~ *E720* *E721* *E722* *E723* -A Dictionary is created with a comma-separated list of entries in curly +A Dictionary is created with a comma-separated sequence of entries in curly braces. Each entry has a key and a value, separated by a colon. Each key can only appear once. Examples: > - :let mydict = {1: 'one', 2: 'two', 3: 'three'} + :let mydict = {'one': 1, 'two': 2, 'three': 3} :let emptydict = {} < *E713* *E716* *E717* A key is always a String. You can use a Number, it will be converted to a @@ -570,8 +776,11 @@ An extra comma after the last entry is ignored. Accessing entries ~ The normal way to access an entry is by putting the key in square brackets: > + :let mydict = {'one': 1, 'two': 2, 'three': 3} :let val = mydict["one"] :let mydict["four"] = 4 + :let val = mydict.one + :let mydict.four = 4 You can add new entries to an existing Dictionary this way, unlike Lists. @@ -709,7 +918,7 @@ Functions that can be used with a Dictionary: > :call map(dict, '">> " .. v:val') " prepend ">> " to each item -1.5 Blobs ~ +1.6 Blobs ~ *blob* *Blob* *Blobs* *E978* A Blob is a binary object. It can be used to read an image from a file and send it over a channel, for example. @@ -856,7 +1065,7 @@ Making a copy of a Blob is done with the |copy()| function. Using [:] also works, as explained above. -1.6 More about variables ~ +1.7 More about variables ~ *more-variables* If you need to know the type of a variable or expression, use the |type()| function. @@ -907,16 +1116,18 @@ Expression syntax summary, from least to most significant: etc. As above, append ? for ignoring case, # for matching case - expr5 is expr5 same |List|, |Dictionary| or |Blob| instance - expr5 isnot expr5 different |List|, |Dictionary| or |Blob| + expr5 is expr5 same |List|, |Tuple|, |Dictionary| or |Blob| instance + expr5 isnot expr5 different |List|, |Tuple|, |Dictionary| or + |Blob| instance |expr5| expr6 expr6 << expr6 bitwise left shift expr6 >> expr6 bitwise right shift |expr6| expr7 - expr7 + expr7 ... number addition, list or blob concatenation + expr7 + expr7 ... number addition, list or tuple or blob + concatenation expr7 - expr7 ... number subtraction expr7 . expr7 ... string concatenation expr7 .. expr7 ... string concatenation @@ -935,8 +1146,10 @@ Expression syntax summary, from least to most significant: + expr9 unary plus |expr10| expr11 - expr10[expr1] byte of a String or item of a |List| + expr10[expr1] byte of a String or item of a |List| or + |Tuple| expr10[expr1 : expr1] substring of a String or sublist of a |List| + or a slice of a |Tuple| expr10.name entry in a |Dictionary| expr10(expr1, ...) function call with |Funcref| variable expr10->name(expr1, ...) |method| call @@ -945,6 +1158,7 @@ Expression syntax summary, from least to most significant: "string" string constant, backslash is special 'string' string constant, ' is doubled [expr1, ...] |List| + (expr1, ...) |Tuple| {expr1: expr1, ...} |Dictionary| #{key: expr1, ...} legacy |Dictionary| &option option value @@ -1101,10 +1315,11 @@ Examples: "abc" == "Abc" evaluates to 1 if 'ignorecase' is set, 0 otherwise NOTE: In |Vim9| script 'ignorecase' is not used. - *E691* *E692* + *E691* *E692* *E1517* *E1518* A |List| can only be compared with a |List| and only "equal", "not equal", "is" and "isnot" can be used. This compares the values of the list, recursively. Ignoring case means case is ignored when comparing item values. +Same applies for a |Tuple|. *E735* *E736* A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not @@ -1124,12 +1339,13 @@ Dictionary and arguments, use |get()| to get the function name: > if get(Part1, 'name') == get(Part2, 'name') " Part1 and Part2 refer to the same function < *E1037* -Using "is" or "isnot" with a |List|, |Dictionary| or |Blob| checks whether -the expressions are referring to the same |List|, |Dictionary| or |Blob| -instance. A copy of a |List| is different from the original |List|. When -using "is" without a |List|, |Dictionary| or |Blob|, it is equivalent to -using "equal", using "isnot" equivalent to using "not equal". Except that -a different type means the values are different: > +Using "is" or "isnot" with a |List|, |Tuple|, |Dictionary| or |Blob| checks +whether the expressions are referring to the same |List|, |Tuple|, +|Dictionary| or |Blob| instance. A copy of a |List| or |Tuple| is different +from the original |List| or |Tuple|. When using "is" without a |List|, +|Tuple|, |Dictionary| or |Blob|, it is equivalent to using "equal", using +"isnot" is equivalent to using "not equal". Except that a different type +means the values are different: > echo 4 == '4' 1 echo 4 is '4' @@ -1147,7 +1363,7 @@ that: > because 'x' converted to a Number is zero. However: > echo [0] == ['x'] 0 -Inside a List or Dictionary this conversion is not used. +Inside a List or Tuple or Dictionary this conversion is not used. In |Vim9| script the types must match. @@ -1191,13 +1407,14 @@ topmost bit (sometimes called the sign bit) is cleared. If the right operand expr6 and expr7 *expr6* *expr7* *E1036* *E1051* --------------- -expr7 + expr7 Number addition, |List| or |Blob| concatenation *expr-+* + *expr-+* +expr7 + expr7 Number addition, |List| or |Tuple| or |Blob| concatenation expr7 - expr7 Number subtraction *expr--* expr7 . expr7 String concatenation *expr-.* expr7 .. expr7 String concatenation *expr-..* For |Lists| only "+" is possible and then both expr7 must be a list. The -result is a new list with the two lists Concatenated. +result is a new list with the two lists concatenated. Same for a |Tuple|. For String concatenation ".." is preferred, since "." is ambiguous, it is also used for |Dict| member access and floating point numbers. @@ -1295,7 +1512,8 @@ in any order. E.g., these are all possible: expr10->(expr1, ...)[expr1] Evaluation is always from left to right. -expr10[expr1] item of String or |List| *expr-[]* *E111* + *expr-[]* *E111* +expr10[expr1] item of String or |List| or |Tuple| *E909* *subscript* *E1062* In legacy Vim script: If expr10 is a Number or String this results in a String that contains the @@ -1328,6 +1546,8 @@ Generally, if a |List| index is equal to or higher than the length of the |List|, or more negative than the length of the |List|, this results in an error. +A |Tuple| index is similar to a |List| index as explained above. + expr10[expr1a : expr1b] substring or |sublist| *expr-[:]* *substring* @@ -1369,6 +1589,7 @@ just above. Also see |sublist| below. Examples: > :let l = mylist[:3] " first four items :let l = mylist[4:4] " List with one item :let l = mylist[:] " shallow copy of a List +A |Tuple| slice is similar to a |List| slice. If expr10 is a |Blob| this results in a new |Blob| with the bytes in the indexes expr1a and expr1b, inclusive. Examples: > @@ -2081,7 +2302,7 @@ v:colornames A dictionary that maps color names to hex color strings. These You can make changes to that file, but make sure to add new keys instead of updating existing ones, otherwise Vim will skip - loading the file (thinking is hasn't been changed). + loading the file (thinking it hasn't been changed). *v:completed_item* *completed_item-variable* v:completed_item @@ -2630,6 +2851,8 @@ v:t_typealias Value of |typealias| type. Read-only. See: |type()| v:t_enum Value of |enum| type. Read-only. See: |type()| *v:t_enumvalue* *t_enumvalue-variable* v:t_enumvalue Value of |enumvalue| type. Read-only. See: |type()| + *v:t_tuple* *t_tuple-variable* +v:t_tuple Value of |Tuple| type. Read-only. See: |type()| *v:termresponse* *termresponse-variable* v:termresponse The escape sequence returned by the terminal for the |t_RV| @@ -2949,13 +3172,13 @@ declarations and assignments do not use a command. |vim9-declaration| :let &g:{option-name} -= {expr1} Like above, but only set the global value of an option (if there is one). Works like |:setglobal|. - *E1093* + *E1093* *E1537* *E1538* *E1535* :let [{name1}, {name2}, ...] = {expr1} *:let-unpack* *E687* *E688* - {expr1} must evaluate to a |List|. The first item in - the list is assigned to {name1}, the second item to - {name2}, etc. + {expr1} must evaluate to a |List| or a |Tuple|. The + first item in the list or tuple is assigned to + {name1}, the second item to {name2}, etc. The number of names must match the number of items in - the |List|. + the |List| or |Tuple|. Each name can be one of the items of the ":let" command as mentioned above. Example: > @@ -2972,16 +3195,22 @@ declarations and assignments do not use a command. |vim9-declaration| :let [{name1}, {name2}, ...] .= {expr1} :let [{name1}, {name2}, ...] += {expr1} :let [{name1}, {name2}, ...] -= {expr1} - Like above, but append/add/subtract the value for each - |List| item. +:let [{name1}, {name2}, ...] *= {expr1} +:let [{name1}, {name2}, ...] /= {expr1} +:let [{name1}, {name2}, ...] %= {expr1} + Like above, but append, add, subtract, multiply, + divide, or modulo the value for each |List| or |Tuple| + item. :let [{name}, ..., ; {lastname}] = {expr1} *E452* - Like |:let-unpack| above, but the |List| may have more - items than there are names. A list of the remaining - items is assigned to {lastname}. If there are no - remaining items {lastname} is set to an empty list. + Like |:let-unpack| above, but the |List| or |Tuple| + may have more items than there are names. A list or a + tuple of the remaining items is assigned to + {lastname}. If there are no remaining items, + {lastname} is set to an empty list or tuple. Example: > :let [a, b; rest] = ["aval", "bval", 3, 4] + :let [a, b; rest] = ("aval", "bval", 3, 4) < :let [{name}, ..., ; {lastname}] .= {expr1} :let [{name}, ..., ; {lastname}] += {expr1} @@ -3176,23 +3405,26 @@ text... get an error message: "E940: Cannot lock or unlock variable {name}". - [depth] is relevant when locking a |List| or - |Dictionary|. It specifies how deep the locking goes: + [depth] is relevant when locking a |List|, a |Tuple| + or a |Dictionary|. It specifies how deep the locking + goes: 0 Lock the variable {name} but not its value. - 1 Lock the |List| or |Dictionary| itself, - cannot add or remove items, but can - still change their values. + 1 Lock the |List| or |Tuple| or + |Dictionary| itself, cannot add or + remove items, but can still change + their values. 2 Also lock the values, cannot change the items. If an item is a |List| or - |Dictionary|, cannot add or remove - items, but can still change the + |Tuple| or |Dictionary|, cannot add or + remove items, but can still change the values. - 3 Like 2 but for the |List| / - |Dictionary| in the |List| / + 3 Like 2 but for the |List| / |Tuple| / + |Dictionary| in the |List| / |Tuple| / |Dictionary|, one level deeper. - The default [depth] is 2, thus when {name} is a |List| - or |Dictionary| the values cannot be changed. + The default [depth] is 2, thus when {name} is a + |List|, a |Tuple| or a |Dictionary| the values cannot + be changed. Example with [depth] 0: > let mylist = [1, 2, 3] @@ -3297,7 +3529,7 @@ text... :endfo[r] *:endfo* *:endfor* Repeat the commands between `:for` and `:endfor` for each item in {object}. {object} can be a |List|, - a |Blob| or a |String|. *E1177* + a |Tuple|, a |Blob| or a |String|. *E1177* Variable {var} is set to the value of each item. In |Vim9| script the loop variable must not have been diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 7f338a5618..20bf395972 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 9.1. Last change: 2025 Feb 20 +*filetype.txt* For Vim version 9.1. Last change: 2025 Mar 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -640,6 +640,25 @@ One command, :DiffGitCached, is provided to show a diff of the current commit in the preview window. It is equivalent to calling "git diff --cached" plus any arguments given to the command. +GIT REBASE *ft-gitrebase-plugin* + +The gitrebase filetype defines the following buffer-local commands, to help +with interactive `git rebase`: > + + :Drop " to discard this commit + :Edit " to stop for editing this commit + :Fixup " to squash (but discard the message) into the previous one + :Pick " to pick this commit (the cursor is on) + :Reword " to pick this commit, but change the commit message + :Squash " to squash this commit into the previous one + +In addition, the following command can be used to cycle between the different +possibilities: > + + :Cycle " to cycle between the previous commands +< +The `:Cycle` command is also mapped to the CTRL-A and CTRL-X keys. +For details, see `git-rebase --help`. GO *ft-go-plugin* @@ -744,12 +763,21 @@ Add following lines to $HOME/.vim/ftplugin/json.vim: > import autoload 'dist/json.vim' setl formatexpr=json.FormatExpr() -LUA *ft-lua-plugin* +LUA *ft-lua-plugin* *g:lua_folding* You can enable folding of Lua functions using |fold-expr| by: > let g:lua_folding = 1 +< *g:lua_version* *g:lua_subversion* +Lua filetype's 'includeexpr' and |ft-lua-syntax| highlighting use the global +variables "g:lua_version" and "g:lua_subversion" to determine the version of +Lua to use (5.3 is the default) + +For example, to use Lua 5.1, set the variables like this: > + let g:lua_version = 5 + let g:lua_subversion = 1 +< MAIL *ft-mail-plugin* Options: @@ -767,7 +795,7 @@ Local mappings: to the end of the file in Normal mode. This means "> " is inserted in each line. -MAN *ft-man-plugin* *:Man* *man.vim* +MAN *ft-man-plugin* *:Man* *:ManReload* *man.vim* This plugin displays a manual page in a nice way. See |find-manpage| in the user manual for more information. @@ -784,6 +812,8 @@ Commands: Man {name} Display the manual page for {name} in a window. Man {number} {name} Display the manual page for {name} in a section {number}. +ManReload Reload the cache of available man pages used for |:Man| argument + completion. Global mapping: K Displays the manual page for the word under the cursor. @@ -814,6 +844,14 @@ desired folding style instead. For example: > If you would like :Man {number} {name} to behave like man {number} {name} by not running man {name} if no page is found, then use this: > let g:ft_man_no_sect_fallback = 1 +< + *g:ft_man_implementation* +The completion for the :Man command tries to guess which implementation of man +the system has. If it guesses wrong, you can set g:ft_man_implementation to +one of these values: + 'man-db' https://man-db.nongnu.org/ + '' Unknown, fall back to completing shell commands + instead of man pages. You may also want to set 'keywordprg' to make the |K| command open a manual page in a Vim window: > @@ -865,6 +903,12 @@ the PDF. The following are treated as tags: These maps can be disabled with > :let g:no_pdf_maps = 1 + +PLSQL *ft-plsql-plugin* + +To enable syntax folding in PL/SQL filetypes, set the following variable: > + + :let g:plsql_fold = 1 < PYTHON *ft-python-plugin* *PEP8* diff --git a/runtime/doc/gui_mac.txt b/runtime/doc/gui_mac.txt index 619c88a314..5bf38e75e0 100644 --- a/runtime/doc/gui_mac.txt +++ b/runtime/doc/gui_mac.txt @@ -283,8 +283,6 @@ as general information regarding macOS user defaults. Here is a list of relevant dictionary entries: KEY VALUE ~ -*MMAllowForceClickLookUp* use Force click for data lookup instead of - [bool] *MMCellWidthMultiplier* width of a normal glyph in em units [float] *MMCmdLineAlignBottom* Pin command-line to bottom of MacVim [bool] *MMDialogsTrackPwd* open/save dialogs track the Vim pwd [bool] @@ -307,7 +305,6 @@ KEY VALUE ~ *MMTitlebarAppearsTransparent* enable a transparent titlebar [bool] *MMAppearanceModeSelection* dark mode selection (|macvim-dark-mode|)[bool] *MMRendererClipToRow* clip tall characters to the row they are on [bool] -*MMScrollOneDirectionOnly* scroll along one axis only when using trackpad [bool] *MMSmoothResize* allow smooth resizing of MacVim window [bool] *MMShareFindPboard* share search text to Find Pasteboard [bool] *MMTextInsetBottom* text area offset in pixels [int] @@ -316,12 +313,22 @@ KEY VALUE ~ *MMTextInsetTop* text area offset in pixels [int] *MMTexturedWindow* use brushed metal window (Tiger only) [bool] *MMTranslateCtrlClick* interpret ctrl-click as right-click [bool] -*MMUseMouseTime* use mousetime to detect multiple clicks [bool] *MMVerticalSplit* files open in vertical splits [bool] *MMZoomBoth* zoom button maximizes both directions [bool] *MMUpdaterPrereleaseChannel* opt-in to pre-release software update [bool] *MMShowWhatsNewOnStartup* show "What's New" after updating to new version [bool] +Mouse / Trackpad ~ +*MMScrollOneDirectionOnly* scroll along one axis only when using trackpad [bool] +*MMAllowForceClickLookUp* use Force click for data lookup instead of + [bool] +*MMMouseWheelDisableAcceleration* disable OS scroll wheel acceleration [bool] +*MMMouseWheelNumLines* how many lines to scroll when scroll wheel + acceleration is turned off [int] +*MMMouseWheelMinLines* min number of lines to scroll per scroll wheel + click when acceleration is on [int] +*MMUseMouseTime* use mousetime to detect multiple clicks [bool] + Tabs ~ *MMTabColorsMode* use default/auto/colorscheme for tab colors [int] *MMWindowUseTabBackgroundColor* use tabs background fill color as window color [bool] @@ -395,32 +402,23 @@ top of the screen, you can set |MMNonNativeFullScreenShowMenu| to `NO` and ============================================================================== 5. Special colors *macvim-colors* -The colors in MacVim are defined in two dictionaries inside the "Resources" -folder of the application bundle (MacVim.app/Contents/Resources). It is -possible to add more colors by modifying these files. Color names are case -insensitive when accessed from Vim, but in the dictionary they must be -lowercase. +MacVim mostly uses standard Vim colors. See |gui-colors| and |v:colornames| +for how to set and override them. *SystemColors.plist* -There are only a few system colors that can be accessed from Vim. These -colors are defined in the dictionary "SystemColors.plist". This dictionary -stores (key, value) pairs where the key is the name of the color and the -value is an NSColor selector name. - -The most useful system colors are: > - MacSelectedTextBackgroundColor - MacSecondarySelectedColor -The former is the "Highlight Color" which can be changed in the "Appearance" -section of the System Settings. The latter is the selection color used by -a Cocoa application when it is not in focus. - - *Colors.plist* -Apart from the system colors, it is also possible to use the standard X11 -color names (see https://en.wikipedia.org/wiki/X11_color_names) which usually -come in a file called "rgb.txt". MacVim does not have such a file, instead it -keeps these colors in a dictionary called "Colors.plist". The key in this -dictionary is the name of the color and the value is an RGB value on the form -#rrggbb stored as an integer. +There are a few additional system colors that can be used in the |:hi| +command. These colors are defined in the dictionary "SystemColors.plist" in +the MacVim.app bundle. These color values correspond to NSColor selectors in +macOS. The available color names are: + +KEY VALUE ~ +MacSecondarySelectedControlColor Selection color when app is not in + focus. +MacSelectedTextBackgroundColor "Highlight Color" which can be changed + in the "Appearance" section of System + Settings. +MacTextBackgroundColor Normal text background color. +MacTextColor Normal text color. *macvim-colorscheme* MacVim ships with a custom color scheme that is used instead of the default diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt index 480ff02c27..b17e1e7627 100644 --- a/runtime/doc/if_pyth.txt +++ b/runtime/doc/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 9.1. Last change: 2024 Nov 09 +*if_pyth.txt* For Vim version 9.1. Last change: 2025 Mar 26 VIM REFERENCE MANUAL by Paul Moore @@ -184,8 +184,9 @@ vim.eval(str) *python-eval* evaluator (see |expression|). Returns the expression result as: - a string if the Vim expression evaluates to a string or number - 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 dictionary - Dictionaries and lists are recursively expanded. + Dictionaries, lists and tuples are recursively expanded. Examples: > :" value of the 'textwidth' option :py text_width = vim.eval("&tw") @@ -196,6 +197,8 @@ vim.eval(str) *python-eval* :" Result is a string! Use string.atoi() to convert to a number. :py str = vim.eval("12+12") : + :py tuple = vim.eval('(1, 2, 3)') + : :py tagList = vim.eval('taglist("eval_expr")') < The latter will return a python list of python dicts, for instance: [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': ~ @@ -207,8 +210,8 @@ vim.eval(str) *python-eval* vim.bindeval(str) *python-bindeval* Like |python-eval|, but returns special objects described in - |python-bindeval-objects|. These python objects let you modify (|List| - or |Dictionary|) or call (|Funcref|) vim objects. + |python-bindeval-objects|. These python objects let you modify + (|List|, |Tuple| or |Dictionary|) or call (|Funcref|) vim objects. vim.strwidth(str) *python-strwidth* Like |strwidth()|: returns number of display cells str occupies, tab @@ -688,6 +691,22 @@ vim.List object *python-List* print isinstance(l, vim.List) # True class List(vim.List): # Subclassing +vim.Tuple object *python-Tuple* + Sequence-like object providing access to vim |Tuple| type. + Supports `.locked` attribute, see |python-.locked|. Also supports the + following methods: + Method Description ~ + __new__(), __new__(iterable) + You can use `vim.Tuple()` to create new vim tuples. + Without arguments constructs empty list. + Examples: > + t = vim.Tuple("abc") # Constructor, result: ('a', 'b', 'c') + print t[1:] # slicing + print t[0] # getting item + for i in t: # iteration + print isinstance(t, vim.Tuple) # True + class Tuple(vim.Tuple): # Subclassing + vim.Function object *python-Function* Function-like object, acting like vim |Funcref| object. Accepts special keyword argument `self`, see |Dictionary-function|. You can also use diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 88a9f45e27..530e615a61 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 9.1. Last change: 2025 Jan 03 +*index.txt* For Vim version 9.1. Last change: 2025 Mar 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1400,6 +1400,8 @@ tag command action ~ |:inoremenu| :inoreme[nu] like ":noremenu" but for Insert mode |:intro| :int[ro] print the introductory message |:interface| :interface start of an interface declaration +|:iput| :ip[ut] like |:put|, but adjust the indent to the + current line |:isearch| :is[earch] list one line where identifier matches |:isplit| :isp[lit] split window and jump to definition of identifier diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index 71ba061db3..5c0ebcf2e7 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 9.1. Last change: 2025 Feb 14 +*insert.txt* For Vim version 9.1. Last change: 2025 Mar 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -222,6 +222,10 @@ CTRL-Q Same as CTRL-V. CTRL-SHIFT-V *i_CTRL-SHIFT-V* *i_CTRL-SHIFT-Q* CTRL-SHIFT-Q Works just like CTRL-V, unless |modifyOtherKeys| is active, then it inserts the Escape sequence for a key with modifiers. + Note: When CTRL-SHIFT-V is intercepted by your system (e.g., + to paste text) you can often use CTRL-SHIFT-Q instead. + However, in some terminals (e.g. GNOME Terminal), CTRL-SHIFT-Q + quits the terminal without confirmation. CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can be given to complete words or scroll the window. See @@ -659,8 +663,8 @@ Also see the 'infercase' option if you want to adjust the case of the match. When inserting a selected candidate word from the |popup-menu|, the part of the candidate word that does not match the query is highlighted using -|hl-ComplMatchIns|. If fuzzy is enabled in 'completopt', highlighting will not -be applied. +|hl-ComplMatchIns|. If fuzzy is enabled in 'completeopt', highlighting will +not be applied. *complete_CTRL-E* When completion is active you can use CTRL-E to stop it and go back to the diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 9acd2406f2..754bfd0de7 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2025 Feb 16 +*options.txt* For Vim version 9.1. Last change: 2025 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2119,13 +2119,35 @@ A jump table for the options with a short description can be found at |Q_op|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. + *'completefuzzycollect'* *'cfc'* +'completefuzzycollect' 'cfc' string (default: empty) + global + A comma-separated list of strings to enable fuzzy collection for + specific |ins-completion| modes, affecting how matches are gathered + during completion. For specified modes, fuzzy matching is used to + find completion candidates instead of the standard prefix-based + matching. This option can contain the following values: + + keyword keywords in the current file |i_CTRL-X_CTRL-N| + keywords with flags ".", "w", |i_CTRL-N| |i_CTRL-P| + "b", "u", "U" and "k{dict}" in 'complete' + keywords in 'dictionary' |i_CTRL-X_CTRL-K| + + files file names |i_CTRL-X_CTRL-F| + + whole_line whole lines |i_CTRL-X_CTRL-L| + + When using the 'completeopt' "longest" option value, fuzzy collection + can identify the longest common string among the best fuzzy matches + and insert it automatically. + *'completeitemalign'* *'cia'* 'completeitemalign' 'cia' string (default: "abbr,kind,menu") global - A comma-separated list of |complete-items| that controls the alignment - and display order of items in the popup menu during Insert mode - completion. The supported values are abbr, kind, and menu. These - options allow to customize how the completion items are shown in the + A comma-separated list of strings that controls the alignment and + display order of items in the popup menu during Insert mode + completion. The supported values are "abbr", "kind", and "menu". + These values allow customizing how |complete-items| are shown in the popup menu. Note: must always contain those three values in any order. @@ -2135,6 +2157,22 @@ A jump table for the options with a short description can be found at |Q_op|. A comma-separated list of options for Insert mode completion |ins-completion|. The supported values are: + fuzzy Enable |fuzzy-matching| for completion candidates. This + allows for more flexible and intuitive matching, where + characters can be skipped and matches can be found even + if the exact sequence is not typed. Note: This option + does not affect the collection of candidate list, it only + controls how completion candidates are reduced from the + list of alternatives. If you want to use |fuzzy-matching| + to gather more alternatives for your candidate list, + see |'completefuzzycollect'|. + + longest Only insert the longest common text of the matches. If + the menu is displayed you can use CTRL-L to add more + characters. Whether case is ignored depends on the kind + of completion. For buffer text the 'ignorecase' option is + used. + menu Use a popup menu to show the possible completions. The menu is only shown when there is more than one match and sufficient colors are available. |ins-completion-menu| @@ -2143,15 +2181,17 @@ A jump table for the options with a short description can be found at |Q_op|. Useful when there is additional information about the match, e.g., what file it comes from. - longest Only insert the longest common text of the matches. If - the menu is displayed you can use CTRL-L to add more - characters. Whether case is ignored depends on the kind - of completion. For buffer text the 'ignorecase' option is - used. + noinsert Do not insert any text for a match until the user selects + a match from the menu. Only works in combination with + "menu" or "menuone". No effect if "longest" is present. - preview Show extra information about the currently selected - completion in the preview window. Only works in - combination with "menu" or "menuone". + noselect Same as "noinsert", except that no menu item is + pre-selected. If both "noinsert" and "noselect" are + present, "noselect" has precedence. + + nosort Disable sorting of completion candidates based on fuzzy + scores when "fuzzy" is enabled. Candidates will appear + in their original order. popup Show extra information about the currently selected completion in a popup window. Only works in combination @@ -2166,28 +2206,15 @@ A jump table for the options with a short description can be found at |Q_op|. See the example at |complete-popuphidden|. {only works when compiled with the |+textprop| feature} - noinsert Do not insert any text for a match until the user selects - a match from the menu. Only works in combination with - "menu" or "menuone". No effect if "longest" is present. - - noselect Same as "noinsert", except that no menu item is - pre-selected. If both "noinsert" and "noselect" are - present, "noselect" has precedence. - - fuzzy Enable |fuzzy-matching| for completion candidates. This - allows for more flexible and intuitive matching, where - characters can be skipped and matches can be found even - if the exact sequence is not typed. - - nosort Disable sorting of completion candidates based on fuzzy - scores when "fuzzy" is enabled. Candidates will appear - in their original order. - preinsert Preinsert the portion of the first candidate word that is not part of the current completion leader and using the - |hl-ComplMatchIns| highlight group. Does not work when - "fuzzy" is also included. + |hl-ComplMatchIns| highlight group. In order for it to + work, "fuzzy" must not be set and "menuone" must be set. + + preview Show extra information about the currently selected + completion in the preview window. Only works in + combination with "menu" or "menuone". *'completepopup'* *'cpp'* 'completepopup' 'cpp' string (default empty) @@ -2898,7 +2925,8 @@ A jump table for the options with a short description can be found at |Q_op|. security reasons. *'dip'* *'diffopt'* -'diffopt' 'dip' string (default "internal,filler,closeoff") +'diffopt' 'dip' string (default + "internal,filler,closeoff,inline:simple") global {not available when compiled without the |+diff| feature} @@ -2963,6 +2991,21 @@ A jump table for the options with a short description can be found at |Q_op|. Use the indent heuristic for the internal diff library. + inline:{text} Highlight inline differences within a change. + See |view-diffs|. Supported values are: + + none Do not perform inline highlighting. + simple Highlight from first different + character to the last one in each + line. This is the default if nothing + is set. + char Use internal diff to perform a + character-wise diff and highlight the + difference. + word Use internal diff to perform a + |word|-wise diff and highlight the + difference. + internal Use the internal diff library. This is ignored when 'diffexpr' is set. *E960* When running out of memory when writing a @@ -4464,10 +4507,10 @@ A jump table for the options with a short description can be found at |Q_op|. v:Visual,V:VisualNOS,w:WarningMsg, W:WildMenu,f:Folded,F:FoldColumn, A:DiffAdd,C:DiffChange,D:DiffDelete, - T:DiffText,>:SignColumn,-:Conceal, - B:SpellBad,P:SpellCap,R:SpellRare, - L:SpellLocal,+:Pmenu,=:PmenuSel, - k:PmenuMatch,<:PmenuMatchSel, + T:DiffText,E:DiffTextAdd,>:SignColumn, + -:Conceal,B:SpellBad,P:SpellCap, + R:SpellRare, L:SpellLocal,+:Pmenu, + =:PmenuSel, k:PmenuMatch,<:PmenuMatchSel, [:PmenuKind,]:PmenuKindSel, {:PmenuExtra,}:PmenuExtraSel, x:PmenuSbar,X:PmenuThumb,*:TabLine, @@ -4519,7 +4562,8 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-DiffAdd| A added line in diff mode |hl-DiffChange| C changed line in diff mode |hl-DiffDelete| D deleted line in diff mode - |hl-DiffText| T inserted text in diff mode + |hl-DiffText| T changed text in diff mode + |hl-DiffTextAdd| E inserted text in diff mode |hl-SignColumn| > column used for |signs| |hl-Conceal| - the placeholders used for concealed characters (see 'conceallevel') @@ -6568,6 +6612,15 @@ A jump table for the options with a short description can be found at |Q_op|. global Determines the maximum number of items to show in the popup menu for Insert mode completion. When zero as much space as available is used. + |ins-completion-menu|. + + *'pummaxwidth'* *'pmw'* +'pummaxwidth' 'pmw' number (default 0) + global + Determines the maximum width to use for the popup menu for completion. + When zero, there is no maximum width limit, otherwise the popup menu + will never be wider than this value. Truncated text will be indicated + by "..." at the end. Takes precedence over 'pumwidth'. |ins-completion-menu|. *'pumwidth'* *'pw'* @@ -9715,7 +9768,10 @@ A jump table for the options with a short description can be found at |Q_op|. "lastused" When completing buffer names and more than one buffer matches, sort buffers by time last used (other than the current buffer). - When there is only a single match, it is fully completed in all cases. + "noselect" Do not pre-select first menu item and start 'wildmenu' + if it is enabled. + When there is only a single match, it is fully completed in all cases + except when "noselect" is present. Examples of useful colon-separated values: "longest:full" Like "longest", but also start 'wildmenu' if it is @@ -9738,7 +9794,11 @@ A jump table for the options with a short description can be found at |Q_op|. :set wildmode=list,full < List all matches without completing, then each full match > :set wildmode=longest,list -< Complete longest common string, then list alternatives. +< Complete longest common string, then list alternatives > + :set wildmode=noselect:full +< Display 'wildmenu' without completing, then each full match > + :set wildmode=noselect:lastused,full +< Same as above, but sort buffers by time last used. More info here: |cmdline-completion|. *'wildoptions'* *'wop'* diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt index 39eb5442b2..f11040c4ec 100644 --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 9.1. Last change: 2024 Dec 26 +*pattern.txt* For Vim version 9.1. Last change: 2025 Mar 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -141,6 +141,7 @@ CTRL-C Interrupt current (search) command. Use CTRL-Break on help users who use "vim file | grep word" and don't know how to get out (blindly typing :qa would work). + If a popup is open, the active popup will be closed. *:noh* *:nohlsearch* :noh[lsearch] Stop the highlighting for the 'hlsearch' option. It diff --git a/runtime/doc/pi_getscript.txt b/runtime/doc/pi_getscript.txt index 869314cadf..20caab1e15 100644 --- a/runtime/doc/pi_getscript.txt +++ b/runtime/doc/pi_getscript.txt @@ -1,4 +1,4 @@ -*pi_getscript.txt* For Vim version 9.1. Last change: 2024 Oct 05 +*pi_getscript.txt* For Vim version 9.1. Last change: 2025 Mar 15 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell < @@ -348,38 +348,43 @@ after/syntax/c.vim contained in it to overwrite a user's c.vim. Doesn't override vimball installation. > g:GetLatestVimScripts_scriptaddr -< default='https://www.vim.org/scripts/script.php?script_id=' +< default='https://www.vim.org/scripts/script.php?script_id=' Override this if your system needs ... ='http://vim.sourceforge.net/script.php?script_id=' > g:GetLatestVimScripts_downloadaddr -< default='https://www.vim.org/scripts/download_script.php?src_id=' +< default='https://www.vim.org/scripts/download_script.php?src_id=' Override this if your system needs ... ='http://vim.sourceforge.net/scripts/download_script.php?src_id=' > g:GetLatestVimScripts_bunzip2 -< default= bunzip2 +< default= bunzip2 This variable holds the name of the command to decompress .bz2 files +> + g:GetLatestVimScripts_bunzip3 +< default= bunzip3 + This variable holds the name of the command to decompress .bz3 + files > g:GetLatestVimScripts_gunzip -< default= gunzip +< default= gunzip This variable holds the name of the command to decompress .gz files > g:GetLatestVimScripts_unxz -< default= unxz +< default= unxz This variable holds the name of the command to decompress .xz files > g:GetLatestVimScripts_unzip -< default= unzip +< default= unzip This variable holds the name of the command to decompress .zip files Note: The variables associated with decompression commands help workaround - crossplatform issues. For example, on Windows is possible to delegate this - calls into `wsl` by doing: > + crossplatform issues. For example, on Windows is possible to delegate + this calls into `wsl` by doing: > let g:GetLatestVimScripts_bunzip2= "wsl -e bunzip2" let g:GetLatestVimScripts_gunzip= "wsl -e gunzip" @@ -409,6 +414,8 @@ The AutoInstall process will: Windows: $HOME\vimfiles if the downloaded file ends with ".bz2" bunzip2 it + else if the downloaded file ends with ".bz3" + bunzip3 it else if the downloaded file ends with ".gz" gunzip it if the resulting file ends with ".zip" @@ -422,6 +429,7 @@ The AutoInstall process will: ============================================================================== 9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1 +v38 Feb 25, 2025 : * handles additional decompression option for .bzip3 files. v37 Sep 23, 2024 : * Support for the new vimball's .vmb extension (old .vba extension conflicted with visual basic). * Support for |glvs-autoinstall| in ftplugins and packages. diff --git a/runtime/doc/pi_gzip.txt b/runtime/doc/pi_gzip.txt index 63c547b4d8..cb4fc6b3b8 100644 --- a/runtime/doc/pi_gzip.txt +++ b/runtime/doc/pi_gzip.txt @@ -1,4 +1,4 @@ -*pi_gzip.txt* For Vim version 9.1. Last change: 2025 Feb 06 +*pi_gzip.txt* For Vim version 9.1. Last change: 2025 Mar 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -29,6 +29,7 @@ with these extensions: extension compression ~ *.bz2 bzip2 + *.bz3 bzip3 *.gz gzip *.lz lzip *.lz4 lz4 diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt deleted file mode 120000 index 9a5c117e03..0000000000 --- a/runtime/doc/pi_netrw.txt +++ /dev/null @@ -1 +0,0 @@ -../pack/dist/opt/netrw/doc/netrw.txt \ No newline at end of file diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt new file mode 100644 index 0000000000..1189b370b6 --- /dev/null +++ b/runtime/doc/pi_netrw.txt @@ -0,0 +1,3663 @@ +*netrw.txt* *pi_netrw.txt* + + ------------------------------------------------ + NETRW REFERENCE MANUAL by Charles E. Campbell + ------------------------------------------------ +Original Author: Charles E. Campbell + +Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright* + The VIM LICENSE applies to the files in this package, including + netrw.vim, netrw.txt, netrwSettings.vim, and + syntax/netrw.vim. Like anything else that's free, netrw.vim and its + associated files are provided *as is* and comes with no warranty of + any kind, either expressed or implied. No guarantees of + merchantability. No guarantees of suitability for any purpose. By + using this plugin, you agree that in no event will the copyright + holder be liable for any damages resulting from the use of this + software. Use at your own risk! For bug reports, see |bugs|. + + *netrw* + *dav* *ftp* *netrw-file* *rcp* *scp* + *davs* *http* *netrw.vim* *rsync* *sftp* + *fetch* *network* + +============================================================================== +1. Contents *netrw-contents* {{{1 + +1. Contents..............................................|netrw-contents| +2. Starting With Netrw...................................|netrw-start| +3. Netrw Reference.......................................|netrw-ref| + EXTERNAL APPLICATIONS AND PROTOCOLS.................|netrw-externapp| + READING.............................................|netrw-read| + WRITING.............................................|netrw-write| + SOURCING............................................|netrw-source| + DIRECTORY LISTING...................................|netrw-dirlist| + CHANGING THE USERID AND PASSWORD....................|netrw-chgup| + VARIABLES AND SETTINGS..............................|netrw-variables| + PATHS...............................................|netrw-path| +4. Network-Oriented File Transfer........................|netrw-xfer| + NETRC...............................................|netrw-netrc| + PASSWORD............................................|netrw-passwd| +5. Activation............................................|netrw-activate| +6. Transparent Remote File Editing.......................|netrw-transparent| +7. Ex Commands...........................................|netrw-ex| +8. Variables and Options.................................|netrw-variables| +9. Browsing..............................................|netrw-browse| + Introduction To Browsing............................|netrw-intro-browse| + Quick Reference: Maps...............................|netrw-browse-maps| + Quick Reference: Commands...........................|netrw-browse-cmds| + Banner Display......................................|netrw-I| + Bookmarking A Directory.............................|netrw-mb| + Browsing............................................|netrw-cr| + Squeezing the Current Tree-Listing Directory........|netrw-s-cr| + Browsing With A Horizontally Split Window...........|netrw-o| + Browsing With A New Tab.............................|netrw-t| + Browsing With A Vertically Split Window.............|netrw-v| + Change Listing Style (thin wide long tree)..........|netrw-i| + Changing To A Bookmarked Directory..................|netrw-gb| + Quick hide/unhide of dot-files......................|netrw-gh| + Changing local-only File Permission.................|netrw-gp| + Changing To A Predecessor Directory.................|netrw-u| + Changing To A Successor Directory...................|netrw-U| + Deleting Bookmarks..................................|netrw-mB| + Deleting Files Or Directories.......................|netrw-D| + Directory Exploring Commands........................|netrw-explore| + Exploring With Stars and Patterns...................|netrw-star| + Displaying Information About File...................|netrw-qf| + Edit File Or Directory Hiding List..................|netrw-ctrl-h| + Editing The Sorting Sequence........................|netrw-S| + Forcing treatment as a file or directory............|netrw-gd| |netrw-gf| + Going Up............................................|netrw--| + Hiding Files Or Directories.........................|netrw-a| + Improving Browsing..................................|netrw-ssh-hack| + Listing Bookmarks And History.......................|netrw-qb| + Making A New Directory..............................|netrw-d| + Making The Browsing Directory The Current Directory.|netrw-cd| + Marking Files.......................................|netrw-mf| + Unmarking Files.....................................|netrw-mF| + Marking Files By Location List......................|netrw-qL| + Marking Files By QuickFix List......................|netrw-qF| + Marking Files By Regular Expression.................|netrw-mr| + Marked Files: Arbitrary Shell Command...............|netrw-mx| + Marked Files: Arbitrary Shell Command, En Bloc......|netrw-mX| + Marked Files: Arbitrary Vim Command.................|netrw-mv| + Marked Files: Argument List.........................|netrw-ma| |netrw-mA| + Marked Files: Buffer List...........................|netrw-cb| |netrw-cB| + Marked Files: Compression And Decompression.........|netrw-mz| + Marked Files: Copying...............................|netrw-mc| + Marked Files: Diff..................................|netrw-md| + Marked Files: Editing...............................|netrw-me| + Marked Files: Grep..................................|netrw-mg| + Marked Files: Hiding and Unhiding by Suffix.........|netrw-mh| + Marked Files: Moving................................|netrw-mm| + Marked Files: Printing..............................|netrw-mp| + Marked Files: Sourcing..............................|netrw-ms| + Marked Files: Setting the Target Directory..........|netrw-mt| + Marked Files: Tagging...............................|netrw-mT| + Marked Files: Target Directory Using Bookmarks......|netrw-Tb| + Marked Files: Target Directory Using History........|netrw-Th| + Marked Files: Unmarking.............................|netrw-mu| + Netrw Browser Variables.............................|netrw-browser-var| + Netrw Browsing And Option Incompatibilities.........|netrw-incompatible| + Netrw Settings Window...............................|netrw-settings-window| + Obtaining A File....................................|netrw-O| + Preview Window......................................|netrw-p| + Previous Window.....................................|netrw-P| + Refreshing The Listing..............................|netrw-ctrl-l| + Reversing Sorting Order.............................|netrw-r| + Renaming Files Or Directories.......................|netrw-R| + Selecting Sorting Style.............................|netrw-s| + Setting Editing Window..............................|netrw-C| +10. Problems and Fixes....................................|netrw-problems| +11. Credits...............................................|netrw-credits| + +============================================================================== +2. Starting With Netrw *netrw-start* {{{1 + +Netrw makes reading files, writing files, browsing over a network, and +local browsing easy! First, make sure that you have plugins enabled, so +you'll need to have at least the following in your <.vimrc>: +(or see |netrw-activate|) > + + set nocp " 'compatible' is not set + filetype plugin on " plugins are enabled +< +(see |'cp'| and |:filetype-plugin-on|) + +Netrw supports "transparent" editing of files on other machines using urls +(see |netrw-transparent|). As an example of this, let's assume you have an +account on some other machine; if you can use scp, try: > + + vim scp://hostname/path/to/file +< +Want to make ssh/scp easier to use? Check out |netrw-ssh-hack|! + +So, what if you have ftp, not ssh/scp? That's easy, too; try > + + vim ftp://hostname/path/to/file +< +Want to make ftp simpler to use? See if your ftp supports a file called +<.netrc> -- typically it goes in your home directory, has read/write +permissions for only the user to read (ie. not group, world, other, etc), +and has lines resembling > + + machine HOSTNAME login USERID password "PASSWORD" + machine HOSTNAME login USERID password "PASSWORD" + ... + default login USERID password "PASSWORD" +< +Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: > + + let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\MyUserName\MACHINE' +< +Netrw will substitute the host's machine name for "MACHINE" from the URL it is +attempting to open, and so one may specify > + userid + password +for each site in a separate file: c:\Users\MyUserName\MachineName. + +Now about browsing -- when you just want to look around before editing a +file. For browsing on your current host, just "edit" a directory: > + + vim . + vim /home/userid/path +< +For browsing on a remote host, "edit" a directory (but make sure that +the directory name is followed by a "/"): > + + vim scp://hostname/ + vim ftp://hostname/path/to/dir/ +< +See |netrw-browse| for more! + +There are more protocols supported by netrw than just scp and ftp, too: see the +next section, |netrw-externapp|, on how to use these external applications with +netrw and vim. + +PREVENTING LOADING *netrw-noload* + +If you want to use plugins, but for some reason don't wish to use netrw, then +you need to avoid loading both the plugin and the autoload portions of netrw. +You may do so by placing the following two lines in your <.vimrc>: > + + :let g:loaded_netrw = 1 + :let g:loaded_netrwPlugin = 1 +< + +============================================================================== +3. Netrw Reference *netrw-ref* {{{1 + + Netrw supports several protocols in addition to scp and ftp as mentioned + in |netrw-start|. These include dav, fetch, http,... well, just look + at the list in |netrw-externapp|. Each protocol is associated with a + variable which holds the default command supporting that protocol. + +EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 + + Protocol Variable Default Value + -------- ---------------- ------------- + dav: *g:netrw_dav_cmd* = "cadaver" if cadaver is executable + dav: g:netrw_dav_cmd = "curl -o" elseif curl is available + fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch is available + ftp: *g:netrw_ftp_cmd* = "ftp" + http: *g:netrw_http_cmd* = "elinks" if elinks is available + http: g:netrw_http_cmd = "links" elseif links is available + http: g:netrw_http_cmd = "curl" elseif curl is available + http: g:netrw_http_cmd = "wget" elseif wget is available + http: g:netrw_http_cmd = "fetch" elseif fetch is available + http: *g:netrw_http_put_cmd* = "curl -T" + rcp: *g:netrw_rcp_cmd* = "rcp" + rsync: *g:netrw_rsync_cmd* = "rsync" (see |g:netrw_rsync_sep|) + scp: *g:netrw_scp_cmd* = "scp -q" + sftp: *g:netrw_sftp_cmd* = "sftp" + file: *g:netrw_file_cmd* = "elinks" or "links" + + *g:netrw_http_xcmd* : the option string for http://... protocols are + specified via this variable and may be independently overridden. By + default, the option arguments for the http-handling commands are: > + + elinks : "-source >" + links : "-dump >" + curl : "-L -o" + wget : "-q -O" + fetch : "-o" +< + For example, if your system has elinks, and you'd rather see the + page using an attempt at rendering the text, you may wish to have > + let g:netrw_http_xcmd= "-dump >" +< in your .vimrc. + + g:netrw_http_put_cmd: this option specifies both the executable and + any needed options. This command does a PUT operation to the url. + + +READING *netrw-read* *netrw-nread* {{{2 + + Generally, one may just use the URL notation with a normal editing + command, such as > + + :e ftp://[user@]machine/path +< + Netrw also provides the Nread command: + + :Nread ? give help + :Nread "machine:path" uses rcp + :Nread "machine path" uses ftp w/ <.netrc> + :Nread "machine id password path" uses ftp + :Nread "dav://machine[:port]/path" uses cadaver + :Nread "fetch://[user@]machine/path" uses fetch + :Nread "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc> + :Nread "http://[user@]machine/path" uses http uses wget + :Nread "rcp://[user@]machine/path" uses rcp + :Nread "rsync://[user@]machine[:port]/path" uses rsync + :Nread "scp://[user@]machine[[:#]port]/path" uses scp + :Nread "sftp://[user@]machine/path" uses sftp + +WRITING *netrw-write* *netrw-nwrite* {{{2 + + One may just use the URL notation with a normal file writing + command, such as > + + :w ftp://[user@]machine/path +< + Netrw also provides the Nwrite command: + + :Nwrite ? give help + :Nwrite "machine:path" uses rcp + :Nwrite "machine path" uses ftp w/ <.netrc> + :Nwrite "machine id password path" uses ftp + :Nwrite "dav://machine[:port]/path" uses cadaver + :Nwrite "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc> + :Nwrite "rcp://[user@]machine/path" uses rcp + :Nwrite "rsync://[user@]machine[:port]/path" uses rsync + :Nwrite "scp://[user@]machine[[:#]port]/path" uses scp + :Nwrite "sftp://[user@]machine/path" uses sftp + http: not supported! + +SOURCING *netrw-source* {{{2 + + One may just use the URL notation with the normal file sourcing + command, such as > + + :so ftp://[user@]machine/path +< + Netrw also provides the Nsource command: + + :Nsource ? give help + :Nsource "dav://machine[:port]/path" uses cadaver + :Nsource "fetch://[user@]machine/path" uses fetch + :Nsource "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc> + :Nsource "http://[user@]machine/path" uses http uses wget + :Nsource "rcp://[user@]machine/path" uses rcp + :Nsource "rsync://[user@]machine[:port]/path" uses rsync + :Nsource "scp://[user@]machine[[:#]port]/path" uses scp + :Nsource "sftp://[user@]machine/path" uses sftp + +DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2 + + One may browse a directory to get a listing by simply attempting to + edit the directory: > + + :e scp://[user]@hostname/path/ + :e ftp://[user]@hostname/path/ +< + For remote directory listings (ie. those using scp or ftp), that + trailing "/" is necessary (the slash tells netrw to treat the argument + as a directory to browse instead of as a file to download). + + The Nread command may also be used to accomplish this (again, that + trailing slash is necessary): > + + :Nread [protocol]://[user]@hostname/path/ +< + *netrw-login* *netrw-password* +CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2 + + Attempts to use ftp will prompt you for a user-id and a password. + These will be saved in global variables |g:netrw_uid| and + |s:netrw_passwd|; subsequent use of ftp will re-use those two strings, + thereby simplifying use of ftp. However, if you need to use a + different user id and/or password, you'll want to call |NetUserPass()| + first. To work around the need to enter passwords, check if your ftp + supports a <.netrc> file in your home directory. Also see + |netrw-passwd| (and if you're using ssh/scp hoping to figure out how + to not need to use passwords for scp, look at |netrw-ssh-hack|). + + :NetUserPass [uid [password]] -- prompts as needed + :call NetUserPass() -- prompts for uid and password + :call NetUserPass("uid") -- prompts for password + :call NetUserPass("uid","password") -- sets global uid and password + +(Related topics: |ftp| |netrw-userpass| |netrw-start|) + +NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2 + (Also see: + |netrw-browser-var| : netrw browser option variables + |netrw-protocol| : file transfer protocol option variables + |netrw-settings| : additional file transfer options + |netrw-browser-options| : these options affect browsing directories + ) + +Netrw provides a lot of variables which allow you to customize netrw to your +preferences. One way to look at them is via the command :NetrwSettings (see +|netrw-settings|) which will display your current netrw settings. Most such +settings are described below, in |netrw-browser-options|, and in +|netrw-externapp|: + + *b:netrw_lastfile* last file Network-read/written retained on a + per-buffer basis (supports plain :Nw ) + + *g:netrw_bufsettings* the settings that netrw buffers have + (default) noma nomod nonu nowrap ro nobl + + *g:netrw_chgwin* specifies a window number where subsequent file edits + will take place. (also see |netrw-C|) + (default) -1 + + *g:Netrw_funcref* specifies a function (or functions) to be called when + netrw edits a file. The file is first edited, and + then the function reference (|Funcref|) is called. + This variable may also hold a |List| of Funcrefs. + (default) not defined. (the capital in g:Netrw... + is required by its holding a function reference) +> + Example: place in .vimrc; affects all file opening + fun! MyFuncRef() + endfun + let g:Netrw_funcref= function("MyFuncRef") + +< + *g:Netrw_UserMaps* specifies a function or |List| of functions which can + be used to set up user-specified maps and functionality. + See |netrw-usermaps| + + *g:netrw_ftp* if it doesn't exist, use default ftp + =0 use default ftp (uid password) + =1 use alternate ftp method (user uid password) + If you're having trouble with ftp, try changing the + value of this variable to see if the alternate ftp + method works for your setup. + + *g:netrw_ftp_options* Chosen by default, these options are supposed to + turn interactive prompting off and to restrain ftp + from attempting auto-login upon initial connection. + However, it appears that not all ftp implementations + support this (ex. ncftp). + ="-i -n" + + *g:netrw_ftpextracmd* default: doesn't exist + If this variable exists, then any string it contains + will be placed into the commands set to your ftp + client. As an example: + ="passive" + + *g:netrw_ftpmode* ="binary" (default) + ="ascii" + + *g:netrw_ignorenetrc* =0 (default for linux, cygwin) + =1 If you have a <.netrc> file but it doesn't work and + you want it ignored, then set this variable as + shown. (default for Windows + cmd.exe) + + *g:netrw_menu* =0 disable netrw's menu + =1 (default) netrw's menu enabled + + *g:netrw_uid* (ftp) user-id, retained on a per-vim-session basis + *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis + + *g:netrw_preview* =0 (default) preview window shown in a horizontally + split window + =1 preview window shown in a vertically split window. + Also affects the "previous window" (see |netrw-P|) + in the same way. + The |g:netrw_alto| variable may be used to provide + additional splitting control: + g:netrw_preview g:netrw_alto result + 0 0 |:aboveleft| + 0 1 |:belowright| + 1 0 |:topleft| + 1 1 |:botright| + To control sizing, see |g:netrw_winsize| + + *g:netrw_scpport* = "-P" : option to use to set port for scp + *g:netrw_sshport* = "-p" : option to use to set port for ssh + + *g:netrw_sepchr* =\0xff + =\0x01 for enc == euc-jp (and perhaps it should be for + others, too, please let me know) + Separates priority codes from filenames internally. + See |netrw-p12|. + + *g:netrw_silent* =0 : transfers done normally + =1 : transfers done silently + + *g:netrw_use_errorwindow* =2: messages from netrw will use a popup window + Move the mouse and pause to remove the popup window. + (default value if popup windows are available) + =1 : messages from netrw will use a separate one + line window. This window provides reliable + delivery of messages. + (default value if popup windows are not available) + =0 : messages from netrw will use echoerr ; + messages don't always seem to show up this + way, but one doesn't have to quit the window. + + *g:netrw_cygwin* =1 assume scp under windows is from cygwin. Also + permits network browsing to use ls with time and + size sorting (default if windows) + =0 assume Windows' scp accepts windows-style paths + Network browsing uses dir instead of ls + This option is ignored if you're using unix + + *g:netrw_use_nt_rcp* =0 don't use the rcp of WinNT, Win2000 and WinXP + =1 use WinNT's rcp in binary mode (default) + +PATHS *netrw-path* {{{2 + +Paths to files are generally user-directory relative for most protocols. +It is possible that some protocol will make paths relative to some +associated directory, however. +> + example: vim scp://user@host/somefile + example: vim scp://user@host/subdir1/subdir2/somefile +< +where "somefile" is in the "user"'s home directory. If you wish to get a +file using root-relative paths, use the full path: +> + example: vim scp://user@host//somefile + example: vim scp://user@host//subdir1/subdir2/somefile +< + +============================================================================== +4. Network-Oriented File Transfer *netrw-xfer* {{{1 + +Network-oriented file transfer under Vim is implemented by a vim script +() using plugin techniques. It currently supports both reading and +writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch, +dav/cadaver, rsync, or sftp. + +http is currently supported read-only via use of wget or fetch. + + is a standard plugin which acts as glue between Vim and the +various file transfer programs. It uses autocommand events (BufReadCmd, +FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. > + + ex. vim ftp://hostname/path/to/file +< +The characters preceding the colon specify the protocol to use; in the +example, it's ftp. The script then formulates a command or a +series of commands (typically ftp) which it issues to an external program +(ftp, scp, etc) which does the actual file transfer/protocol. Files are read +from/written to a temporary file (under Unix/Linux, /tmp/...) which the + script will clean up. + +Now, a word about Jan Minář's "FTP User Name and Password Disclosure"; first, +ftp is not a secure protocol. User names and passwords are transmitted "in +the clear" over the internet; any snooper tool can pick these up; this is not +a netrw thing, this is a ftp thing. If you're concerned about this, please +try to use scp or sftp instead. + +Netrw re-uses the user id and password during the same vim session and so long +as the remote hostname remains the same. + +Jan seems to be a bit confused about how netrw handles ftp; normally multiple +commands are performed in a "ftp session", and he seems to feel that the +uid/password should only be retained over one ftp session. However, netrw +does every ftp operation in a separate "ftp session"; so remembering the +uid/password for just one "ftp session" would be the same as not remembering +the uid/password at all. IMHO this would rapidly grow tiresome as one +browsed remote directories, for example. + +On the other hand, thanks go to Jan M. for pointing out the many +vulnerabilities that netrw (and vim itself) had had in handling "crafted" +filenames. The |shellescape()| and |fnameescape()| functions were written in +response by Bram Moolenaar to handle these sort of problems, and netrw has +been modified to use them. Still, my advice is, if the "filename" looks like +a vim command that you aren't comfortable with having executed, don't open it. + + *netrw-putty* *netrw-pscp* *netrw-psftp* +One may modify any protocol's implementing external application by setting a +variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to +"scp -q"). As an example, consider using PuTTY: > + + let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch' + let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"' +< +(note: it has been reported that windows 7 with putty v0.6's "-batch" option + doesn't work, so its best to leave it off for that system) + +See |netrw-p8| for more about putty, pscp, psftp, etc. + +Ftp, an old protocol, seems to be blessed by numerous implementations. +Unfortunately, some implementations are noisy (ie., add junk to the end of the +file). Thus, concerned users may decide to write a NetReadFixup() function +that will clean up after reading with their ftp. Some Unix systems (ie., +FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is +not noisy and more convenient, actually, for to use. +Consequently, if "fetch" is available (ie. executable), it may be preferable +to use it for ftp://... based transfers. + +For rcp, scp, sftp, and http, one may use network-oriented file transfers +transparently; ie. +> + vim rcp://[user@]machine/path + vim scp://[user@]machine/path +< +If your ftp supports <.netrc>, then it too can be transparently used +if the needed triad of machine name, user id, and password are present in +that file. Your ftp must be able to use the <.netrc> file on its own, however. +> + vim ftp://[user@]machine[[:#]portnumber]/path +< +Windows provides an ftp (typically c:\Windows\System32\ftp.exe) which uses +an option, -s:filename (filename can and probably should be a full path) +which contains ftp commands which will be automatically run whenever ftp +starts. You may use this feature to enter a user and password for one site: > + userid + password +< *netrw-windows-netrc* *netrw-windows-s* +If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines +only) netrw will substitute the current machine name requested for ftp +connections for MACHINE. Hence one can have multiple machine.ftp files +containing login and password for ftp. Example: > + + let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' + vim ftp://myhost.somewhere.net/ + +will use a file > + + C:\Users\Myself\myhost.ftp +< +Often, ftp will need to query the user for the userid and password. +The latter will be done "silently"; ie. asterisks will show up instead of +the actually-typed-in password. Netrw will retain the userid and password +for subsequent read/writes from the most recent transfer so subsequent +transfers (read/write) to or from that machine will take place without +additional prompting. + + *netrw-urls* + +=================================+============================+============+ + | Reading | Writing | Uses | + +=================================+============================+============+ + | DAV: | | | + | dav://host/path | | cadaver | + | :Nread dav://host/path | :Nwrite dav://host/path | cadaver | + +---------------------------------+----------------------------+------------+ + | DAV + SSL: | | | + | davs://host/path | | cadaver | + | :Nread davs://host/path | :Nwrite davs://host/path | cadaver | + +---------------------------------+----------------------------+------------+ + | FETCH: | | | + | fetch://[user@]host/path | | | + | fetch://[user@]host:http/path | Not Available | fetch | + | :Nread fetch://[user@]host/path| | | + +---------------------------------+----------------------------+------------+ + | FILE: | | | + | file:///* | file:///* | | + | file://localhost/* | file://localhost/* | | + +---------------------------------+----------------------------+------------+ + | FTP: (*3) | (*3) | | + | ftp://[user@]host/path | ftp://[user@]host/path | ftp (*2) | + | :Nread ftp://host/path | :Nwrite ftp://host/path | ftp+.netrc | + | :Nread host path | :Nwrite host path | ftp+.netrc | + | :Nread host uid pass path | :Nwrite host uid pass path | ftp | + +---------------------------------+----------------------------+------------+ + | HTTP: wget is executable: (*4) | | | + | http://[user@]host/path | Not Available | wget | + +---------------------------------+----------------------------+------------+ + | HTTP: fetch is executable (*4) | | | + | http://[user@]host/path | Not Available | fetch | + +---------------------------------+----------------------------+------------+ + | RCP: | | | + | rcp://[user@]host/path | rcp://[user@]host/path | rcp | + +---------------------------------+----------------------------+------------+ + | RSYNC: | | | + | rsync://[user@]host/path | rsync://[user@]host/path | rsync | + | :Nread rsync://host/path | :Nwrite rsync://host/path | rsync | + | :Nread rcp://host/path | :Nwrite rcp://host/path | rcp | + +---------------------------------+----------------------------+------------+ + | SCP: | | | + | scp://[user@]host/path | scp://[user@]host/path | scp | + | :Nread scp://host/path | :Nwrite scp://host/path | scp (*1) | + +---------------------------------+----------------------------+------------+ + | SFTP: | | | + | sftp://[user@]host/path | sftp://[user@]host/path | sftp | + | :Nread sftp://host/path | :Nwrite sftp://host/path | sftp (*1) | + +=================================+============================+============+ + + (*1) For an absolute path use scp://machine//path. + + (*2) if <.netrc> is present, it is assumed that it will + work with your ftp client. Otherwise the script will + prompt for user-id and password. + + (*3) for ftp, "machine" may be machine#port or machine:port + if a different port is needed than the standard ftp port + + (*4) for http:..., if wget is available it will be used. Otherwise, + if fetch is available it will be used. + +Both the :Nread and the :Nwrite ex-commands can accept multiple filenames. + + +NETRC *netrw-netrc* + +The <.netrc> file, typically located in your home directory, contains lines +therein which map a hostname (machine name) to the user id and password you +prefer to use with it. + +The typical syntax for lines in a <.netrc> file is given as shown below. +Ftp under Unix usually supports <.netrc>; ftp under Windows usually doesn't. +> + machine {full machine name} login {user-id} password "{password}" + default login {user-id} password "{password}" + +Your ftp client must handle the use of <.netrc> on its own, but if the +<.netrc> file exists, an ftp transfer will not ask for the user-id or +password. + + Note: + Since this file contains passwords, make very sure nobody else can + read this file! Most programs will refuse to use a .netrc that is + readable for others. Don't forget that the system administrator can + still read the file! Ie. for Linux/Unix: chmod 600 .netrc + +Even though Windows' ftp clients typically do not support .netrc, netrw has +a work-around: see |netrw-windows-s|. + + +PASSWORD *netrw-passwd* + +The script attempts to get passwords for ftp invisibly using |inputsecret()|, +a built-in Vim function. See |netrw-userpass| for how to change the password +after one has set it. + +Unfortunately there doesn't appear to be a way for netrw to feed a password to +scp. Thus every transfer via scp will require re-entry of the password. +However, |netrw-ssh-hack| can help with this problem. + + +============================================================================== +5. Activation *netrw-activate* {{{1 + +Network-oriented file transfers are available by default whenever Vim's +|'nocompatible'| mode is enabled. Netrw's script files reside in your +system's plugin, autoload, and syntax directories; just the +plugin/netrwPlugin.vim script is sourced automatically whenever you bring up +vim. The main script in autoload/netrw.vim is only loaded when you actually +use netrw. I suggest that, at a minimum, you have at least the following in +your <.vimrc> customization file: > + + set nocp + if version >= 600 + filetype plugin indent on + endif +< +By also including the following lines in your .vimrc, one may have netrw +immediately activate when using [g]vim without any filenames, showing the +current directory: > + + " Augroup VimStartup: + augroup VimStartup + au! + au VimEnter * if expand("%") == "" | e . | endif + augroup END +< + +============================================================================== +6. Transparent Remote File Editing *netrw-transparent* {{{1 + +Transparent file transfers occur whenever a regular file read or write +(invoked via an |:autocmd| for |BufReadCmd|, |BufWriteCmd|, or |SourceCmd| +events) is made. Thus one may read, write, or source files across networks +just as easily as if they were local files! > + + vim ftp://[user@]machine/path + ... + :wq + +See |netrw-activate| for more on how to encourage your vim to use plugins +such as netrw. + +For password-free use of scp:, see |netrw-ssh-hack|. + + +============================================================================== +7. Ex Commands *netrw-ex* {{{1 + +The usual read/write commands are supported. There are also a few +additional commands available. Often you won't need to use Nwrite or +Nread as shown in |netrw-transparent| (ie. simply use > + :e URL + :r URL + :w URL +instead, as appropriate) -- see |netrw-urls|. In the explanations +below, a {netfile} is a URL to a remote file. + + *:Nwrite* *:Nw* +:[range]Nw[rite] Write the specified lines to the current + file as specified in b:netrw_lastfile. + (related: |netrw-nwrite|) + +:[range]Nw[rite] {netfile} [{netfile}]... + Write the specified lines to the {netfile}. + + *:Nread* *:Nr* +:Nr[ead] Read the lines from the file specified in b:netrw_lastfile + into the current buffer. (related: |netrw-nread|) + +:Nr[ead] {netfile} {netfile}... + Read the {netfile} after the current line. + + *:Nsource* *:Ns* +:Ns[ource] {netfile} + Source the {netfile}. + To start up vim using a remote .vimrc, one may use + the following (all on one line) (tnx to Antoine Mechelynck) > + vim -u NORC -N + --cmd "runtime plugin/netrwPlugin.vim" + --cmd "source scp://HOSTNAME/.vimrc" +< (related: |netrw-source|) + +:call NetUserPass() *NetUserPass()* + If g:netrw_uid and s:netrw_passwd don't exist, + this function will query the user for them. + (related: |netrw-userpass|) + +:call NetUserPass("userid") + This call will set the g:netrw_uid and, if + the password doesn't exist, will query the user for it. + (related: |netrw-userpass|) + +:call NetUserPass("userid","passwd") + This call will set both the g:netrw_uid and s:netrw_passwd. + The user-id and password are used by ftp transfers. One may + effectively remove the user-id and password by using empty + strings (ie. ""). + (related: |netrw-userpass|) + +:NetrwSettings This command is described in |netrw-settings| -- used to + display netrw settings and change netrw behavior. + + +============================================================================== +8. Variables and Options *netrw-var* *netrw-settings* {{{1 + +(also see: |netrw-options| |netrw-variables| |netrw-protocol| + |netrw-browser-settings| |netrw-browser-options| ) + +The script provides several variables which act as options to +affect 's file transfer behavior. These variables typically may be +set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|) + *netrw-options* +> + ------------- + Netrw Options + ------------- + Option Meaning + -------------- ----------------------------------------------- +< + b:netrw_col Holds current cursor position (during NetWrite) + g:netrw_cygwin =1 assume scp under windows is from cygwin + (default/windows) + =0 assume scp under windows accepts windows + style paths (default/else) + g:netrw_ftp =0 use default ftp (uid password) + g:netrw_ftpmode ="binary" (default) + ="ascii" (your choice) + g:netrw_ignorenetrc =1 (default) + if you have a <.netrc> file but you don't + want it used, then set this variable. Its + mere existence is enough to cause <.netrc> + to be ignored. + b:netrw_lastfile Holds latest method/machine/path. + b:netrw_line Holds current line number (during NetWrite) + g:netrw_silent =0 transfers done normally + =1 transfers done silently + g:netrw_uid Holds current user-id for ftp. + g:netrw_use_nt_rcp =0 don't use WinNT/2K/XP's rcp (default) + =1 use WinNT/2K/XP's rcp, binary mode + ----------------------------------------------------------------------- +< + *netrw-internal-variables* +The script will also make use of the following variables internally, albeit +temporarily. +> + ------------------- + Temporary Variables + ------------------- + Variable Meaning + -------- ------------------------------------ +< + b:netrw_method Index indicating rcp/ftp+.netrc/ftp + w:netrw_method (same as b:netrw_method) + g:netrw_machine Holds machine name parsed from input + b:netrw_fname Holds filename being accessed > + ------------------------------------------------------------ +< + *netrw-protocol* + +Netrw supports a number of protocols. These protocols are invoked using the +variables listed below, and may be modified by the user. +> + ------------------------ + Protocol Control Options + ------------------------ + Option Type Setting Meaning + --------- -------- -------------- --------------------------- +< netrw_ftp variable =doesn't exist userid set by "user userid" + =0 userid set by "user userid" + =1 userid set by "userid" + NetReadFixup function =doesn't exist no change + =exists Allows user to have files + read via ftp automatically + transformed however they wish + by NetReadFixup() + g:netrw_dav_cmd var ="cadaver" if cadaver is executable + g:netrw_dav_cmd var ="curl -o" elseif curl is executable + g:netrw_fetch_cmd var ="fetch -o" if fetch is available + g:netrw_ftp_cmd var ="ftp" + g:netrw_http_cmd var ="fetch -o" if fetch is available + g:netrw_http_cmd var ="wget -O" else if wget is available + g:netrw_http_put_cmd var ="curl -T" + |g:netrw_list_cmd| var ="ssh USEPORT HOSTNAME ls -Fa" + g:netrw_rcp_cmd var ="rcp" + g:netrw_rsync_cmd var ="rsync" + *g:netrw_rsync_sep* var ="/" used to separate the hostname + from the file spec + g:netrw_scp_cmd var ="scp -q" + g:netrw_sftp_cmd var ="sftp" > + ------------------------------------------------------------------------- +< + *netrw-ftp* + +The g:netrw_..._cmd options (|g:netrw_ftp_cmd| and |g:netrw_sftp_cmd|) +specify the external program to use handle the ftp protocol. They may +include command line options (such as -p for passive mode). Example: > + + let g:netrw_ftp_cmd= "ftp -p" +< +Browsing is supported by using the |g:netrw_list_cmd|; the substring +"HOSTNAME" will be changed via substitution with whatever the current request +is for a hostname. + +Two options (|g:netrw_ftp| and |netrw-fixup|) both help with certain ftp's +that give trouble . In order to best understand how to use these options if +ftp is giving you troubles, a bit of discussion is provided on how netrw does +ftp reads. + +For ftp, netrw typically builds up lines of one of the following formats in a +temporary file: +> + IF g:netrw_ftp !exists or is not 1 IF g:netrw_ftp exists and is 1 + ---------------------------------- ------------------------------ +< + open machine [port] open machine [port] + user userid password userid password + [g:netrw_ftpmode] password + [g:netrw_ftpextracmd] [g:netrw_ftpmode] + get filename tempfile [g:netrw_extracmd] + get filename tempfile > + --------------------------------------------------------------------- +< +The |g:netrw_ftpmode| and |g:netrw_ftpextracmd| are optional. + +Netrw then executes the lines above by use of a filter: +> + :%! {g:netrw_ftp_cmd} -i [-n] +< +where + g:netrw_ftp_cmd is usually "ftp", + -i tells ftp not to be interactive + -n means don't use netrc and is used for Method #3 (ftp w/o <.netrc>) + +If <.netrc> exists it will be used to avoid having to query the user for +userid and password. The transferred file is put into a temporary file. +The temporary file is then read into the main editing session window that +requested it and the temporary file deleted. + +If your ftp doesn't accept the "user" command and immediately just demands a +userid, then try putting "let netrw_ftp=1" in your <.vimrc>. + + *netrw-cadaver* +To handle the SSL certificate dialog for untrusted servers, one may pull +down the certificate and place it into /usr/ssl/cert.pem. This operation +renders the server treatment as "trusted". + + *netrw-fixup* *netreadfixup* +If your ftp for whatever reason generates unwanted lines (such as AUTH +messages) you may write a NetReadFixup() function: +> + function! NetReadFixup(method,line1,line2) + " a:line1: first new line in current file + " a:line2: last new line in current file + if a:method == 1 "rcp + elseif a:method == 2 "ftp + <.netrc> + elseif a:method == 3 "ftp + machine,uid,password,filename + elseif a:method == 4 "scp + elseif a:method == 5 "http/wget + elseif a:method == 6 "dav/cadaver + elseif a:method == 7 "rsync + elseif a:method == 8 "fetch + elseif a:method == 9 "sftp + else " complain + endif + endfunction +> +The NetReadFixup() function will be called if it exists and thus allows you to +customize your reading process. + +(Related topics: |ftp| |netrw-userpass| |netrw-start|) + +============================================================================== +9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1 + *netrw-browser* *netrw-dir* *netrw-list* + +INTRODUCTION TO BROWSING *netrw-intro-browse* {{{2 + (Quick References: |netrw-quickmaps| |netrw-quickcoms|) + +Netrw supports the browsing of directories on your local system and on remote +hosts; browsing includes listing files and directories, entering directories, +editing files therein, deleting files/directories, making new directories, +moving (renaming) files and directories, copying files and directories, etc. +One may mark files and execute any system command on them! The Netrw browser +generally implements the previous explorer's maps and commands for remote +directories, although details (such as pertinent global variable names) +necessarily differ. To browse a directory, simply "edit" it! > + + vim /your/directory/ + vim . + vim c:\your\directory\ +< +(Related topics: |netrw-cr| |netrw-o| |netrw-p| |netrw-P| |netrw-t| + |netrw-mf| |netrw-mx| |netrw-D| |netrw-R| |netrw-v| ) + +The Netrw remote file and directory browser handles two protocols: ssh and +ftp. The protocol in the url, if it is ftp, will cause netrw also to use ftp +in its remote browsing. Specifying any other protocol will cause it to be +used for file transfers; but the ssh protocol will be used to do remote +browsing. + +To use Netrw's remote directory browser, simply attempt to read a "file" with +a trailing slash and it will be interpreted as a request to list a directory: +> + vim [protocol]://[user@]hostname/path/ +< +where [protocol] is typically scp or ftp. As an example, try: > + + vim ftp://ftp.home.vim.org/pub/vim/ +< +For local directories, the trailing slash is not required. Again, because it's +easy to miss: to browse remote directories, the URL must terminate with a +slash! + +If you'd like to avoid entering the password repeatedly for remote directory +listings with ssh or scp, see |netrw-ssh-hack|. To avoid password entry with +ftp, see |netrw-netrc| (if your ftp supports it). + +There are several things you can do to affect the browser's display of files: + + * To change the listing style, press the "i" key (|netrw-i|). + Currently there are four styles: thin, long, wide, and tree. + To make that change "permanent", see |g:netrw_liststyle|. + + * To hide files (don't want to see those xyz~ files anymore?) see + |netrw-ctrl-h|. + + * Press s to sort files by name, time, or size. + +See |netrw-browse-cmds| for all the things you can do with netrw! + + *netrw-getftype* *netrw-filigree* *netrw-ftype* +The |getftype()| function is used to append a bit of filigree to indicate +filetype to locally listed files: + + directory : / + executable : * + fifo : | + links : @ + sockets : = + +The filigree also affects the |g:netrw_sort_sequence|. + + +QUICK HELP *netrw-quickhelp* {{{2 + (Use ctrl-] to select a topic)~ + Intro to Browsing...............................|netrw-intro-browse| + Quick Reference: Maps.........................|netrw-quickmap| + Quick Reference: Commands.....................|netrw-browse-cmds| + Hiding + Edit hiding list..............................|netrw-ctrl-h| + Hiding Files or Directories...................|netrw-a| + Hiding/Unhiding by suffix.....................|netrw-mh| + Hiding dot-files.............................|netrw-gh| + Listing Style + Select listing style (thin/long/wide/tree)....|netrw-i| + Associated setting variable...................|g:netrw_liststyle| + Shell command used to perform listing.........|g:netrw_list_cmd| + Quick file info...............................|netrw-qf| + Sorted by + Select sorting style (name/time/size).........|netrw-s| + Editing the sorting sequence..................|netrw-S| + Sorting options...............................|g:netrw_sort_options| + Associated setting variable...................|g:netrw_sort_sequence| + Reverse sorting order.........................|netrw-r| + + + *netrw-quickmap* *netrw-quickmaps* +QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 +> + --- ----------------- ---- + Map Quick Explanation Link + --- ----------------- ---- +< Causes Netrw to issue help + Netrw will enter the directory or read the file |netrw-cr| + Netrw will attempt to remove the file/directory |netrw-del| + Edit file hiding list |netrw-ctrl-h| + Causes Netrw to refresh the directory listing |netrw-ctrl-l| + Browse using a gvim server |netrw-ctrl-r| + Shrink/expand a netrw/explore window |netrw-c-tab| + - Makes Netrw go up one directory |netrw--| + a Cycles between normal display, |netrw-a| + hiding (suppress display of files matching g:netrw_list_hide) + and showing (display only files which match g:netrw_list_hide) + cd Make browsing directory the current directory |netrw-cd| + C Setting the editing window |netrw-C| + d Make a directory |netrw-d| + D Attempt to remove the file(s)/directory(ies) |netrw-D| + gb Go to previous bookmarked directory |netrw-gb| + gd Force treatment as directory |netrw-gd| + gf Force treatment as file |netrw-gf| + gh Quick hide/unhide of dot-files |netrw-gh| + gn Make top of tree the directory below the cursor |netrw-gn| + gp Change local-only file permissions |netrw-gp| + i Cycle between thin, long, wide, and tree listings |netrw-i| + I Toggle the displaying of the banner |netrw-I| + mb Bookmark current directory |netrw-mb| + mc Copy marked files to marked-file target directory |netrw-mc| + md Apply diff to marked files (up to 3) |netrw-md| + me Place marked files on arg list and edit them |netrw-me| + mf Mark a file |netrw-mf| + mF Unmark files |netrw-mF| + mg Apply vimgrep to marked files |netrw-mg| + mh Toggle marked file suffices' presence on hiding list |netrw-mh| + mm Move marked files to marked-file target directory |netrw-mm| + mp Print marked files |netrw-mp| + mr Mark files using a shell-style |regexp| |netrw-mr| + mt Current browsing directory becomes markfile target |netrw-mt| + mT Apply ctags to marked files |netrw-mT| + mu Unmark all marked files |netrw-mu| + mv Apply arbitrary vim command to marked files |netrw-mv| + mx Apply arbitrary shell command to marked files |netrw-mx| + mX Apply arbitrary shell command to marked files en bloc|netrw-mX| + mz Compress/decompress marked files |netrw-mz| + o Enter the file/directory under the cursor in a new |netrw-o| + browser window. A horizontal split is used. + O Obtain a file specified by cursor |netrw-O| + p Preview the file |netrw-p| + P Browse in the previously used window |netrw-P| + qb List bookmarked directories and history |netrw-qb| + qf Display information on file |netrw-qf| + qF Mark files using a quickfix list |netrw-qF| + qL Mark files using a |location-list| |netrw-qL| + r Reverse sorting order |netrw-r| + R Rename the designated file(s)/directory(ies) |netrw-R| + s Select sorting style: by name, time, or file size |netrw-s| + S Specify suffix priority for name-sorting |netrw-S| + t Enter the file/directory under the cursor in a new tab|netrw-t| + u Change to recently-visited directory |netrw-u| + U Change to subsequently-visited directory |netrw-U| + v Enter the file/directory under the cursor in a new |netrw-v| + browser window. A vertical split is used. + x View file with an associated program |:Open| + X Execute filename under cursor via |system()| |netrw-X| + + % Open a new file in netrw's current directory |netrw-%| + + *netrw-mouse* *netrw-leftmouse* *netrw-middlemouse* *netrw-rightmouse* + (gvim only) selects word under mouse as if a + had been pressed (ie. edit file, change directory) + (gvim only) same as P selecting word under mouse; + see |netrw-P| + (gvim only) delete file/directory using word under + mouse + <2-leftmouse> (gvim only) when: + * in a netrw-selected file, AND + * |g:netrw_retmap| == 1 AND + * the user doesn't already have a <2-leftmouse> + mapping defined before netrw is autoloaded, + then a double clicked leftmouse button will return + to the netrw browser window. See |g:netrw_retmap|. + (gvim only) like mf, will mark files. Dragging + the shifted leftmouse will mark multiple files. + (see |netrw-mf|) + + (to disable mouse buttons while browsing: |g:netrw_mousemaps|) + + *netrw-quickcom* *netrw-quickcoms* +QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2 + :NetrwSettings............................................|netrw-settings| + :Ntree....................................................|netrw-ntree| + :Explore[!] [dir] Explore directory of current file......|netrw-explore| + :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore| + :Lexplore[!] [dir] Left Explorer Toggle...................|netrw-explore| + :Nexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| + :Pexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| + :Rexplore Return to Explorer.....................|netrw-explore| + :Sexplore[!] [dir] Split & Explore directory .............|netrw-explore| + :Texplore[!] [dir] Tab & Explore..........................|netrw-explore| + :Vexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| + + +BANNER DISPLAY *netrw-I* + +One may toggle the displaying of the banner by pressing "I". + +Also See: |g:netrw_banner| + + +BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2 + +One may easily "bookmark" the currently browsed directory by using > + + mb +< + *.netrwbook* +Bookmarks are retained in between sessions of vim in a file called .netrwbook +as a |List|, which is typically stored in the first directory on the user's +'runtimepath'; entries are kept in sorted order. + +If there are marked files and/or directories, mb will add them to the bookmark +list. + + *netrw-:NetrwMB* +Additionally, one may use :NetrwMB to bookmark files or directories. > + + :NetrwMB[!] [files/directories] + +< No bang: enters files/directories into Netrw's bookmark system + + No argument and in netrw buffer: + if there are marked files : bookmark marked files + otherwise : bookmark file/directory under cursor + No argument and not in netrw buffer: bookmarks current open file + Has arguments : |glob()|s each arg and bookmarks them + + With bang: deletes files/directories from Netrw's bookmark system + +The :NetrwMB command is available outside of netrw buffers (once netrw has been +invoked in the session). + +The file ".netrwbook" holds bookmarks when netrw (and vim) is not active. By +default, its stored on the first directory on the user's |'runtimepath'|. + +Related Topics: + |netrw-gb| how to return (go) to a bookmark + |netrw-mB| how to delete bookmarks + |netrw-qb| how to list bookmarks + |g:netrw_home| controls where .netrwbook is kept + + +BROWSING *netrw-enter* *netrw-cr* {{{2 + +Browsing is simple: move the cursor onto a file or directory of interest. +Hitting the (the return key) will select the file or directory. +Directories will themselves be listed, and files will be opened using the +protocol given in the original read request. + + CAVEAT: There are four forms of listing (see |netrw-i|). Netrw assumes that + two or more spaces delimit filenames and directory names for the long and + wide listing formats. Thus, if your filename or directory name has two or + more sequential spaces embedded in it, or any trailing spaces, then you'll + need to use the "thin" format to select it. + +The |g:netrw_browse_split| option, which is zero by default, may be used to +cause the opening of files to be done in a new window or tab instead of the +default. When the option is one or two, the splitting will be taken +horizontally or vertically, respectively. When the option is set to three, a + will cause the file to appear in a new tab. + + +When using the gui (gvim), one may select a file by pressing the +button. In addition, if + + * |g:netrw_retmap| == 1 AND (its default value is 0) + * in a netrw-selected file, AND + * the user doesn't already have a <2-leftmouse> mapping defined before + netrw is loaded + +then a doubly-clicked leftmouse button will return to the netrw browser +window. + +Netrw attempts to speed up browsing, especially for remote browsing where one +may have to enter passwords, by keeping and re-using previously obtained +directory listing buffers. The |g:netrw_fastbrowse| variable is used to +control this behavior; one may have slow browsing (no buffer re-use), medium +speed browsing (re-use directory buffer listings only for remote directories), +and fast browsing (re-use directory buffer listings as often as possible). +The price for such re-use is that when changes are made (such as new files +are introduced into a directory), the listing may become out-of-date. One may +always refresh directory listing buffers by pressing ctrl-L (see +|netrw-ctrl-l|). + + *netrw-s-cr* +Squeezing the Current Tree-Listing Directory~ + +When the tree listing style is enabled (see |netrw-i|) and one is using +gvim, then the mapping may be used to squeeze (close) the +directory currently containing the cursor. + +Otherwise, one may remap a key combination of one's own choice to get +this effect: > + + nmap YOURKEYCOMBO NetrwTreeSqueeze +< +Put this line in $HOME/ftplugin/netrw/netrw.vim; it needs to be generated +for netrw buffers only. + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_browse_split| |g:netrw_fastbrowse| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_browse_reject| + |g:netrw_ssh_cmd| |g:netrw_use_noswf| + + +BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* {{{2 + +Normally one enters a file or directory using the . However, the "o" map +allows one to open a new window to hold the new directory listing or file. A +horizontal split is used. (for vertical splitting, see |netrw-v|) + +Normally, the o key splits the window horizontally with the new window and +cursor at the top. + +Associated setting variables: |g:netrw_alto| |g:netrw_winsize| + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_alto| control above/below splitting + |g:netrw_winsize| control initial sizing + +BROWSING WITH A NEW TAB *netrw-t* {{{2 + +Normally one enters a file or directory using the . The "t" map +allows one to open a new window holding the new directory listing or file in +a new tab. + +If you'd like to have the new listing in a background tab, use |gT|. + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_winsize| control initial sizing + +BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* {{{2 + +Normally one enters a file or directory using the . However, the "v" map +allows one to open a new window to hold the new directory listing or file. A +vertical split is used. (for horizontal splitting, see |netrw-o|) + +Normally, the v key splits the window vertically with the new window and +cursor at the left. + +There is only one tree listing buffer; using "v" on a displayed subdirectory +will split the screen, but the same buffer will be shown twice. + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_altv| control right/left splitting + |g:netrw_winsize| control initial sizing + + +BROWSING USING A GVIM SERVER *netrw-ctrl-r* {{{2 + +One may keep a browsing gvim separate from the gvim being used to edit. +Use the map on a file (not a directory) in the netrw browser, and it +will use a gvim server (see |g:netrw_servername|). Subsequent use of +(see |netrw-cr|) will re-use that server for editing files. + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_servername| : sets name of server + |g:netrw_browse_split| : controls how will open files + + +CHANGE LISTING STYLE (THIN LONG WIDE TREE) *netrw-i* {{{2 + +The "i" map cycles between the thin, long, wide, and tree listing formats. + +The thin listing format gives just the files' and directories' names. + +The long listing is either based on the "ls" command via ssh for remote +directories or displays the filename, file size (in bytes), and the time and +date of last modification for local directories. With the long listing +format, netrw is not able to recognize filenames which have trailing spaces. +Use the thin listing format for such files. + +The wide listing format uses two or more contiguous spaces to delineate +filenames; when using that format, netrw won't be able to recognize or use +filenames which have two or more contiguous spaces embedded in the name or any +trailing spaces. The thin listing format will, however, work with such files. +The wide listing format is the most compact. + +The tree listing format has a top directory followed by files and directories +preceded by one or more "|"s, which indicate the directory depth. One may +open and close directories by pressing the key while atop the directory +name. + +One may make a preferred listing style your default; see |g:netrw_liststyle|. +As an example, by putting the following line in your .vimrc, > + let g:netrw_liststyle= 3 +the tree style will become your default listing style. + +One typical way to use the netrw tree display is to: > + + vim . + (use i until a tree display shows) + navigate to a file + v (edit as desired in vertically split window) + ctrl-w h (to return to the netrw listing) + P (edit newly selected file in the previous window) + ctrl-w h (to return to the netrw listing) + P (edit newly selected file in the previous window) + ...etc... +< +Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen| + |g:netrw_timefmt| |g:netrw_list_cmd| + +CHANGE FILE PERMISSION *netrw-gp* {{{2 + +"gp" will ask you for a new permission for the file named under the cursor. +Currently, this only works for local files. + +Associated setting variables: |g:netrw_chgperm| + + +CHANGING TO A BOOKMARKED DIRECTORY *netrw-gb* {{{2 + +To change directory back to a bookmarked directory, use + + {cnt}gb + +Any count may be used to reference any of the bookmarks. +Note that |netrw-qb| shows both bookmarks and history; to go +to a location stored in the history see |netrw-u| and |netrw-U|. + +Related Topics: + |netrw-mB| how to delete bookmarks + |netrw-mb| how to make a bookmark + |netrw-qb| how to list bookmarks + + +CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* {{{2 + +Every time you change to a new directory (new for the current session), netrw +will save the directory in a recently-visited directory history list (unless +|g:netrw_dirhistmax| is zero; by default, it holds ten entries). With the "u" +map, one can change to an earlier directory (predecessor). To do the +opposite, see |netrw-U|. + +The "u" map also accepts counts to go back in the history several slots. For +your convenience, qb (see |netrw-qb|) lists the history number which may be +used in that count. + + *.netrwhist* +See |g:netrw_dirhistmax| for how to control the quantity of history stack +slots. The file ".netrwhist" holds history when netrw (and vim) is not +active. By default, its stored on the first directory on the user's +|'runtimepath'|. + +Related Topics: + |netrw-U| changing to a successor directory + |g:netrw_home| controls where .netrwhist is kept + + +CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2 + +With the "U" map, one can change to a later directory (successor). +This map is the opposite of the "u" map. (see |netrw-u|) Use the +qb map to list both the bookmarks and history. (see |netrw-qb|) + +The "U" map also accepts counts to go forward in the history several slots. + +See |g:netrw_dirhistmax| for how to control the quantity of history stack +slots. + + +CHANGING TREE TOP *netrw-ntree* *:Ntree* *netrw-gn* {{{2 + +One may specify a new tree top for tree listings using > + + :Ntree [dirname] + +Without a "dirname", the current line is used (and any leading depth +information is elided). +With a "dirname", the specified directory name is used. + +The "gn" map will take the word below the cursor and use that for +changing the top of the tree listing. + + *netrw-curdir* +DELETING BOOKMARKS *netrw-mB* {{{2 + +To delete a bookmark, use > + + {cnt}mB + +If there are marked files, then mB will remove them from the +bookmark list. + +Alternatively, one may use :NetrwMB! (see |netrw-:NetrwMB|). > + + :NetrwMB! [files/directories] + +Related Topics: + |netrw-gb| how to return (go) to a bookmark + |netrw-mb| how to make a bookmark + |netrw-qb| how to list bookmarks + + +DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D* *netrw-del* {{{2 + +If files have not been marked with |netrw-mf|: (local marked file list) + + Deleting/removing files and directories involves moving the cursor to the + file/directory to be deleted and pressing "D". Directories must be empty + first before they can be successfully removed. If the directory is a + softlink to a directory, then netrw will make two requests to remove the + directory before succeeding. Netrw will ask for confirmation before doing + the removal(s). You may select a range of lines with the "V" command + (visual selection), and then pressing "D". + +If files have been marked with |netrw-mf|: (local marked file list) + + Marked files (and empty directories) will be deleted; again, you'll be + asked to confirm the deletion before it actually takes place. + +A further approach is to delete files which match a pattern. + + * use :MF pattern (see |netrw-:MF|); then press "D". + + * use mr (see |netrw-mr|) which will prompt you for pattern. + This will cause the matching files to be marked. Then, + press "D". + +Please note that only empty directories may be deleted with the "D" mapping. +Regular files are deleted with |delete()|, too. + +The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are +used to control the attempts to remove remote files and directories. The +g:netrw_rm_cmd is used with files, and its default value is: + + g:netrw_rm_cmd: ssh HOSTNAME rm + +The g:netrw_rmdir_cmd variable is used to support the removal of directories. +Its default value is: + + |g:netrw_rmdir_cmd|: ssh HOSTNAME rmdir + +If removing a directory fails with g:netrw_rmdir_cmd, netrw then will attempt +to remove it again using the g:netrw_rmf_cmd variable. Its default value is: + + |g:netrw_rmf_cmd|: ssh HOSTNAME rm -f + +Related topics: |netrw-d| +Associated setting variable: |g:netrw_rm_cmd| |g:netrw_ssh_cmd| + + +*netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore* +*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* *netrw-lexplore* +DIRECTORY EXPLORATION COMMANDS {{{2 + + :[N]Explore[!] [dir]... Explore directory of current file *:Explore* + :[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore* + :[N]Lexplore[!] [dir]... Left Explorer Toggle *:Lexplore* + :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore* + :[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore* + :Texplore [dir]... Tab & Explore *:Texplore* + :Rexplore ... Return to/from Explorer *:Rexplore* + + Used with :Explore **/pattern : (also see |netrw-starstar|) + :Nexplore............. go to next matching file *:Nexplore* + :Pexplore............. go to previous matching file *:Pexplore* + + *netrw-:Explore* +:Explore will open the local-directory browser on the current file's + directory (or on directory [dir] if specified). The window will be + split only if the file has been modified and |'hidden'| is not set, + otherwise the browsing window will take over that window. Normally + the splitting is taken horizontally. + Also see: |netrw-:Rexplore| +:Explore! is like :Explore, but will use vertical splitting. + + *netrw-:Hexplore* +:Hexplore [dir] does an :Explore with |:belowright| horizontal splitting. +:Hexplore! [dir] does an :Explore with |:aboveleft| horizontal splitting. + + *netrw-:Lexplore* +:[N]Lexplore [dir] toggles a full height Explorer window on the left hand side + of the current tab. It will open a netrw window on the current + directory if [dir] is omitted; a :Lexplore [dir] will show the + specified directory in the left-hand side browser display no matter + from which window the command is issued. + + By default, :Lexplore will change an uninitialized |g:netrw_chgwin| + to 2; edits will thus preferentially be made in window#2. + + The [N] specifies a |g:netrw_winsize| just for the new :Lexplore + window. That means that + if [N] < 0 : use |N| columns for the Lexplore window + if [N] = 0 : a normal split is made + if [N] > 0 : use N% of the current window will be used for the + new window + + Those who like this method often also like tree style displays; + see |g:netrw_liststyle|. + +:[N]Lexplore! [dir] is similar to :Lexplore, except that the full-height + Explorer window will open on the right hand side and an + uninitialized |g:netrw_chgwin| will be set to 1 (eg. edits will + preferentially occur in the leftmost window). + + Also see: |netrw-C| |g:netrw_browse_split| |g:netrw_wiw| + |netrw-p| |netrw-P| |g:netrw_chgwin| + |netrw-c-tab| |g:netrw_winsize| + + *netrw-:Sexplore* +:[N]Sexplore will always split the window before invoking the local-directory + browser. As with Explore, the splitting is normally done + horizontally. +:[N]Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically. + + *netrw-:Texplore* +:Texplore [dir] does a |:tabnew| before generating the browser window + + *netrw-:Vexplore* +:[N]Vexplore [dir] does an :Explore with |:leftabove| vertical splitting. +:[N]Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting. + +The optional parameters are: + + [N]: This parameter will override |g:netrw_winsize| to specify the quantity of + rows and/or columns the new explorer window should have. + Otherwise, the |g:netrw_winsize| variable, if it has been specified by the + user, is used to control the quantity of rows and/or columns new + explorer windows should have. + + [dir]: By default, these explorer commands use the current file's directory. + However, one may explicitly provide a directory (path) to use instead; + ie. > + + :Explore /some/path +< + *netrw-:Rexplore* +:Rexplore This command is a little different from the other Explore commands + as it doesn't necessarily open an Explorer window. + + Return to Explorer~ + When one edits a file using netrw which can occur, for example, + when pressing while the cursor is atop a filename in a netrw + browser window, a :Rexplore issued while editing that file will + return the display to that of the last netrw browser display in + that window. + + Return from Explorer~ + Conversely, when one is editing a directory, issuing a :Rexplore + will return to editing the file that was last edited in that + window. + + The <2-leftmouse> map (which is only available under gvim and + cooperative terms) does the same as :Rexplore. + +Also see: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize| + + +*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* *netrw-grep* +EXPLORING WITH STARS AND PATTERNS {{{2 + +When Explore, Sexplore, Hexplore, or Vexplore are used with one of the +following four patterns Explore generates a list of files which satisfy the +request for the local file system. These exploration patterns will not work +with remote file browsing. + + */filepat files in current directory which satisfy filepat + **/filepat files in current directory or below which satisfy the + file pattern + *//pattern files in the current directory which contain the + pattern (vimgrep is used) + **//pattern files in the current directory or below which contain + the pattern (vimgrep is used) +< +The cursor will be placed on the first file in the list. One may then +continue to go to subsequent files on that list via |:Nexplore| or to +preceding files on that list with |:Pexplore|. Explore will update the +directory and place the cursor appropriately. + +A plain > + :Explore +will clear the explore list. + +If your console or gui produces recognizable shift-up or shift-down sequences, +then you'll likely find using shift-downarrow and shift-uparrow convenient. +They're mapped by netrw as follows: + + == Nexplore, and + == Pexplore. + +As an example, consider +> + :Explore */*.c + :Nexplore + :Nexplore + :Pexplore +< +The status line will show, on the right hand side of the status line, a +message like "Match 3 of 20". + +Associated setting variables: + |g:netrw_keepdir| |g:netrw_browse_split| + |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| + |g:netrw_liststyle| + + +DISPLAYING INFORMATION ABOUT FILE *netrw-qf* {{{2 + +With the cursor atop a filename, pressing "qf" will reveal the file's size +and last modification timestamp. Currently this capability is only available +for local files. + + +EDIT FILE OR DIRECTORY HIDING LIST *netrw-ctrl-h* *netrw-edithide* {{{2 + +The "" map brings up a requestor allowing the user to change the +file/directory hiding list contained in |g:netrw_list_hide|. The hiding list +consists of one or more patterns delimited by commas. Files and/or +directories satisfying these patterns will either be hidden (ie. not shown) or +be the only ones displayed (see |netrw-a|). + +The "gh" mapping (see |netrw-gh|) quickly alternates between the usual +hiding list and the hiding of files or directories that begin with ".". + +As an example, > + let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' +Effectively, this makes the effect of a |netrw-gh| command the initial setting. +What it means: + + \(^\|\s\s\) : if the line begins with the following, -or- + two consecutive spaces are encountered + \zs : start the hiding match now + \. : if it now begins with a dot + \S\+ : and is followed by one or more non-whitespace + characters + +Associated setting variables: |g:netrw_hide| |g:netrw_list_hide| +Associated topics: |netrw-a| |netrw-gh| |netrw-mh| + + *netrw-sort-sequence* +EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* {{{2 + +When "Sorted by" is name, one may specify priority via the sorting sequence +(g:netrw_sort_sequence). The sorting sequence typically prioritizes the +name-listing by suffix, although any pattern will do. Patterns are delimited +by commas. The default sorting sequence is (all one line): + +For Unix: > + '[\/]$,\ + '[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$, + \.swp$,\.bak$,\~$' +< +The lone * is where all filenames not covered by one of the other patterns +will end up. One may change the sorting sequence by modifying the +g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by +using the "S" map. + +Related topics: |netrw-s| |netrw-S| +Associated setting variables: |g:netrw_sort_sequence| |g:netrw_sort_options| + + +EXECUTING FILE UNDER CURSOR VIA SYSTEM() *netrw-X* {{{2 + +Pressing X while the cursor is atop an executable file will yield a prompt +using the filename asking for any arguments. Upon pressing a [return], netrw +will then call |system()| with that command and arguments. The result will be +displayed by |:echomsg|, and so |:messages| will repeat display of the result. +Ansi escape sequences will be stripped out. + +See |cmdline-window| for directions for more on how to edit the arguments. + + +FORCING TREATMENT AS A FILE OR DIRECTORY *netrw-gd* *netrw-gf* {{{2 + +Remote symbolic links (ie. those listed via ssh or ftp) are problematic +in that it is difficult to tell whether they link to a file or to a +directory. + +To force treatment as a file: use > + gf +< +To force treatment as a directory: use > + gd +< + +GOING UP *netrw--* {{{2 + +To go up a directory, press "-" or press the when atop the ../ directory +entry in the listing. + +Netrw will use the command in |g:netrw_list_cmd| to perform the directory +listing operation after changing HOSTNAME to the host specified by the +user-prpvided url. By default netrw provides the command as: > + + ssh HOSTNAME ls -FLa +< +where the HOSTNAME becomes the [user@]hostname as requested by the attempt to +read. Naturally, the user may override this command with whatever is +preferred. The NetList function which implements remote browsing +expects that directories will be flagged by a trailing slash. + + +HIDING FILES OR DIRECTORIES *netrw-a* *netrw-hiding* {{{2 + +Netrw's browsing facility allows one to use the hiding list in one of three +ways: ignore it, hide files which match, and show only those files which +match. + +If no files have been marked via |netrw-mf|: + +The "a" map allows the user to cycle through the three hiding modes. + +The |g:netrw_list_hide| variable holds a comma delimited list of patterns +based on regular expressions (ex. ^.*\.obj$,^\.) which specify the hiding list. +(also see |netrw-ctrl-h|) To set the hiding list, use the map. As an +example, to hide files which begin with a ".", one may use the map to +set the hiding list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*' +in one's <.vimrc>). One may then use the "a" key to show all files, hide +matching files, or to show only the matching files. + + Example: \.[ch]$ + This hiding list command will hide/show all *.c and *.h files. + + Example: \.c$,\.h$ + This hiding list command will also hide/show all *.c and *.h + files. + +Don't forget to use the "a" map to select the mode (normal/hiding/show) you +want! + +If files have been marked using |netrw-mf|, then this command will: + + if showing all files or non-hidden files: + modify the g:netrw_list_hide list by appending the marked files to it + and showing only non-hidden files. + + else if showing hidden files only: + modify the g:netrw_list_hide list by removing the marked files from it + and showing only non-hidden files. + endif + + *netrw-gh* *netrw-hide* +As a quick shortcut, one may press > + gh +to toggle between hiding files which begin with a period (dot) and not hiding +them. + +Associated setting variables: |g:netrw_list_hide| |g:netrw_hide| +Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh| + + *netrw-gitignore* +Netrw provides a helper function 'netrw_gitignore#Hide()' that, when used with +|g:netrw_list_hide| automatically hides all git-ignored files. + +'netrw_gitignore#Hide' searches for patterns in the following files: > + + './.gitignore' + './.git/info/exclude' + global gitignore file: `git config --global core.excludesfile` + system gitignore file: `git config --system core.excludesfile` +< +Files that do not exist, are ignored. +Git-ignore patterns are taken from existing files, and converted to patterns for +hiding files. For example, if you had '*.log' in your '.gitignore' file, it +would be converted to '.*\.log'. + +To use this function, simply assign its output to |g:netrw_list_hide| option. > + + Example: let g:netrw_list_hide= netrw_gitignore#Hide() + Git-ignored files are hidden in Netrw. + + Example: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file') + Function can take additional files with git-ignore patterns. + + Example: let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$' + Combining 'netrw_gitignore#Hide' with custom patterns. +< + +IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2 + +Especially with the remote directory browser, constantly entering the password +is tedious. + +For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength +tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip +for setting up no-password ssh and scp and discusses associated security +issues. It used to be available at http://hacks.oreilly.com/pub/h/66 , +but apparently that address is now being redirected to some "hackzine". +I'll attempt a summary based on that article and on a communication from +Ben Schmidt: + + 1. Generate a public/private key pair on the local machine + (ssh client): > + ssh-keygen -t rsa + (saving the file in ~/.ssh/id_rsa as prompted) +< + 2. Just hit the when asked for passphrase (twice) for no + passphrase. If you do use a passphrase, you will also need to use + ssh-agent so you only have to type the passphrase once per session. + If you don't use a passphrase, simply logging onto your local + computer or getting access to the keyfile in any way will suffice + to access any ssh servers which have that key authorized for login. + + 3. This creates two files: > + ~/.ssh/id_rsa + ~/.ssh/id_rsa.pub +< + 4. On the target machine (ssh server): > + cd + mkdir -p .ssh + chmod 0700 .ssh +< + 5. On your local machine (ssh client): (one line) > + ssh {serverhostname} + cat '>>' '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub +< + or, for OpenSSH, (one line) > + ssh {serverhostname} + cat '>>' '~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub +< +You can test it out with > + ssh {serverhostname} +and you should be log onto the server machine without further need to type +anything. + +If you decided to use a passphrase, do: > + ssh-agent $SHELL + ssh-add + ssh {serverhostname} +You will be prompted for your key passphrase when you use ssh-add, but not +subsequently when you use ssh. For use with vim, you can use > + ssh-agent vim +and, when next within vim, use > + :!ssh-add +Alternatively, you can apply ssh-agent to the terminal you're planning on +running vim in: > + ssh-agent xterm & +and do ssh-add whenever you need. + +For Windows, folks on the vim mailing list have mentioned that Pageant helps +with avoiding the constant need to enter the password. + +Kingston Fung wrote about another way to avoid constantly needing to enter +passwords: + + In order to avoid the need to type in the password for scp each time, you + provide a hack in the docs to set up a non password ssh account. I found a + better way to do that: I can use a regular ssh account which uses a + password to access the material without the need to key-in the password + each time. It's good for security and convenience. I tried ssh public key + authorization + ssh-agent, implementing this, and it works! + + + Ssh hints: + + Thomer Gil has provided a hint on how to speed up netrw+ssh: + http://thomer.com/howtos/netrw_ssh.html + + Alex Young has several hints on speeding ssh up: + http://usevim.com/2012/03/16/editing-remote-files/ + + +LISTING BOOKMARKS AND HISTORY *netrw-qb* *netrw-listbookmark* {{{2 + +Pressing "qb" (query bookmarks) will list both the bookmarked directories and +directory traversal history. + +Related Topics: + |netrw-gb| how to return (go) to a bookmark + |netrw-mb| how to make a bookmark + |netrw-mB| how to delete bookmarks + |netrw-u| change to a predecessor directory via the history stack + |netrw-U| change to a successor directory via the history stack + +MAKING A NEW DIRECTORY *netrw-d* {{{2 + +With the "d" map one may make a new directory either remotely (which depends +on the global variable g:netrw_mkdir_cmd) or locally (which depends on the +global variable g:netrw_localmkdir). Netrw will issue a request for the new +directory's name. A bare at that point will abort the making of the +directory. Attempts to make a local directory that already exists (as either +a file or a directory) will be detected, reported on, and ignored. + +Related topics: |netrw-D| +Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| + |g:netrw_remote_mkdir| |netrw-%| + + +MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-cd* {{{2 + +By default, |g:netrw_keepdir| is 1. This setting means that the current +directory will not track the browsing directory. (done for backwards +compatibility with v6's file explorer). + +Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory +track netrw's browsing directory. + +However, given the default setting for g:netrw_keepdir of 1 where netrw +maintains its own separate notion of the current directory, in order to make +the two directories the same, use the "cd" map (type cd). That map will +set Vim's notion of the current directory to netrw's current browsing +directory. + +|netrw-cd| : This map's name was changed from "c" to cd (see |netrw-cd|). + This change was done to allow for |netrw-cb| and |netrw-cB| maps. + +Associated setting variable: |g:netrw_keepdir| + +MARKING FILES *netrw-:MF* *netrw-mf* {{{2 + (also see |netrw-mr|) + +Netrw provides several ways to mark files: + + * One may mark files with the cursor atop a filename and + then pressing "mf". + + * With gvim, in addition one may mark files with + . (see |netrw-mouse|) + + * One may use the :MF command, which takes a list of + files (for local directories, the list may include + wildcards -- see |glob()|) > + + :MF *.c +< + (Note that :MF uses || to break the line + at spaces) + + * Mark files using the |argument-list| (|netrw-mA|) + + * Mark files based upon a |location-list| (|netrw-qL|) + + * Mark files based upon the quickfix list (|netrw-qF|) + (|quickfix-error-lists|) + +The following netrw maps make use of marked files: + + |netrw-a| Hide marked files/directories + |netrw-D| Delete marked files/directories + |netrw-ma| Move marked files' names to |arglist| + |netrw-mA| Move |arglist| filenames to marked file list + |netrw-mb| Append marked files to bookmarks + |netrw-mB| Delete marked files from bookmarks + |netrw-mc| Copy marked files to target + |netrw-md| Apply vimdiff to marked files + |netrw-me| Edit marked files + |netrw-mF| Unmark marked files + |netrw-mg| Apply vimgrep to marked files + |netrw-mm| Move marked files to target + |netrw-mp| Print marked files + |netrw-ms| Netrw will source marked files + |netrw-mt| Set target for |netrw-mm| and |netrw-mc| + |netrw-mT| Generate tags using marked files + |netrw-mv| Apply vim command to marked files + |netrw-mx| Apply shell command to marked files + |netrw-mX| Apply shell command to marked files, en bloc + |netrw-mz| Compress/Decompress marked files + |netrw-O| Obtain marked files + |netrw-R| Rename marked files + +One may unmark files one at a time the same way one marks them; ie. place +the cursor atop a marked file and press "mf". This process also works +with using gvim. One may unmark all files by pressing +"mu" (see |netrw-mu|). + +Marked files are highlighted using the "netrwMarkFile" highlighting group, +which by default is linked to "Identifier" (see Identifier under +|group-name|). You may change the highlighting group by putting something +like > + + highlight clear netrwMarkFile + hi link netrwMarkFile ..whatever.. +< +into $HOME/.vim/after/syntax/netrw.vim . + +If the mouse is enabled and works with your vim, you may use to +mark one or more files. You may mark multiple files by dragging the shifted +leftmouse. (see |netrw-mouse|) + + *markfilelist* *global_markfilelist* *local_markfilelist* +All marked files are entered onto the global marked file list; there is only +one such list. In addition, every netrw buffer also has its own buffer-local +marked file list; since netrw buffers are associated with specific +directories, this means that each directory has its own local marked file +list. The various commands which operate on marked files use one or the other +of the marked file lists. + +Known Problem: if one is using tree mode (|g:netrw_liststyle|) and several +directories have files with the same name, then marking such a file will +result in all such files being highlighted as if they were all marked. The +|markfilelist|, however, will only have the selected file in it. This problem +is unlikely to be fixed. + + +UNMARKING FILES *netrw-mF* {{{2 + (also see |netrw-mf|, |netrw-mu|) + +The "mF" command will unmark all files in the current buffer. One may also use +mf (|netrw-mf|) on a specific, already marked, file to unmark just that file. + +MARKING FILES BY LOCATION LIST *netrw-qL* {{{2 + (also see |netrw-mf|) + +One may convert |location-list|s into a marked file list using "qL". +You may then proceed with commands such as me (|netrw-me|) to edit them. + + +MARKING FILES BY QUICKFIX LIST *netrw-qF* {{{2 + (also see |netrw-mf|) + +One may convert |quickfix-error-lists| into a marked file list using "qF". +You may then proceed with commands such as me (|netrw-me|) to edit them. +Quickfix error lists are generated, for example, by calls to |:vimgrep|. + + +MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2 + (also see |netrw-mf|) + +One may also mark files by pressing "mr"; netrw will then issue a prompt, +"Enter regexp: ". You may then enter a shell-style regular expression such +as *.c$ (see |glob()|). For remote systems, glob() doesn't work -- so netrw +converts "*" into ".*" (see |regexp|) and marks files based on that. In the +future I may make it possible to use |regexp|s instead of glob()-style +expressions (yet-another-option). + +See |cmdline-window| for directions on more on how to edit the regular +expression. + + +MARKED FILES, ARBITRARY VIM COMMAND *netrw-mv* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked-file list) + +The "mv" map causes netrw to execute an arbitrary vim command on each file on +the local marked file list, individually: + + * 1split + * sil! keepalt e file + * run vim command + * sil! keepalt wq! + +A prompt, "Enter vim command: ", will be issued to elicit the vim command you +wish used. See |cmdline-window| for directions for more on how to edit the +command. + + +MARKED FILES, ARBITRARY SHELL COMMAND *netrw-mx* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked-file list) + +Upon activation of the "mx" map, netrw will query the user for some (external) +command to be applied to all marked files. All "%"s in the command will be +substituted with the name of each marked file in turn. If no "%"s are in the +command, then the command will be followed by a space and a marked filename. + +Example: + (mark files) + mx + Enter command: cat + + The result is a series of shell commands: + cat 'file1' + cat 'file2' + ... + + +MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC *netrw-mX* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked-file list) + +Upon activation of the 'mX' map, netrw will query the user for some (external) +command to be applied to all marked files on the global marked file list. The +"en bloc" means that one command will be executed on all the files at once: > + + command files + +This approach is useful, for example, to select files and make a tarball: > + + (mark files) + mX + Enter command: tar cf mynewtarball.tar +< +The command that will be run with this example: + + tar cf mynewtarball.tar 'file1' 'file2' ... + + +MARKED FILES: ARGUMENT LIST *netrw-ma* *netrw-mA* + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked-file list) + +Using ma, one moves filenames from the marked file list to the argument list. +Using mA, one moves filenames from the argument list to the marked file list. + +See Also: |netrw-cb| |netrw-cB| |netrw-qF| |argument-list| |:args| + + +MARKED FILES: BUFFER LIST *netrw-cb* *netrw-cB* + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked-file list) + +Using cb, one moves filenames from the marked file list to the buffer list. +Using cB, one copies filenames from the buffer list to the marked file list. + +See Also: |netrw-ma| |netrw-mA| |netrw-qF| |buffer-list| |:buffers| + + +MARKED FILES: COMPRESSION AND DECOMPRESSION *netrw-mz* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) + +If any marked files are compressed, then "mz" will decompress them. +If any marked files are decompressed, then "mz" will compress them +using the command specified by |g:netrw_compress|; by default, +that's "gzip". + +For decompression, netrw uses a |Dictionary| of suffices and their +associated decompressing utilities; see |g:netrw_decompress|. + +Remember that one can mark multiple files by regular expression +(see |netrw-mr|); this is particularly useful to facilitate compressing and +decompressing a large number of files. + +Associated setting variables: |g:netrw_compress| |g:netrw_decompress| + +MARKED FILES: COPYING *netrw-mc* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (Uses the global marked file list) + +Select a target directory with mt (|netrw-mt|). Then change directory, +select file(s) (see |netrw-mf|), and press "mc". The copy is done +from the current window (where one does the mf) to the target. + +If one does not have a target directory set with |netrw-mt|, then netrw +will query you for a directory to copy to. + +One may also copy directories and their contents (local only) to a target +directory. + +Associated setting variables: + |g:netrw_localcopycmd| |g:netrw_localcopycmdopt| + |g:netrw_localcopydircmd| |g:netrw_localcopydircmdopt| + |g:netrw_ssh_cmd| + +MARKED FILES: DIFF *netrw-md* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) + +Use |vimdiff| to visualize difference between selected files (two or +three may be selected for this). Uses the global marked file list. + +MARKED FILES: EDITING *netrw-me* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) + +The "me" command will place the marked files on the |arglist| and commence +editing them. One may return the to explorer window with |:Rexplore|. +(use |:n| and |:p| to edit next and previous files in the arglist) + +MARKED FILES: GREP *netrw-mg* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) + +The "mg" command will apply |:vimgrep| to the marked files. +The command will ask for the requested pattern; one may then enter: > + + /pattern/[g][j] + ! /pattern/[g][j] + pattern +< +With /pattern/, editing will start with the first item on the |quickfix| list +that vimgrep sets up (see |:copen|, |:cnext|, |:cprevious|, |:cclose|). The |:vimgrep| +command is in use, so without 'g' each line is added to quickfix list only +once; with 'g' every match is included. + +With /pattern/j, "mg" will winnow the current marked file list to just those +marked files also possessing the specified pattern. Thus, one may use > + + mr ...file-pattern... + mg /pattern/j +< +to have a marked file list satisfying the file-pattern but also restricted to +files containing some desired pattern. + + +MARKED FILES: HIDING AND UNHIDING BY SUFFIX *netrw-mh* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) + +The "mh" command extracts the suffices of the marked files and toggles their +presence on the hiding list. Please note that marking the same suffix +this way multiple times will result in the suffix's presence being toggled +for each file (so an even quantity of marked files having the same suffix +is the same as not having bothered to select them at all). + +Related topics: |netrw-a| |g:netrw_list_hide| + +MARKED FILES: MOVING *netrw-mm* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) + + WARNING: moving files is more dangerous than copying them. + A file being moved is first copied and then deleted; if the + copy operation fails and the delete succeeds, you will lose + the file. Either try things out with unimportant files + first or do the copy and then delete yourself using mc and D. + Use at your own risk! + +Select a target directory with mt (|netrw-mt|). Then change directory, +select file(s) (see |netrw-mf|), and press "mm". The move is done +from the current window (where one does the mf) to the target. + +Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd| + +MARKED FILES: PRINTING *netrw-mp* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) + +When "mp" is used, netrw will apply the |:hardcopy| command to marked files. +What netrw does is open each file in a one-line window, execute hardcopy, then +close the one-line window. + + +MARKED FILES: SOURCING *netrw-ms* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) + +With "ms", netrw will source the marked files (using vim's |:source| command) + + +MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + +Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): + + * If the cursor is atop a file name, then the netrw window's currently + displayed directory is used for the copy/move-to target. + + * Also, if the cursor is in the banner, then the netrw window's currently + displayed directory is used for the copy/move-to target. + Unless the target already is the current directory. In which case, + typing "mf" clears the target. + + * However, if the cursor is atop a directory name, then that directory is + used for the copy/move-to target + + * One may use the :MT [directory] command to set the target *netrw-:MT* + This command uses ||, so spaces in the directory name are + permitted without escaping. + + * With mouse-enabled vim or with gvim, one may select a target by using + + +There is only one copy/move-to target at a time in a vim session; ie. the +target is a script variable (see |s:var|) and is shared between all netrw +windows (in an instance of vim). + +When using menus and gvim, netrw provides a "Targets" entry which allows one +to pick a target from the list of bookmarks and history. + +Related topics: + Marking Files......................................|netrw-mf| + Marking Files by Regular Expression................|netrw-mr| + Marked Files: Target Directory Using Bookmarks.....|netrw-Tb| + Marked Files: Target Directory Using History.......|netrw-Th| + + +MARKED FILES: TAGGING *netrw-mT* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) + +The "mT" mapping will apply the command in |g:netrw_ctags| (by default, it is +"ctags") to marked files. For remote browsing, in order to create a tags file +netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for +this to work on remote systems. For your local system, see |ctags| on how to +get a version. I myself use hdrtags, currently available at +http://www.drchip.org/astronaut/src/index.html , and have > + + let g:netrw_ctags= "hdrtag" +< +in my <.vimrc>. + +When a remote set of files are tagged, the resulting tags file is "obtained"; +ie. a copy is transferred to the local system's directory. The now local tags +file is then modified so that one may use it through the network. The +modification made concerns the names of the files in the tags; each filename is +preceded by the netrw-compatible URL used to obtain it. When one subsequently +uses one of the go to tag actions (|tags|), the URL will be used by netrw to +edit the desired file and go to the tag. + +Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd| + +MARKED FILES: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2 + +Sets the marked file copy/move-to target. + +The |netrw-qb| map will give you a list of bookmarks (and history). +One may choose one of the bookmarks to become your marked file +target by using [count]Tb (default count: 1). + +Related topics: + Copying files to target............................|netrw-mc| + Listing Bookmarks and History......................|netrw-qb| + Marked Files: Setting The Target Directory.........|netrw-mt| + Marked Files: Target Directory Using History.......|netrw-Th| + Marking Files......................................|netrw-mf| + Marking Files by Regular Expression................|netrw-mr| + Moving files to target.............................|netrw-mm| + + +MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2 + +Sets the marked file copy/move-to target. + +The |netrw-qb| map will give you a list of history (and bookmarks). +One may choose one of the history entries to become your marked file +target by using [count]Th (default count: 0; ie. the current directory). + +Related topics: + Copying files to target............................|netrw-mc| + Listing Bookmarks and History......................|netrw-qb| + Marked Files: Setting The Target Directory.........|netrw-mt| + Marked Files: Target Directory Using Bookmarks.....|netrw-Tb| + Marking Files......................................|netrw-mf| + Marking Files by Regular Expression................|netrw-mr| + Moving files to target.............................|netrw-mm| + + +MARKED FILES: UNMARKING *netrw-mu* {{{2 + (See |netrw-mf|, |netrw-mF|) + +The "mu" mapping will unmark all currently marked files. This command differs +from "mF" as the latter only unmarks files in the current directory whereas +"mu" will unmark global and all buffer-local marked files. +(see |netrw-mF|) + + + *netrw-browser-settings* +NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2 + +(if you're interested in the netrw file transfer settings, see |netrw-options| + and |netrw-protocol|) + +The browser provides settings in the form of variables which +you may modify; by placing these settings in your <.vimrc>, you may customize +your browsing preferences. (see also: |netrw-settings|) +> + --- ----------- + Var Explanation + --- ----------- +< *g:netrw_altfile* some like |CTRL-^| to return to the last + edited file. Choose that by setting this + parameter to 1. + Others like |CTRL-^| to return to the + netrw browsing buffer. Choose that by setting + this parameter to 0. + default: =0 + + *g:netrw_alto* change from above splitting to below splitting + by setting this variable (see |netrw-o|) + default: =&sb (see |'sb'|) + + *g:netrw_altv* change from left splitting to right splitting + by setting this variable (see |netrw-v|) + default: =&spr (see |'spr'|) + + *g:netrw_banner* enable/suppress the banner + =0: suppress the banner + =1: banner is enabled (default) + + *g:netrw_bannerbackslash* if this variable exists and is not zero, the + banner will be displayed with backslashes + rather than forward slashes. + + *g:netrw_browse_split* when browsing, will open the file by: + =0: re-using the same window (default) + =1: horizontally splitting the window first + =2: vertically splitting the window first + =3: open file in new tab + =4: act like "P" (ie. open previous window) + Note that |g:netrw_preview| may be used + to get vertical splitting instead of + horizontal splitting. + =[servername,tab-number,window-number] + Given a |List| such as this, a remote server + named by the "servername" will be used for + editing. It will also use the specified tab + and window numbers to perform editing + (see |clientserver|, |netrw-ctrl-r|) + This option does not affect the production of + |:Lexplore| windows. + + Related topics: + |g:netrw_alto| |g:netrw_altv| + |netrw-C| |netrw-cr| + |netrw-ctrl-r| + + *g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME" + Windows: "cacls FILENAME /e /p PERM" + Used to change access permission for a file. + + *g:netrw_clipboard* =1 + By default, netrw will attempt to insure that + the clipboard's values will remain unchanged. + However, some users report that they have + speed problems with this; consequently, this + option, when set to zero, lets such users + prevent netrw from saving and restoring the + clipboard (the latter is done only as needed). + That means that if the clipboard is changed + (inadvertently) by normal netrw operation that + it will not be restored to its prior state. + + *g:netrw_compress* ="gzip" + Will compress marked files with this + command + + *g:Netrw_corehandler* Allows one to specify something additional + to do when handling files via netrw's + browser's "x" command. If present, + g:Netrw_corehandler specifies either one or + more function references (see |Funcref|). + (the capital g:Netrw... is required its + holding a function reference) + + + *g:netrw_ctags* ="ctags" + The default external program used to create + tags + + *g:netrw_cursor* = 2 (default) + This option controls the use of the + |'cursorline'| (cul) and |'cursorcolumn'| + (cuc) settings by netrw: + + Value Thin-Long-Tree Wide + =0 u-cul u-cuc u-cul u-cuc + =1 u-cul u-cuc cul u-cuc + =2 cul u-cuc cul u-cuc + =3 cul u-cuc cul cuc + =4 cul cuc cul cuc + =5 U-cul U-cuc U-cul U-cuc + =6 U-cul U-cuc cul U-cuc + =7 cul U-cuc cul U-cuc + =8 cul U-cuc cul cuc + + Where + u-cul : user's |'cursorline'| initial setting used + u-cuc : user's |'cursorcolumn'| initial setting used + U-cul : user's |'cursorline'| current setting used + U-cuc : user's |'cursorcolumn'| current setting used + cul : |'cursorline'| will be locally set + cuc : |'cursorcolumn'| will be locally set + + The "initial setting" means the values of + the |'cuc'| and |'cul'| settings in effect when + netrw last saw |g:netrw_cursor| >= 5 or when + netrw was initially run. + + *g:netrw_decompress* = { '.lz4': 'lz4 -d', + '.lzo': 'lzop -d', + '.lz': 'lzip -dk', + '.7z': '7za x', + '.001': '7za x', + '.tar.bz': 'tar -xvjf', + '.tar.bz2': 'tar -xvjf', + '.tbz': 'tar -xvjf', + '.tbz2': 'tar -xvjf', + '.tar.gz': 'tar -xvzf', + '.tgz': 'tar -xvzf', + '.tar.zst': 'tar --use-compress-program=unzstd -xvf', + '.tzst': 'tar --use-compress-program=unzstd -xvf', + '.tar': 'tar -xvf', + '.zip': 'unzip', + '.bz': 'bunzip2 -k', + '.bz2': 'bunzip2 -k', + '.gz': 'gunzip -k', + '.lzma': 'unlzma -T0 -k', + '.xz': 'unxz -T0 -k', + '.zst': 'zstd -T0 -d', + '.Z': 'uncompress -k', + '.rar': 'unrar x -ad', + '.tar.lzma': 'tar --lzma -xvf', + '.tlz': 'tar --lzma -xvf', + '.tar.xz': 'tar -xvJf', + '.txz': 'tar -xvJf'} + + A dictionary mapping suffices to + decompression programs. + + *g:netrw_dirhistmax* =10: controls maximum quantity of past + history. May be zero to suppress + history. + (related: |netrw-qb| |netrw-u| |netrw-U|) + + *g:netrw_dynamic_maxfilenamelen* =32: enables dynamic determination of + |g:netrw_maxfilenamelen|, which affects + local file long listing. + + *g:netrw_errorlvl* =0: error levels greater than or equal to + this are permitted to be displayed + 0: notes + 1: warnings + 2: errors + + *g:netrw_fastbrowse* =0: slow speed directory browsing; + never re-uses directory listings; + always obtains directory listings. + =1: medium speed directory browsing; + re-use directory listings only + when remote directory browsing. + (default value) + =2: fast directory browsing; + only obtains directory listings when the + directory hasn't been seen before + (or |netrw-ctrl-l| is used). + + Fast browsing retains old directory listing + buffers so that they don't need to be + re-acquired. This feature is especially + important for remote browsing. However, if + a file is introduced or deleted into or from + such directories, the old directory buffer + becomes out-of-date. One may always refresh + such a directory listing with |netrw-ctrl-l|. + This option gives the user the choice of + trading off accuracy (ie. up-to-date listing) + versus speed. + + *g:netrw_ffkeep* (default: doesn't exist) + If this variable exists and is zero, then + netrw will not do a save and restore for + |'fileformat'|. + + *g:netrw_fname_escape* =' ?&;%' + Used on filenames before remote reading/writing + + *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings + that can show up as "directories" and "files" + in the listing. This pattern is used to + remove such embedded messages. By default its + value is: + '^total\s\+\d\+$\| + ^Trying\s\+\d\+.*$\| + ^KERBEROS_V\d rejected\| + ^Security extensions not\| + No such file\| + : connect to address [0-9a-fA-F:]* + : No route to host$' + + *g:netrw_ftp_list_cmd* options for passing along to ftp for directory + listing. Defaults: + unix or g:netrw_cygwin set: : "ls -lF" + otherwise "dir" + + + *g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory + listing, sorted by size of file. + Defaults: + unix or g:netrw_cygwin set: : "ls -slF" + otherwise "dir" + + *g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory + listing, sorted by time of last modification. + Defaults: + unix or g:netrw_cygwin set: : "ls -tlF" + otherwise "dir" + + *g:netrw_glob_escape* ='[]*?`{~$' (unix) + ='[]*?`{$' (windows + These characters in directory names are + escaped before applying glob() + + *g:netrw_hide* Controlled by the "a" map (see |netrw-a|) + =0 : show all + =1 : show not-hidden files + =2 : show hidden files only + default: =1 + + *g:netrw_home* The home directory for where bookmarks and + history are saved (as .netrwbook and + .netrwhist). + Netrw uses |expand()|on the string. + default: the first directory on the + |'runtimepath'| + + *g:netrw_keepdir* =1 (default) keep current directory immune from + the browsing directory. + =0 keep the current directory the same as the + browsing directory. + The current browsing directory is contained in + b:netrw_curdir (also see |netrw-cd|) + + *g:netrw_keepj* ="keepj" (default) netrw attempts to keep the + |:jumps| table unaffected. + ="" netrw will not use |:keepjumps| with + exceptions only for the + saving/restoration of position. + + *g:netrw_list_cmd* command for listing remote directories + default: (if ssh is executable) + "ssh HOSTNAME ls -FLa" + + *g:netrw_list_cmd_options* If this variable exists, then its contents are + appended to the g:netrw_list_cmd. For + example, use "2>/dev/null" to get rid of banner + messages on unix systems. + + + *g:netrw_liststyle* Set the default listing style: + = 0: thin listing (one file per line) + = 1: long listing (one file per line with time + stamp information and file size) + = 2: wide listing (multiple files in columns) + = 3: tree style listing + + *g:netrw_list_hide* comma-separated pattern list for hiding files + Patterns are regular expressions (see |regexp|) + There's some special support for git-ignore + files: you may add the output from the helper + function 'netrw_gitignore#Hide() automatically + hiding all gitignored files. + For more details see |netrw-gitignore|. + + Examples: + let g:netrw_list_hide= '.*\.swp$' + let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$' + default: "" + + *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin + =expand("$COMSPEC") Windows + Copies marked files (|netrw-mf|) to target + directory (|netrw-mt|, |netrw-mc|) + + *g:netrw_localcopycmdopt* ='' Linux/Unix/MacOS/Cygwin + =' \c copy' Windows + Options for the |g:netrw_localcopycmd| + + *g:netrw_localcopydircmd* ="cp" Linux/Unix/MacOS/Cygwin + =expand("$COMSPEC") Windows + Copies directories to target directory. + (|netrw-mc|, |netrw-mt|) + + *g:netrw_localcopydircmdopt* =" -R" Linux/Unix/MacOS/Cygwin + =" /c xcopy /e /c /h/ /i /k" Windows + Options for |g:netrw_localcopydircmd| + + *g:netrw_localmkdir* ="mkdir" Linux/Unix/MacOS/Cygwin + =expand("$COMSPEC") Windows + command for making a local directory + + *g:netrw_localmkdiropt* ="" Linux/Unix/MacOS/Cygwin + =" /c mkdir" Windows + Options for |g:netrw_localmkdir| + + *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin + =expand("$COMSPEC") Windows + Moves marked files (|netrw-mf|) to target + directory (|netrw-mt|, |netrw-mm|) + + *g:netrw_localmovecmdopt* ="" Linux/Unix/MacOS/Cygwin + =" /c move" Windows + Options for |g:netrw_localmovecmd| + + *g:netrw_maxfilenamelen* =32 by default, selected so as to make long + listings fit on 80 column displays. + If your screen is wider, and you have file + or directory names longer than 32 bytes, + you may set this option to keep listings + columnar. + + *g:netrw_mkdir_cmd* command for making a remote directory + via ssh (also see |g:netrw_remote_mkdir|) + default: "ssh USEPORT HOSTNAME mkdir" + + *g:netrw_mousemaps* =1 (default) enables mouse buttons while + browsing to: + leftmouse : open file/directory + shift-leftmouse : mark file + middlemouse : same as P + rightmouse : remove file/directory + =0: disables mouse maps + + *g:netrw_nobeval* doesn't exist (default) + If this variable exists, then balloon + evaluation will be suppressed + (see |'ballooneval'|) + + *g:netrw_sizestyle* not defined: actual bytes (default) + ="b" : actual bytes (default) + ="h" : human-readable (ex. 5k, 4m, 3g) + uses 1000 base + ="H" : human-readable (ex. 5K, 4M, 3G) + uses 1024 base + The long listing (|netrw-i|) and query-file + maps (|netrw-qf|) will display file size + using the specified style. + + *g:netrw_usetab* if this variable exists and is non-zero, then + the map supporting shrinking/expanding a + Lexplore or netrw window will be enabled. + (see |netrw-c-tab|) + + *g:netrw_remote_mkdir* command for making a remote directory + via ftp (also see |g:netrw_mkdir_cmd|) + default: "mkdir" + + *g:netrw_retmap* if it exists and is set to one, then: + * if in a netrw-selected file, AND + * no normal-mode <2-leftmouse> mapping exists, + then the <2-leftmouse> will be mapped for easy + return to the netrw browser window. + example: click once to select and open a file, + double-click to return. + + Note that one may instead choose to: + * let g:netrw_retmap= 1, AND + * nmap YourChoice NetrwReturn + and have another mapping instead of + <2-leftmouse> to invoke the return. + + You may also use the |:Rexplore| command to do + the same thing. + + default: =0 + + *g:netrw_rm_cmd* command for removing remote files + default: "ssh USEPORT HOSTNAME rm" + + *g:netrw_rmdir_cmd* command for removing remote directories + default: "ssh USEPORT HOSTNAME rmdir" + + *g:netrw_rmf_cmd* command for removing remote softlinks + default: "ssh USEPORT HOSTNAME rm -f" + + *g:netrw_servername* use this variable to provide a name for + |netrw-ctrl-r| to use for its server. + default: "NETRWSERVER" + + *g:netrw_sort_by* sort by "name", "time", "size", or + "exten". + default: "name" + + *g:netrw_sort_direction* sorting direction: "normal" or "reverse" + default: "normal" + + *g:netrw_sort_options* sorting is done using |:sort|; this + variable's value is appended to the + sort command. Thus one may ignore case, + for example, with the following in your + .vimrc: > + let g:netrw_sort_options="i" +< default: "" + + *g:netrw_sort_sequence* when sorting by name, first sort by the + comma-separated pattern sequence. Note that + any filigree added to indicate filetypes + should be accounted for in your pattern. + default: '[\/]$,*,\.bak$,\.o$,\.h$, + \.info$,\.swp$,\.obj$' + + *g:netrw_special_syntax* If true, then certain files will be shown + using special syntax in the browser: + + netrwBak : *.bak + netrwCompress: *.gz *.bz2 *.Z *.zip + netrwCoreDump: core.\d\+ + netrwData : *.dat + netrwDoc : *.doc,*.txt,*.pdf, + *.pdf,*.docx + netrwHdr : *.h + netrwLex : *.l *.lex + netrwLib : *.a *.so *.lib *.dll + netrwMakefile: [mM]akefile *.mak + netrwObj : *.o *.obj + netrwPix : *.bmp,*.fit,*.fits,*.gif, + *.jpg,*.jpeg,*.pcx,*.ppc + *.pgm,*.png,*.psd,*.rgb + *.tif,*.xbm,*.xcf + netrwTags : tags ANmenu ANtags + netrwTilde : * + netrwTmp : tmp* *tmp + netrwYacc : *.y + + In addition, those groups mentioned in + |'suffixes'| are also added to the special + file highlighting group. + These syntax highlighting groups are linked + to netrwGray or Folded by default + (see |hl-Folded|), but one may put lines like > + hi link netrwCompress Visual +< into one's <.vimrc> to use one's own + preferences. Alternatively, one may + put such specifications into > + .vim/after/syntax/netrw.vim. +< The netrwGray highlighting is set up by + netrw when > + * netrwGray has not been previously + defined + * the gui is running +< As an example, I myself use a dark-background + colorscheme with the following in + .vim/after/syntax/netrw.vim: > + + hi netrwCompress term=NONE cterm=NONE gui=NONE ctermfg=10 guifg=green ctermbg=0 guibg=black + hi netrwData term=NONE cterm=NONE gui=NONE ctermfg=9 guifg=blue ctermbg=0 guibg=black + hi netrwHdr term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwLex term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwYacc term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwLib term=NONE cterm=NONE gui=NONE ctermfg=14 guifg=yellow + hi netrwObj term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTilde term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTmp term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTags term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwDoc term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=yellow2 guibg=Blue3 + hi netrwSymLink term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=grey60 +< + *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines, + messages, banners, and whatnot that one doesn't + want masquerading as "directories" and "files". + Use this pattern to remove such embedded + messages. By default its value is: + '^total\s\+\d\+$' + + *g:netrw_ssh_cmd* One may specify an executable command + to use instead of ssh for remote actions + such as listing, file removal, etc. + default: ssh + + *g:netrw_tmpfile_escape* =' &;' + escape() is applied to all temporary files + to escape these characters. + + *g:netrw_timefmt* specify format string to vim's strftime(). + The default, "%c", is "the preferred date + and time representation for the current + locale" according to my manpage entry for + strftime(); however, not all are satisfied + with it. Some alternatives: + "%a %d %b %Y %T", + " %a %Y-%m-%d %I-%M-%S %p" + default: "%c" + + *g:netrw_use_noswf* netrw normally avoids writing swapfiles + for browser buffers. However, under some + systems this apparently is causing nasty + ml_get errors to appear; if you're getting + ml_get errors, try putting + let g:netrw_use_noswf= 0 + in your .vimrc. + default: 1 + + *g:netrw_winsize* specify initial size of new windows made with + "o" (see |netrw-o|), "v" (see |netrw-v|), + |:Hexplore| or |:Vexplore|. The g:netrw_winsize + is an integer describing the percentage of the + current netrw buffer's window to be used for + the new window. + If g:netrw_winsize is less than zero, then + the absolute value of g:netrw_winsize will be + used to specify the quantity of lines or + columns for the new window. + If g:netrw_winsize is zero, then a normal + split will be made (ie. |'equalalways'| will + take effect, for example). + default: 50 (for 50%) + + *g:netrw_wiw* =1 specifies the minimum window width to use + when shrinking a netrw/Lexplore window + (see |netrw-c-tab|). + + *g:netrw_xstrlen* Controls how netrw computes string lengths, + including multi-byte characters' string + length. (thanks to N Weibull, T Mechelynck) + =0: uses Vim's built-in strlen() + =1: number of codepoints (Latin a + combining + circumflex is two codepoints) (DEFAULT) + =2: number of spacing codepoints (Latin a + + combining circumflex is one spacing + codepoint; a hard tab is one; wide and + narrow CJK are one each; etc.) + =3: virtual length (counting tabs as anything + between 1 and |'tabstop'|, wide CJK as 2 + rather than 1, Arabic alif as zero when + immediately preceded by lam, one + otherwise, etc) + + *g:NetrwTopLvlMenu* This variable specifies the top level + menu name; by default, it's "Netrw.". If + you wish to change this, do so in your + .vimrc. + +NETRW BROWSING AND OPTION INCOMPATIBILITIES *netrw-incompatible* {{{2 + +Netrw has been designed to handle user options by saving them, setting the +options to something that's compatible with netrw's needs, and then restoring +them. However, the autochdir option: > + :set acd +is problematic. Autochdir sets the current directory to that containing the +file you edit; this apparently also applies to directories. In other words, +autochdir sets the current directory to that containing the "file" (even if +that "file" is itself a directory). + +NETRW SETTINGS WINDOW *netrw-settings-window* {{{2 + +With the NetrwSettings.vim plugin, > + :NetrwSettings +will bring up a window with the many variables that netrw uses for its +settings. You may change any of their values; when you save the file, the +settings therein will be used. One may also press "?" on any of the lines for +help on what each of the variables do. + +(also see: |netrw-browser-var| |netrw-protocol| |netrw-variables|) + + +============================================================================== +OBTAINING A FILE *netrw-obtain* *netrw-O* {{{2 + +If there are no marked files: + + When browsing a remote directory, one may obtain a file under the cursor + (ie. get a copy on your local machine, but not edit it) by pressing the O + key. + +If there are marked files: + + The marked files will be obtained (ie. a copy will be transferred to your + local machine, but not set up for editing). + +Only ftp and scp are supported for this operation (but since these two are +available for browsing, that shouldn't be a problem). The status bar will +then show, on its right hand side, a message like "Obtaining filename". The +statusline will be restored after the transfer is complete. + +Netrw can also "obtain" a file using the local browser. Netrw's display +of a directory is not necessarily the same as Vim's "current directory", +unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>. One may select +a file using the local browser (by putting the cursor on it) and pressing +"O" will then "obtain" the file; ie. copy it to Vim's current directory. + +Related topics: + * To see what the current directory is, use |:pwd| + * To make the currently browsed directory the current directory, see + |netrw-cd| + * To automatically make the currently browsed directory the current + directory, see |g:netrw_keepdir|. + + *netrw-newfile* *netrw-createfile* +OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* {{{2 + +To open a new file in netrw's current directory, press "%". This map +will query the user for a new filename; an empty file by that name will +be placed in the netrw's current directory (ie. b:netrw_curdir). + +If Lexplore (|netrw-:Lexplore|) is in use, the new file will be generated +in the |g:netrw_chgwin| window. + +Related topics: |netrw-d| + + +PREVIEW WINDOW *netrw-p* *netrw-preview* {{{2 + +One may use a preview window by using the "p" key when the cursor is atop the +desired filename to be previewed. The display will then split to show both +the browser (where the cursor will remain) and the file (see |:pedit|). By +default, the split will be taken horizontally; one may use vertical splitting +if one has set |g:netrw_preview| first. + +An interesting set of netrw settings is: > + + let g:netrw_preview = 1 + let g:netrw_liststyle = 3 + let g:netrw_winsize = 30 + +These will: + + 1. Make vertical splitting the default for previewing files + 2. Make the default listing style "tree" + 3. When a vertical preview window is opened, the directory listing + will use only 30% of the columns available; the rest of the window + is used for the preview window. + + Related: if you like this idea, you may also find :Lexplore + (|netrw-:Lexplore|) or |g:netrw_chgwin| of interest + +Also see: |g:netrw_chgwin| |netrw-P| |'previewwindow'| |CTRL-W_z| |:pclose| + + +PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 + +To edit a file or directory under the cursor in the previously used (last +accessed) window (see :he |CTRL-W_p|), press a "P". If there's only one +window, then the one window will be horizontally split (by default). + +If there's more than one window, the previous window will be re-used on +the selected file/directory. If the previous window's associated buffer +has been modified, and there's only one window with that buffer, then +the user will be asked if s/he wishes to save the buffer first (yes, +no, or cancel). + +Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_alto| control above/below splitting + |g:netrw_altv| control right/left splitting + |g:netrw_preview| control horizontal vs vertical splitting + |g:netrw_winsize| control initial sizing + +Also see: |g:netrw_chgwin| |netrw-p| + + +REFRESHING THE LISTING *netrw-refresh* *netrw-ctrl-l* *netrw-ctrl_l* {{{2 + +To refresh either a local or remote directory listing, press ctrl-l () or +hit the when atop the ./ directory entry in the listing. One may also +refresh a local directory by using ":e .". + + +REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2 + +One may toggle between normal and reverse sorting order by pressing the +"r" key. + +Related topics: |netrw-s| +Associated setting variable: |g:netrw_sort_direction| + + +RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2 + +If there are no marked files: (see |netrw-mf|) + + Renaming files and directories involves moving the cursor to the + file/directory to be moved (renamed) and pressing "R". You will then be + queried for what you want the file/directory to be renamed to. You may + select a range of lines with the "V" command (visual selection), and then + press "R"; you will be queried for each file as to what you want it + renamed to. + +If there are marked files: (see |netrw-mf|) + + Marked files will be renamed (moved). You will be queried as above in + order to specify where you want the file/directory to be moved. + + If you answer a renaming query with a "s/frompattern/topattern/", then + subsequent files on the marked file list will be renamed by taking each + name, applying that substitute, and renaming each file to the result. + As an example : > + + mr [query: reply with *.c] + R [query: reply with s/^\(.*\)\.c$/\1.cpp/] +< + This example will mark all *.c files and then rename them to *.cpp + files. Netrw will protect you from overwriting local files without + confirmation, but not remote ones. + + The ctrl-X character has special meaning for renaming files: > + + : a single ctrl-x tells netrw to ignore the portion of the response + lying between the last '/' and the ctrl-x. + + : a pair of contiguous ctrl-x's tells netrw to ignore any + portion of the string preceding the double ctrl-x's. +< + WARNING:~ + + Note that moving files is a dangerous operation; copies are safer. That's + because a "move" for remote files is actually a copy + delete -- and if + the copy fails and the delete succeeds you may lose the file. + Use at your own risk. + +The *g:netrw_rename_cmd* variable is used to implement remote renaming. By +default its value is: > + + ssh HOSTNAME mv +< +One may rename a block of files and directories by selecting them with +V (|linewise-visual|) when using thin style. + +See |cmdline-editing| for more on how to edit the command line; in particular, +you'll find (initiates cmdline window editing) and (uses the +command line under the cursor) useful in conjunction with the R command. + + +SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2 + +One may select the sorting style by name, time, or (file) size. The "s" map +allows one to circulate amongst the three choices; the directory listing will +automatically be refreshed to reflect the selected style. + +Related topics: |netrw-r| |netrw-S| +Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence| + + +SETTING EDITING WINDOW *netrw-editwindow* *netrw-C* *netrw-:NetrwC* {{{2 + +One may select a netrw window for editing with the "C" mapping, using the +:NetrwC [win#] command, or by setting |g:netrw_chgwin| to the selected window +number. Subsequent selection of a file to edit (|netrw-cr|) will use that +window. + + * C : by itself, will select the current window holding a netrw buffer + for subsequent editing via |netrw-cr|. The C mapping is only available + while in netrw buffers. + + * [count]C : the count will be used as the window number to be used + for subsequent editing via |netrw-cr|. + + * :NetrwC will set |g:netrw_chgwin| to the current window + + * :NetrwC win# will set |g:netrw_chgwin| to the specified window + number + +Using > + let g:netrw_chgwin= -1 +will restore the default editing behavior +(ie. subsequent editing will use the current window). + +Related topics: |netrw-cr| |g:netrw_browse_split| +Associated setting variables: |g:netrw_chgwin| + + +SHRINKING OR EXPANDING A NETRW OR LEXPLORE WINDOW *netrw-c-tab* {{{2 + +The key will toggle a netrw or |:Lexplore| window's width, +but only if |g:netrw_usetab| exists and is non-zero (and, of course, +only if your terminal supports differentiating from a plain +). + + * If the current window is a netrw window, toggle its width + (between |g:netrw_wiw| and its original width) + + * Else if there is a |:Lexplore| window in the current tab, toggle + its width + + * Else bring up a |:Lexplore| window + +If |g:netrw_usetab| exists and is zero, or if there is a pre-existing mapping +for , then the will not be mapped. One may map something other +than a , too: (but you'll still need to have had |g:netrw_usetab| set). > + + nmap (whatever) NetrwShrink +< +Related topics: |:Lexplore| +Associated setting variable: |g:netrw_usetab| + + +USER SPECIFIED MAPS *netrw-usermaps* {{{1 + +One may make customized user maps. Specify a variable, |g:Netrw_UserMaps|, +to hold a |List| of lists of keymap strings and function names: > + + [["keymap-sequence","ExampleUserMapFunc"],...] +< +When netrw is setting up maps for a netrw buffer, if |g:Netrw_UserMaps| +exists, then the internal function netrw#UserMaps(islocal) is called. +This function goes through all the entries in the |g:Netrw_UserMaps| list: + + * sets up maps: > + nno KEYMAP-SEQUENCE + :call s:UserMaps(islocal,"ExampleUserMapFunc") +< * refreshes if result from that function call is the string + "refresh" + * if the result string is not "", then that string will be + executed (:exe result) + * if the result is a List, then the above two actions on results + will be taken for every string in the result List + +The user function is passed one argument; it resembles > + + fun! ExampleUserMapFunc(islocal) +< +where a:islocal is 1 if its a local-directory system call or 0 when +remote-directory system call. + + *netrw-call* *netrw-expose* *netrw-modify* +Use netrw#Expose("varname") to access netrw-internal (script-local) + variables. +Use netrw#Modify("varname",newvalue) to change netrw-internal variables. +Use netrw#Call("funcname"[,args]) to call a netrw-internal function with + specified arguments. + +Example: Get a copy of netrw's marked file list: > + + let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist") +< +Example: Modify the value of netrw's marked file list: > + + call netrw#Modify("netrwmarkfilelist",[]) +< +Example: Clear netrw's marked file list via a mapping on gu > + " ExampleUserMap: {{{2 + fun! ExampleUserMap(islocal) + call netrw#Modify("netrwmarkfilelist",[]) + call netrw#Modify('netrwmarkfilemtch_{bufnr("%")}',"") + let retval= ["refresh"] + return retval + endfun + let g:Netrw_UserMaps= [["gu","ExampleUserMap"]] +< + +10. Problems and Fixes *netrw-problems* {{{1 + + (This section is likely to grow as I get feedback) + *netrw-p1* + P1. I use Windows, and my network browsing with ftp doesn't sort by {{{2 + time or size! -or- The remote system is a Windows server; why + don't I get sorts by time or size? + + Windows' ftp has a minimal support for ls (ie. it doesn't + accept sorting options). It doesn't support the -F which + gives an explanatory character (ABC/ for "ABC is a directory"). + Netrw then uses "dir" to get both its thin and long listings. + If you think your ftp does support a full-up ls, put the + following into your <.vimrc>: > + + let g:netrw_ftp_list_cmd = "ls -lF" + let g:netrw_ftp_timelist_cmd= "ls -tlF" + let g:netrw_ftp_sizelist_cmd= "ls -slF" +< + Alternatively, if you have cygwin on your Windows box, put + into your <.vimrc>: > + + let g:netrw_cygwin= 1 +< + This problem also occurs when the remote system is Windows. + In this situation, the various g:netrw_ftp_[time|size]list_cmds + are as shown above, but the remote system will not correctly + modify its listing behavior. + + + *netrw-p2* + P2. I tried rcp://user@host/ (or protocol other than ftp) and netrw {{{2 + used ssh! That wasn't what I asked for... + + Netrw has two methods for browsing remote directories: ssh + and ftp. Unless you specify ftp specifically, ssh is used. + When it comes time to do download a file (not just a directory + listing), netrw will use the given protocol to do so. + + *netrw-p3* + P3. I would like long listings to be the default. {{{2 + + Put the following statement into your |.vimrc|: > + + let g:netrw_liststyle= 1 +< + Check out |netrw-browser-var| for more customizations that + you can set. + + *netrw-p4* + P4. My times come up oddly in local browsing {{{2 + + Does your system's strftime() accept the "%c" to yield dates + such as "Sun Apr 27 11:49:23 1997"? If not, do a + "man strftime" and find out what option should be used. Then + put it into your |.vimrc|: > + + let g:netrw_timefmt= "%X" (where X is the option) +< + *netrw-p5* + P5. I want my current directory to track my browsing. {{{2 + How do I do that? + + Put the following line in your |.vimrc|: +> + let g:netrw_keepdir= 0 +< + *netrw-p6* + P6. I use Chinese (or other non-ascii) characters in my filenames, {{{2 + and netrw (Explore, Sexplore, Hexplore, etc) doesn't display them! + + (taken from an answer provided by Wu Yongwei on the vim + mailing list) + I now see the problem. Your code page is not 936, right? Vim + seems only able to open files with names that are valid in the + current code page, as are many other applications that do not + use the Unicode version of Windows APIs. This is an OS-related + issue. You should not have such problems when the system + locale uses UTF-8, such as modern Linux distros. + + (...it is one more reason to recommend that people use utf-8!) + + *netrw-p7* + P7. I'm getting "ssh is not executable on your system" -- what do I {{{2 + do? + + (Dudley Fox) Most people I know use putty for windows ssh. It + is a free ssh/telnet application. You can read more about it + here: + + http://www.chiark.greenend.org.uk/~sgtatham/putty/ Also: + + (Marlin Unruh) This program also works for me. It's a single + executable, so he/she can copy it into the Windows\System32 + folder and create a shortcut to it. + + (Dudley Fox) You might also wish to consider plink, as it + sounds most similar to what you are looking for. plink is an + application in the putty suite. + + http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink + + (Vissale Neang) Maybe you can try OpenSSH for windows, which + can be obtained from: + + http://sshwindows.sourceforge.net/ + + It doesn't need the full Cygwin package. + + (Antoine Mechelynck) For individual Unix-like programs needed + for work in a native-Windows environment, I recommend getting + them from the GnuWin32 project on sourceforge if it has them: + + http://gnuwin32.sourceforge.net/ + + Unlike Cygwin, which sets up a Unix-like virtual machine on + top of Windows, GnuWin32 is a rewrite of Unix utilities with + Windows system calls, and its programs works quite well in the + cmd.exe "Dos box". + + (dave) Download WinSCP and use that to connect to the server. + In Preferences > Editors, set gvim as your editor: + + - Click "Add..." + - Set External Editor (adjust path as needed, include + the quotes and !.! at the end): + "c:\Program Files\Vim\vim82\gvim.exe" !.! + - Check that the filetype in the box below is + {asterisk}.{asterisk} (all files), or whatever types + you want (cec: change {asterisk} to * ; I had to + write it that way because otherwise the helptags + system thinks it's a tag) + - Make sure it's at the top of the listbox (click it, + then click "Up" if it's not) + If using the Norton Commander style, you just have to hit + to edit a file in a local copy of gvim. + + (Vit Gottwald) How to generate public/private key and save + public key it on server: > + http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-gettingready + (8.3 Getting ready for public key authentication) +< + How to use a private key with 'pscp': > + + http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter5.html + (5.2.4 Using public key authentication with PSCP) +< + (Ben Schmidt) I find the ssh included with cwRsync is + brilliant, and install cwRsync or cwRsyncServer on most + Windows systems I come across these days. I guess COPSSH, + packed by the same person, is probably even better for use as + just ssh on Windows, and probably includes sftp, etc. which I + suspect the cwRsync doesn't, though it might + + (cec) To make proper use of these suggestions above, you will + need to modify the following user-settable variables in your + .vimrc: + + |g:netrw_ssh_cmd| |g:netrw_list_cmd| |g:netrw_mkdir_cmd| + |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd| + + The first one (|g:netrw_ssh_cmd|) is the most important; most + of the others will use the string in g:netrw_ssh_cmd by + default. + + *netrw-p8* *netrw-ml_get* + P8. I'm browsing, changing directory, and bang! ml_get errors {{{2 + appear and I have to kill vim. Any way around this? + + Normally netrw attempts to avoid writing swapfiles for + its temporary directory buffers. However, on some systems + this attempt appears to be causing ml_get errors to + appear. Please try setting |g:netrw_use_noswf| to 0 + in your <.vimrc>: > + let g:netrw_use_noswf= 0 +< + *netrw-p9* + P9. I'm being pestered with "[something] is a directory" and {{{2 + "Press ENTER or type command to continue" prompts... + + The "[something] is a directory" prompt is issued by Vim, + not by netrw, and there appears to be no way to work around + it. Coupled with the default cmdheight of 1, this message + causes the "Press ENTER..." prompt. So: read |hit-enter|; + I also suggest that you set your |'cmdheight'| to 2 (or more) in + your <.vimrc> file. + + *netrw-p10* + P10. I want to have two windows; a thin one on the left and my {{{2 + editing window on the right. How may I accomplish this? + + You probably want netrw running as in a side window. If so, you + will likely find that ":[N]Lexplore" does what you want. The + optional "[N]" allows you to select the quantity of columns you + wish the |:Lexplore|r window to start with (see |g:netrw_winsize| + for how this parameter works). + + Previous solution: + + * Put the following line in your <.vimrc>: + let g:netrw_altv = 1 + * Edit the current directory: :e . + * Select some file, press v + * Resize the windows as you wish (see |CTRL-W_<| and + |CTRL-W_>|). If you're using gvim, you can drag + the separating bar with your mouse. + * When you want a new file, use ctrl-w h to go back to the + netrw browser, select a file, then press P (see |CTRL-W_h| + and |netrw-P|). If you're using gvim, you can press + in the browser window and then press the + to select the file. + + + *netrw-p11* + P11. My directory isn't sorting correctly, or unwanted letters are {{{2 + appearing in the listed filenames, or things aren't lining + up properly in the wide listing, ... + + This may be due to an encoding problem. I myself usually use + utf-8, but really only use ascii (ie. bytes from 32-126). + Multibyte encodings use two (or more) bytes per character. + You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|. + + *netrw-p12* + P12. I'm a Windows + putty + ssh user, and when I attempt to {{{2 + browse, the directories are missing trailing "/"s so netrw treats + them as file transfers instead of as attempts to browse + subdirectories. How may I fix this? + + (mikeyao) If you want to use vim via ssh and putty under Windows, + try combining the use of pscp/psftp with plink. pscp/psftp will + be used to connect and plink will be used to execute commands on + the server, for example: list files and directory using 'ls'. + + These are the settings I use to do this: +> + " list files, it's the key setting, if you haven't set, + " you will get a blank buffer + let g:netrw_list_cmd = "plink HOSTNAME ls -Fa" + " if you haven't add putty directory in system path, you should + " specify scp/sftp command. For examples: + "let g:netrw_sftp_cmd = "d:\\dev\\putty\\PSFTP.exe" + "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe" +< + *netrw-p13* + P13. I would like to speed up writes using Nwrite and scp/ssh {{{2 + style connections. How? (Thomer M. Gil) + + Try using ssh's ControlMaster and ControlPath (see the ssh_config + man page) to share multiple ssh connections over a single network + connection. That cuts out the cryptographic handshake on each + file write, sometimes speeding it up by an order of magnitude. + (see http://thomer.com/howtos/netrw_ssh.html) + (included by permission) + + Add the following to your ~/.ssh/config: > + + # you change "*" to the hostname you care about + Host * + ControlMaster auto + ControlPath /tmp/%r@%h:%p + +< Then create an ssh connection to the host and leave it running: > + + ssh -N host.domain.com + +< Now remotely open a file with Vim's Netrw and enjoy the + zippiness: > + + vim scp://host.domain.com//home/user/.bashrc +< + *netrw-p14* + P14. How may I use a double-click instead of netrw's usual single {{{2 + click to open a file or directory? (Ben Fritz) + + First, disable netrw's mapping with > + let g:netrw_mousemaps= 0 +< and then create a netrw buffer only mapping in + $HOME/.vim/after/ftplugin/netrw.vim: > + nmap <2-leftmouse> +< Note that setting g:netrw_mousemaps to zero will turn off + all netrw's mouse mappings, not just the one. + (see |g:netrw_mousemaps|) + + *netrw-p15* + P15. When editing remote files (ex. :e ftp://hostname/path/file), {{{2 + under Windows I get an |E303| message complaining that its unable + to open a swap file. + + (romainl) It looks like you are starting Vim from a protected + directory. Start netrw from your $HOME or other writable + directory. + + *netrw-p16* + P16. Netrw is closing buffers on its own. {{{2 + What steps will reproduce the problem? + 1. :Explore, navigate directories, open a file + 2. :Explore, open another file + 3. Buffer opened in step 1 will be closed. o + What is the expected output? What do you see instead? + I expect both buffers to exist, but only the last one does. + + (Lance) Problem is caused by "set autochdir" in .vimrc. + (drchip) I am able to duplicate this problem with |'acd'| set. + It appears that the buffers are not exactly closed; + a ":ls!" will show them (although ":ls" does not). + + *netrw-P17* + P17. How to locally edit a file that's only available via {{{2 + another server accessible via ssh? + See http://stackoverflow.com/questions/12469645/ + "Using Vim to Remotely Edit A File on ServerB Only + Accessible From ServerA" + + *netrw-P18* + P18. How do I get numbering on in directory listings? {{{2 + With |g:netrw_bufsettings|, you can control netrw's buffer + settings; try putting > + let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu" +< in your .vimrc. If you'd like to have relative numbering + instead, try > + let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu" +< + *netrw-P19* + P19. How may I have gvim start up showing a directory listing? {{{2 + Try putting the following code snippet into your .vimrc: > + augroup VimStartup + au! + au VimEnter * if expand("%") == "" && argc() == 0 && + \ (v:servername =~ 'GVIM\d*' || v:servername == "") + \ | e . | endif + augroup END +< You may use Lexplore instead of "e" if you're so inclined. + This snippet assumes that you have client-server enabled + (ie. a "huge" vim version). + + *netrw-P20* + P20. I've made a directory (or file) with an accented character, {{{2 + but netrw isn't letting me enter that directory/read that file: + + Its likely that the shell or o/s is using a different encoding + than you have vim (netrw) using. A patch to vim supporting + "systemencoding" may address this issue in the future; for + now, just have netrw use the proper encoding. For example: > + + au FileType netrw set enc=latin1 +< + *netrw-P21* + P21. I get an error message when I try to copy or move a file: {{{2 + + **error** (netrw) tried using g:netrw_localcopycmd; it doesn't work! + + What's wrong? + + Netrw uses several system level commands to do things (see + + |g:netrw_localcopycmd|, |g:netrw_localmovecmd|, + |g:netrw_mkdir_cmd|). + + You may need to adjust the default commands for one or more of + these commands by setting them properly in your .vimrc. Another + source of difficulty is that these commands use vim's local + directory, which may not be the same as the browsing directory + shown by netrw (see |g:netrw_keepdir|). + + +============================================================================== +11. Credits *netrw-credits* {{{1 + + Vim editor by Bram Moolenaar (Thanks, Bram!) + dav support by C Campbell + fetch support by Bram Moolenaar and C Campbell + ftp support by C Campbell + http support by Bram Moolenaar + rcp + rsync support by C Campbell (suggested by Erik Warendorph) + scp support by raf + sftp support by C Campbell + + inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell + + Jérôme Augé -- also using new buffer method with ftp+.netrc + Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use, + fetch,... + Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution + Erik Warendorph -- for several suggestions (g:netrw_..._cmd + variables, rsync etc) + Doug Claar -- modifications to test for success with ftp + operation + +============================================================================== +Modelines: {{{1 +vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 834f0e1b6e..91e48637ab 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 9.1. Last change: 2025 Jan 11 +*quickfix.txt* For Vim version 9.1. Last change: 2025 Mar 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1722,6 +1722,13 @@ shells and OSes and also does not allow to use other available TeX options, if any. If your TeX doesn't support "-interaction=nonstopmode", please report it with different means to express \nonstopmode from the command line. +TSC COMPILER *compiler-tsc* + +The executable and compiler options can be added to 'makeprg' by setting the +b/g:tsc_makeprg variable. For example: > + + let b:tsc_makeprg = "npx tsc --noEmit" + TYPST COMPILER *compiler-typst* Vim includes a compiler plugin for Typst files. This compiler is enabled diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index d66ea597bd..3a11369039 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 9.1. Last change: 2024 Dec 19 +*starting.txt* For Vim version 9.1. Last change: 2025 Feb 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -828,8 +828,9 @@ accordingly. Vim proceeds in this order: easy to copy it to another system. If Vim was started with "-u filename", the file "filename" is used. - All following initializations until 4. are skipped. $MYVIMRC and - $MYVIMDIR are not set. + All following initializations until 4. are skipped. `$MYVIMRC` and + `$MYVIMDIR` are not set (but `$MYVIMDIR` will be set, if 'rtp' is + updated). "vim -u NORC" can be used to skip these initializations without reading a file. "vim -u NONE" also skips loading plugins. |-u| @@ -851,9 +852,9 @@ accordingly. Vim proceeds in this order: *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* *$MYVIMRC* *$MYVIMDIR* c. Five places are searched for initializations. The first that exists - is used, the others are ignored. The $MYVIMRC environment variable is - set to the file that was first found, unless $MYVIMRC was already set - and when using VIMINIT. The $MYVIMDIR environment variable is + is used, the others are ignored. The `$MYVIMRC` environment variable is + set to the file that was first found, unless `$MYVIMRC` was already set + when using VIMINIT. The `$MYVIMDIR` environment variable is set to the personal 'rtp' directory, however it is not verified that the directory actually exists. I The environment variable VIMINIT (see also |compatible-default|) (*) @@ -974,9 +975,10 @@ accordingly. Vim proceeds in this order: The |v:vim_did_enter| variable is set to 1. The |VimEnter| autocommands are executed. -The $MYVIMRC or $MYGVIMRC environment variable will be set to the first found -vimrc and/or gvimrc file while $MYVIMDIR is set to the users personal runtime -directory 'rtp' (typically the first entry in 'runtimepath'). +The `$MYVIMRC` or `$MYGVIMRC` environment variable will be set to the first found +vimrc and/or gvimrc file while `$MYVIMDIR` is set to the users personal runtime +directory 'rtp' (typically the first entry in 'runtimepath'). If 'rtp' +changes, `$MYVIMDIR` will be updated. Note: These environment variables resolve symbolic links, but 'rtp' does not. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 15181ac9a6..0409210fe0 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2025 Feb 20 +*syntax.txt* For Vim version 9.1. Last change: 2025 Mar 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1286,6 +1286,21 @@ doesn't work for you, or you don't edit Progress at all, use this in your startup vimrc: > :let filetype_w = "cweb" +CSHARP *cs.vim* *ft-cs-syntax* + +C# raw string literals may use any number of quote marks to encapsulate the +block, and raw interpolated string literals may use any number of braces to +encapsulate the interpolation, e.g. > + + $$$""""Hello {{{name}}}"""" +< +By default, Vim highlights 3-8 quote marks, and 1-8 interpolation braces. +The maximum numbers of quotes and braces recognized can configured using the +following variables: + + Variable Default ~ + g:cs_raw_string_quote_count 8 + g:cs_raw_string_interpolation_brace_count 8 DART *dart.vim* *ft-dart-syntax* @@ -2343,13 +2358,9 @@ instead, and the name of your source file should be *.pike LUA *lua.vim* *ft-lua-syntax* -The Lua syntax file can be used for versions 4.0, 5.0, 5.1 and 5.2 (5.2 is -the default). You can select one of these versions using the global variables -lua_version and lua_subversion. For example, to activate Lua -5.1 syntax highlighting, set the variables like this: > - - :let lua_version = 5 - :let lua_subversion = 1 +The Lua syntax file can be used for versions 4.0, 5.0+. You can select one of +these versions using the global variables |g:lua_version| and +|g:lua_subversion|. MAIL *mail.vim* *ft-mail.vim* @@ -3501,25 +3512,25 @@ cases pertain, then the first line of the file is examined (ex. looking for /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, then that shelltype is used. However some files (ex. .profile) are known to be shell files but the type is not apparent. Furthermore, on many systems sh is -symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix). +symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (POSIX). One may specify a global default by instantiating one of the following variables in your <.vimrc>: ksh: > let g:is_kornshell = 1 -< posix: (using this is nearly the same as setting g:is_kornshell to 1) > +< posix: (default) > let g:is_posix = 1 < bash: > let g:is_bash = 1 -< sh: (default) Bourne shell > +< dash: > + let g:is_dash = 1 +< sh: Bourne shell > let g:is_sh = 1 -< (dash users should use posix) - If there's no "#! ..." line, and the user hasn't availed himself/herself of a default sh.vim syntax setting as just shown, then syntax/sh.vim will assume -the Bourne shell syntax. No need to quote RFCs or market penetration +the POSIX shell syntax. No need to quote RFCs or market penetration statistics in error reports, please -- just select the default version of the sh your system uses and install the associated "let..." in your <.vimrc>. @@ -4021,7 +4032,29 @@ highlighting is to put the following line in your |vimrc|: > let g:vimsyn_noerror = 1 < +To suppress only specific errors, define the following variables: > + + g:vimsyn_nobehaveerror = 1 " :behave error + g:vimsyn_vimFTError = 1 " :filetype error + g:vimsyn_noaugrouperror = 1 " :augroup error + g:vimsyn_noopererror = 1 " operator error + g:vimsyn_notypealiaserror = 1 " Vim9 type alias error + g:vimsyn_novimfunctionerror = 1 " Vim9 method error + g:vimsyn_nousercmderror = 1 " :com error + g:vimsyn_novimsynerror = 1 " :syn error + g:vimsyn_novimsyncaseerror = 1 " :syn case error + g:vimsyn_novimsynconcealerror = 1 " :syn conceal error + g:vimsyn_novimsynfoldlevelerror = 1 " :syn foldlevel error + g:vimsyn_novimsynspellerror = 1 " :syn spell error + g:vimsyn_novimsyncerror = 1 " :syn sync error + g:vimsyn_novimhictermerror = 1 " :hi error + g:vimsyn_vimhikeyerror = 1 " :hi key=arg error +< +To force highlighting of Neovim specific Vim script elements (even if not +using Neovim), set > + let g:vimsyn_vim_features = ['nvim'] +< WDL *wdl.vim* *wdl-syntax* @@ -5432,6 +5465,10 @@ in their own color. See |:highlight-default| for the optional [default] argument. +:hi[ghlight][!] [default] link {from-group} {to-group} +:hi[ghlight][!] [default] link {from-group} NONE + See |:hi-link|. + Normally a highlight group is added once when starting up. This sets the default values for the highlighting. After that, you can use additional highlight commands to change the arguments that you want to set to non-default @@ -5795,6 +5832,9 @@ DiffChange Diff mode: Changed line. |diff.txt| DiffDelete Diff mode: Deleted line. |diff.txt| *hl-DiffText* DiffText Diff mode: Changed text within a changed line. |diff.txt| + *hl-DiffTextAdd* +DiffTextAdd Diff mode: Added text within a changed line. Linked to + |hl-DiffText| by default. |diff.txt| *hl-EndOfBuffer* EndOfBuffer Filler lines (~) after the last line in the buffer. By default, this is highlighted like |hl-NonText|. diff --git a/runtime/doc/tags b/runtime/doc/tags index 6009d63700..cf1959da27 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -131,6 +131,7 @@ $quote eval.txt /*$quote* 'cdpath' options.txt /*'cdpath'* 'cedit' options.txt /*'cedit'* 'cf' options.txt /*'cf'* +'cfc' options.txt /*'cfc'* 'cfu' options.txt /*'cfu'* 'ch' options.txt /*'ch'* 'character' intro.txt /*'character'* @@ -165,6 +166,7 @@ $quote eval.txt /*$quote* 'compatible' options.txt /*'compatible'* 'complete' options.txt /*'complete'* 'completefunc' options.txt /*'completefunc'* +'completefuzzycollect' options.txt /*'completefuzzycollect'* 'completeitemalign' options.txt /*'completeitemalign'* 'completeopt' options.txt /*'completeopt'* 'completepopup' options.txt /*'completepopup'* @@ -859,6 +861,7 @@ $quote eval.txt /*$quote* 'pm' options.txt /*'pm'* 'pmbcs' options.txt /*'pmbcs'* 'pmbfn' options.txt /*'pmbfn'* +'pmw' options.txt /*'pmw'* 'popt' options.txt /*'popt'* 'pp' options.txt /*'pp'* 'preserveindent' options.txt /*'preserveindent'* @@ -876,6 +879,7 @@ $quote eval.txt /*$quote* 'prompt' options.txt /*'prompt'* 'pt' options.txt /*'pt'* 'pumheight' options.txt /*'pumheight'* +'pummaxwidth' options.txt /*'pummaxwidth'* 'pumwidth' options.txt /*'pumwidth'* 'pvh' options.txt /*'pvh'* 'pvp' options.txt /*'pvp'* @@ -2163,6 +2167,7 @@ $quote eval.txt /*$quote* :Lfilter quickfix.txt /*:Lfilter* :LogiPat pi_logipat.txt /*:LogiPat* :Man filetype.txt /*:Man* +:ManReload filetype.txt /*:ManReload* :MkVimball pi_vimball.txt /*:MkVimball* :N editing.txt /*:N* :Nexplore pi_netrw.txt /*:Nexplore* @@ -2730,6 +2735,8 @@ $quote eval.txt /*$quote* :insert insert.txt /*:insert* :interface vim9class.txt /*:interface* :intro starting.txt /*:intro* +:ip change.txt /*:ip* +:iput change.txt /*:iput* :is tagsrch.txt /*:is* :isearch tagsrch.txt /*:isearch* :isp tagsrch.txt /*:isp* @@ -4124,7 +4131,6 @@ CmdwinEnter autocmd.txt /*CmdwinEnter* CmdwinLeave autocmd.txt /*CmdwinLeave* ColorScheme autocmd.txt /*ColorScheme* ColorSchemePre autocmd.txt /*ColorSchemePre* -Colors.plist gui_mac.txt /*Colors.plist* Command-line cmdline.txt /*Command-line* Command-line-mode cmdline.txt /*Command-line-mode* CompleteChanged autocmd.txt /*CompleteChanged* @@ -4640,9 +4646,34 @@ E1512 options.txt /*E1512* E1513 message.txt /*E1513* E1514 options.txt /*E1514* E1515 builtin.txt /*E1515* +E1516 builtin.txt /*E1516* +E1517 eval.txt /*E1517* +E1518 eval.txt /*E1518* +E1519 eval.txt /*E1519* E152 helphelp.txt /*E152* +E1520 eval.txt /*E1520* +E1521 eval.txt /*E1521* +E1522 eval.txt /*E1522* +E1523 eval.txt /*E1523* +E1524 eval.txt /*E1524* +E1525 builtin.txt /*E1525* +E1526 eval.txt /*E1526* +E1527 eval.txt /*E1527* +E1528 vim9.txt /*E1528* +E1529 vim9.txt /*E1529* E153 helphelp.txt /*E153* +E1530 vim9.txt /*E1530* +E1531 vim9.txt /*E1531* +E1532 eval.txt /*E1532* +E1533 eval.txt /*E1533* +E1534 vim9.txt /*E1534* +E1535 eval.txt /*E1535* +E1536 eval.txt /*E1536* +E1537 eval.txt /*E1537* +E1538 eval.txt /*E1538* +E1539 vim9.txt /*E1539* E154 helphelp.txt /*E154* +E1540 eval.txt /*E1540* E155 sign.txt /*E155* E156 sign.txt /*E156* E157 sign.txt /*E157* @@ -5654,6 +5685,9 @@ MMFullScreenFadeTime gui_mac.txt /*MMFullScreenFadeTime* MMLoginShell gui_mac.txt /*MMLoginShell* MMLoginShellArgument gui_mac.txt /*MMLoginShellArgument* MMLoginShellCommand gui_mac.txt /*MMLoginShellCommand* +MMMouseWheelDisableAcceleration gui_mac.txt /*MMMouseWheelDisableAcceleration* +MMMouseWheelMinLines gui_mac.txt /*MMMouseWheelMinLines* +MMMouseWheelNumLines gui_mac.txt /*MMMouseWheelNumLines* MMNativeFullScreen gui_mac.txt /*MMNativeFullScreen* MMNoFontSubstitution gui_mac.txt /*MMNoFontSubstitution* MMNoTitleBarWindow gui_mac.txt /*MMNoTitleBarWindow* @@ -5854,6 +5888,7 @@ TSQL ft_sql.txt /*TSQL* TTpro-telnet syntax.txt /*TTpro-telnet* Tab intro.txt /*Tab* TabClosed autocmd.txt /*TabClosed* +TabClosedPre autocmd.txt /*TabClosedPre* TabEnter autocmd.txt /*TabEnter* TabLeave autocmd.txt /*TabLeave* TabNew autocmd.txt /*TabNew* @@ -5876,6 +5911,8 @@ TextChangedP autocmd.txt /*TextChangedP* TextChangedT autocmd.txt /*TextChangedT* TextYankPost autocmd.txt /*TextYankPost* Transact-SQL ft_sql.txt /*Transact-SQL* +Tuple eval.txt /*Tuple* +Tuples eval.txt /*Tuples* U undo.txt /*U* UTF-8 mbyte.txt /*UTF-8* UTF8-xterm mbyte.txt /*UTF8-xterm* @@ -6689,6 +6726,7 @@ compiler-ruff quickfix.txt /*compiler-ruff* compiler-select quickfix.txt /*compiler-select* compiler-spotbugs quickfix.txt /*compiler-spotbugs* compiler-tex quickfix.txt /*compiler-tex* +compiler-tsc quickfix.txt /*compiler-tsc* compiler-typst quickfix.txt /*compiler-typst* compiler-vaxada ft_ada.txt /*compiler-vaxada* compl-current insert.txt /*compl-current* @@ -6819,6 +6857,7 @@ creating-menus gui.txt /*creating-menus* credits intro.txt /*credits* crontab options.txt /*crontab* cs-find if_cscop.txt /*cs-find* +cs.vim syntax.txt /*cs.vim* cs7-problem term.txt /*cs7-problem* cscope if_cscop.txt /*cscope* cscope-commands if_cscop.txt /*cscope-commands* @@ -7417,6 +7456,7 @@ ft-context-intro ft_context.txt /*ft-context-intro* ft-context-mappings ft_context.txt /*ft-context-mappings* ft-context-settings ft_context.txt /*ft-context-settings* ft-cpp-syntax syntax.txt /*ft-cpp-syntax* +ft-cs-syntax syntax.txt /*ft-cs-syntax* ft-csh-syntax syntax.txt /*ft-csh-syntax* ft-css-omni insert.txt /*ft-css-omni* ft-csv-syntax syntax.txt /*ft-csv-syntax* @@ -7446,6 +7486,7 @@ ft-freebasic-syntax syntax.txt /*ft-freebasic-syntax* ft-fvwm-syntax syntax.txt /*ft-fvwm-syntax* ft-gdscript-plugin filetype.txt /*ft-gdscript-plugin* ft-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin* +ft-gitrebase-plugin filetype.txt /*ft-gitrebase-plugin* ft-go-plugin filetype.txt /*ft-go-plugin* ft-gprof-plugin filetype.txt /*ft-gprof-plugin* ft-groff-syntax syntax.txt /*ft-groff-syntax* @@ -7520,6 +7561,7 @@ ft-php-syntax syntax.txt /*ft-php-syntax* ft-php3-syntax syntax.txt /*ft-php3-syntax* ft-phtml-syntax syntax.txt /*ft-phtml-syntax* ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax* +ft-plsql-plugin filetype.txt /*ft-plsql-plugin* ft-posix-syntax syntax.txt /*ft-posix-syntax* ft-postscr-syntax syntax.txt /*ft-postscr-syntax* ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax* @@ -7681,6 +7723,7 @@ g:filetype_csh syntax.txt /*g:filetype_csh* g:filetype_haredoc ft_hare.txt /*g:filetype_haredoc* g:filetype_md syntax.txt /*g:filetype_md* g:filetype_r syntax.txt /*g:filetype_r* +g:ft_man_implementation filetype.txt /*g:ft_man_implementation* g:ftplugin_rust_source_path ft_rust.txt /*g:ftplugin_rust_source_path* g:gnat ft_ada.txt /*g:gnat* g:gnat.Error_Format ft_ada.txt /*g:gnat.Error_Format* @@ -7728,6 +7771,9 @@ g:html_use_input_for_pc syntax.txt /*g:html_use_input_for_pc* g:html_use_xhtml syntax.txt /*g:html_use_xhtml* g:html_whole_filler syntax.txt /*g:html_whole_filler* g:lf_shell_syntax syntax.txt /*g:lf_shell_syntax* +g:lua_folding filetype.txt /*g:lua_folding* +g:lua_subversion filetype.txt /*g:lua_subversion* +g:lua_version filetype.txt /*g:lua_version* g:macvim_default_touchbar_characterpicker gui_mac.txt /*g:macvim_default_touchbar_characterpicker* g:macvim_default_touchbar_fullscreen gui_mac.txt /*g:macvim_default_touchbar_fullscreen* g:markdown_fenced_languages syntax.txt /*g:markdown_fenced_languages* @@ -7961,6 +8007,7 @@ get()-blob builtin.txt /*get()-blob* get()-dict builtin.txt /*get()-dict* get()-func builtin.txt /*get()-func* get()-list builtin.txt /*get()-list* +get()-tuple builtin.txt /*get()-tuple* get-ms-debuggers debug.txt /*get-ms-debuggers* getbufinfo() builtin.txt /*getbufinfo()* getbufline() builtin.txt /*getbufline()* @@ -8270,6 +8317,7 @@ hl-DiffAdd syntax.txt /*hl-DiffAdd* hl-DiffChange syntax.txt /*hl-DiffChange* hl-DiffDelete syntax.txt /*hl-DiffDelete* hl-DiffText syntax.txt /*hl-DiffText* +hl-DiffTextAdd syntax.txt /*hl-DiffTextAdd* hl-Directory syntax.txt /*hl-Directory* hl-EndOfBuffer syntax.txt /*hl-EndOfBuffer* hl-ErrorMsg syntax.txt /*hl-ErrorMsg* @@ -8339,6 +8387,7 @@ hlexists() builtin.txt /*hlexists()* hlget() builtin.txt /*hlget()* hlsearch-variable eval.txt /*hlsearch-variable* hlset() builtin.txt /*hlset()* +hlyank-install usr_05.txt /*hlyank-install* holy-grail index.txt /*holy-grail* home intro.txt /*home* home-replace editing.txt /*home-replace* @@ -8743,6 +8792,7 @@ list-modification eval.txt /*list-modification* list-repeat windows.txt /*list-repeat* list2blob() builtin.txt /*list2blob()* list2str() builtin.txt /*list2str()* +list2tuple() builtin.txt /*list2tuple()* listener_add() builtin.txt /*listener_add()* listener_flush() builtin.txt /*listener_flush()* listener_remove() builtin.txt /*listener_remove()* @@ -9169,6 +9219,7 @@ netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h* netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l* netrw-ctrl-r pi_netrw.txt /*netrw-ctrl-r* netrw-ctrl_l pi_netrw.txt /*netrw-ctrl_l* +netrw-curdir pi_netrw.txt /*netrw-curdir* netrw-d pi_netrw.txt /*netrw-d* netrw-del pi_netrw.txt /*netrw-del* netrw-delete pi_netrw.txt /*netrw-delete* @@ -9563,6 +9614,7 @@ package-doc repeat.txt /*package-doc* package-documentation repeat.txt /*package-documentation* package-editorconfig usr_05.txt /*package-editorconfig* package-helptoc helphelp.txt /*package-helptoc* +package-hlyank usr_05.txt /*package-hlyank* package-justify usr_25.txt /*package-justify* package-matchit usr_05.txt /*package-matchit* package-nohlsearch usr_05.txt /*package-nohlsearch* @@ -9644,6 +9696,7 @@ phtml.vim syntax.txt /*phtml.vim* pi_getscript.txt pi_getscript.txt /*pi_getscript.txt* pi_gzip.txt pi_gzip.txt /*pi_gzip.txt* pi_logipat.txt pi_logipat.txt /*pi_logipat.txt* +pi_netrw.txt pi_netrw.txt /*pi_netrw.txt* pi_paren.txt pi_paren.txt /*pi_paren.txt* pi_spec.txt pi_spec.txt /*pi_spec.txt* pi_tar.txt pi_tar.txt /*pi_tar.txt* @@ -9805,6 +9858,7 @@ python-2-and-3 if_pyth.txt /*python-2-and-3* python-Dictionary if_pyth.txt /*python-Dictionary* python-Function if_pyth.txt /*python-Function* python-List if_pyth.txt /*python-List* +python-Tuple if_pyth.txt /*python-Tuple* python-VIM_SPECIAL_PATH if_pyth.txt /*python-VIM_SPECIAL_PATH* python-_get_paths if_pyth.txt /*python-_get_paths* python-bindeval if_pyth.txt /*python-bindeval* @@ -10476,6 +10530,7 @@ subscript eval.txt /*subscript* substitute() builtin.txt /*substitute()* substitute-CR version6.txt /*substitute-CR* substring eval.txt /*substring* +subtuple eval.txt /*subtuple* suffixes cmdline.txt /*suffixes* suspend starting.txt /*suspend* swap-exists-choices usr_11.txt /*swap-exists-choices* @@ -10725,6 +10780,7 @@ t_ti term.txt /*t_ti* t_tp version4.txt /*t_tp* t_ts term.txt /*t_ts* t_ts_old version4.txt /*t_ts_old* +t_tuple-variable eval.txt /*t_tuple-variable* t_typealias-variable eval.txt /*t_typealias-variable* t_u7 term.txt /*t_u7* t_ue term.txt /*t_ue* @@ -10961,6 +11017,7 @@ test_null_job() testing.txt /*test_null_job()* test_null_list() testing.txt /*test_null_list()* test_null_partial() testing.txt /*test_null_partial()* test_null_string() testing.txt /*test_null_string()* +test_null_tuple() testing.txt /*test_null_tuple()* test_option_not_set() testing.txt /*test_option_not_set()* test_override() testing.txt /*test_override()* test_refcount() testing.txt /*test_refcount()* @@ -11046,6 +11103,13 @@ try-echoerr eval.txt /*try-echoerr* try-finally eval.txt /*try-finally* try-nested eval.txt /*try-nested* try-nesting eval.txt /*try-nesting* +tuple eval.txt /*tuple* +tuple-concatenation eval.txt /*tuple-concatenation* +tuple-functions usr_41.txt /*tuple-functions* +tuple-identity eval.txt /*tuple-identity* +tuple-index eval.txt /*tuple-index* +tuple-type vim9.txt /*tuple-type* +tuple2list() builtin.txt /*tuple2list()* tutor usr_01.txt /*tutor* two-engines pattern.txt /*two-engines* type() builtin.txt /*type()* @@ -11243,6 +11307,7 @@ v:t_none eval.txt /*v:t_none* v:t_number eval.txt /*v:t_number* v:t_object eval.txt /*v:t_object* v:t_string eval.txt /*v:t_string* +v:t_tuple eval.txt /*v:t_tuple* v:t_typealias eval.txt /*v:t_typealias* v:termblinkresp eval.txt /*v:termblinkresp* v:termrbgresp eval.txt /*v:termrbgresp* @@ -11382,6 +11447,7 @@ variable-categories vim9.txt /*variable-categories* variable-scope eval.txt /*variable-scope* variable-types vim9.txt /*variable-types* variables eval.txt /*variables* +variadic-tuple vim9.txt /*variadic-tuple* various various.txt /*various* various-cmds various.txt /*various-cmds* various-functions usr_41.txt /*various-functions* diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt index f56dbd4b6d..48ea6f93f7 100644 --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -1166,7 +1166,7 @@ Mouse clicks can be mapped. The codes for mouse clicks are: The X1 and X2 buttons refer to the extra buttons found on some mice. The 'Microsoft Explorer' mouse has these buttons available to the right thumb. -Currently X1 and X2 only work on Win32 and X11 environments. +Currently X1 and X2 only work on MacVim, Win32, and X11 environments. Examples: > :noremap diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 53e2dcd081..1d502abc97 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 9.1. Last change: 2025 Feb 13 +*terminal.txt* For Vim version 9.1. Last change: 2025 Feb 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1092,11 +1092,11 @@ Currently supported commands: Example in JSON: > ["drop", "path/file.txt", {"ff": "dos"}] -A trick to have Vim send this escape sequence: > - exe "set t_ts=\]51; t_fs=\x07" - let &titlestring = '["call","Tapi_TryThis",["hello",123]]' - redraw - set t_ts& t_fs& +You can use |echoraw()| to make Vim send this escape sequence: > + call echoraw("\]51;[\"call\", \"Tapi_TryThis\", [\"hello\", 123]]\x07") + call echoraw("\]51;[\"drop\", \"README.md\"]\x07") +Note: JSON requires double quotes around string values, hence those have to be +escaped. Rationale: Why not allow for any command or expression? Because that might create a security problem. diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt index 7d0402c1be..e6f4590cbe 100644 --- a/runtime/doc/testing.txt +++ b/runtime/doc/testing.txt @@ -1,4 +1,4 @@ -*testing.txt* For Vim version 9.1. Last change: 2024 Jul 18 +*testing.txt* For Vim version 9.1. Last change: 2025 Mar 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -68,7 +68,7 @@ test_feedinput({string}) *test_feedinput()* test_garbagecollect_now() *test_garbagecollect_now()* - Like garbagecollect(), but executed right away. This must + Like |garbagecollect()|, but executed right away. This must only be called directly to avoid any structure to exist internally, and |v:testing| must have been set before calling any function. *E1142* @@ -364,6 +364,11 @@ test_null_string() *test_null_string()* Return type: |String| +test_null_tuple() *test_null_tuple()* + Return a |Tuple| that is null. Only useful for testing. + + Return type: |Tuple| + test_option_not_set({name}) *test_option_not_set()* Reset the flag that indicates option {name} was set. Thus it looks like it still has the default value. Use like this: > diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 5338b8b0a1..a3f2d7cfcf 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.1. Last change: 2025 Feb 02 +*todo.txt* For Vim version 9.1. Last change: 2025 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -357,8 +357,6 @@ https://github.com/vim/vim/pull/5566 PR #11579 to add visualtext(), return Visually selected text. -PR #12032: Support Python 3 stable ABI. - PR #11860: Add more info to 'colorcolumn': display a character and highlight for each separate entry. Disadvantage: option value gets very complicated with multiple entries, e.g. every 8 columns. @@ -706,8 +704,6 @@ find them. (Max Kukartsev, #6218) Enable 'termbidi' if $VTE_VERSION >= 5703 ? -Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509) - "--cleanFOO" does not result in an error. (#5537) Output from assert_equalfile() doesn't give a hint about what's different. @@ -1490,8 +1486,6 @@ github with a URL like this: https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff Diff for version.c contains more context, can't skip a patch. -Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) - Comparing nested structures with "==" uses a different comparator than when comparing individual items. @@ -1514,9 +1508,6 @@ C highlighting: modern C allows: /* comment */ #ifdef and also line continuation after #include. I can't recommend it though. -Build with Python on Mac does not always use the right library. -(Kazunobu Kuriyama, 2015 Mar 28) - To support Thai (and other languages) word boundaries, include the ICU library: http://userguide.icu-project.org/boundaryanalysis @@ -1793,13 +1784,6 @@ Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17) b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan 7) -Win32: The Python interface only works with one version of Python, selected at -compile time. Can this be made to work with version 2.1 and 2.2 dynamically? - -Python: Be able to define a Python function that can be called directly from -Vim script. Requires converting the arguments and return value, like with -vim.bindeval(). - Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers, 2012 Aug 4) @@ -2912,6 +2896,20 @@ Quickfix/Location List: 7 Add a command that goes back to the position from before jumping to the first quickfix location. + +Python Interface: +- Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509) +- Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) +- Build with Python on Mac does not always use the right library. + (Kazunobu Kuriyama, 2015 Mar 28) +- Win32: The Python interface only works with one version of Python, + selected at compile time. Can this be made to work with version 2.1 and + 2.2 dynamically? +- Be able to define a Python function that can be called directly from Vim + script. Requires converting the arguments and return value, like with + vim.bindeval(). + + Vi incompatibility: - Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7) Version 1.5 is in ~/src/posix/1.5. (Lynne Canal) @@ -4736,8 +4734,6 @@ Omni completion: Insert mode completion/expansion: - Is it possible to keep the complete menu open when calling complete()? (Prabir Shrestha, 2017 May 19, #1713) -- When 'completeopt' has "noselect" does not insert a newline. - (Lifepillar, 2017 Apr 23, #1653) - When complete() first argument is before where insert started and 'backspace' is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19) @@ -6278,5 +6274,4 @@ Far future and "big" extensions: are reflected in each Vim immediately. Could work with local files but also over the internet. See http://www.codingmonkeys.de/subethaedit/. -vim:tw=78:sw=4:sts=4:ts=8:noet:ft=help:norl: -vim: set fo+=n : +vim:tw=78:sw=4:sts=4:ts=8:noet:ft=help:norl:fo+=n: diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt index 93231f6cd1..56714dbd8d 100644 --- a/runtime/doc/usr_05.txt +++ b/runtime/doc/usr_05.txt @@ -1,4 +1,4 @@ -*usr_05.txt* For Vim version 9.1. Last change: 2025 Jan 11 +*usr_05.txt* For Vim version 9.1. Last change: 2025 Mar 22 VIM USER MANUAL - by Bram Moolenaar @@ -437,7 +437,7 @@ After restarting your Vim, the plugin is active and you can read about it at: > :h editorconfig.txt -Adding comment package *comment-install* *package-comment* +Adding the comment package *comment-install* *package-comment* Load the plugin with this command: > packadd comment @@ -450,7 +450,7 @@ the package loaded. Once the package is loaded, read about it at: > :h comment.txt -Adding nohlsearch package *nohlsearch-install* *package-nohlsearch* +Adding the nohlsearch package *nohlsearch-install* *package-nohlsearch* Load the plugin with this command: > packadd nohlsearch @@ -464,6 +464,31 @@ To disable the effect of the plugin after it has been loaded: > au! nohlsearch < +Adding the highlight-yank package *hlyank-install* *package-hlyank* + +Load the plugin with this command: > + packadd hlyank +< +This package briefly highlights the affected region of the last |yank| +command. See |52.6| for a simplified implementation using the +|getregionpos()| function. + +The plugin understands the following configuration variables (the settings +show the default values). + +To specify a different highlighting group, use: > + :let g:hlyank_hlgroup = 'IncSearch' +< +To use a different highlighting duration, use: > + :let g:hlyank_duration = 300 +The unit is milliseconds, and the upper limit is 3000 ms. If you set a value +higher than this, the highlighting duration will be 3000 ms. + +To highlight in visual mode, use: > + :let g:hlyank_invisual = v:true + +To disable the effect of the plugin after it has been loaded: > + au! hlyank More information about packages can be found here: |packages|. diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index f841a37f70..28961c1e8e 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 9.1. Last change: 2025 Feb 01 +*usr_41.txt* For Vim version 9.1. Last change: 2025 Mar 23 VIM USER MANUAL - by Bram Moolenaar @@ -839,6 +839,30 @@ List manipulation: *list-functions* repeat() repeat a List multiple times flatten() flatten a List flattennew() flatten a copy of a List + items() get List of List index-value pairs + +Tuple manipulation: *tuple-functions* + copy() make a shallow copy of a Tuple + count() count number of times a value appears in a + Tuple + deepcopy() make a full copy of a Tuple + empty() check if Tuple is empty + foreach() apply function to Tuple items + get() get an item without error for wrong index + index() index of a value in a Tuple + indexof() index in a Tuple where an expression is true + items() get List of Tuple index-value pairs + join() join Tuple items into a String + len() number of items in a Tuple + list2tuple() convert a list of items into a Tuple + max() maximum value in a Tuple + min() minimum value in a Tuple + reduce() reduce a Tuple to a value + repeat() repeat a Tuple multiple times + reverse() reverse the order of items in a Tuple + slice() take a slice of a Tuple + string() string representation of a Tuple + tuple2list() convert a Tuple of items into a list Dictionary manipulation: *dict-functions* get() get an entry without an error for a wrong key @@ -1234,6 +1258,7 @@ Testing: *test-functions* test_null_list() return a null List test_null_partial() return a null Partial function test_null_string() return a null String + test_null_tuple() return a null Tuple test_settime() set the time Vim uses internally test_setmouse() set the mouse position test_feedinput() add key sequence to input buffer @@ -1652,8 +1677,8 @@ More information about defining your own functions here: |user-functions|. ============================================================================== *41.8* Lists and Dictionaries -So far we have used the basic types String and Number. Vim also supports two -composite types: List and Dictionary. +So far we have used the basic types String and Number. Vim also supports +three composite types: List, Tuple and Dictionary. A List is an ordered sequence of items. The items can be any kind of value, thus you can make a List of numbers, a List of Lists and even a List of mixed @@ -1754,6 +1779,23 @@ This looks into lines 1 to 50 (inclusive) and echoes any date found in there. For further reading see |Lists|. +TUPLE + +A Tuple is an immutable ordered sequence of items. An item can be of any +type. Items can be accessed by their index number. To create a Tuple with +three strings: > + + var atuple = ('one', 'two', 'three') + +The Tuple items are enclosed in parenthesis and separated by commas. To +create an empty Tuple: > + + var atuple = () + +The |:for| loop can be used to iterate over the items in a Tuple similar to a +List. + +For further reading see |Tuples|. DICTIONARIES diff --git a/runtime/doc/usr_52.txt b/runtime/doc/usr_52.txt index dbfd319837..19a37dca5e 100644 --- a/runtime/doc/usr_52.txt +++ b/runtime/doc/usr_52.txt @@ -1,4 +1,4 @@ -*usr_52.txt* For Vim version 9.1. Last change: 2024 Oct 07 +*usr_52.txt* For Vim version 9.1. Last change: 2025 Mar 17 VIM USER MANUAL - by Bram Moolenaar @@ -346,11 +346,8 @@ Have a look at the package located at $VIMRUNTIME/pack/dist/opt/comment/ HIGHLIGHT YANK PLUGIN -Here is an example for highlighting the yanked region. It makes use of the -|getregionpos()| function, available since Vim 9.1.0446. - -Copy the following example into a new file and place it into your plugin directory -and it will be active next time you start Vim. |add-plugin|: > +Vim comes with the highlight-yank plugin, written in Vim9 script +|hlyank-install|, here is a simplified implementation: >vim vim9script @@ -362,11 +359,10 @@ and it will be active next time you start Vim. |add-plugin|: > endif var [beg, end] = [getpos("'["), getpos("']")] var type = v:event.regtype ?? 'v' - var pos = getregionpos(beg, end, {type: type}) - var end_offset = (type == 'V' || v:event.inclusive) ? 1 : 0 + var pos = getregionpos(beg, end, {type: type, exclusive: false}) var m = matchaddpos(hlgroup, pos->mapnew((_, v) => { var col_beg = v[0][2] + v[0][3] - var col_end = v[1][2] + v[1][3] + end_offset + var col_end = v[1][2] + v[1][3] + 1 return [v[0][1], col_beg, col_end - col_beg] })) var winid = win_getid() @@ -376,6 +372,9 @@ and it will be active next time you start Vim. |add-plugin|: > autocmd TextYankPost * HighlightedYank() < +For the complete example, have a look into the package located at +`$VIMRUNTIME/pack/dist/opt/hlyank/` + ============================================================================== Next chapter: |usr_90.txt| Installing Vim diff --git a/runtime/doc/usr_90.txt b/runtime/doc/usr_90.txt index 9d75989571..d144303ee2 100644 --- a/runtime/doc/usr_90.txt +++ b/runtime/doc/usr_90.txt @@ -1,4 +1,4 @@ -*usr_90.txt* For Vim version 9.1. Last change: 2024 Oct 05 +*usr_90.txt* For Vim version 9.1. Last change: 2025 Mar 03 VIM USER MANUAL - by Bram Moolenaar @@ -28,20 +28,18 @@ is installed in differs. used. But this may be different for your system. Try finding out where other packages are installed. When installing for a single user, you can use your home directory as the -base. The files will be placed in subdirectories like "bin" and "shared/vim". +base. The files will be placed in subdirectories like "bin" and "share/vim". FROM A PACKAGE -You can get precompiled binaries for many different UNIX systems. There is a -long list with links on this page: +Depending on the Unix/Linux system used, there may exist pre-compiled binary +packages. You need to search for this. We used to keep a list for different +UNIX systems, but that list was outdated so the list was removed. - http://www.vim.org/binaries.html - -Volunteers maintain the binaries, so they are often out of date. It is a -good idea to compile your own UNIX version from the source. Also, creating -the editor from the source allows you to control which features are compiled. -This does require a compiler though. +It is a good idea to compile your own UNIX version from the source. Also, +creating the editor from the source allows you to control which features are +compiled. This does require a compiler though. If you have a Linux distribution, the "vi" program is probably a minimal version of Vim. It doesn't do syntax highlighting, for example. Try finding @@ -52,23 +50,18 @@ FROM SOURCES To compile and install Vim, you will need the following: - - A C compiler (GCC preferred) - - The GZIP program (you can get it from www.gnu.org) - - The Vim source and runtime archives + - A C compiler (GCC or clang preferred) + - git (optionally, only when cloning from github) + - zip/unzip (to uncompress the archive) + - The Vim source archives -To get the Vim archives, look in this file for a mirror near you, this should -provide the fastest download: +To download the Vim source, you can either clone it from the Github project +page: > + git clone https://github.com/vim/vim.git +< +or download the archive directly using: - ftp://ftp.vim.org/pub/vim/MIRRORS - -Or use the home site ftp.vim.org, if you think it's fast enough. Go to the -"unix" directory and you'll find a list of files there. The version number is -embedded in the file name. You will want to get the most recent version. - You can get the files for Unix in one big archive that contains everything: - - vim-8.2.tar.bz2 ~ - -You need the bzip2 program to uncompress it. + https://github.com/vim/vim/archive/refs/heads/master.zip COMPILING @@ -80,17 +73,12 @@ First create a top directory to work in, for example: > Then unpack the archives there. You can unpack it like this: > - tar xf path/vim-8.2.tar.bz2 - -If your tar command doesn't support bz2 directly: > - - bzip2 -d -c path/vim-8.2.tar.bz2 | tar xf - + unzip vim-master.zip -Change "path" to where you have downloaded the file. If you are satisfied with getting the default features, and your environment is setup properly, you should be able to compile Vim with just this: > - cd vim82/src + cd vim-master/src make The make program will run configure and compile everything. Further on we diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index de38d08e2e..0e9a5080fa 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2025 Feb 11 +*version9.txt* For Vim version 9.1. Last change: 2025 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41553,10 +41553,21 @@ Enum support for Vim9 script |:enum| Support for protected _new() method +Diff mode ~ +--------- +Include the "linematch" algorithm for the 'diffopt' setting. This aligns +changes between buffers on similar lines improving the diff highlighting in +Vim + +Improve the diff highlighting for changes within a line. Configurable using +the "inline" sub option value for the 'diffopt' setting, with "inline:simple" +being added to the default "diffopt" value (but this does not change how diff +mode works). *new-other-9.2* Other new features ~ ------------------ -The new plugins |comment-install| and |nohlsearch-install| are included. +The new packages |package-comment|, |package-nohlsearch| and |package-hlyank| +are included. Support for Wayland UI. @@ -41569,12 +41580,13 @@ Support highlighting the matched text and the completion kind for insert-mode completion and command-line completion in |ins-completion-menu|, see |complete-items| -Include the "linematch" algorithm for the 'diffopt' setting. This aligns -changes between buffers on similar lines improving the diff highlighting in -Vim +Support for the |Tuple| data type in Vim script and Vim9 script. + + *changed-9.2* +Changed~ +------- -Adjusted default values ~ ------------------------ +Default values: ~ - the default 'history' option value has been increased to 200 and removed from |defaults.vim| - the default 'backspace' option for Vim has been set to "indent,eol,start" @@ -41584,61 +41596,72 @@ Adjusted default values ~ - the default value of the 'keyprotocol' option has been updated and support for the ghostty terminal emulator (using kitty protocol) has been added - *changed-9.2* -Changed~ -------- -- use 'smoothscroll' logic for CTRL-F and CTRL-B for pagewise scrolling -- use 'smoothscroll' logic for CTRL-D and CTRL-U for half-pagewise scrolling +Completion: ~ +- allow to complete directories from 'cdpath' for |:cd| and similar commands, + add the "cd_in_path" completion type for e.g. |:command-complete| and + |getcompletion()| +- allow to complete shell commands and files using the new shellcmdline + completion type using |:command-complete| and |getcmdcomplpat()| +- allow to specify additional attributes in the completion menu (allows to + mark deprecated attributes from LSP server) |complete-items| +- the completed word and completion type are provided when handling the + |CompleteDone| autocommand in the |v:event| dictionary +- |complete_info()| returns the list of matches shown in the poppu menu via + the "matches" key +- New option value for 'completeopt': + "nosort" - do not sort completion results + "preinsert" - highlight to be inserted values +- handle multi-line completion as expected +- improved commandline completion for the |:hi| command +- New option value for 'wildmode': + "noselect" - do not auto select an entry in the wildmenu + +Options: ~ - the default for 'commentstring' contains whitespace padding to have automatic comments look nicer |comment-install| - 'completeopt' is now a |global-local| option. - 'nrformats' accepts the new "blank" suboption, to determine a signed or unsigned number based on whitespace in front of a minus sign. +- add 'cpoptions' flag "z" |cpo-z|, to disable some (traditional) vi + behaviour/inconsistency (see |d-special| and |cw|). +- 'rulerformat' now supports the |stl-%!| item +- use 'smoothscroll' logic for CTRL-F / CTRL-B for pagewise scrolling + and CTRL-D / CTRL-U for half-pagewise scrolling +- 'pummaxwidth' maximum width for the completion popup menu + +Ex commands: ~ - allow to specify a priority when defining a new sign |:sign-define| -- provide information about function arguments using the get(func, "arity") - function |get()-func| - |:bwipe| also wipes jumplist and tagstack data - moving in the buffer list using |:bnext| and similar commands, behaves as documented and skips help buffers (if not run from a help buffer, else moves to the next/previous help buffer). -- allow to complete directories from 'cdpath' for |:cd| and similar commands, - add the "cd_in_path" completion type for e.g. |:command-complete| and - |getcompletion()| -- allow to complete shell commands and files using the new shellcmdline - completion type using |:command-complete| and |getcmdcomplpat()| -- add 'cpoptions' flag "z" |cpo-z|, to disable some (traditional) vi - behaviour/inconsistency (see |d-special| and |cw|). -- allow to specify additional attributes in the completion menu (allows to - mark deprecated attributes from LSP server) |complete-items| -- the regex engines match correctly case-insensitive multi-byte characters - (and apply proper case folding) - |:keeppatterns| preserves the last substitute pattern when used with |:s| + +Functions: ~ +- provide information about function arguments using the get(func, "arity") + function |get()-func| - |setqflist()| and |setloclist()| can optionally try to preserve the current selection in the quickfix list with the "u" action. +- allow to pass local Vim script variables to python interpreter |py3eval()| +- |getwininfo()| now also returns the "leftcol" property for a window +- |v:stacktrace| The stack trace of the exception most recently caught and + not finished +- Add the optional {opts} |Dict| argument to |getchar()| to control: cursor + behaviour, return type and whether or not to simplify the returned key + +Others: ~ +- the regex engines match correctly case-insensitive multi-byte characters + (and apply proper case folding) - the putty terminal is detected using an |TermResponse| autocommand in |defaults.vim| and Vim switches to a dark background - the |help-TOC| package is included to ease navigating the documentation. - an interactive tutor plugin has been included |vim-tutor-mode|, can be started via |:Tutor| - improve the |vimtutor| and add a second chapter for more advanced tips -- allow to pass local Vim script variables to python interpreter |py3eval()| -- |getwininfo()| now also returns the "leftcol" property for a window -- 'rulerformat' now supports the |stl-%!| item -- the completed word and completion type are provided when handling the - |CompleteDone| autocommand in the |v:event| dictionary -- |complete_info()| returns the list of matches shown in the poppu menu via - the "matches" key -- |v:stacktrace| The stack trace of the exception most recently caught and - not finished -- New option value for 'completeopt': - "nosort" - do not sort completion results - "preinsert" - highlight to be inserted values - add |dist#vim9#Launch()| and |dist#vim9#Open()| to the |vim-script-library| and decouple it from |netrw| - new digraph "APPROACHES THE LIMIT" using ".=" -- Add the optional {opts} |Dict| argument to |getchar()| to control: cursor - behaviour, return type and whether or not to simplify the returned key -- handle multi-line completion as expected +- |CTRL-C| always closes the active |popup-window|. *added-9.2* Added ~ @@ -41662,11 +41685,14 @@ Functions: ~ |getstacktrace()| get current stack trace of Vim scripts |id()| get unique identifier for a Dict, List, Object, Channel or Blob variable +|list2tuple()| turn a List of items into a Tuple |matchbufline()| all the matches of a pattern in a buffer |matchstrlist()| all the matches of a pattern in a List of strings |ngettext()| lookup single/plural message translation |popup_setbuf()| switch to a different buffer in a popup |str2blob()| convert a List of strings into a blob +|test_null_tuple()| return a null tuple +|tuple2list()| turn a Tuple of items into a List Autocommands: ~ @@ -41674,6 +41700,7 @@ Autocommands: ~ |CursorMovedC| after the cursor was moved in the command-line |KeyInputPre| before processing any key event in any mode |SessionWritePost| after writing the session file |:mksession| +|TabClosedPre| before closing a |tabpage|. |TermResponseAll| after the terminal response to |t_RV| and others is received |WinNewPre| before creating a new window @@ -41681,7 +41708,8 @@ Autocommands: ~ Highlighting: ~ -|hl-ComplMatchIns| matched text of the currently inserted completion. +|hl-ComplMatchIns| matched text of the currently inserted completion +|hl-DiffTextAdd| added text within a changed line |hl-MsgArea| highlighting of the Command-line and messages area |hl-PmenuMatch| Popup menu: highlighting of matched text |hl-PmenuMatchSel| Popup menu: highlighting of matched text in selected @@ -41690,11 +41718,17 @@ Highlighting: ~ Commands: ~ |[r| and |]r| to move the cursor to previous/next rare word + +Ex-Commands: ~ + +|:iput| like |:put| but adjust indent |:pbuffer| Edit buffer [N] from the buffer list in the preview window Options: ~ +'completefuzzycollect' Enable fuzzy collection of candiates for (some) + |ins-completion| modes 'completeitemalign' Order of |complete-items| in Insert mode completion popup 'eventignorewin' autocommand events that are ignored in a window diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index 5ea4ebe58e..d06c250a3f 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 9.1. Last change: 2025 Jan 21 +*vim9.txt* For Vim version 9.1. Last change: 2025 Mar 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1001,6 +1001,7 @@ empty list and dict is falsy: string non-empty blob non-empty list non-empty (different from JavaScript) + tuple non-empty (different from JavaScript) dictionary non-empty (different from JavaScript) func when there is a function name special true or v:true @@ -1048,6 +1049,7 @@ In Vim9 script one can use the following predefined values: > null_function null_job null_list + null_tuple null_object null_partial null_string @@ -1467,15 +1469,16 @@ The following builtin types are supported: dict<{type}> job channel + tuple<{type}> + tuple<{type}, {type}, ...> + tuple<...list<{type}>> + tuple<{type}, ...list<{type}>> func func: {type} func({type}, ...) func({type}, ...): {type} void -Not supported yet: - tuple - These types can be used in declarations, but no simple value will actually have the "void" type. Trying to use a void (e.g. a function without a return value) results in error *E1031* *E1186* . @@ -1483,6 +1486,32 @@ return value) results in error *E1031* *E1186* . There is no array type, use list<{type}> instead. For a list constant an efficient implementation is used that avoids allocating a lot of small pieces of memory. + *tuple-type* +A tuple type can be declared in more or less specific ways: +tuple a tuple with a single item of type |Number| +tuple a tuple with two items of type |Number| and + |String| +tuple a tuple with three items of type |Number|, + |Float| and |Boolean|. +tuple<...list> a variadic tuple with zero or more items of + type |Number|. +tuple> a tuple with an item of type |Number| followed + by zero or more items of type |String|. + +Examples: > + var myTuple: tuple = (20,) + var myTuple: tuple = (30, 'vim') + var myTuple: tuple = (40, 1.1, true) + var myTuple: tuple<...list> = ('a', 'b', 'c') + var myTuple: tuple> = (3, 'a', 'b', 'c') +< + *variadic-tuple* *E1539* +A variadic tuple has zero or more items of the same type. The type of a +variadic tuple must end with a list type. Examples: > + var myTuple: tuple<...list> = (1, 2, 3) + var myTuple: tuple<...list> = ('a', 'b', 'c') + var myTuple: tuple<...list> = () +< *vim9-func-declaration* *E1005* *E1007* A partial and function can be declared in more or less specific ways: func any kind of function reference, no type @@ -1707,7 +1736,8 @@ argument type checking: > *E1211* *E1217* *E1218* *E1219* *E1220* *E1221* *E1222* *E1223* *E1224* *E1225* *E1226* *E1227* *E1228* *E1238* *E1250* *E1251* *E1252* *E1256* - *E1297* *E1298* *E1301* + *E1297* *E1298* *E1301* *E1528* *E1529* *E1530* + *E1531* *E1534* Types are checked for most builtin functions to make it easier to spot mistakes. @@ -1715,7 +1745,7 @@ Categories of variables, defaults and null handling ~ *variable-categories* *null-variables* There are categories of variables: primitive number, float, boolean - container string, blob, list, dict + container string, blob, list, tuple, dict specialized function, job, channel, user-defined-object When declaring a variable without an initializer, an explicit type must be @@ -1845,6 +1875,7 @@ An uninitialized variable is usually equal to null; it depends on its type: var s: string s == null var b: blob b != null *** var l: list l != null *** + var t: tuple t != null *** var d: dict d != null *** var f: func f == null var j: job j == null @@ -1855,6 +1886,7 @@ A variable initialized to empty equals null_; but not null: var s2: string = "" == null_string != null var b2: blob = 0z == null_blob != null var l2: list = [] == null_list != null + var t2: tuple = () == null_tuple != null var d2: dict = {} == null_dict != null NOTE: the specialized variables, like job, default to null value and have no @@ -1921,6 +1953,10 @@ There is one way to use both legacy and Vim9 syntax in one script file: > This allows for writing a script that takes advantage of the Vim9 script syntax if possible, but will also work on a Vim version without it. +Note that Vim9 syntax changed before Vim 9 so that scripts using the current +syntax (such as "import from" instead of "import") might throw errors. +To prevent these, a safer check could be for |v:version| >= 900 instead. + This can only work in two ways: 1. The "if" statement evaluates to false, the commands up to `endif` are skipped and `vim9script` is then the first command actually executed. diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 46650e9c42..4e386e9e39 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: The Vim Project -" Last Change: 2025 Feb 08 +" Last Change: 2025 Mar 18 " Former Maintainer: Bram Moolenaar " Listen very carefully, I will say this only once @@ -51,8 +51,11 @@ func s:StarSetf(ft) endif endfunc -" Vim help file -au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help +" Vim help file, set ft explicitly, because 'modeline' might be off +au BufNewFile,BufRead */doc/*.txt + \ if getline('$') =~ '\(^\|\s\)vim:.*\<\(ft\|filetype\)=help\>' + \| setf help + \| endif " Abaqus or Trasys au BufNewFile,BufRead *.inp call dist#ft#Check_inp() @@ -75,6 +78,9 @@ au BufNewFile,BufRead *.abc setf abc " ABEL au BufNewFile,BufRead *.abl setf abel +" ABNF +au BufNewFile,BufRead *.abnf setf abnf + " AceDB au BufNewFile,BufRead *.wrm setf acedb @@ -341,6 +347,11 @@ au BufNewFile,BufRead *.capnp setf capnp " Cgdb config file au BufNewFile,BufRead cgdbrc setf cgdbrc +" m17n database files. */m17n/* matches installed files, */.m17n.d/* matches +" per-user config files, */m17n-db/* matches the git repo. (must be before +" *.cs) +au BufNewFile,BufRead */{m17n,.m17n.d,m17n-db}/*.{ali,cs,dir,flt,fst,lnm,mic,mim,tbl} setf m17ndb + " C# au BufNewFile,BufRead *.cs,*.csx,*.cake setf cs @@ -384,6 +395,12 @@ au BufNewFile,BufRead *.cdl setf cdl " Conary Recipe au BufNewFile,BufRead *.recipe setf conaryrecipe +" Containers config files +au BufNewFile,BufRead */containers/containers.conf{,.d/*.conf} setf toml +au BufNewFile,BufRead */containers/containers.conf.modules/*.conf setf toml +au BufNewFile,BufRead */containers/registries.conf{,.d/*.conf} setf toml +au BufNewFile,BufRead */containers/storage.conf setf toml + " Corn config file au BufNewFile,BufRead *.corn setf corn @@ -952,7 +969,7 @@ au BufNewFile,BufRead */etc/gitattributes setf gitattributes au BufNewFile,BufRead .gitignore,*.git/info/exclude setf gitignore au BufNewFile,BufRead */.config/git/ignore,*.prettierignore setf gitignore au BufNewFile,BufRead */.config/fd/ignore,.fdignore,.ignore setf gitignore -au BufNewFile,BufRead .rgignore,.dockerignore setf gitignore +au BufNewFile,BufRead .rgignore,.dockerignore,.containerignore setf gitignore au BufNewFile,BufRead .npmignore,.vscodeignore setf gitignore au BufNewFile,BufRead git-rebase-todo setf gitrebase au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail @@ -1797,7 +1814,7 @@ au BufNewFile,BufRead *.hook au BufNewFile,BufRead {.,}makepkg.conf setf sh " Pacman log -au BufNewFile,BufRead pacman.log setf pacmanlog +au BufRead pacman.log* call s:StarSetf('pacmanlog') " Pam conf au BufNewFile,BufRead */etc/pam.conf setf pamconf @@ -2347,8 +2364,8 @@ au BufNewFile,BufRead *.zsh,*.zsh-theme,*.zunit setf zsh " Salt state files au BufNewFile,BufRead *.sls setf salt -" Scheme, Supertux configuration, Lips.js history ("racket" patterns are now separate, see above) -au BufNewFile,BufRead *.scm,*.ss,*.sld,*.stsg,*/supertux2/config,.lips_repl_history setf scheme +" Scheme, Supertux configuration, Lips.js history, Guile init file ("racket" patterns are now separate, see above) +au BufNewFile,BufRead *.scm,*.ss,*.sld,*.stsg,*/supertux2/config,.lips_repl_history,.guile setf scheme " Screen RC au BufNewFile,BufRead .screenrc,screenrc setf screen @@ -2498,6 +2515,10 @@ au BufNewFile,BufRead *.class " SMCL au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl +" SPA JSON +au BufNewFile,BufRead */pipewire/*.conf setf spajson +au BufNewFile,BufRead */wireplumber/*.conf setf spajson + " Stored Procedures au BufNewFile,BufRead *.stp setf stp @@ -2596,6 +2617,9 @@ au BufRead,BufNewFile *.ttl " Terminfo au BufNewFile,BufRead *.ti setf terminfo +" Tera +au BufRead,BufNewFile *.tera setf tera + " Terraform variables au BufRead,BufNewFile *.tfvars setf terraform-vars @@ -2640,7 +2664,7 @@ au BufNewFile,BufRead *.tla setf tla au BufNewFile,BufRead {.,}tmux*.conf setf tmux " TOML -au BufNewFile,BufRead *.toml setf toml +au BufNewFile,BufRead *.toml,uv.lock setf toml " TPP - Text Presentation Program au BufNewFile,BufRead *.tpp setf tpp @@ -3273,7 +3297,7 @@ au BufNewFile,BufRead XF86Config* \|call s:StarSetf('xf86conf') " XKB -au BufNewFile,BufRead */usr/share/X11/xkb/{compat,geometry,keycodes,symbols,types}/* call s:StarSetf('xkb') +au BufNewFile,BufRead */{,.}xkb/{compat,geometry,keycodes,symbols,types}/* call s:StarSetf('xkb') " X11 xmodmap au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap') @@ -3284,6 +3308,15 @@ au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd') " yum conf (close enough to dosini) au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini') +" Yarn lock +au BufNewFile,BufRead yarn.lock setf yaml + +" Zathurarc +au BufNewFile,BufRead zathurarc setf zathurarc + +" Rofi stylesheet +au BufNewFile,BufRead *.rasi setf rasi + " Z-Shell script ending in a star au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump* call s:StarSetf('zsh') au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh') @@ -3329,15 +3362,6 @@ au filetypedetect BufNewFile,BufRead,StdinReadPost * \ setf FALLBACK conf | \ endif -" Yarn lock -au BufNewFile,BufRead yarn.lock setf yaml - -" Zathurarc -au BufNewFile,BufRead zathurarc setf zathurarc - -" Rofi stylesheet -au BufNewFile,BufRead *.rasi setf rasi - " If the GUI is already running, may still need to install the Syntax menu. " Don't do it when the 'M' flag is included in 'guioptions'. if has("menu") && has("gui_running") diff --git a/runtime/ftplugin/cs.vim b/runtime/ftplugin/cs.vim index ada71315e1..d40fe43ebc 100644 --- a/runtime/ftplugin/cs.vim +++ b/runtime/ftplugin/cs.vim @@ -2,8 +2,7 @@ " Language: C# " Maintainer: Nick Jensen " Former Maintainer: Johannes Zellner -" Last Change: 2022-11-16 -" 2024 Jan 14 by Vim Project (browsefilter) +" Last Change: 2025-03-14 " License: Vim (see :h license) " Repository: https://github.com/nickspoons/vim-cs @@ -21,8 +20,11 @@ setlocal formatoptions-=t formatoptions+=croql " Set 'comments' to format dashed lists in comments. setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// +setlocal commentstring=//\ %s -let b:undo_ftplugin = 'setl com< fo<' +setlocal cinoptions=J1 + +let b:undo_ftplugin = 'setl com< fo< cino<' if exists('loaded_matchit') && !exists('b:match_words') " #if/#endif support included by default diff --git a/runtime/ftplugin/dockerfile.vim b/runtime/ftplugin/dockerfile.vim index e45bf4c1d8..f9268fe89b 100644 --- a/runtime/ftplugin/dockerfile.vim +++ b/runtime/ftplugin/dockerfile.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Dockerfile " Maintainer: Honza Pokorny -" Last Change: 2024 Dec 20 +" Last Change: 2025 Feb 21 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -11,6 +11,7 @@ endif " Don't load another plugin for this buffer let b:did_ftplugin = 1 +setlocal comments=:# setlocal commentstring=#\ %s -let b:undo_ftplugin = "setl commentstring<" +let b:undo_ftplugin = "setl comments< commentstring<" diff --git a/runtime/ftplugin/go.vim b/runtime/ftplugin/go.vim index 75f78cfa4b..57fc73cd13 100644 --- a/runtime/ftplugin/go.vim +++ b/runtime/ftplugin/go.vim @@ -1,8 +1,10 @@ " Vim filetype plugin file " Language: Go -" Maintainer: David Barnett (https://github.com/google/vim-ft-go) +" Maintainer: David Barnett (https://github.com/google/vim-ft-go is archived) " Last Change: 2014 Aug 16 " 2024 Jul 16 by Vim Project (add recommended indent style) +" 2025 Mar 07 by Vim Project (add formatprg and keywordprg option #16804) +" 2025 Mar 18 by Vim Project (use :term for 'keywordprg' #16911) if exists('b:did_ftplugin') finish @@ -10,15 +12,37 @@ endif let b:did_ftplugin = 1 setlocal formatoptions-=t +setlocal formatprg=gofmt setlocal comments=s1:/*,mb:*,ex:*/,:// setlocal commentstring=//\ %s +setlocal keywordprg=:GoKeywordPrg -let b:undo_ftplugin = 'setl fo< com< cms<' +command! -buffer -nargs=* GoKeywordPrg call s:GoKeywordPrg() + +let b:undo_ftplugin = 'setl fo< com< cms< fp< kp<' + \ . '| delcommand -buffer GoKeywordPrg' if get(g:, 'go_recommended_style', 1) setlocal noexpandtab softtabstop=0 shiftwidth=0 let b:undo_ftplugin ..= ' | setl et< sts< sw<' endif +if !exists('*' .. expand('') .. 'GoKeywordPrg') + func! s:GoKeywordPrg() + let temp_isk = &l:iskeyword + setl iskeyword+=. + try + let cmd = 'go doc -C ' . shellescape(expand('%:h')) . ' ' . shellescape(expand('')) + if has('gui_running') || has('nvim') + exe 'hor term' cmd + else + exe '!' . cmd + endif + finally + let &l:iskeyword = temp_isk + endtry + endfunc +endif + " vim: sw=2 sts=2 et diff --git a/runtime/ftplugin/lua.vim b/runtime/ftplugin/lua.vim index 22b9986274..cc042c5dc4 100644 --- a/runtime/ftplugin/lua.vim +++ b/runtime/ftplugin/lua.vim @@ -5,13 +5,24 @@ " Contributor: Dorai Sitaram " C.D. MacEachern " Tyler Miller -" Last Change: 2024 Dec 03 +" Phạm Bình An +" Last Change: 2025 Feb 27 if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 +" keep in sync with syntax/lua.vim +if !exists("lua_version") + " Default is lua 5.3 + let lua_version = 5 + let lua_subversion = 3 +elseif !exists("lua_subversion") + " lua_version exists, but lua_subversion doesn't. In this case set it to 0 + let lua_subversion = 0 +endif + let s:cpo_save = &cpo set cpo&vim @@ -21,11 +32,11 @@ setlocal formatoptions-=t formatoptions+=croql let &l:define = '\= 5.03 ? [fname .. ".lua", fname .. "/init.lua"] : [fname .. ".lua"] + for path in paths + if filereadable(path) + return path + endif + endfor + return fname +endfunction + let s:patterns = [ \ ['do', 'end'], \ ['if\s+.+\s+then', 'end'], @@ -75,35 +97,35 @@ let s:patterns = [ \ ['local\s+function\s+.+', 'end'], \ ] -function! LuaFold(lnum) abort +function s:LuaFold(lnum) abort if b:lua_lasttick == b:changedtick - return b:lua_foldlists[a:lnum-1] + return b:lua_foldlists[a:lnum - 1] endif let b:lua_lasttick = b:changedtick let b:lua_foldlists = [] let foldlist = [] - let buf = getline(1, '$') + let buf = getline(1, "$") for line in buf for t in s:patterns - let tagopen = '\v^\s*'..t[0]..'\s*$' - let tagclose = '\v^\s*'..t[1]..'\s*$' + let tagopen = '\v^\s*' .. t[0] ..'\s*$' + let tagclose = '\v^\s*' .. t[1] ..'\s*$' if line =~# tagopen - call add(foldlist, t) - break + call add(foldlist, t) + break elseif line =~# tagclose - if len(foldlist) > 0 && line =~# foldlist[-1][1] - call remove(foldlist, -1) - else - let foldlist = [] - endif - break + if len(foldlist) > 0 && line =~# foldlist[-1][1] + call remove(foldlist, -1) + else + let foldlist = [] + endif + break endif endfor call add(b:lua_foldlists, len(foldlist)) endfor - return lua_foldlists[a:lnum-1] + return lua_foldlists[a:lnum - 1] endfunction let &cpo = s:cpo_save diff --git a/runtime/ftplugin/m17ndb.vim b/runtime/ftplugin/m17ndb.vim new file mode 100644 index 0000000000..e4457cef9d --- /dev/null +++ b/runtime/ftplugin/m17ndb.vim @@ -0,0 +1,17 @@ +" Vim filetype plugin +" Language: m17n database +" Maintainer: David Mandelberg +" Last Change: 2025 Feb 21 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=:;;;,:;;,:; +setlocal commentstring=;\ %s +setlocal iskeyword=!-~,@,^34,^(,^),^92 +setlocal lisp +setlocal lispwords= + +let b:undo_ftplugin = "setlocal comments< commentstring< iskeyword< lisp< lispwords<" diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim index 45c2bb239a..3edbb27e78 100644 --- a/runtime/ftplugin/man.vim +++ b/runtime/ftplugin/man.vim @@ -6,6 +6,7 @@ " Last Change: 2024 Jun 06 (disabled the q mapping, #8210) " 2024 Jul 06 (use nnoremap, #15130) " 2024 Aug 23 (improve the ManBS mapping, #15547, #15556) +" 2025 Mar 09 (improve :Man completion for man-db, #16843) " To make the ":Man" command available before editing a manual page, source " this script from your startup vimrc file. @@ -24,6 +25,14 @@ endif let s:cpo_save = &cpo set cpo-=C +if !exists('g:ft_man_implementation') + if executable('mandb') > 0 + let g:ft_man_implementation = 'man-db' + else + let g:ft_man_implementation = '' + endif +endif + if &filetype == "man" " Allow hyphen, plus, colon, dot, and commercial at in manual page name. " Parentheses are not here but in dist#man#PreGetPage() @@ -60,11 +69,19 @@ if &filetype == "man" endif if exists(":Man") != 2 - com -nargs=+ -complete=shellcmd Man call dist#man#GetPage(, ) + if g:ft_man_implementation ==# 'man-db' + com -nargs=+ -complete=customlist,dist#man#ManDbComplete Man call dist#man#GetPage(, ) + else + com -nargs=+ -complete=shellcmd Man call dist#man#GetPage(, ) + endif nnoremap K :call dist#man#PreGetPage(0) nnoremap ManPreGetPage :call dist#man#PreGetPage(0) endif +if exists(":ManReload") != 2 + com ManReload call dist#man#Reload() +endif + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/plsql.vim b/runtime/ftplugin/plsql.vim new file mode 100755 index 0000000000..7fcc5d7a5c --- /dev/null +++ b/runtime/ftplugin/plsql.vim @@ -0,0 +1,17 @@ +" Vim ftplugin file +" Language: Oracle Procedural SQL (PL/SQL) +" Maintainer: Lee Lindley (lee dot lindley at gmail dot com) +" Previous Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com) +" Previous Maintainer: C. Laurence Gonsalves (clgonsal@kami.com) +" URL: https://github.com/lee-lindley/vim_plsql_syntax +" Last Change: Feb 19, 2025 +" History: Enno Konfekt move handling of optional syntax folding from syntax +" file to ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +if get(g:,"plsql_fold",0) == 1 + setlocal foldmethod=syntax + let b:undo_ftplugin = "setl fdm< " +endif diff --git a/runtime/ftplugin/sh.vim b/runtime/ftplugin/sh.vim index 54ae73b675..0038ee7dd4 100644 --- a/runtime/ftplugin/sh.vim +++ b/runtime/ftplugin/sh.vim @@ -6,6 +6,7 @@ " Eisuke Kawashima " Last Change: 2024 Sep 19 by Vim Project (compiler shellcheck) " 2024 Dec 29 by Vim Project (improve setting shellcheck compiler) +" 2025 Mar 09 by Vim Project (set b:match_skip) if exists("b:did_ftplugin") finish @@ -30,7 +31,8 @@ if exists("loaded_matchit") && !exists("b:match_words") \ s:sol .. '\%(for\|while\)\>:' .. s:sol .. 'done\>,' .. \ s:sol .. 'case\>:' .. s:sol .. 'esac\>' unlet s:sol - let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words" + let b:match_skip = "synIDattr(synID(line('.'),col('.'),0),'name') =~ 'shSnglCase'" + let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words b:match_skip" endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") diff --git a/runtime/ftplugin/sieve.vim b/runtime/ftplugin/sieve.vim index 3092b5d2d3..8161fe99ac 100644 --- a/runtime/ftplugin/sieve.vim +++ b/runtime/ftplugin/sieve.vim @@ -1,20 +1,19 @@ " Vim filetype plugin file " Language: Sieve filtering language input file +" Maintainer: This runtime file is looking for a new maintainer. " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2008-07-09 +" Latest Revision: 2025 Feb 20 if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 -let s:cpo_save = &cpo -set cpo&vim - -let b:undo_ftplugin = "setl com< cms< fo<" +let b:undo_ftplugin = "setl com< cms< fo< ff<" setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s setlocal formatoptions-=t formatoptions+=croql -let &cpo = s:cpo_save -unlet s:cpo_save +" https://datatracker.ietf.org/doc/html/rfc5228#section-2.2 says +" "newlines (CRLF, never just CR or LF)" +setlocal fileformat=dos diff --git a/runtime/ftplugin/spajson.vim b/runtime/ftplugin/spajson.vim new file mode 100644 index 0000000000..d03d1d5070 --- /dev/null +++ b/runtime/ftplugin/spajson.vim @@ -0,0 +1,14 @@ +" Vim filetype plugin +" Language: SPA JSON +" Maintainer: David Mandelberg +" Last Change: 2025 Mar 22 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=:###,:##,:# +setlocal commentstring=#\ %s + +let b:undo_ftplugin = "setlocal comments< commentstring<" diff --git a/runtime/ftplugin/tera.vim b/runtime/ftplugin/tera.vim new file mode 100644 index 0000000000..65bae70048 --- /dev/null +++ b/runtime/ftplugin/tera.vim @@ -0,0 +1,30 @@ +" Vim filetype plugin file +" Language: Tera +" Maintainer: Muntasir Mahmud +" Last Change: 2025 Mar 08 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal autoindent + +setlocal commentstring={#\ %s\ #} +setlocal comments=s:{#,e:#} + +if exists("loaded_matchit") + let b:match_ignorecase = 0 + let b:match_words = '{#:##\|#},{% *if:{% *else\>:{% *elif\>:{% *endif %},{% *for\>:{% *endfor %},{% *macro\>:{% *endmacro %},{% *block\>:{% *endblock %},{% *filter\>:{% *endfilter %},{% *set\>:{% *endset %},{% *raw\>:{% *endraw %},{% *with\>:{% *endwith %}' +endif + +setlocal includeexpr=substitute(v:fname,'\\([^.]*\\)$','\\1','g') +setlocal suffixesadd=.tera + +setlocal expandtab +setlocal shiftwidth=2 +setlocal softtabstop=2 + +let b:undo_ftplugin = "setlocal autoindent< commentstring< comments< " .. + \ "includeexpr< suffixesadd< expandtab< shiftwidth< softtabstop<" +let b:undo_ftplugin .= "|unlet! b:match_ignorecase b:match_words" diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index 2c883a537a..99ce0bc586 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -1,9 +1,11 @@ " Vim filetype plugin -" Language: Vim -" Maintainer: Doug Kearns -" Last Change: 2025 Jan 06 -" Former Maintainer: Bram Moolenaar -" Contributors: Riley Bruins ('commentstring') +" Language: Vim +" Maintainer: Doug Kearns +" Last Change: 2025 Mar 05 +" Former Maintainer: Bram Moolenaar +" Contributors: Riley Bruins ('commentstring'), +" @Konfekt +" @tpope (s:Help()) " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -18,20 +20,21 @@ set cpo&vim if !exists('*VimFtpluginUndo') func VimFtpluginUndo() - setl fo< isk< com< tw< commentstring< include< define< + setl fo< isk< com< tw< commentstring< include< define< keywordprg< + sil! delc -buffer VimKeywordPrg if exists('b:did_add_maps') silent! nunmap [[ - silent! vunmap [[ + silent! xunmap [[ silent! nunmap ]] - silent! vunmap ]] + silent! xunmap ]] silent! nunmap [] - silent! vunmap [] + silent! xunmap [] silent! nunmap ][ - silent! vunmap ][ + silent! xunmap ][ silent! nunmap ]" - silent! vunmap ]" + silent! xunmap ]" silent! nunmap [" - silent! vunmap [" + silent! xunmap [" endif unlet! b:match_ignorecase b:match_words b:match_skip b:did_add_maps endfunc @@ -48,7 +51,53 @@ setlocal fo-=t fo+=croql setlocal isk+=# " Use :help to lookup the keyword under the cursor with K. -setlocal keywordprg=:help +" Distinguish between commands, options and functions. +if !exists("*" .. expand("") .. "Help") + function s:Help(topic) abort + let topic = a:topic + + if get(g:, 'syntax_on', 0) + let syn = synIDattr(synID(line('.'), col('.'), 1), 'name') + if syn ==# 'vimFuncName' + return topic.'()' + elseif syn ==# 'vimOption' + return "'".topic."'" + elseif syn ==# 'vimUserAttrbKey' + return ':command-'.topic + elseif syn =~# 'vimCommand' + return ':'.topic + endif + endif + + let col = col('.') - 1 + while col && getline('.')[col] =~# '\k' + let col -= 1 + endwhile + let pre = col == 0 ? '' : getline('.')[0 : col] + + let col = col('.') - 1 + while col && getline('.')[col] =~# '\k' + let col += 1 + endwhile + let post = getline('.')[col : -1] + + if pre =~# '^\s*:\=$' + return ':'.topic + elseif pre =~# '\' + elseif pre =~# '\\$' + return '/\'.topic + elseif topic ==# 'v' && post =~# ':\w\+' + return 'v'.matchstr(post, ':\w\+') + else + return topic + endif + endfunction +endif +command! -buffer -nargs=1 VimKeywordPrg :exe 'help' s:Help() +setlocal keywordprg=:VimKeywordPrg " Comments starts with # in Vim9 script. We have to guess which one to use. if "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>' @@ -77,19 +126,19 @@ if !exists("no_plugin_maps") && !exists("no_vim_maps") " Move around functions. nnoremap [[ m':call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW") - vnoremap [[ m':exe "normal! gv"call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW") + xnoremap [[ m':exe "normal! gv"call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW") nnoremap ]] m':call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W") - vnoremap ]] m':exe "normal! gv"call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W") + xnoremap ]] m':exe "normal! gv"call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W") nnoremap [] m':call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW") - vnoremap [] m':exe "normal! gv"call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW") + xnoremap [] m':exe "normal! gv"call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW") nnoremap ][ m':call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W") - vnoremap ][ m':exe "normal! gv"call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W") + xnoremap ][ m':exe "normal! gv"call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W") " Move around comments nnoremap ]" :call search('\%(^\s*".*\n\)\@ - vnoremap ]" :exe "normal! gv"call search('\%(^\s*".*\n\)\@ + xnoremap ]" :exe "normal! gv"call search('\%(^\s*".*\n\)\@ nnoremap [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") - vnoremap [" :exe "normal! gv"call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") + xnoremap [" :exe "normal! gv"call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") endif " Let the matchit plugin know what items can be matched. @@ -101,15 +150,15 @@ if exists("loaded_matchit") " func name " require a parenthesis following, then there can be an "endfunc". let b:match_words = - \ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+\s*(:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' .. - \ '\<\%(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' .. - \ '\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' .. - \ '{:},' .. - \ '\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' .. - \ '\\)\@!\S:\,' .. - \ '\:\,' .. - \ '\:\,' .. - \ '\:\' + \ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+\s*(:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' .. + \ '\<\%(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' .. + \ '\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' .. + \ '{:},' .. + \ '\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' .. + \ '\\)\@!\S:\,' .. + \ '\:\,' .. + \ '\:\,' .. + \ '\:\' " Ignore syntax region commands and settings, any 'en*' would clobber " if-endif. @@ -117,7 +166,7 @@ if exists("loaded_matchit") " - au! FileType javascript syntax region foldBraces start=/{/ end=/}/ … " Also ignore here-doc and dictionary keys (vimVar). let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name") - \ =~? "comment\\|string\\|vimSynReg\\|vimSet\\|vimLetHereDoc\\|vimVar"' + \ =~? "comment\\|string\\|vimSynReg\\|vimSet\\|vimLetHereDoc\\|vimVar"' endif let &cpo = s:cpo_save @@ -125,3 +174,5 @@ unlet s:cpo_save " removed this, because 'cpoptions' is a global option. " setlocal cpo+=M " makes \%( match \) +" +" vim: sw=2 et diff --git a/runtime/indent/Makefile b/runtime/indent/Makefile index 2af1276ab3..742e43f9e7 100644 --- a/runtime/indent/Makefile +++ b/runtime/indent/Makefile @@ -10,7 +10,16 @@ VIMRUNTIME = .. # If a test succeeds a testdir/*.out file will be written. # If a test fails a testdir/*.fail file will be written. test: - VIMRUNTIME=$(VIMRUNTIME) $(VIMPROG) --clean --not-a-term -u testdir/runtest.vim + VIMRUNTIME=$(VIMRUNTIME) $(VIMPROG) --clean --not-a-term -u testdir/runtest.vim || \ + { \ + retval=$$?; \ + for fail in testdir/*.fail; do \ + [ -f "$$fail" ] || continue; \ + echo "$$fail:"; \ + cat "$$fail"; \ + done; \ + exit $$retval; \ + } @echo "INDENT TESTS: DONE" diff --git a/runtime/indent/m17ndb.vim b/runtime/indent/m17ndb.vim new file mode 100644 index 0000000000..d25aafe135 --- /dev/null +++ b/runtime/indent/m17ndb.vim @@ -0,0 +1,14 @@ +" Vim indent file +" Language: m17n database +" Maintainer: David Mandelberg +" Last Change: 2025 Feb 21 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal autoindent +setlocal nosmartindent + +let b:undo_indent = "setlocal autoindent< smartindent<" diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim index 184e829873..a1abd1d0af 100644 --- a/runtime/indent/sh.vim +++ b/runtime/indent/sh.vim @@ -7,6 +7,7 @@ " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-sh-indent " Changelog: +" 20250318 - Detect local arrays in functions " 20241411 - Detect dash character in function keyword for " bash mode (issue #16049) " 20190726 - Correctly skip if keywords in syntax comments @@ -73,6 +74,8 @@ function! s:indent_value(option) endfunction function! GetShIndent() + let mode = mode() + let curline = getline(v:lnum) let lnum = prevnonblank(v:lnum - 1) if lnum == 0 @@ -86,8 +89,11 @@ function! GetShIndent() " Check contents of previous lines " should not apply to e.g. commented lines - if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' || - \ (&ft is# 'zsh' && line =~ '^\s*\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>') + + if s:start_block(line) + let ind += s:indent_value('default') + elseif line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>\($\|\s\)' || + \ (&ft is# 'zsh' && line =~ '^\s*\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>\($\|\s\)') if !s:is_end_expression(line) let ind += s:indent_value('default') endif @@ -111,7 +117,7 @@ function! GetShIndent() let ind += s:indent_value('continuation-line') endif elseif s:end_block(line) && !s:start_block(line) - let ind = indent(lnum) + let ind -= s:indent_value('default') elseif pnum != 0 && \ s:is_continuation_line(pline) && \ !s:end_block(curline) && @@ -122,7 +128,7 @@ function! GetShIndent() while !s:is_empty(getline(i)) && i > pnum let i -= 1 endw - if i == pnum + if i == pnum && (s:is_continuation_line(line) || pline =~ '{\s*\(#.*\)\=$') let ind += ind2 else let ind = ind2 @@ -136,7 +142,11 @@ function! GetShIndent() " TODO: should we do the same for other "end" lines? if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$' let ind = indent(v:lnum) - let previous_line = searchpair('\', '', '\\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"') + " in insert mode, try to place the cursor after the fi statement + let endp = '\' .. (mode ==? 'i' ? '\zs' : '') + let startp = '^\s*\' + let previous_line = searchpair(startp, '', endp , 'bnW', + \ 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote\\|option"') if previous_line > 0 let ind = indent(previous_line) endif @@ -167,7 +177,13 @@ function! GetShIndent() elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1 return indent(v:lnum) elseif s:is_comment(line) && s:is_empty(getline(v:lnum-1)) - return indent(v:lnum) + if s:is_in_block(v:lnum) + " return indent of line in same block + return indent(lnum) + else + " use indent of current line + return indent(v:lnum) + endif endif return ind > 0 ? ind : 0 @@ -203,7 +219,18 @@ function! s:is_function_definition(line) endfunction function! s:is_array(line) - return a:line =~ '^\s*\<\k\+\>=(' + return a:line =~ '^\s*\(\(declare\|typeset\|local\)\s\+\(-[Aalrtu]\+\s\+\)\?\)\?\<\k\+\>=(' +endfunction + +function! s:is_in_block(line) + " checks whether a:line is whithin a + " block e.g. a shell function + " foo() { + " .. + " } + let prevline = searchpair('{', '', '}', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"') + let nextline = searchpair('{', '', '}', 'nW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"') + return a:line > prevline && a:line < nextline endfunction function! s:is_case_label(line, pnum) @@ -280,15 +307,7 @@ function! s:end_block(line) endfunction function! s:start_block(line) - return a:line =~ '{\s*\(#.*\)\?$' -endfunction - -function! s:find_start_block(lnum) - let i = a:lnum - while i > 1 && !s:start_block(getline(i)) - let i -= 1 - endwhile - return i + return a:line =~ '^[^#]*[{(]\s*\(#.*\)\?$' endfunction function! s:is_comment(line) @@ -300,7 +319,11 @@ function! s:is_end_expression(line) endfunction function! s:is_bash() - return get(g:, 'is_bash', 0) || get(b:, 'is_bash', 0) + if &ft is# 'bash' || getline(1) is# '#!/bin/bash' + return v:true + else + return get(g:, 'is_bash', 0) || get(b:, 'is_bash', 0) + endif endfunction let &cpo = s:cpo_save diff --git a/runtime/indent/spajson.vim b/runtime/indent/spajson.vim new file mode 100644 index 0000000000..e644a5ee60 --- /dev/null +++ b/runtime/indent/spajson.vim @@ -0,0 +1,6 @@ +" Vim indent file +" Language: SPA JSON +" Maintainer: David Mandelberg +" Last Change: 2025 Mar 22 + +runtime! indent/json.vim diff --git a/runtime/keymap/russian-jcukenwin.vim b/runtime/keymap/russian-jcukenwin.vim index d56470f110..58eac10691 100644 --- a/runtime/keymap/russian-jcukenwin.vim +++ b/runtime/keymap/russian-jcukenwin.vim @@ -4,6 +4,7 @@ " Maintainer: Artem Chuprina " Last Changed: 2001 Jun 23 +" 2025 Mar 17 by The Vim Project (added /, #16912) " All characters are given literally, conversion to another encoding (e.g., " UTF-8) should work. @@ -85,3 +86,4 @@ $ ; & ? / . ? , +\| / diff --git a/runtime/lang/menu_it_it.latin1.vim b/runtime/lang/menu_it_it.latin1.vim index 41716bf3a5..31db0f2ae6 100644 --- a/runtime/lang/menu_it_it.latin1.vim +++ b/runtime/lang/menu_it_it.latin1.vim @@ -1,8 +1,6 @@ " Menu Translations: Italian / Italiano " Maintainer: Antonio Colombo -" Vlad Sandrini -" Luciano Montanaro -" Last Change: 2023 Aug 22 +" Last Change: 2025 Mar 13 " Original translations " Quit when menu translations have already been done. @@ -10,7 +8,7 @@ if exists("did_menu_trans") finish endif let did_menu_trans = 1 -let s:keepcpo= &cpo +let s:cpo_save= &cpo set cpo&vim scriptencoding iso-8859-1 @@ -24,7 +22,7 @@ menut &How-To\ Links Co&Me\.\.\. menut &Find\.\.\. &Cerca\.\.\. menut &Credits Cr&Editi menut Co&pying C&Opie -menut &Sponsor/Register &Sponsor/Registrazione +menut &Sponsor/Register &Sponsor/Registrazione menut O&rphans O&Rfani menut &Version &Versione menut &About &Intro @@ -41,7 +39,7 @@ menut &New:enew &Nuovo:enew menut &Close:close &Chiudi:close menut &Save:w &Salva:w menut Save\ &As\.\.\.:sav Salva\ &Con\ nome\.\.\.:sav -menut Split\ &Diff\ with\.\.\. &Differenza\ con\.\.\. +menut Split\ &Diff\ With\.\.\. &Differenza\ con\.\.\. menut Split\ Patched\ &By\.\.\. Patc&H\ da\.\.\. menut &Print S&tampa menut Sa&ve-Exit:wqa Sa&Lva\ ed\ esci:wqa @@ -59,12 +57,12 @@ menut &Paste"+gP &Incolla"+gP menut Put\ &Before[p &Metti\ davanti[p menut Put\ &After]p M&Etti\ dietro]p menut &Deletex Cance&Llax -menut &Select\ allggVG Seleziona\ &TuttoggVG +menut &Select\ AllggVG Seleziona\ &TuttoggVG menut &Find\.\.\. &Cerca\.\.\. -menut &Find\.\.\./ &Cerca\.\.\./ +menut &Find/ &Cerca/ menut Find\ and\ Rep&lace\.\.\. &Sostituisci\.\.\. -menut Find\ and\ Rep&lace\.\.\.:%s &Sostituisci\.\.\.:%s -menut Find\ and\ Rep&lace\.\.\.:s &Sostituisci\.\.\.:s +menut Find\ and\ Rep&lace:%s &Sostituisci:%s +menut Find\ and\ Rep&lace:s &Sostituisci:s menut Settings\ &Window &Finestra\ Impostazioni menut Startup\ &Settings Impostazioni\ di\ &Avvio menut &Global\ Settings Impostazioni\ &Globali @@ -75,12 +73,20 @@ menut Toggle\ Pattern\ &Highlight:set\ hls! &Evidenzia\ ricerche\ S menut Toggle\ &Ignoring\ Case:set\ ic! &Ignora\ maiusc\.-minusc\.\ S�/No:set\ ic! menut Toggle\ &Showing\ Matched\ Pairs:set\ sm! Indica\ &Corrispondenze\ S�/No:set\ sm! -menut &Context\ lines &Linee\ di\ contesto +menut &Context\ Lines &Linee\ di\ contesto +"menut &Context\ Lines.\ 1\ &Linee\ di\ contesto.\ 1\ +"menut &Context\ Lines.\ 2\ &Linee\ di\ contesto.\ 2\ +"menut &Context\ Lines.\ 3\ &Linee\ di\ contesto.\ 3\ +"menut &Context\ Lines.\ 4\ &Linee\ di\ contesto.\ 4\ +"menut &Context\ Lines.\ 5\ &Linee\ di\ contesto.\ 5\ +"menut &Context\ Lines.\ 7\ &Linee\ di\ contesto.\ 7\ +"menut &Context\ Lines.\ 10\ &Linee\ di\ contesto.\ 10\ +"menut &Context\ Lines.\ 100\ &Linee\ di\ contesto.\ 100\ menut &Virtual\ Edit &Edit\ virtuale menut Never Mai menut Block\ Selection Seleziona\ Blocco -menut Insert\ mode Modo\ Insert +menut Insert\ Mode Modo\ Insert menut Block\ and\ Insert Selezione\ Blocco\ e\ Inserimento menut Always Sempre @@ -109,22 +115,13 @@ if has("toolbar") tmenu ToolBar.Cut Taglia tmenu ToolBar.Copy Copia tmenu ToolBar.Paste Incolla - tmenu ToolBar.Find Trova... tmenu ToolBar.FindNext Trova seguente tmenu ToolBar.FindPrev Trova precedente tmenu ToolBar.Replace Sostituisci - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nuovo - tmenu ToolBar.WinSplit Dividi - tmenu ToolBar.WinMax Massimizza - tmenu ToolBar.WinMin Minimizza - tmenu ToolBar.WinClose Chiudi - endif tmenu ToolBar.LoadSesn Carica sessione tmenu ToolBar.SaveSesn Salva sessione tmenu ToolBar.RunScript Esegui script tmenu ToolBar.Make Esegui make - tmenu ToolBar.Shell Esegui shell tmenu ToolBar.RunCtags Esegui ctags tmenu ToolBar.TagJump Salta alla tag tmenu ToolBar.Help Aiuto @@ -143,24 +140,23 @@ menut Toggle\ Line\ &Numbering:set\ nu! &Numerazione\ S menut Toggle\ Relati&ve\ Line\ Numbering:set\ rnu! Numerazione\ relati&Va\ S�/No:set\ rnu! menut Toggle\ &List\ Mode:set\ list! Modo\ &List\ S�/No:set\ list! menut Toggle\ Line\ &Wrapping:set\ wrap! Linee\ &Continuate\ S�/No:set\ wrap! -menut Toggle\ W&rapping\ at\ word:set\ lbr! A\ capo\ alla\ &Parola\ S�/No:set\ lbr! -menut Toggle\ Tab\ &expanding:set\ et! &Espandi\ Tabulazione\ S�/No:set\ et! +menut Toggle\ W&rapping\ at\ Word:set\ lbr! A\ capo\ alla\ &Parola\ S�/No:set\ lbr! +menut Toggle\ Tab\ &Expanding:set\ et! &Espandi\ Tabulazione\ S�/No:set\ et! menut Toggle\ &Auto\ Indenting:set\ ai! Indentazione\ &Automatica\ S�/No:set\ ai! menut Toggle\ &C-Style\ Indenting:set\ cin! Indentazione\ stile\ &C\ S�/No:set\ cin! menut &Shiftwidth &Spazi\ rientranza -"menut &Shiftwidth.2:set\ sw=2\ sw? &Spazi\ rientranza.2:set\ sw=2\ sw? -"menut &Shiftwidth.3:set\ sw=3\ sw? &Spazi\ rientranza.3:set\ sw=3\ sw? -"menut &Shiftwidth.4:set\ sw=4\ sw? &Spazi\ rientranza.4:set\ sw=4\ sw? -"menut &Shiftwidth.5:set\ sw=5\ sw? &Spazi\ rientranza.5:set\ sw=5\ sw? -"menut &Shiftwidth.6:set\ sw=6\ sw? &Spazi\ rientranza.6:set\ sw=6\ sw? -"menut &Shiftwidth.8:set\ sw=8\ sw? &Spazi\ rientranza.8:set\ sw=8\ sw? +"menut &Shiftwidth.3 &Spazi\ rientranza.3 +"menut &Shiftwidth.4 &Spazi\ rientranza.4 +"menut &Shiftwidth.5 &Spazi\ rientranza.5 +"menut &Shiftwidth.6 &Spazi\ rientranza.6 +"menut &Shiftwidth.8 &Spazi\ rientranza.8 menut Soft\ &Tabstop &Tabulazione\ software -"menut Soft\ &Tabstop.2:set\ sts=2\ sts? &Tabulazione\ software.2:set\ sts=2\ sts? -"menut Soft\ &Tabstop.3:set\ sts=3\ sts? &Tabulazione\ software.3:set\ sts=3\ sts? -"menut Soft\ &Tabstop.4:set\ sts=4\ sts? &Tabulazione\ software.4:set\ sts=4\ sts? -"menut Soft\ &Tabstop.5:set\ sts=5\ sts? &Tabulazione\ software.5:set\ sts=5\ sts? -"menut Soft\ &Tabstop.6:set\ sts=6\ sts? &Tabulazione\ software.6:set\ sts=6\ sts? -"menut Soft\ &Tabstop.8:set\ sts=8\ sts? &Tabulazione\ software.8:set\ sts=8\ sts? +"menut Soft\ &Tabstop.2 &Tabulazione\ software.2 +"menut Soft\ &Tabstop.3 &Tabulazione\ software.3 +"menut Soft\ &Tabstop.4 &Tabulazione\ software.4 +"menut Soft\ &Tabstop.5 &Tabulazione\ software.5 +"menut Soft\ &Tabstop.6 &Tabulazione\ software.6 +"menut Soft\ &Tabstop.8 &Tabulazione\ software.8 menut Te&xt\ Width\.\.\. Lunghe&Zza\ riga\.\.\. menut &File\ Format\.\.\. Formato\ &File\.\.\. @@ -173,37 +169,61 @@ menut C&olor\ Scheme Schema\ c&Olori menut blue bl� menut darkblue bl�\ scuro +menut default predefinito +menut delek delek menut desert deserto menut elflord signore\ degli\ elfi menut evening sera +menut habamax habamax menut industry industria +menut koehler koehler +menut lunaperche luna\ perch� menut morning mattino +menut murphy murphy +menut pablo pablo menut peachpuff pesca menut quiet quieto +menut retrobox retrobox +menut ron ron menut shine brillante menut sorbet sorbetto menut slate ardesia menut torte torta +menut unokai unokai menut wildcharm fascino\ selvaggio +menut zaibatsu zaibatsu +menut zellner zellner menut BLUE BL� menut DARKBLUE BL�\ SCURO +menut DEFAULT DEFAULT +menut DELEK DELEK menut DESERT DESERTO menut ELFLORD SIGNORE\ DEGLI\ ELFI menut EVENING SERA +menut HABAMAX HABAMAX menut INDUSTRY INDUSTRIA +menut KOEHLER KOEHLER +menut LUNAPERCHE LUNA\ PERCH� menut MORNING MATTINO +menut MURPHY MURPHY +menut PABLO PABLO menut PEACHPUFF PESCA menut QUIET QUIETO +menut RETROBOX RETROBOX +menut RON RON menut SHINE BRILLANTE menut SORBET SORBETTO menut SLATE ARDESIA menut TORTE TORTA +menut UNOKAI UNOKAI menut WILDCHARM FASCINO\ SELVAGGIO +menut ZAIBATSU ZAIBATSU +menut ZELLNER ZELLNER menut Show\ &Keymaps\ in\ Menu Mostra\ Ma&ppe\ tastiera\ in\ Men� menut &Keymap Ma&ppa\ tastiera -menut None nessuna +menut None Nessuna menut accents accenti menut arabic arabo menut armenian-eastern armeno-orientale @@ -217,10 +237,11 @@ menut czech ceco menut dvorak tastiera-dvorak menut esperanto esperanto menut french-azerty francese-azerty +menut georgian-qwerty georgiano-qwerty menut german-qwertz tedesco-qwertz menut greek greco menut hebrew ebraico -menut hebrewp ebraicop +menut hebrewp ebraico-fonetico menut kana kana menut kazakh-jcuken kazako-jcuken menut korean coreano @@ -251,8 +272,9 @@ menut thaana thaana menut thaana-phonetic thaana-fonetico menut turkish-f turco-f menut turkish-q turco-q -menut ukrainian-dvorak ukraino-dvorak -menut ukrainian-jcuken ukraino-jcuken +menut ukrainian-dvorak ucraino-dvorak +menut ukrainian-jcuken ucraino-jcuken +menut ukrainian-enhanced ucraino-migliorato menut vietnamese-telex vietnamita-telex menut vietnamese-viqr vietnamita-viqr menut vietnamese-vni vietnamita-vni @@ -269,10 +291,11 @@ menut CZECH CECO menut DVORAK TASTIERA-DVORAK menut ESPERANTO ESPERANTO menut FRENCH-AZERTY FRANCESE-AZERTY +menut GEORGIAN-QWERTY GEORGIANO-QWERTY menut GERMAN-QWERTZ TEDESCO-QWERTZ menut GREEK GRECO menut HEBREW EBRAICO -menut HEBREWP EBRAICOP +menut HEBREWP EBRAICO-FONETICO menut KANA KANA menut KAZAKH-JCUKEN KAZAKO-JCUKEN menut KOREAN COREANO @@ -303,8 +326,9 @@ menut THAANA THAANA menut THAANA-PHONETIC THAANA-FONETICO menut TURKISH-F TURCO-F menut TURKISH-Q TURCO-Q -menut UKRAINIAN-DVORAK UKRAINO-DVORAK -menut UKRAINIAN-JCUKEN UKRAINO-JCUKEN +menut UKRAINIAN-DVORAK UCRAINO-DVORAK +menut UKRAINIAN-JCUKEN UCRAINO-JCUKEN +menut UKRAINIAN-ENHANCED UCRAINO-MIGLIORATO menut VIETNAMESE-TELEX VIETNAMITA-TELEX menut VIETNAMESE-VIQR VIETNAMITA-VIQR menut VIETNAMESE-VNI VIETNAMITA-VNI @@ -314,37 +338,36 @@ menut Select\ Fo&nt\.\.\. Scegli\ &Font\.\.\. " Men� strumenti programmazione menut &Tools &Strumenti -menut &Jump\ to\ this\ tagg^] &Vai\ a\ questa\ tagg^] -menut Jump\ &back^T Torna\ &Indietro^T +menut &Jump\ to\ This\ Tagg^] &Vai\ a\ questa\ tagg^] +menut Jump\ &Back^T Torna\ &Indietro^T menut Build\ &Tags\ File Costruisci\ file\ &Tag\ " Men� ortografia / Spelling menut &Spelling &Ortografia menut &Spell\ Check\ On Attiva\ &Controllo\ ortografico menut Spell\ Check\ &Off &Disattiva\ controllo\ ortografico -menut To\ &Next\ error]s Errore\ &Seguente]s -menut To\ &Previous\ error[s Errore\ &Precedente[s +menut To\ &Next\ Error]s Errore\ &Seguente]s +menut To\ &Previous\ Error[s Errore\ &Precedente[s menut Suggest\ &Correctionsz= &Suggerimentiz= -menut &Repeat\ correction:spellrepall &Ripeti\ correzione:spellrepall -menut Set\ language\ to Imposta\ lingua\ a -menut Set\ language\ to\ "en" Imposta\ lingua\ a\ "en" -menut Set\ language\ to\ "en_au" Imposta\ lingua\ a\ "en_au" -menut Set\ language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca" -menut Set\ language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb" -menut Set\ language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz" -menut Set\ language\ to\ "en_us" Imposta\ lingua\ a\ "en_us" +menut &Repeat\ Correction:spellrepall &Ripeti\ correzione:spellrepall +menut Set\ Language\ to\ "en" Imposta\ lingua\ a\ "en" +menut Set\ Language\ to\ "en_au" Imposta\ lingua\ a\ "en_au" +menut Set\ Language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca" +menut Set\ Language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb" +menut Set\ Language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz" +menut Set\ Language\ to\ "en_us" Imposta\ lingua\ a\ "en_us" menut &Find\ More\ Languages &Trova\ altre\ lingue " Men� piegature / Fold menut &Folding &Piegature " apri e chiudi piegature -menut &Enable/Disable\ foldszi Pi&egature\ S�/Nozi +menut &Enable/Disable\ Foldszi Pi&egature\ S�/Nozi menut &View\ Cursor\ Linezv &Vedi\ linea\ col\ Cursorezv -menut Vie&w\ Cursor\ Line\ onlyzMzx Vedi\ &Solo\ linea\ col\ CursorezMzx -menut C&lose\ More\ foldszm C&Hiudi\ pi�\ piegaturezm -menut &Close\ All\ foldszM &Chiudi\ tutte\ le\ piegaturezM -menut O&pen\ More\ foldszr A&Pri\ pi�\ piegaturezr -menut &Open\ All\ foldszR &Apri\ tutte\ le\ piegaturezR +menut Vie&w\ Cursor\ Line\ OnlyzMzx Vedi\ &Solo\ linea\ col\ CursorezMzx +menut C&lose\ More\ Foldszm C&Hiudi\ pi�\ piegaturezm +menut &Close\ All\ FoldszM &Chiudi\ tutte\ le\ piegaturezM +menut O&pen\ More\ Foldszr A&Pri\ pi�\ piegaturezr +menut &Open\ All\ FoldszR &Apri\ tutte\ le\ piegaturezR " metodo piegatura menut Fold\ Met&hod Meto&Do\ piegatura menut M&anual &Manuale @@ -359,7 +382,15 @@ menut Create\ &Foldzf Crea\ &Piegaturazf menut &Delete\ Foldzd &Togli\ piegaturazd menut Delete\ &All\ FoldszD Togli\ &Tutte\ le\ piegaturezD " movimenti all'interno delle piegature -menut Fold\ col&umn\ width Larghezza\ piegat&Ure\ in\ colonne +menut Fold\ Col&umn\ Width Larghezza\ piegat&Ure\ in\ colonne +"menut Fold\ Col&umn\ Width.\ &0\ Larghezza\ piegat&Ure\ in\ colonne.\ &0\ +"menut Fold\ Col&umn\ Width.\ &2\ Larghezza\ piegat&Ure\ in\ colonne.\ &2\ +"menut Fold\ Col&umn\ Width.\ &3\ Larghezza\ piegat&Ure\ in\ colonne.\ &3\ +"menut Fold\ Col&umn\ Width.\ &4\ Larghezza\ piegat&Ure\ in\ colonne.\ &4\ +"menut Fold\ Col&umn\ Width.\ &5\ Larghezza\ piegat&Ure\ in\ colonne.\ &5\ +"menut Fold\ Col&umn\ Width.\ &6\ Larghezza\ piegat&Ure\ in\ colonne.\ &6\ +"menut Fold\ Col&umn\ Width.\ &7\ Larghezza\ piegat&Ure\ in\ colonne.\ &7\ +"menut Fold\ Col&umn\ Width.\ &8\ Larghezza\ piegat&Ure\ in\ colonne.\ &8\ menut &Diff &Differenza " @@ -383,9 +414,9 @@ menut &Open:copen &Apri:copen menut &Close:cclose &Chiudi:cclose menut &Convert\ to\ HEX:%!xxd &Converti\ a\ esadecimale:%!xxd -menut Conve&rt\ back:%!xxd\ -r Conve&rti\ da\ esadecimale:%!xxd\ -r +menut Conve&rt\ Back:%!xxd\ -r Conve&rti\ da\ esadecimale:%!xxd\ -r -menut Se&T\ Compiler Impo&Sta\ Compilatore +menut Se&t\ Compiler Impo&Sta\ Compilatore menut Show\ Compiler\ Se&ttings\ in\ Menu Mostra\ Impos&Tazioni\ Compilatore\ nel\ Men� " Buffers / Buffer @@ -396,20 +427,20 @@ menut &Delete &Elimina menut &Alternate &Alternato menut &Next &Successivo menut &Previous &Precedente -menut [No\ File] [Nessun\ File] +"menut [No\ File] [Nessun\ File] " Syntax / Sintassi menut &Syntax &Sintassi -menut &Show\ File\ Types\ in\ menu Mo&Stra\ tipi\ di\ file\ nel\ men� -menut Set\ '&syntax'\ only &S\ Attiva\ solo\ \ 'syntax' -menut Set\ '&filetype'\ too &F\ Attiva\ anche\ 'filetype' +menut &Show\ File\ Types\ in\ Menu Mo&Stra\ tipi\ di\ file\ nel\ men� +menut Set\ '&syntax'\ Only &S\ Attiva\ solo\ \ 'syntax' +menut Set\ '&filetype'\ Too &F\ Attiva\ anche\ 'filetype' menut &Off &Disattiva menut &Manual &Manuale menut A&utomatic A&Utomatico -menut on/off\ for\ &This\ file Attiva\ S�/No\ su\ ques&To\ file -menut Co&lor\ test Test\ &Colori -menut &Highlight\ test Test\ &Evidenziamento +menut On/Off\ for\ &This\ File Attiva\ S�/No\ su\ ques&To\ file +menut Co&lor\ Test Test\ &Colori +menut &Highlight\ Test Test\ &Evidenziamento menut &Convert\ to\ HTML Converti\ ad\ &HTML let g:menutrans_set_lang_to = "Cambia linguaggio a" @@ -432,15 +463,15 @@ menut Move\ &To &Muovi\ verso menut &Top^WK &Cima^WK menut &Bottom^WJ &Fondo^WJ -menut &Left\ side^WH Lato\ &Sinistro^WH -menut &Right\ side^WL Lato\ &Destro^WL +menut &Left\ Side^WH Lato\ &Sinistro^WH +menut &Right\ Side^WL Lato\ &Destro^WL menut Rotate\ &Up^WR Ruota\ verso\ l'&Alto^WR menut Rotate\ &Down^Wr Ruota\ verso\ il\ &Basso^Wr menut &Equal\ Size^W= &Uguale\ ampiezza^W= menut &Max\ Height^W_ A&Ltezza\ massima^W_ menut M&in\ Height^W1_ Al&Tezza\ minima^W1_ menut Max\ &Width^W\| Lar&Ghezza\ massima^W\| -menut Min\ Widt&h^W1\| Larg&hhezza\ minima^W1\| +menut Min\ Widt&h^W1\| Larg&Hezza\ minima^W1\| " The popup menu menut &Undo &Annulla @@ -457,43 +488,43 @@ menut Select\ &Sentence Seleziona\ &Frase menut Select\ Pa&ragraph Seleziona\ Para&Grafo " The GUI Toolbar / Barra Strumenti -menut Open Apri -menut Save Salva -menut SaveAll Salva\ Tutto -menut Print Stampa -menut Undo Annulla -menut Redo Ripristina -menut Cut Taglia -menut Copy Copia -menut Paste Incolla +"menut Open Apri +"menut Save Salva +"menut SaveAll Salva\ Tutto +"menut Print Stampa +"menut Undo Annulla +"menut Redo Ripristina +"menut Cut Taglia +"menut Copy Copia +"menut Paste Incolla " -sep3- -menut Find Cerca -menut FindNext Cerca\ Successivo -menut FindPrev Cerca\ Precedente -menut Replace Sostituisci +"menut Find Cerca +"menut FindNext Cerca\ Successivo +"menut FindPrev Cerca\ Precedente +"menut Replace Sostituisci " -sep4- -menut New Nuova\ finestra -menut WinSplit Dividi\ finestra -menut WinMax Massima\ ampiezza -menut WinMin Minima\ ampiezza -menut WinVSplit Dividi\ verticalmente -menut WinMaxWidth Massima\ larghezza -menut WinMinWidth Minima\ larghezza -menut WinClose Chiudi\ finestra -menut LoadSesn Carica\ Sessione -menut SaveSesn Salva\ Sessione -menut RunScript Esegui\ Script -menut Make Make -menut Shell Shell -menut RunCtags Esegui\ Ctags -menut TagJump Vai\ a\ Tag -menut Help Aiuto -menut FindHelp Cerca\ in\ Aiuto +"menut New Nuova\ finestra +"menut WinSplit Dividi\ finestra +"menut WinMax Massima\ ampiezza +"menut WinMin Minima\ ampiezza +"menut WinVSplit Dividi\ verticalmente +"menut WinMaxWidth Massima\ larghezza +"menut WinMinWidth Minima\ larghezza +"menut WinClose Chiudi\ finestra +"menut LoadSesn Carica\ Sessione +"menut SaveSesn Salva\ Sessione +"menut RunScript Esegui\ Script +"menut Make Make +"menut Shell Shell +"menut RunCtags Esegui\ Ctags +"menut TagJump Vai\ a\ Tag +"menut Help Aiuto +"menut FindHelp Cerca\ in\ Aiuto so $VIMRUNTIME/lang/macvim_menu/menu_it_it.latin1.apple.vim so $VIMRUNTIME/lang/macvim_menu/menu_it_it.latin1.custom.vim -let &cpo = s:keepcpo -unlet s:keepcpo +let &cpo = s:cpo_save +unlet s:cpo_save " vim: set sw=2 : diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index 6707f2b6a6..8ef1788894 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -2,7 +2,7 @@ vim9script # Script to define the syntax menu in synmenu.vim # Maintainer: The Vim Project -# Last Change: 2023 Aug 10 +# Last Change: 2025 Mar 09 # Former Maintainer: Bram Moolenaar # This is used by "make menu" in the src directory. @@ -605,6 +605,7 @@ SynMenu T.TealInfo:tli SynMenu T.Telix\ Salt:tsalt SynMenu T.Termcap/Printcap:ptcap SynMenu T.Terminfo:terminfo +SynMenu T.Tera:tera SynMenu T.Tera\ Term:teraterm SynMenu T.TeX.TeX/LaTeX:tex SynMenu T.TeX.plain\ TeX:plaintex diff --git a/runtime/optwin.vim b/runtime/optwin.vim index bcc498fe04..06f9cb399a 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: The Vim Project -" Last Change: 2025 Feb 08 +" Last Change: 2025 Mar 27 " Former Maintainer: Bram Moolenaar " If there already is an option window, jump to that one. @@ -867,6 +867,8 @@ endif if has("insert_expand") call AddOption("complete", gettext("specifies how Insert mode completion works for CTRL-N and CTRL-P")) call append("$", "\t" .. s:local_to_buffer) + call OptionL("cfc") + call AddOption("completefuzzycollect", gettext("use fuzzy collection for specific completion modes")) call OptionL("cpt") call AddOption("completeopt", gettext("whether to use a popup menu for Insert mode completion")) call OptionL("cot") @@ -880,6 +882,8 @@ if has("insert_expand") call OptionG("ph", &ph) call AddOption("pumwidth", gettext("minimum width of the popup menu")) call OptionG("pw", &pw) + call AddOption("pumaxmwidth", gettext("maximum width of the popup menu")) + call OptionG("pmw", &pmw) call AddOption("completefunc", gettext("user defined function for Insert mode completion")) call append("$", "\t" .. s:local_to_buffer) call OptionL("cfu") diff --git a/runtime/pack/dist/opt/comment/autoload/comment.vim b/runtime/pack/dist/opt/comment/autoload/comment.vim index 086d5bff06..570080604c 100644 --- a/runtime/pack/dist/opt/comment/autoload/comment.vim +++ b/runtime/pack/dist/opt/comment/autoload/comment.vim @@ -1,7 +1,7 @@ vim9script # Maintainer: Maxim Kim -# Last Update: 2024 Oct 05 +# Last Update: 2025 Mar 21 # # Toggle comments # Usage: @@ -76,3 +76,88 @@ export def Toggle(...args: list): string noautocmd keepjumps setline(lnum1, lines) return '' enddef + + +# Comment text object +# Usage: +# import autoload 'dist/comment.vim' +# onoremap ic comment.ObjComment(v:true) +# onoremap ac comment.ObjComment(v:false) +# xnoremap ic comment.ObjComment(v:true) +# xnoremap ac comment.ObjComment(v:false) +export def ObjComment(inner: bool) + def IsComment(): bool + var stx = map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')->join() + return stx =~? 'Comment' + enddef + + # requires syntax support + if !exists("g:syntax_on") + return + endif + + var pos_init = getcurpos() + + # If not in comment, search next one, + if !IsComment() + if search('\v\k+', 'W', line(".") + 100, 100, () => !IsComment()) <= 0 + return + endif + endif + + # Search for the beginning of the comment block + if IsComment() + if search('\v%(\S+)|$', 'bW', 0, 200, IsComment) > 0 + search('\v%(\S)|$', 'W', 0, 200, () => !IsComment()) + else + cursor(1, 1) + search('\v\S+', 'cW', 0, 200) + endif + endif + + var pos_start = getcurpos() + + if !inner + var col = pos_start[2] + var prefix = getline(pos_start[1])[ : col - 2] + while col > 0 && prefix[col - 2] =~ '\s' + col -= 1 + endwhile + pos_start[2] = col + endif + + # Search for the comment end. + if pos_init[1] > pos_start[1] + cursor(pos_init[1], pos_init[2]) + endif + if search('\v%(\S+)|$', 'W', 0, 200, IsComment) > 0 + search('\S', 'beW', 0, 200, () => !IsComment()) + else + if search('\%$', 'W', 0, 200) > 0 + search('\ze\S', 'beW', 0, 200, () => !IsComment()) + endif + endif + + var pos_end = getcurpos() + + if !inner + var spaces = matchstr(getline(pos_end[1]), '\%>.c\s*') + pos_end[2] += spaces->len() + if getline(pos_end[1])[pos_end[2] : ] =~ '^\s*$' + && (pos_start[2] == 1 || getline(pos_start[1])[ : pos_start[2]] =~ '^\s*$') + if search('\v\s*\_$(\s*\n)+', 'eW', 0, 200) > 0 + pos_end = getcurpos() + endif + endif + endif + + if (pos_end[2] == (getline(pos_end[1])->len() ?? 1)) && pos_start[2] <= 1 + cursor(pos_end[1], 1) + normal! V + cursor(pos_start[1], 1) + else + cursor(pos_end[1], pos_end[2]) + normal! v + cursor(pos_start[1], pos_start[2]) + endif +enddef diff --git a/runtime/pack/dist/opt/comment/doc/comment.txt b/runtime/pack/dist/opt/comment/doc/comment.txt index 7aa66fbd6c..be8cb84e65 100644 --- a/runtime/pack/dist/opt/comment/doc/comment.txt +++ b/runtime/pack/dist/opt/comment/doc/comment.txt @@ -1,4 +1,4 @@ -*comment.txt* For Vim version 9.1. Last change: 2024 Oct 01 +*comment.txt* For Vim version 9.1. Last change: 2025 Mar 21 VIM REFERENCE MANUAL @@ -32,11 +32,20 @@ back to `gcc` otherwise, add the following mapping to your vimrc: > Note: using `gC` may not always result in valid comment markers depending on the language used. +Additionally, the plugin defines a comment text-object which requires syntax +highlighting to be enabled. + *v_ac* *ac* +ac "a comment", select current or next comment. + Leading and trailing white space is included. + Trailing newlines are included too. + *v_ic* *ic* +ic "inner comment", select current or next comment. + This plugin uses the buffer-local 'commentstring' option value to add or remove comment markers to the selected lines. Whether it will comment or un-comment -depends on the first line of the range of lines to act upon. When it matches -a comment marker, the line will be un-commented, if it doesn't, the line will -be commented out. Blank and empty lines are ignored. +depends on the range of lines to act upon. When all of the lines in range +have comment markers, all lines will be un-commented, if it doesn't, the lines +will be commented out. Blank and empty lines are ignored. The value of 'commentstring' is the same for the entire buffer and determined by its filetype (|filetypes|). To adapt it within the buffer for embedded diff --git a/runtime/pack/dist/opt/comment/doc/tags b/runtime/pack/dist/opt/comment/doc/tags index ffe4177ccb..62c4afd6d9 100644 --- a/runtime/pack/dist/opt/comment/doc/tags +++ b/runtime/pack/dist/opt/comment/doc/tags @@ -1,6 +1,10 @@ +ac comment.txt /*ac* b:comment_first_col comment.txt /*b:comment_first_col* comment.txt comment.txt /*comment.txt* g:comment_first_col comment.txt /*g:comment_first_col* gcc comment.txt /*gcc* +ic comment.txt /*ic* o_gc comment.txt /*o_gc* +v_ac comment.txt /*v_ac* v_gc comment.txt /*v_gc* +v_ic comment.txt /*v_ic* diff --git a/runtime/pack/dist/opt/comment/plugin/comment.vim b/runtime/pack/dist/opt/comment/plugin/comment.vim index 94ac0670bf..67b431de6e 100644 --- a/runtime/pack/dist/opt/comment/plugin/comment.vim +++ b/runtime/pack/dist/opt/comment/plugin/comment.vim @@ -1,9 +1,15 @@ vim9script # Maintainer: Maxim Kim -# Last Update: 2024-04-26 +# Last Update: 2025 Mar 21 import autoload 'comment.vim' + nnoremap gc comment.Toggle() xnoremap gc comment.Toggle() nnoremap gcc comment.Toggle() .. '_' + +onoremap ic comment.ObjComment(v:true) +onoremap ac comment.ObjComment(v:false) +xnoremap ic comment.ObjComment(v:true) +xnoremap ac comment.ObjComment(v:false) diff --git a/runtime/pack/dist/opt/hlyank/plugin/hlyank.vim b/runtime/pack/dist/opt/hlyank/plugin/hlyank.vim new file mode 100644 index 0000000000..4b568fae24 --- /dev/null +++ b/runtime/pack/dist/opt/hlyank/plugin/hlyank.vim @@ -0,0 +1,39 @@ +vim9script + +# Highlight Yank plugin +# Last Change: 2025 Mar 22 + +def HighlightedYank() + + var hlgroup = get(g:, "hlyank_hlgroup", "IncSearch") + var duration = min([get(g:, "hlyank_duration", 300), 3000]) + var in_visual = get(g:, "hlyank_invisual", true) + + if v:event.operator ==? 'y' + if !in_visual && visualmode() != null_string + visualmode(1) + return + endif + # if clipboard has autoselect (default on linux) exiting from Visual with + # ESC generates bogus event and this highlights previous yank + if &clipboard =~ 'autoselect' && v:event.regname == "*" && v:event.visual + return + endif + var [beg, end] = [getpos("'["), getpos("']")] + var type = v:event.regtype ?? 'v' + var pos = getregionpos(beg, end, {type: type, exclusive: false}) + var m = matchaddpos(hlgroup, pos->mapnew((_, v) => { + var col_beg = v[0][2] + v[0][3] + var col_end = v[1][2] + v[1][3] + 1 + return [v[0][1], col_beg, col_end - col_beg] + })) + var winid = win_getid() + timer_start(duration, (_) => m->matchdelete(winid)) + endif +enddef + +augroup hlyank + autocmd! + autocmd TextYankPost * HighlightedYank() +augroup END +# vim:sts=2:sw=2:et: diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw.vim b/runtime/pack/dist/opt/netrw/autoload/netrw.vim index 71310028fc..feee23dffb 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrw.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrw.vim @@ -16,14 +16,14 @@ " Load Once: {{{1 if &cp || exists("g:loaded_netrw") - finish + finish endif -let g:loaded_netrw = "v177" +let g:loaded_netrw = "v179" if !has("patch-9.1.1054") && !has('nvim') - echoerr 'netrw needs Vim v9.1.1054' - finish + echoerr 'netrw needs Vim v9.1.1054' + finish endif let s:keepcpo= &cpo @@ -44,7 +44,7 @@ setl cpo&vim " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) " (this function can optionally take a list of messages) -" Dec 2, 2019 : max errnum currently is 106 +" Mar 03, 2025 : max errnum currently is 107 function! netrw#ErrorMsg(level, msg, errnum) if a:level < g:netrw_errorlvl return @@ -1211,28 +1211,28 @@ fun! netrw#Obtain(islocal,fname,...) " obtain a file from local b:netrw_curdir to (local) tgtdir " call Decho("obtain a file from local ".b:netrw_curdir." to ".tgtdir,'~'.expand("")) if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir - let topath= s:ComposePath(tgtdir,"") + let topath = netrw#fs#ComposePath(tgtdir,"") if has("win32") " transfer files one at time " call Decho("transfer files one at a time",'~'.expand("")) for fname in fnamelist - " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("")) - call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) + " call Decho("system(".g:netrw_localcopycmd." ".netrw#os#Escape(fname)." ".netrw#os#Escape(topath).")",'~'.expand("")) + call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".netrw#os#Escape(fname)." ".netrw#os#Escape(topath)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) - " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) + " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".netrw#os#Escape(fname)." ".netrw#os#Escape(topath)) return endif endfor else " transfer files with one command " call Decho("transfer files with one command",'~'.expand("")) - let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) - " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("")) - call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".filelist." ".s:ShellEscape(topath)) + let filelist= join(map(deepcopy(fnamelist),"netrw#os#Escape(v:val)")) + " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".netrw#os#Escape(topath).")",'~'.expand("")) + call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".filelist." ".netrw#os#Escape(topath)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) - " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) + " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".netrw#os#Escape(topath)) return endif endif @@ -1249,6 +1249,10 @@ fun! netrw#Obtain(islocal,fname,...) call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.a:fname) endif call s:NetrwMethod(b:netrw_curdir) + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif if b:netrw_method == 4 " obtain file using scp @@ -1263,8 +1267,8 @@ fun! netrw#Obtain(islocal,fname,...) else let path= "" endif - let filelist= join(map(deepcopy(fnamelist),'escape(s:ShellEscape(g:netrw_machine.":".path.v:val,1)," ")')) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) + let filelist= join(map(deepcopy(fnamelist),'escape(netrw#os#Escape(g:netrw_machine.":".path.v:val,1)," ")')) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_scp_cmd.netrw#os#Escape(useport,1)." ".filelist." ".netrw#os#Escape(tgtdir,1)) elseif b:netrw_method == 2 " obtain file using ftp + .netrc @@ -1291,9 +1295,9 @@ fun! netrw#Obtain(islocal,fname,...) " call Decho("filter input: ".getline('$'),'~'.expand("")) endfor if exists("g:netrw_port") && g:netrw_port != "" - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)." ".netrw#os#Escape(g:netrw_port,1)) else - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)) endif " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' @@ -1362,7 +1366,7 @@ fun! netrw#Obtain(islocal,fname,...) " -n win32: quit being obnoxious about password " Note: using "_dd to delete to the black hole register; avoids messing up @@ NetrwKeepj norm! 1G"_dd - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" " call Decho("error<".getline(1).">",'~'.expand("")) @@ -1379,7 +1383,7 @@ fun! netrw#Obtain(islocal,fname,...) else let localfile= a:fname endif - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1).s:ShellEscape(localfile)." ".s:ShellEscape(tgtdir)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1).netrw#os#Escape(localfile)." ".netrw#os#Escape(tgtdir)) elseif !exists("b:netrw_method") || b:netrw_method < 0 " probably a badly formed url; protocol not recognized @@ -1911,6 +1915,10 @@ fun! netrw#NetRead(mode,...) " call Dret("netrw#NetRead : unsupported method") return endif + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix " Check whether or not NetrwBrowse() should be handling this request @@ -1951,7 +1959,7 @@ fun! netrw#NetRead(mode,...) let uid_machine = g:netrw_machine endif endif - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".s:ShellEscape(uid_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".netrw#os#Escape(uid_machine.":".b:netrw_fname,1)." ".netrw#os#Escape(tmpfile,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -1972,9 +1980,9 @@ fun! netrw#NetRead(mode,...) call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile) " call Decho("filter input: ".getline(line("$")),'~'.expand("")) if exists("g:netrw_port") && g:netrw_port != "" - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)." ".netrw#os#Escape(g:netrw_port,1)) else - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)) endif " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' @@ -2040,7 +2048,7 @@ fun! netrw#NetRead(mode,...) " -n unix : DON'T use <.netrc>, even though it exists " -n win32: quit being obnoxious about password NetrwKeepj norm! 1G"_dd - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" " call Decho("error<".getline(1).">",'~'.expand("")) @@ -2068,7 +2076,7 @@ fun! netrw#NetRead(mode,...) else let tmpfile_get = tmpfile endif - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".escape(s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1),' ')." ".s:ShellEscape(tmpfile_get,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".escape(netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1),' ')." ".netrw#os#Escape(tmpfile_get,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -2088,9 +2096,9 @@ fun! netrw#NetRead(mode,...) " using g:netrw_http_cmd (usually elinks, links, curl, wget, or fetch) " call Decho('using '.g:netrw_http_cmd.' (# not in b:netrw_fname<'.b:netrw_fname.">)",'~'.expand("")) if exists("g:netrw_http_xcmd") - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_cmd." ".s:ShellEscape(b:netrw_http."://".g:netrw_machine.b:netrw_fname,1)." ".g:netrw_http_xcmd." ".s:ShellEscape(tmpfile,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_http_cmd." ".netrw#os#Escape(b:netrw_http."://".g:netrw_machine.b:netrw_fname,1)." ".g:netrw_http_xcmd." ".netrw#os#Escape(tmpfile,1)) else - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(b:netrw_http."://".g:netrw_machine.b:netrw_fname,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_http_cmd." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(b:netrw_http."://".g:netrw_machine.b:netrw_fname,1)) endif let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) @@ -2101,7 +2109,7 @@ fun! netrw#NetRead(mode,...) let netrw_tag = substitute(b:netrw_fname,"^.*#","","") " call Decho("netrw_html<".netrw_html.">",'~'.expand("")) " call Decho("netrw_tag <".netrw_tag.">",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(b:netrw_http."://".g:netrw_machine.netrw_html,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_http_cmd." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(b:netrw_http."://".g:netrw_machine.netrw_html,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) " call Decho('<\s*a\s*name=\s*"'.netrw_tag.'"/','~'.expand("")) exe 'NetrwKeepj norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\" @@ -2121,7 +2129,7 @@ fun! netrw#NetRead(mode,...) return endif if g:netrw_dav_cmd =~ "curl" - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_dav_cmd." ".s:ShellEscape("dav://".g:netrw_machine.b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_dav_cmd." ".netrw#os#Escape("dav://".g:netrw_machine.b:netrw_fname,1)." ".netrw#os#Escape(tmpfile,1)) else " Construct execution string (four lines) which will be passed through filter let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) @@ -2140,7 +2148,7 @@ fun! netrw#NetRead(mode,...) " perform cadaver operation: NetrwKeepj norm! 1G"_dd - call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd) + call netrw#os#Execute(s:netrw_silentxfer."%!".g:netrw_dav_cmd) keepj bd! endif let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) @@ -2150,7 +2158,7 @@ fun! netrw#NetRead(mode,...) " NetRead: (rsync) NetRead Method #7 {{{3 elseif b:netrw_method == 7 " call Decho("read via rsync (method #7)",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".netrw#os#Escape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)." ".netrw#os#Escape(tmpfile,1)) let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -2174,9 +2182,9 @@ fun! netrw#NetRead(mode,...) " call Decho("read via fetch for ".netrw_option,'~'.expand("")) if exists("g:netrw_uid") && g:netrw_uid != "" && exists("s:netrw_passwd") && s:netrw_passwd != "" - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1)) else - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1)) endif let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) @@ -2188,7 +2196,7 @@ fun! netrw#NetRead(mode,...) " NetRead: (sftp) NetRead Method #9 {{{3 elseif b:netrw_method == 9 " call Decho("read via sftp (method #9)",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -2196,7 +2204,7 @@ fun! netrw#NetRead(mode,...) " NetRead: (file) NetRead Method #10 {{{3 elseif b:netrw_method == 10 && exists("g:netrw_file_cmd") " " call Decho("read via ".b:netrw_file_cmd." (method #10)",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_file_cmd." ".s:ShellEscape(b:netrw_fname,1)." ".tmpfile) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_file_cmd." ".netrw#os#Escape(b:netrw_fname,1)." ".tmpfile) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -2333,6 +2341,10 @@ fun! netrw#NetWrite(...) range " call Dfunc("netrw#NetWrite : unsupported method") return endif + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif " ============= " NetWrite: Perform Protocol-Based Write {{{3 @@ -2359,7 +2371,7 @@ fun! netrw#NetWrite(...) range let uid_machine = g:netrw_machine endif endif - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(uid_machine.":".b:netrw_fname,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(uid_machine.":".b:netrw_fname,1)) let b:netrw_lastfile = choice "......................................... @@ -2385,10 +2397,10 @@ fun! netrw#NetWrite(...) range NetrwKeepj call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"') " call Decho("filter input: ".getline("$"),'~'.expand("")) if exists("g:netrw_port") && g:netrw_port != "" - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)." ".netrw#os#Escape(g:netrw_port,1)) else " call Decho("filter input window#".winnr(),'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)) endif " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" @@ -2456,7 +2468,7 @@ fun! netrw#NetWrite(...) range " -n unix : DON'T use <.netrc>, even though it exists " -n win32: quit being obnoxious about password NetrwKeepj norm! 1G"_dd - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" if !exists("g:netrw_quiet") @@ -2480,7 +2492,7 @@ fun! netrw#NetWrite(...) range else let useport= "" endif - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1)) let b:netrw_lastfile = choice "......................................... @@ -2490,7 +2502,7 @@ fun! netrw#NetWrite(...) range let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") if executable(curl) let url= g:netrw_choice - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(url,1) ) elseif !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd.">",16) endif @@ -2522,7 +2534,7 @@ fun! netrw#NetWrite(...) range " perform cadaver operation: NetrwKeepj norm! 1G"_dd - call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd) + call netrw#os#Execute(s:netrw_silentxfer."%!".g:netrw_dav_cmd) " remove enew buffer (quietly) let filtbuf= bufnr("%") @@ -2536,7 +2548,7 @@ fun! netrw#NetWrite(...) range " NetWrite: (rsync) NetWrite Method #7 {{{3 elseif b:netrw_method == 7 " call Decho("write via rsync (method #7)",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".netrw#os#Escape(tmpfile,1)." ".netrw#os#Escape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)) let b:netrw_lastfile = choice "......................................... @@ -2560,7 +2572,7 @@ fun! netrw#NetWrite(...) range call setline(1,'put "'.escape(tmpfile,'\').'" '.netrw_fname) " call Decho("filter input: ".getline('.'),'~'.expand("")) let sftpcmd= substitute(g:netrw_sftp_cmd,"%TEMPFILE%",escape(tmpfile,'\'),"g") - call s:NetrwExe(s:netrw_silentxfer."%!".sftpcmd.' '.s:ShellEscape(uid_machine,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".sftpcmd.' '.netrw#os#Escape(uid_machine,1)) let filtbuf= bufnr("%") exe curbuf."b!" let &l:bh = bhkeep @@ -3086,6 +3098,17 @@ fun! s:NetrwMethod(choice) " call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) endfun +" s:NetrwValidateHostname: Validate that the hostname is valid {{{2 +" Input: +" hostname +" Output: +" true if g:netrw_machine is valid according to RFC1123 #Section 2 +fun! s:NetrwValidateHostname(hostname) + " RFC1123#section-2 mandates, a valid hostname starts with letters or digits + " so reject everyhing else + return a:hostname =~? '^[a-z0-9]' +endfun + " --------------------------------------------------------------------- " NetUserPass: set username and password for subsequent ftp transfer {{{2 " Usage: :call NetUserPass() -- will prompt for userid and password @@ -3816,7 +3839,7 @@ fun! s:NetrwFile(fname) " "" call Decho("windows+full path: isdirectory(".fname.")",'~'.expand("")) else " windows, relative path given - let ret= s:ComposePath(b:netrw_curdir,fname) + let ret= netrw#fs#ComposePath(b:netrw_curdir,fname) " "" call Decho("windows+rltv path: isdirectory(".fname.")",'~'.expand("")) endif @@ -3826,7 +3849,7 @@ fun! s:NetrwFile(fname) " "" call Decho("unix+full path: isdirectory(".fname.")",'~'.expand("")) else " not windows, relative path given - let ret= s:ComposePath(b:netrw_curdir,fname) + let ret= netrw#fs#ComposePath(b:netrw_curdir,fname) " "" call Decho("unix+rltv path: isdirectory(".fname.")",'~'.expand("")) endif else @@ -3857,21 +3880,21 @@ fun! s:NetrwFileInfo(islocal,fname) if (has("unix") || has("macunix")) && executable("/bin/ls") if getline(".") == "../" - echo system("/bin/ls ".lsopt." ".s:ShellEscape("..")) - " call Decho("#1: echo system(/bin/ls -lsad ".s:ShellEscape(..).")",'~'.expand("")) + echo system("/bin/ls ".lsopt." ".netrw#os#Escape("..")) + " call Decho("#1: echo system(/bin/ls -lsad ".netrw#os#Escape(..).")",'~'.expand("")) elseif w:netrw_liststyle == s:TREELIST && getline(".") !~ '^'.s:treedepthstring - echo system("/bin/ls ".lsopt." ".s:ShellEscape(b:netrw_curdir)) - " call Decho("#2: echo system(/bin/ls -lsad ".s:ShellEscape(b:netrw_curdir).")",'~'.expand("")) + echo system("/bin/ls ".lsopt." ".netrw#os#Escape(b:netrw_curdir)) + " call Decho("#2: echo system(/bin/ls -lsad ".netrw#os#Escape(b:netrw_curdir).")",'~'.expand("")) elseif exists("b:netrw_curdir") - echo system("/bin/ls ".lsopt." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,a:fname))) - " call Decho("#3: echo system(/bin/ls -lsad ".s:ShellEscape(b:netrw_curdir.a:fname).")",'~'.expand("")) + echo system("/bin/ls ".lsopt." ".netrw#os#Escape(netrw#fs#ComposePath(b:netrw_curdir,a:fname))) + " call Decho("#3: echo system(/bin/ls -lsad ".netrw#os#Escape(b:netrw_curdir.a:fname).")",'~'.expand("")) else " call Decho('using ls '.a:fname." using cwd<".getcwd().">",'~'.expand("")) - echo system("/bin/ls ".lsopt." ".s:ShellEscape(s:NetrwFile(a:fname))) - " call Decho("#5: echo system(/bin/ls -lsad ".s:ShellEscape(a:fname).")",'~'.expand("")) + echo system("/bin/ls ".lsopt." ".netrw#os#Escape(s:NetrwFile(a:fname))) + " call Decho("#5: echo system(/bin/ls -lsad ".netrw#os#Escape(a:fname).")",'~'.expand("")) endif else " use vim functions to return information about file below cursor @@ -3896,21 +3919,6 @@ fun! s:NetrwFileInfo(islocal,fname) " call Dret("s:NetrwFileInfo") endfun -" --------------------------------------------------------------------- -" s:NetrwFullPath: returns the full path to a directory and/or file {{{2 -fun! s:NetrwFullPath(filename) - " " call Dfunc("s:NetrwFullPath(filename<".a:filename.">)") - let filename= a:filename - if filename !~ '^/' - let filename= resolve(getcwd().'/'.filename) - endif - if filename != "/" && filename =~ '/$' - let filename= substitute(filename,'/$','','') - endif - " " call Dret("s:NetrwFullPath <".filename.">") - return filename -endfun - " --------------------------------------------------------------------- " s:NetrwGetBuffer: [get a new|find an old netrw] buffer for a netrw listing {{{2 " returns 0=cleared buffer @@ -3935,11 +3943,11 @@ fun! s:NetrwGetBuffer(islocal,dirname) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST let bufnum = -1 - if !empty(s:netrwbuf) && has_key(s:netrwbuf,s:NetrwFullPath(dirname)) + if !empty(s:netrwbuf) && has_key(s:netrwbuf,netrw#fs#AbsPath(dirname)) if has_key(s:netrwbuf,"NetrwTreeListing") let bufnum= s:netrwbuf["NetrwTreeListing"] else - let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] + let bufnum= s:netrwbuf[netrw#fs#AbsPath(dirname)] endif " call Decho(" NetrwTreeListing: bufnum#".bufnum,'~'.expand("")) if !bufexists(bufnum) @@ -3954,16 +3962,16 @@ fun! s:NetrwGetBuffer(islocal,dirname) let bufnum= -1 endif - elseif has_key(s:netrwbuf,s:NetrwFullPath(dirname)) - let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] - " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum,'~'.expand("")) + elseif has_key(s:netrwbuf,netrw#fs#AbsPath(dirname)) + let bufnum= s:netrwbuf[netrw#fs#AbsPath(dirname)] + " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".netrw#fs#AbsPath(dirname)."]=".bufnum,'~'.expand("")) if !bufexists(bufnum) - call remove(s:netrwbuf,s:NetrwFullPath(dirname)) + call remove(s:netrwbuf,netrw#fs#AbsPath(dirname)) let bufnum= -1 endif else - " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key",'~'.expand("")) + " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".netrw#fs#AbsPath(dirname)."] not a key",'~'.expand("")) let bufnum= -1 endif " call Decho(" bufnum#".bufnum,'~'.expand("")) @@ -4013,8 +4021,8 @@ fun! s:NetrwGetBuffer(islocal,dirname) else call s:NetrwBufRename(dirname) " enter the new buffer into the s:netrwbuf dictionary - let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") - " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("")) + let s:netrwbuf[netrw#fs#AbsPath(dirname)]= bufnr("%") + " call Decho("update netrwbuf dictionary: s:netrwbuf[".netrw#fs#AbsPath(dirname)."]=".bufnr("%"),'~'.expand("")) " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("")) endif " call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">",'~'.expand("")) @@ -4099,23 +4107,6 @@ fun! s:NetrwGetBuffer(islocal,dirname) return 0 endfun -" --------------------------------------------------------------------- -" s:NetrwGetcwd: get the current directory. {{{2 -" Change backslashes to forward slashes, if any. -" If doesc is true, escape certain troublesome characters -fun! s:NetrwGetcwd(doesc) - " call Dfunc("NetrwGetcwd(doesc=".a:doesc.")") - let curdir= substitute(getcwd(),'\\','/','ge') - if curdir !~ '[\/]$' - let curdir= curdir.'/' - endif - if a:doesc - let curdir= fnameescape(curdir) - endif - " call Dret("NetrwGetcwd <".curdir.">") - return curdir -endfun - " --------------------------------------------------------------------- " s:NetrwGetWord: it gets the directory/file named under the cursor {{{2 fun! s:NetrwGetWord() @@ -4556,7 +4547,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,cursor,...) let dirname= dirname.'/' endif - if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(s:ComposePath(dirname,newdir)))) + if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(netrw#fs#ComposePath(dirname,newdir)))) " ------------------------------ " NetrwBrowseChgDir: edit a file {{{3 " ------------------------------ @@ -4573,7 +4564,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,cursor,...) elseif newdir =~ '^\(/\|\a:\)' let dirname= newdir else - let dirname= s:ComposePath(dirname,newdir) + let dirname= netrw#fs#ComposePath(dirname,newdir) endif " this lets netrw#BrowseX avoid the edit if a:0 < 1 @@ -4794,7 +4785,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,cursor,...) " ---------------------------------------- " NetrwBrowseChgDir: Go down one directory {{{3 " ---------------------------------------- - let dirname = s:ComposePath(dirname,newdir) + let dirname = netrw#fs#ComposePath(dirname,newdir) NetrwKeepj call s:SetRexDir(a:islocal,dirname) norm! m` endif @@ -4965,7 +4956,7 @@ fun! netrw#BrowseX(fname,remote) endif endif - call netrw#own#Open(fname) + call netrw#os#Open(fname) " cleanup: remove temporary file, " delete current buffer if success with handler, @@ -5050,8 +5041,8 @@ fun! s:NetrwChgPerm(islocal,curdir) call inputsave() let newperm= input("Enter new permission: ") call inputrestore() - let chgperm= substitute(g:netrw_chgperm,'\',s:ShellEscape(expand("")),'') - let chgperm= substitute(chgperm,'\',s:ShellEscape(newperm),'') + let chgperm= substitute(g:netrw_chgperm,'\',netrw#os#Escape(expand("")),'') + let chgperm= substitute(chgperm,'\',netrw#os#Escape(newperm),'') call system(chgperm) if v:shell_error != 0 NetrwKeepj call netrw#ErrorMsg(1,"changing permission on file<".expand("")."> seems to have failed",75) @@ -5148,42 +5139,6 @@ fun! s:NetrwForceChgDir(islocal,newdir) let @@= ykeep endfun -" --------------------------------------------------------------------- -" s:NetrwGlob: does glob() if local, remote listing otherwise {{{2 -" direntry: this is the name of the directory. Will be fnameescape'd to prevent wildcard handling by glob() -" expr : this is the expression to follow the directory. Will use s:ComposePath() -" pare =1: remove the current directory from the resulting glob() filelist -" =0: leave the current directory in the resulting glob() filelist -fun! s:NetrwGlob(direntry,expr,pare) - " call Dfunc("s:NetrwGlob(direntry<".a:direntry."> expr<".a:expr."> pare=".a:pare.")") - if netrw#CheckIfRemote() - keepalt 1sp - keepalt enew - let keep_liststyle = w:netrw_liststyle - let w:netrw_liststyle = s:THINLIST - if s:NetrwRemoteListing() == 0 - keepj keepalt %s@/@@ - let filelist= getline(1,$) - q! - else - " remote listing error -- leave treedict unchanged - let filelist= w:netrw_treedict[a:direntry] - endif - let w:netrw_liststyle= keep_liststyle - else - let path= s:ComposePath(fnameescape(a:direntry), a:expr) - if has("win32") - " escape [ so it is not detected as wildcard character, see :h wildcard - let path= substitute(path, '[', '[[]', 'g') - endif - let filelist = glob(path, 0, 1, 1) - if a:pare - let filelist= map(filelist,'substitute(v:val, "^.*/", "", "")') - endif - endif - return filelist -endfun - " --------------------------------------------------------------------- " s:NetrwForceFile: (gf support) Force treatment as a file {{{2 fun! s:NetrwForceFile(islocal,newfile) @@ -5298,13 +5253,24 @@ endfun " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 function! s:NetrwHome() if has('nvim') - let home = netrw#own#PathJoin(stdpath('state'), 'netrw') + let home = netrw#fs#PathJoin(stdpath('state'), 'netrw') elseif exists('g:netrw_home') let home = expand(g:netrw_home) elseif exists('$MYVIMDIR') let home = expand('$MYVIMDIR')->substitute('/$', '', '') else - let home = netrw#own#PathJoin(expand('~'), '.vim') + " Pick the first redable directory in 'runtimepath' + for path in split(&rtp, ',') + if isdirectory(s:NetrwFile(path)) && filewritable(s:NetrwFile(path)) + let home = path + break + endif + endfor + + if empty(path) + " just pick the first directory + let home = substitute(&rtp, ',.*$', '', '') + endif endif " insure that the home directory exists @@ -5648,11 +5614,11 @@ fun! s:NetrwMakeDir(usrhost) call mkdir(fullnewdir,"p") endif else - let netrw_origdir= s:NetrwGetcwd(1) + let netrw_origdir= netrw#fs#Cwd(1) if s:NetrwLcd(b:netrw_curdir) return endif - call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(newdirname,1)) + call netrw#os#Execute("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.netrw#os#Escape(newdirname,1)) if v:shell_error != 0 let @@= ykeep call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) @@ -5678,7 +5644,7 @@ fun! s:NetrwMakeDir(usrhost) " Remote mkdir: using ssh let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname - call s:NetrwExe("sil! !".mkdircmd." ".s:ShellEscape(newdirname,1)) + call netrw#os#Execute("sil! !".mkdircmd." ".netrw#os#Escape(newdirname,1)) if v:shell_error == 0 " refresh listing let svpos= winsaveview() @@ -6152,10 +6118,10 @@ fun! s:NetrwMarkFile(islocal,fname) " handle global markfilelist if exists("s:netrwmarkfilelist") - let dname= s:ComposePath(b:netrw_curdir,a:fname) + let dname= netrw#fs#ComposePath(b:netrw_curdir,a:fname) if index(s:netrwmarkfilelist,dname) == -1 " append new filename to global markfilelist - call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) + call add(s:netrwmarkfilelist,netrw#fs#ComposePath(b:netrw_curdir,a:fname)) " call Decho("append filename<".a:fname."> to global s:markfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("")) else " remove new filename from global markfilelist @@ -6171,7 +6137,7 @@ fun! s:NetrwMarkFile(islocal,fname) else " initialize new global-directory markfilelist let s:netrwmarkfilelist= [] - call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) + call add(s:netrwmarkfilelist,netrw#fs#ComposePath(b:netrw_curdir,a:fname)) " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("")) endif @@ -6253,17 +6219,17 @@ fun! s:NetrwMarkFileCompress(islocal) if exists("g:netrw_decompress['".sfx."']") " fname has a suffix indicating that its compressed; apply associated decompression routine let exe= g:netrw_decompress[sfx] - let exe= netrw#WinPath(exe) + let exe= netrw#fs#WinPath(exe) if a:islocal if g:netrw_keepdir - let fname= s:ShellEscape(s:ComposePath(curdir,fname)) + let fname= netrw#os#Escape(netrw#fs#ComposePath(curdir,fname)) endif call system(exe." ".fname) if v:shell_error NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) endif else - let fname= s:ShellEscape(b:netrw_curdir.fname,1) + let fname= netrw#os#Escape(b:netrw_curdir.fname,1) NetrwKeepj call s:RemoteSystem(exe." ".fname) endif @@ -6274,13 +6240,13 @@ fun! s:NetrwMarkFileCompress(islocal) unlet exe elseif a:islocal " fname not a compressed file, so compress it - call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) + call system(netrw#fs#WinPath(g:netrw_compress)." ".netrw#os#Escape(netrw#fs#ComposePath(b:netrw_curdir,fname))) if v:shell_error call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_compress<".g:netrw_compress."> to something that works",104) endif else " fname not a compressed file, so compress it - NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) + NetrwKeepj call s:RemoteSystem(netrw#fs#WinPath(g:netrw_compress)." ".netrw#os#Escape(fname)) endif endfor " for every file in the marked list @@ -6338,12 +6304,12 @@ fun! s:NetrwMarkFileCopy(islocal,...) if len(s:netrwmarkfilelist_{bufnr('%')}) == 1 " only one marked file " call Decho("case: only one marked file",'~'.expand("")) - let args = s:ShellEscape(b:netrw_curdir.s:netrwmarkfilelist_{bufnr('%')}[0]) + let args = netrw#os#Escape(b:netrw_curdir.s:netrwmarkfilelist_{bufnr('%')}[0]) let oldname = s:netrwmarkfilelist_{bufnr('%')}[0] elseif a:0 == 1 " call Decho("case: handling one input argument",'~'.expand("")) " this happens when the next case was used to recursively call s:NetrwMarkFileCopy() - let args = s:ShellEscape(b:netrw_curdir.a:1) + let args = netrw#os#Escape(b:netrw_curdir.a:1) let oldname = a:1 else " copy multiple marked files inside the same directory @@ -6368,11 +6334,11 @@ fun! s:NetrwMarkFileCopy(islocal,...) " call Dret("s:NetrwMarkFileCopy 0") return 0 endif - let args= s:ShellEscape(oldname) - let tgt = s:ShellEscape(s:netrwmftgt.'/'.newname) + let args= netrw#os#Escape(oldname) + let tgt = netrw#os#Escape(s:netrwmftgt.'/'.newname) else - let args= join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"s:ShellEscape(b:netrw_curdir.\"/\".v:val)")) - let tgt = s:ShellEscape(s:netrwmftgt) + let args= join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"netrw#os#Escape(b:netrw_curdir.\"/\".v:val)")) + let tgt = netrw#os#Escape(s:netrwmftgt) endif if !g:netrw_cygwin && has("win32") let args= substitute(args,'/','\\','g') @@ -6401,9 +6367,9 @@ fun! s:NetrwMarkFileCopy(islocal,...) if g:netrw_localcopycmd =~ '\s' let copycmd = substitute(copycmd,'\s.*$','','') let copycmdargs = substitute(copycmd,'^.\{-}\(\s.*\)$','\1','') - let copycmd = netrw#WinPath(copycmd).copycmdargs + let copycmd = netrw#fs#WinPath(copycmd).copycmdargs else - let copycmd = netrw#WinPath(copycmd) + let copycmd = netrw#fs#WinPath(copycmd) endif " call Decho("args <".args.">",'~'.expand("")) " call Decho("tgt <".tgt.">",'~'.expand("")) @@ -6416,7 +6382,7 @@ fun! s:NetrwMarkFileCopy(islocal,...) else call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) endif - " call Dret("s:NetrwMarkFileCopy 0 : failed: system(".g:netrw_localcopycmd." ".args." ".s:ShellEscape(s:netrwmftgt)) + " call Dret("s:NetrwMarkFileCopy 0 : failed: system(".g:netrw_localcopycmd." ".args." ".netrw#os#Escape(s:netrwmftgt)) return 0 endif @@ -6441,10 +6407,10 @@ fun! s:NetrwMarkFileCopy(islocal,...) if exists("*mkdir") call mkdir(tmpdir) else - call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(tmpdir,1)) + call netrw#os#Execute("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.netrw#os#Escape(tmpdir,1)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) - " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) ) + " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.netrw#os#Escape(tmpdir,1) ) return endif endif @@ -6653,10 +6619,10 @@ fun! s:NetrwMarkFileExe(islocal,enbloc) for fname in s:netrwmarkfilelist_{curbufnr} if a:islocal if g:netrw_keepdir - let fname= s:ShellEscape(netrw#WinPath(s:ComposePath(curdir,fname))) + let fname= netrw#os#Escape(netrw#fs#WinPath(netrw#fs#ComposePath(curdir,fname))) endif else - let fname= s:ShellEscape(netrw#WinPath(b:netrw_curdir.fname)) + let fname= netrw#os#Escape(netrw#fs#WinPath(b:netrw_curdir.fname)) endif if cmd =~ '%' let xcmd= substitute(cmd,'%',fname,'g') @@ -6701,9 +6667,9 @@ fun! s:NetrwMarkFileExe(islocal,enbloc) return endif if cmd =~ '%' - let cmd= substitute(cmd,'%',join(map(s:netrwmarkfilelist,'s:ShellEscape(v:val)'),' '),'g') + let cmd= substitute(cmd,'%',join(map(s:netrwmarkfilelist,'netrw#os#Escape(v:val)'),' '),'g') else - let cmd= cmd.' '.join(map(s:netrwmarkfilelist,'s:ShellEscape(v:val)'),' ') + let cmd= cmd.' '.join(map(s:netrwmarkfilelist,'netrw#os#Escape(v:val)'),' ') endif if a:islocal call system(cmd) @@ -6970,7 +6936,7 @@ fun! s:NetrwMarkFileMove(islocal) " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!") return endif - let tgt = s:ShellEscape(s:netrwmftgt) + let tgt = netrw#os#Escape(s:netrwmftgt) " call Decho("tgt<".tgt.">",'~'.expand("")) if !g:netrw_cygwin && has("win32") let tgt= substitute(tgt, '/','\\','g') @@ -6978,14 +6944,14 @@ fun! s:NetrwMarkFileMove(islocal) if g:netrw_localmovecmd =~ '\s' let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') - let movecmd = netrw#WinPath(movecmd).movecmdargs + let movecmd = netrw#fs#WinPath(movecmd).movecmdargs " call Decho("windows exception: movecmd<".movecmd."> (#1: had a space)",'~'.expand("")) else - let movecmd = netrw#WinPath(g:netrw_localmovecmd) + let movecmd = netrw#fs#WinPath(g:netrw_localmovecmd) " call Decho("windows exception: movecmd<".movecmd."> (#2: no space)",'~'.expand("")) endif else - let movecmd = netrw#WinPath(g:netrw_localmovecmd) + let movecmd = netrw#fs#WinPath(g:netrw_localmovecmd) " call Decho("movecmd<".movecmd."> (#3 linux or cygwin)",'~'.expand("")) endif for fname in s:netrwmarkfilelist_{bufnr("%")} @@ -6996,8 +6962,8 @@ fun! s:NetrwMarkFileMove(islocal) if !g:netrw_cygwin && has("win32") let fname= substitute(fname,'/','\\','g') endif - " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("")) - let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt) + " call Decho("system(".movecmd." ".netrw#os#Escape(fname)." ".tgt.")",'~'.expand("")) + let ret= system(movecmd.g:netrw_localmovecmdopt." ".netrw#os#Escape(fname)." ".tgt) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",100) @@ -7095,7 +7061,7 @@ fun! s:NetrwMarkFilePrint(islocal) for fname in netrwmarkfilelist if a:islocal if g:netrw_keepdir - let fname= s:ComposePath(curdir,fname) + let fname= netrw#fs#ComposePath(curdir,fname) endif else let fname= curdir.fname @@ -7131,7 +7097,7 @@ fun! s:NetrwMarkFileRegexp(islocal) " get the matching list of files using local glob() " call Decho("handle local regexp",'~'.expand("")) let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) - let filelist= glob(s:ComposePath(dirname,regexp),0,1,1) + let filelist= glob(netrw#fs#ComposePath(dirname,regexp),0,1,1) " call Decho("files<".string(filelist).">",'~'.expand("")) " mark the list of files @@ -7215,7 +7181,7 @@ fun! s:NetrwMarkFileSource(islocal) for fname in netrwmarkfilelist if a:islocal if g:netrw_keepdir - let fname= s:ComposePath(curdir,fname) + let fname= netrw#fs#ComposePath(curdir,fname) endif else let fname= curdir.fname @@ -7244,7 +7210,7 @@ fun! s:NetrwMarkFileTag(islocal) endif if exists("s:netrwmarkfilelist") - let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) + let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "netrw#os#Escape(v:val,".!a:islocal.")")) call s:NetrwUnmarkAll() if a:islocal @@ -7305,7 +7271,7 @@ fun! s:NetrwMarkFileTgt(islocal) " * If directory, use it for the target. " * If file, use b:netrw_curdir for the target let curword= s:NetrwGetWord() - let tgtdir = s:ComposePath(curdir,curword) + let tgtdir = netrw#fs#ComposePath(curdir,curword) if a:islocal && isdirectory(s:NetrwFile(tgtdir)) let s:netrwmftgt = tgtdir elseif !a:islocal && tgtdir =~ '/$' @@ -7319,7 +7285,7 @@ fun! s:NetrwMarkFileTgt(islocal) let s:netrwmftgt= simplify(s:netrwmftgt) endif if g:netrw_cygwin - let s:netrwmftgt= substitute(system("cygpath ".s:ShellEscape(s:netrwmftgt)),'\n$','','') + let s:netrwmftgt= substitute(system("cygpath ".netrw#os#Escape(s:netrwmftgt)),'\n$','','') let s:netrwmftgt= substitute(s:netrwmftgt,'\n$','','') endif let s:netrwmftgt_islocal= a:islocal @@ -7495,7 +7461,7 @@ fun! s:NetrwUnmarkList(curbufnr,curdir) " remove all files in local marked-file list from global list if exists("s:netrwmarkfilelist") for mfile in s:netrwmarkfilelist_{a:curbufnr} - let dfile = s:ComposePath(a:curdir,mfile) " prepend directory to mfile + let dfile = netrw#fs#ComposePath(a:curdir,mfile) " prepend directory to mfile let idx = index(s:netrwmarkfilelist,dfile) " get index in list of dfile call remove(s:netrwmarkfilelist,idx) " remove from global list endfor @@ -7866,7 +7832,7 @@ fun! s:NetrwUpload(fname,tgt,...) return endif let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) - let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) + let args = join(map(filelist,"netrw#os#Escape(v:val, 1)")) if exists("g:netrw_port") && g:netrw_port != "" let useport= " ".g:netrw_scpport." ".g:netrw_port else @@ -7874,7 +7840,7 @@ fun! s:NetrwUpload(fname,tgt,...) endif let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) + call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_scp_cmd.netrw#os#Escape(useport,1)." ".args." ".netrw#os#Escape(machine.":".tgt,1)) if s:NetrwLcd(curdir) " call Dret("s:NetrwUpload : lcd failure") return @@ -7882,6 +7848,10 @@ fun! s:NetrwUpload(fname,tgt,...) elseif a:tgt =~ '^ftp:' call s:NetrwMethod(a:tgt) + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif if b:netrw_method == 2 " handle uploading a list of files via ftp+.netrc @@ -7912,10 +7882,10 @@ fun! s:NetrwUpload(fname,tgt,...) endfor if exists("g:netrw_port") && g:netrw_port != "" - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)." ".netrw#os#Escape(g:netrw_port,1)) else " call Decho("filter input window#".winnr(),'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)) endif " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) sil NetrwKeepj g/Local directory now/d @@ -7978,7 +7948,7 @@ fun! s:NetrwUpload(fname,tgt,...) " -n unix : DON'T use <.netrc>, even though it exists " -n win32: quit being obnoxious about password NetrwKeepj norm! 1G"_dd - call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) + call netrw#os#Execute(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) sil NetrwKeepj g/Local directory now/d call histdel("/",-1) @@ -8602,8 +8572,8 @@ fun! s:NetrwRefreshTreeDict(dir) elseif entry =~ '@$' && has_key(w:netrw_treedict,direntry.'@') NetrwKeepj call s:NetrwRefreshTreeDict(direntry.'/') - let liststar = s:NetrwGlob(direntry.'/','*',1) - let listdotstar= s:NetrwGlob(direntry.'/','.*',1) + let liststar = netrw#fs#Glob(direntry.'/','*',1) + let listdotstar= netrw#fs#Glob(direntry.'/','.*',1) else endif @@ -9208,11 +9178,11 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd) NetrwKeepj call setline(line("$")+1,a:listcmd) " exe "NetrwKeepj ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."),''~''.expand(""))' if exists("g:netrw_port") && g:netrw_port != "" - " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1),'~'.expand("")) - exe s:netrw_silentxfer." NetrwKeepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1) + " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)." ".netrw#os#Escape(g:netrw_port,1),'~'.expand("")) + exe s:netrw_silentxfer." NetrwKeepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1)." ".netrw#os#Escape(g:netrw_port,1) else - " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1),'~'.expand("")) - exe s:netrw_silentxfer." NetrwKeepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1) + " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1),'~'.expand("")) + exe s:netrw_silentxfer." NetrwKeepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".netrw#os#Escape(g:netrw_machine,1) endif "......................................... @@ -9257,7 +9227,7 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd) " -n win32: quit being obnoxious about password if exists("w:netrw_bannercnt") " exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."),''~''.expand(""))' - call s:NetrwExe(s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) + call netrw#os#Execute(s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) " else " Decho " call Decho("WARNING: w:netrw_bannercnt doesn't exist!",'~'.expand("")) " g/^./call Decho("SKIPPING ftp#".line(".").": ".getline("."),'~'.expand("")) @@ -9434,8 +9404,8 @@ fun! s:NetrwRemoteListing() let listcmd= s:MakeSshCmd(g:netrw_list_cmd) " call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)",'~'.expand("")) if g:netrw_scp_cmd =~ '^pscp' - " call Decho("1: exe r! ".s:ShellEscape(listcmd.s:path, 1),'~'.expand("")) - exe "NetrwKeepj r! ".listcmd.s:ShellEscape(s:path, 1) + " call Decho("1: exe r! ".netrw#os#Escape(listcmd.s:path, 1),'~'.expand("")) + exe "NetrwKeepj r! ".listcmd.netrw#os#Escape(s:path, 1) " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like sil! NetrwKeepj g/^Listing directory/NetrwKeepj d sil! NetrwKeepj g/^d[-rwx][-rwx][-rwx]/NetrwKeepj s+$+/+e @@ -9452,8 +9422,8 @@ fun! s:NetrwRemoteListing() " call Decho("2: exe r! ".listcmd,'~'.expand("")) exe "NetrwKeepj keepalt r! ".listcmd else - " call Decho("3: exe r! ".listcmd.' '.s:ShellEscape(fnameescape(s:path),1),'~'.expand("")) - exe "NetrwKeepj keepalt r! ".listcmd.' '.s:ShellEscape(fnameescape(s:path),1) + " call Decho("3: exe r! ".listcmd.' '.netrw#os#Escape(fnameescape(s:path),1),'~'.expand("")) + exe "NetrwKeepj keepalt r! ".listcmd.' '.netrw#os#Escape(fnameescape(s:path),1) " call Decho("listcmd<".listcmd."> path<".s:path.">",'~'.expand("")) endif endif @@ -9607,9 +9577,9 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all) " call Decho("remotedir<".remotedir.">",'~'.expand("")) " call Decho("rmfile<".a:rmfile.">",'~'.expand("")) if remotedir != "" - let netrw_rm_cmd= netrw_rm_cmd." ".s:ShellEscape(fnameescape(remotedir.a:rmfile)) + let netrw_rm_cmd= netrw_rm_cmd." ".netrw#os#Escape(fnameescape(remotedir.a:rmfile)) else - let netrw_rm_cmd= netrw_rm_cmd." ".s:ShellEscape(fnameescape(a:rmfile)) + let netrw_rm_cmd= netrw_rm_cmd." ".netrw#os#Escape(fnameescape(a:rmfile)) endif " call Decho("call system(".netrw_rm_cmd.")",'~'.expand("")) let ret= system(netrw_rm_cmd) @@ -9650,14 +9620,14 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all) NetrwKeepj call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile) else let rmfile = substitute(a:path.a:rmfile,'/$','','') - let netrw_rmdir_cmd = s:MakeSshCmd(netrw#WinPath(g:netrw_rmdir_cmd)).' '.s:ShellEscape(netrw#WinPath(rmfile)) + let netrw_rmdir_cmd = s:MakeSshCmd(netrw#fs#WinPath(g:netrw_rmdir_cmd)).' '.netrw#os#Escape(netrw#fs#WinPath(rmfile)) " call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")",'~'.expand("")) let ret= system(netrw_rmdir_cmd) " call Decho("returned=".ret." errcode=".v:shell_error,'~'.expand("")) if v:shell_error != 0 " call Decho("v:shell_error not 0",'~'.expand("")) - let netrw_rmf_cmd= s:MakeSshCmd(netrw#WinPath(g:netrw_rmf_cmd)).' '.s:ShellEscape(netrw#WinPath(substitute(rmfile,'[\/]$','','e'))) + let netrw_rmf_cmd= s:MakeSshCmd(netrw#fs#WinPath(g:netrw_rmf_cmd)).' '.netrw#os#Escape(netrw#fs#WinPath(substitute(rmfile,'[\/]$','','e'))) " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")",'~'.expand("")) let ret= system(netrw_rmf_cmd) " call Decho("returned=".ret." errcode=".v:shell_error,'~'.expand("")) @@ -9706,9 +9676,9 @@ fun! s:NetrwRemoteRename(usrhost,path) range if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) NetrwKeepj call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) else - let oldname= s:ShellEscape(a:path.oldname) - let newname= s:ShellEscape(a:path.newname) - let ret = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname) + let oldname= netrw#os#Escape(a:path.oldname) + let newname= netrw#os#Escape(a:path.newname) + let ret = system(netrw#fs#WinPath(rename_cmd).' '.oldname.' '.newname) endif endfor @@ -9731,9 +9701,9 @@ fun! s:NetrwRemoteRename(usrhost,path) range if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) else - let oldname= s:ShellEscape(a:path.oldname) - let newname= s:ShellEscape(a:path.newname) - let ret = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname) + let oldname= netrw#os#Escape(a:path.oldname) + let newname= netrw#os#Escape(a:path.newname) + let ret = system(netrw#fs#WinPath(rename_cmd).' '.oldname.' '.newname) endif let ctr= ctr + 1 @@ -9988,13 +9958,13 @@ fun! s:NetrwLocalListingList(dirname,setmaxfilenamelen) " get the list of files contained in the current directory let dirname = a:dirname let dirnamelen = strlen(dirname) - let filelist = s:NetrwGlob(dirname,"*",0) - let filelist = filelist + s:NetrwGlob(dirname,".*",0) + let filelist = netrw#fs#Glob(dirname,"*",0) + let filelist = filelist + netrw#fs#Glob(dirname,".*",0) if g:netrw_cygwin == 0 && has("win32") elseif index(filelist,'..') == -1 && dirname !~ '/' " include ../ in the glob() entry if its missing - let filelist= filelist+[s:ComposePath(dirname,"../")] + let filelist= filelist+[netrw#fs#ComposePath(dirname,"../")] endif if a:setmaxfilenamelen && get(g:, 'netrw_dynamic_maxfilenamelen', 0) @@ -10202,7 +10172,7 @@ fun! s:NetrwLocalRename(path) range endif NetrwKeepj norm! 0 - let oldname= s:ComposePath(a:path,curword) + let oldname= netrw#fs#ComposePath(a:path,curword) call inputsave() let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e')) @@ -10295,7 +10265,7 @@ function! s:NetrwLocalRmFile(path, fname, all) let ok = "" let dir = 0 NetrwKeepj norm! 0 - let rmfile = s:NetrwFile(s:ComposePath(a:path, escape(a:fname, '\\')))->fnamemodify(':.') + let rmfile = s:NetrwFile(netrw#fs#ComposePath(a:path, escape(a:fname, '\\')))->fnamemodify(':.') " if not a directory if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') @@ -10349,6 +10319,18 @@ fun! netrw#Call(funcname,...) return call("s:".a:funcname,a:000) endfun +" --------------------------------------------------------------------- +" netrw#LogLevel: returns the specified loglevel +fun! netrw#LogLevel(level) + if a:level == 'WARNING' + return s:WARNING + elseif a:level == 'NOTE' + return s:NOTE + elseif a:level == 'ERROR' + return s:ERROR + endif +endfun + " --------------------------------------------------------------------- " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 " I expect this function to be used in @@ -10440,26 +10422,6 @@ fun! netrw#UserMaps(islocal) " call Dret("netrw#UserMaps") endfun -" --------------------------------------------------------------------- -" netrw#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{2 -fun! netrw#WinPath(path) - " call Dfunc("netrw#WinPath(path<".a:path.">)") - if (!g:netrw_cygwin || &shell !~ '\%(\\|\\)\%(\.exe\)\=$') && has("win32") - " remove cygdrive prefix, if present - let path = substitute(a:path,g:netrw_cygdrive.'/\(.\)','\1:','') - " remove trailing slash (Win95) - let path = substitute(path, '\(\\\|/\)$', '', 'g') - " remove escaped spaces - let path = substitute(path, '\ ', ' ', 'g') - " convert slashes to backslashes - let path = substitute(path, '/', '\', 'g') - else - let path= a:path - endif - " call Dret("netrw#WinPath <".path.">") - return path -endfun - " --------------------------------------------------------------------- " s:NetrwBadd: adds marked files to buffer list or vice versa {{{2 " cb : bl2mf=0 add marked files to buffer list @@ -10489,65 +10451,6 @@ fun! s:NetrwBadd(islocal,bl2mf) " call Dret("s:NetrwBadd") endfun -" --------------------------------------------------------------------- -" s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 -fun! s:ComposePath(base,subdir) - " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") - - if has("amiga") - " call Decho("amiga",'~'.expand("")) - let ec = a:base[s:Strlen(a:base)-1] - if ec != '/' && ec != ':' - let ret = a:base."/" . a:subdir - else - let ret = a:base.a:subdir - endif - - " COMBAK: test on windows with changing to root directory: :e C:/ - elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && has("win32") - " call Decho("windows",'~'.expand("")) - let ret= a:subdir - - elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && has("win32") - " call Decho("windows",'~'.expand("")) - if a:base =~ '[/\\]$' - let ret= a:base.a:subdir - else - let ret= a:base.'/'.a:subdir - endif - - elseif a:base =~ '^\a\{3,}://' - " call Decho("remote linux/macos",'~'.expand("")) - let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','') - let curpath = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\2','') - if a:subdir == '../' - if curpath =~ '[^/]/[^/]\+/$' - let curpath= substitute(curpath,'[^/]\+/$','','') - else - let curpath="" - endif - let ret= urlbase.curpath - else - let ret= urlbase.curpath.a:subdir - endif - " call Decho("urlbase<".urlbase.">",'~'.expand("")) - " call Decho("curpath<".curpath.">",'~'.expand("")) - " call Decho("ret<".ret.">",'~'.expand("")) - - else - " call Decho("local linux/macos",'~'.expand("")) - let ret = substitute(a:base."/".a:subdir,"//","/","g") - if a:base =~ '^//' - " keeping initial '//' for the benefit of network share listing support - let ret= '/'.ret - endif - let ret= simplify(ret) - endif - - " call Dret("s:ComposePath ".ret) - return ret -endfun - " --------------------------------------------------------------------- " s:DeleteBookmark: deletes a file/directory from Netrw's bookmark system {{{2 " Related Functions: s:MakeBookmark() s:NetrwBookHistHandler() s:NetrwBookmark() @@ -10843,7 +10746,7 @@ endfun " acceptable. No effect on Unix paths. " Examples of use: let result= s:NetrwDelete(path) function! s:NetrwDelete(path) - let path = netrw#WinPath(a:path) + let path = netrw#fs#WinPath(a:path) if !g:netrw_cygwin && has("win32") && exists("+shellslash") let sskeep = &shellslash @@ -10965,26 +10868,6 @@ fun! s:NetrwEnew(...) " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$")) endfun -" --------------------------------------------------------------------- -" s:NetrwExe: executes a string using "!" {{{2 -fun! s:NetrwExe(cmd) - if has("win32") && exepath(&shell) !~? '\v[\/]?(cmd|pwsh|powershell)(\.exe)?$' && !g:netrw_cygwin - let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] - set shell& shellcmdflag& shellxquote& shellxescape& - set shellquote& shellpipe& shellredir& shellslash& - try - exe a:cmd - finally - let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell - endtry - else - exe a:cmd - endif - if v:shell_error - call netrw#ErrorMsg(s:WARNING,"shell signalled an error",106) - endif -endfun - " --------------------------------------------------------------------- " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2 fun! s:NetrwInsureWinVars() @@ -11172,7 +11055,7 @@ endfun " Returns status " Runs system() on " [cd REMOTEDIRPATH;] a:cmd -" Note that it doesn't do s:ShellEscape(a:cmd)! +" Note that it doesn't do netrw#os#Escape(a:cmd)! fun! s:RemoteSystem(cmd) " call Dfunc("s:RemoteSystem(cmd<".a:cmd.">)") if !executable(g:netrw_ssh_cmd) @@ -11183,7 +11066,7 @@ fun! s:RemoteSystem(cmd) let cmd = s:MakeSshCmd(g:netrw_ssh_cmd." USEPORT HOSTNAME") let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') if remotedir != "" - let cmd= cmd.' cd '.s:ShellEscape(remotedir).";" + let cmd= cmd.' cd '.netrw#os#Escape(remotedir).";" else let cmd= cmd.' ' endif @@ -11497,15 +11380,6 @@ fun! s:Strlen(x) endfun " --------------------------------------------------------------------- -" s:ShellEscape: shellescape(), or special windows handling {{{2 -fun! s:ShellEscape(s, ...) - if has('win32') && $SHELL == '' && &shellslash - return printf('"%s"', substitute(a:s, '"', '""', 'g')) - endif - let f = a:0 > 0 ? a:1 : 0 - return shellescape(a:s, f) -endfun - " --------------------------------------------------------------------- " s:TreeListMove: supports [[, ]], [], and ][ in tree mode {{{2 fun! s:TreeListMove(dir) @@ -11616,15 +11490,20 @@ endfun " Deprecated: {{{1 function! netrw#Launch(args) - call netrw#own#Deprecate('netrw#Launch', 'v180', {'vim': 'dist#vim9#Launch', 'nvim': 'vim.system'}) + call netrw#msg#Deprecate('netrw#Launch', 'v180', {'vim': 'dist#vim9#Launch', 'nvim': 'vim.system'}) if !has('nvim') call dist#vim9#Launch(args) endif endfunction function! netrw#Open(file) - call netrw#own#Deprecate('netrw#Open', 'v180', {'vim': 'dist#vim9#Open', 'nvim': 'vim.ui.open'}) - call netrw#own#Open(a:file) + call netrw#msg#Deprecate('netrw#Open', 'v180', {'vim': 'dist#vim9#Open', 'nvim': 'vim.ui.open'}) + call netrw#os#Open(a:file) +endfunction + +function! netrw#WinPath(path) + call netrw#msg#Deprecate('netrw#WinPath', 'v180', {}) + call netrw#fs#WinPath(a:path) endfunction " }}} diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim b/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim new file mode 100644 index 0000000000..2b987ed00a --- /dev/null +++ b/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim @@ -0,0 +1,167 @@ +" FUNCTIONS IN THIS FILE ARE MEANT TO BE USED BY NETRW.VIM AND NETRW.VIM ONLY. +" THESE FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATIBILITY. SO CHANGES AND +" BREAKAGES IF USED OUTSIDE OF NETRW.VIM ARE EXPECTED. + +let s:slash = !exists('+shellslash') || &shellslash ? '/' : '\' + +" netrw#fs#PathJoin: Appends a new part to a path taking different systems into consideration {{{ + +function! netrw#fs#PathJoin(...) + let path = "" + + for arg in a:000 + if empty(path) + let path = arg + else + let path .= s:slash . arg + endif + endfor + + return path +endfunction + +" }}} +" netrw#fs#ComposePath: Appends a new part to a path taking different systems into consideration {{{ + +function! netrw#fs#ComposePath(base, subdir) + if has('amiga') + let ec = a:base[s:Strlen(a:base)-1] + if ec != '/' && ec != ':' + let ret = a:base . '/' . a:subdir + else + let ret = a:base.a:subdir + endif + + " COMBAK: test on windows with changing to root directory: :e C:/ + elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && has('win32') + let ret = a:subdir + + elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && has('win32') + if a:base =~ '[/\\]$' + let ret = a:base . a:subdir + else + let ret = a:base . '/' . a:subdir + endif + + elseif a:base =~ '^\a\{3,}://' + let urlbase = substitute(a:base, '^\(\a\+://.\{-}/\)\(.*\)$', '\1', '') + let curpath = substitute(a:base, '^\(\a\+://.\{-}/\)\(.*\)$', '\2', '') + if a:subdir == '../' + if curpath =~ '[^/]/[^/]\+/$' + let curpath = substitute(curpath, '[^/]\+/$', '', '') + else + let curpath = '' + endif + let ret = urlbase.curpath + else + let ret = urlbase.curpath.a:subdir + endif + + else + let ret = substitute(a:base . '/' .a:subdir, '//', '/', 'g') + if a:base =~ '^//' + " keeping initial '//' for the benefit of network share listing support + let ret = '/' . ret + endif + let ret = simplify(ret) + endif + + return ret +endfunction + +" }}} +" netrw#fs#AbsPath: returns the full path to a directory and/or file {{{ + +function! netrw#fs#AbsPath(filename) + let filename = a:filename + + if filename !~ '^/' + let filename = resolve(getcwd() . '/' . filename) + endif + + if filename != "/" && filename =~ '/$' + let filename = substitute(filename, '/$', '', '') + endif + + return filename +endfunction + +" }}} +" netrw#fs#Cwd: get the current directory. {{{ +" Change backslashes to forward slashes, if any. +" If doesc is true, escape certain troublesome characters + +function! netrw#fs#Cwd(doesc) + let curdir = substitute(getcwd(), '\\', '/', 'ge') + + if curdir !~ '[\/]$' + let curdir .= '/' + endif + + if a:doesc + let curdir = fnameescape(curdir) + endif + + return curdir +endfunction + +" }}} +" netrw#fs#Glob: does glob() if local, remote listing otherwise {{{ +" direntry: this is the name of the directory. Will be fnameescape'd to prevent wildcard handling by glob() +" expr : this is the expression to follow the directory. Will use netrw#fs#ComposePath() +" pare =1: remove the current directory from the resulting glob() filelist +" =0: leave the current directory in the resulting glob() filelist + +function! netrw#fs#Glob(direntry, expr, pare) + if netrw#CheckIfRemote() + keepalt 1sp + keepalt enew + let keep_liststyle = w:netrw_liststyle + let w:netrw_liststyle = s:THINLIST + if s:NetrwRemoteListing() == 0 + keepj keepalt %s@/@@ + let filelist = getline(1,$) + q! + else + " remote listing error -- leave treedict unchanged + let filelist = w:netrw_treedict[a:direntry] + endif + let w:netrw_liststyle = keep_liststyle + else + let path= netrw#fs#ComposePath(fnameescape(a:direntry), a:expr) + if has("win32") + " escape [ so it is not detected as wildcard character, see :h wildcard + let path = substitute(path, '[', '[[]', 'g') + endif + let filelist = glob(path, 0, 1, 1) + if a:pare + let filelist = map(filelist,'substitute(v:val, "^.*/", "", "")') + endif + endif + + return filelist +endfunction + +" }}} +" netrw#fs#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{ + +function! netrw#fs#WinPath(path) + if (!g:netrw_cygwin || &shell !~ '\%(\\|\\)\%(\.exe\)\=$') && has("win32") + " remove cygdrive prefix, if present + let path = substitute(a:path, g:netrw_cygdrive . '/\(.\)', '\1:', '') + " remove trailing slash (Win95) + let path = substitute(path, '\(\\\|/\)$', '', 'g') + " remove escaped spaces + let path = substitute(path, '\ ', ' ', 'g') + " convert slashes to backslashes + let path = substitute(path, '/', '\', 'g') + else + let path = a:path + endif + + return path +endfunction + +" }}} + +" vim:ts=8 sts=4 sw=4 et fdm=marker diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw/own.vim b/runtime/pack/dist/opt/netrw/autoload/netrw/msg.vim similarity index 58% rename from runtime/pack/dist/opt/netrw/autoload/netrw/own.vim rename to runtime/pack/dist/opt/netrw/autoload/netrw/msg.vim index 9fdf85a8f8..bf5fadbd76 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrw/own.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrw/msg.vim @@ -1,9 +1,7 @@ -" FUNCTIONS IN THIS FILES ARE MENT TO BE USE BY NETRW.VIM AND NETRW.VIM ONLY. -" THIS FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATABILITY. SO CHANGES AND +" FUNCTIONS IN THIS FILE ARE MEANT TO BE USED BY NETRW.VIM AND NETRW.VIM ONLY. +" THESE FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATIBILITY. SO CHANGES AND " BREAKAGES IF USED OUTSIDE OF NETRW.VIM ARE EXPECTED. -" General: {{{ - let s:deprecation_msgs = [] function! netrw#own#Deprecate(name, version, alternatives) " If running on neovim use vim.deprecate @@ -29,33 +27,4 @@ function! netrw#own#Deprecate(name, version, alternatives) call add(s:deprecation_msgs, a:name) endfunction -function! netrw#own#Open(file) abort - if has('nvim') - call luaeval('vim.ui.open(_A[1]) and nil', [a:file]) - else - call dist#vim9#Open(a:file) - endif -endfunction - -" }}} -" Path Utilities: {{{ - -let s:slash = &shellslash ? '/' : '\' - -function! netrw#own#PathJoin(...) - let path = "" - - for arg in a:000 - if empty(path) - let path = arg - else - let path .= s:slash . arg - endif - endfor - - return path -endfunction - -" }}} - " vim:ts=8 sts=4 sw=4 et fdm=marker diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim b/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim new file mode 100644 index 0000000000..1ab1bd0388 --- /dev/null +++ b/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim @@ -0,0 +1,48 @@ +" FUNCTIONS IN THIS FILE ARE MEANT TO BE USED BY NETRW.VIM AND NETRW.VIM ONLY. +" THESE FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATIBILITY. SO CHANGES AND +" BREAKAGES IF USED OUTSIDE OF NETRW.VIM ARE EXPECTED. + +" netrw#os#Execute: executes a string using "!" {{{ + +function! netrw#os#Execute(cmd) + if has("win32") && exepath(&shell) !~? '\v[\/]?(cmd|pwsh|powershell)(\.exe)?$' && !g:netrw_cygwin + let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] + set shell& shellcmdflag& shellxquote& shellxescape& + set shellquote& shellpipe& shellredir& shellslash& + try + execute a:cmd + finally + let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell + endtry + else + execute a:cmd + endif + + if v:shell_error + call netrw#ErrorMsg(netrw#LogLevel('ERROR'), "shell signalled an error", 106) + endif +endfunction + +" }}} +" netrw#os#Escape: shellescape(), or special windows handling {{{ + +function! netrw#os#Escape(string, ...) + return has('win32') && empty($SHELL) && &shellslash + \ ? printf('"%s"', substitute(a:string, '"', '""', 'g')) + \ : shellescape(a:string, a:0 > 0 ? a:1 : 0) +endfunction + +" }}} +" netrw#os#Open: open file with os viewer (eg. xdg-open) {{{ + +function! netrw#os#Open(file) abort + if has('nvim') + call luaeval('vim.ui.open(_A[1]) and nil', [a:file]) + else + call dist#vim9#Open(a:file) + endif +endfunction + +" }}} + +" vim:ts=8 sts=4 sw=4 et fdm=marker diff --git a/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim b/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim index ba143ed808..c32051ca79 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim @@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwSettings") finish endif -let g:loaded_netrwSettings = "v177" +let g:loaded_netrwSettings = "v179" " NetrwSettings: {{{ diff --git a/runtime/pack/dist/opt/netrw/doc/netrw.txt b/runtime/pack/dist/opt/netrw/doc/netrw.txt index 1c291a5e44..f6cc0ddb9d 100644 --- a/runtime/pack/dist/opt/netrw/doc/netrw.txt +++ b/runtime/pack/dist/opt/netrw/doc/netrw.txt @@ -1447,7 +1447,7 @@ With a "dirname", the specified directory name is used. The "gn" map will take the word below the cursor and use that for changing the top of the tree listing. - + *netrw-curdir* DELETING BOOKMARKS *netrw-mB* {{{2 To delete a bookmark, use > diff --git a/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim b/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim index 76a91b44ce..aed36a0cc7 100644 --- a/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim +++ b/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim @@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwPlugin") finish endif -let g:loaded_netrwPlugin = "v177" +let g:loaded_netrwPlugin = "v179" let s:keepcpo = &cpo set cpo&vim diff --git a/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim b/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim index a2d766e41a..58613a2f03 100644 --- a/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim +++ b/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim @@ -1,5 +1,5 @@ " nohlsearch.vim: Auto turn off hlsearch -" Last Change: 2024-07-31 +" Last Change: 2025-03-08 " Maintainer: Maxim Kim " " turn off hlsearch after: @@ -11,10 +11,14 @@ if exists('g:loaded_nohlsearch') endif let g:loaded_nohlsearch = 1 +func! s:Nohlsearch() + if v:hlsearch + call feedkeys("\nohlsearch\", 'm') + endif +endfunc + augroup nohlsearch au! - noremap (nohlsearch) nohlsearch - noremap! (nohlsearch) nohlsearch - au CursorHold * call feedkeys("\(nohlsearch)", 'm') - au InsertEnter * call feedkeys("\(nohlsearch)", 'm') + au CursorHold * call s:Nohlsearch() + au InsertEnter * call s:Nohlsearch() augroup END diff --git a/runtime/plugin/gzip.vim b/runtime/plugin/gzip.vim index b431b5ba80..9138844e6c 100644 --- a/runtime/plugin/gzip.vim +++ b/runtime/plugin/gzip.vim @@ -1,6 +1,6 @@ " Vim plugin for editing compressed files. " Maintainer: The Vim Project -" Last Change: 2025 Feb 06 +" Last Change: 2025 Feb 28 " Former Maintainer: Bram Moolenaar " Exit quickly when: @@ -20,11 +20,12 @@ augroup gzip " The functions are defined in autoload/gzip.vim. " " Set binary mode before reading the file. - autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma,*.xz,*.lz,*.zst,*.br,*.lzo,*.lz4 setlocal bin + autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.bz3,*.Z,*.lzma,*.xz,*.lz,*.zst,*.br,*.lzo,*.lz4 setlocal bin " Use "gzip -d" and similar commands, gunzip isn't always available. autocmd BufReadPost,FileReadPost *.br call gzip#read("brotli -d --rm") autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d") + autocmd BufReadPost,FileReadPost *.bz3 call gzip#read("bzip3 -d") autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn") autocmd BufReadPost,FileReadPost *.lz call gzip#read("lzip -d") autocmd BufReadPost,FileReadPost *.lz4 call gzip#read("lz4 -d -q --rm") @@ -36,6 +37,7 @@ augroup gzip autocmd BufWritePost,FileWritePost *.br call gzip#write("brotli --rm") autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2") + autocmd BufWritePost,FileWritePost *.bz3 call gzip#write("bzip3") autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip") autocmd BufWritePost,FileWritePost *.lz call gzip#write("lzip") autocmd BufWritePost,FileWritePost *.lz4 call gzip#write("lz4 -q --rm") @@ -47,6 +49,7 @@ augroup gzip autocmd FileAppendPre *.br call gzip#appre("brotli -d --rm") autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d") + autocmd FileAppendPre *.bz3 call gzip#appre("bzip3 -d") autocmd FileAppendPre *.gz call gzip#appre("gzip -dn") autocmd FileAppendPre *.lz call gzip#appre("lzip -d") autocmd FileAppendPre *.lz4 call gzip#appre("lz4 -d -q --rm") @@ -58,6 +61,7 @@ augroup gzip autocmd FileAppendPost *.br call gzip#write("brotli --rm") autocmd FileAppendPost *.bz2 call gzip#write("bzip2") + autocmd FileAppendPost *.bz3 call gzip#write("bzip3") autocmd FileAppendPost *.gz call gzip#write("gzip") autocmd FileAppendPost *.lz call gzip#write("lzip") autocmd FileAppendPost *.lz4 call gzip#write("lz4 --rm") diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim index 661a34b578..1c8c9f3294 100644 --- a/runtime/plugin/matchparen.vim +++ b/runtime/plugin/matchparen.vim @@ -1,12 +1,13 @@ " Vim plugin for showing matching parens " Maintainer: The Vim Project -" Last Change: 2024 May 18 +" Last Change: 2025 Mar 14 " Former Maintainer: Bram Moolenaar " Exit quickly when: " - this plugin was already loaded (or disabled) " - when 'compatible' is set -if exists("g:loaded_matchparen") || &cp +" - Vim has no support for :defer +if exists("g:loaded_matchparen") || &cp || exists(":defer") != 2 finish endif let g:loaded_matchparen = 1 @@ -21,17 +22,13 @@ if !exists("g:matchparen_disable_cursor_hl") let g:matchparen_disable_cursor_hl = 0 endif -let s:has_matchaddpos = exists('*matchaddpos') - augroup matchparen " Replace all matchparen autocommands autocmd! CursorMoved,CursorMovedI,WinEnter,WinScrolled * call s:Highlight_Matching_Pair() autocmd! BufWinEnter * autocmd SafeState * ++once call s:Highlight_Matching_Pair() autocmd! WinLeave,BufLeave * call s:Remove_Matches() - if exists('##TextChanged') - autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair() - autocmd! TextChangedP * call s:Remove_Matches() - endif + autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair() + autocmd! TextChangedP * call s:Remove_Matches() augroup END " Skip the rest if it was already done. @@ -97,19 +94,25 @@ func s:Highlight_Matching_Pair() " Find the match. When it was just before the cursor move it there for a " moment. if before > 0 - let has_getcurpos = exists("*getcurpos") - if has_getcurpos - " getcurpos() is more efficient but doesn't exist before 7.4.313. - let save_cursor = getcurpos() - else - let save_cursor = winsaveview() - endif + let save_cursor = getcurpos() call cursor(c_lnum, c_col - before) + defer setpos('.', save_cursor) endif if !has("syntax") || !exists("g:syntax_on") let s_skip = "0" else + " do not attempt to match when the syntax item where the cursor is + " indicates there does not exist a matching parenthesis, e.g. for shells + " case statement: "case $var in foobar)" + " + " add the check behind a filetype check, so it only needs to be + " evaluated for certain filetypes + if ['sh']->index(&filetype) >= 0 && + \ synstack(".", col("."))->indexof({_, id -> synIDattr(id, "name") + \ =~? "shSnglCase"}) >= 0 + return + endif " Build an expression that detects whether the current cursor position is " in certain syntax types (string, comment, etc.), for use as " searchpairpos()'s skip argument. @@ -181,30 +184,12 @@ func s:Highlight_Matching_Pair() let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline) endtry - if before > 0 - if has_getcurpos - call setpos('.', save_cursor) - else - call winrestview(save_cursor) - endif - endif - " If a match is found setup match highlighting. - if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom - if s:has_matchaddpos - if !g:matchparen_disable_cursor_hl - call add(w:matchparen_ids, matchaddpos('MatchParen', [[c_lnum, c_col - before], [m_lnum, m_col]], 10)) - else - call add(w:matchparen_ids, matchaddpos('MatchParen', [[m_lnum, m_col]], 10)) - endif + if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom + if !g:matchparen_disable_cursor_hl + call add(w:matchparen_ids, matchaddpos('MatchParen', [[c_lnum, c_col - before], [m_lnum, m_col]], 10)) else - if !g:matchparen_disable_cursor_hl - exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . - \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' - else - exe '3match MatchParen /\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' - endif - call add(w:matchparen_ids, 3) + call add(w:matchparen_ids, matchaddpos('MatchParen', [[m_lnum, m_col]], 10)) endif let w:paren_hl_on = 1 endif diff --git a/runtime/plugin/tarPlugin.vim b/runtime/plugin/tarPlugin.vim index 68d968a921..825b7ae17f 100644 --- a/runtime/plugin/tarPlugin.vim +++ b/runtime/plugin/tarPlugin.vim @@ -38,6 +38,7 @@ augroup tar au BufReadCmd *.lrp call tar#Browse(expand("")) au BufReadCmd *.tar call tar#Browse(expand("")) au BufReadCmd *.tar.bz2 call tar#Browse(expand("")) + au BufReadCmd *.tar.bz3 call tar#Browse(expand("")) au BufReadCmd *.tar.gz call tar#Browse(expand("")) au BufReadCmd *.tar.lz4 call tar#Browse(expand("")) au BufReadCmd *.tar.lzma call tar#Browse(expand("")) diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim index e78805faf7..fdae3d5c1a 100644 --- a/runtime/plugin/vimballPlugin.vim +++ b/runtime/plugin/vimballPlugin.vim @@ -29,17 +29,17 @@ com! -nargs=0 VimballList call vimball#Vimball(0) com! -nargs=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball()|call vimball#RestoreSettings() augroup Vimball au! - au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz + au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.bz3,*.vba.zip,*.vba.xz \ if getline(1) =~ '^" Vimball Archiver' | \ setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0, "Source this file to extract it! (:so %)")|endif | \ endif - au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz let s:origfile=expand("%")|if expand("%")!=expand("") | exe "1sp" fnameescape(expand(""))|endif|call vimball#Decompress(expand(""))|so %|if s:origfile!=expand("")|close|endif + au SourceCmd *.vba.gz,*.vba.bz2,*.vba.bz3,*.vba.zip,*.vba.xz let s:origfile=expand("%")|if expand("%")!=expand("") | exe "1sp" fnameescape(expand(""))|endif|call vimball#Decompress(expand(""))|so %|if s:origfile!=expand("")|close|endif au SourceCmd *.vba if expand("%")!=expand("") | exe "1sp" fnameescape(expand(""))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif - au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz + au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.bz3,*.vmb.zip,*.vmb.xz \ if getline(1) =~ '^" Vimball Archiver' | \ setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif | \ endif - au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz let s:origfile=expand("%")|if expand("%")!=expand("") | exe "1sp" fnameescape(expand(""))|endif|call vimball#Decompress(expand(""))|so %|if s:origfile!=expand("")|close|endif + au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.bz3,*.vmb.zip,*.vmb.xz let s:origfile=expand("%")|if expand("%")!=expand("") | exe "1sp" fnameescape(expand(""))|endif|call vimball#Decompress(expand(""))|so %|if s:origfile!=expand("")|close|endif au SourceCmd *.vmb if expand("%")!=expand("") | exe "1sp" fnameescape(expand(""))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif augroup END diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index 23c1c7b95b..164b04f9ae 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -2,7 +2,7 @@ " This file is normally sourced from menu.vim. " " Maintainer: The Vim Project -" Last Change: 2024 Jan 04 +" Last Change: 2025 Mar 09 " Former Maintainer: Bram Moolenaar " Define the SetSyn function, used for the Syntax menu entries. @@ -578,26 +578,27 @@ an 50.150.190 &Syntax.T.TealInfo :cal SetSyn("tli") an 50.150.200 &Syntax.T.Telix\ Salt :cal SetSyn("tsalt") an 50.150.210 &Syntax.T.Termcap/Printcap :cal SetSyn("ptcap") an 50.150.220 &Syntax.T.Terminfo :cal SetSyn("terminfo") -an 50.150.230 &Syntax.T.Tera\ Term :cal SetSyn("teraterm") -an 50.150.240 &Syntax.T.TeX.TeX/LaTeX :cal SetSyn("tex") -an 50.150.250 &Syntax.T.TeX.plain\ TeX :cal SetSyn("plaintex") -an 50.150.260 &Syntax.T.TeX.Initex :cal SetSyn("initex") -an 50.150.270 &Syntax.T.TeX.ConTeXt :cal SetSyn("context") -an 50.150.280 &Syntax.T.TeX.TeX\ configuration :cal SetSyn("texmf") -an 50.150.290 &Syntax.T.TeX.Texinfo :cal SetSyn("texinfo") -an 50.150.300 &Syntax.T.TF\ mud\ client :cal SetSyn("tf") -an 50.150.310 &Syntax.T.Tidy\ configuration :cal SetSyn("tidy") -an 50.150.320 &Syntax.T.Tilde :cal SetSyn("tilde") -an 50.150.330 &Syntax.T.Tmux\ configuration :cal SetSyn("tmux") -an 50.150.340 &Syntax.T.TPP :cal SetSyn("tpp") -an 50.150.350 &Syntax.T.Trasys\ input :cal SetSyn("trasys") -an 50.150.360 &Syntax.T.Treetop :cal SetSyn("treetop") -an 50.150.370 &Syntax.T.Trustees :cal SetSyn("trustees") -an 50.150.380 &Syntax.T.TSS.Command\ Line :cal SetSyn("tsscl") -an 50.150.390 &Syntax.T.TSS.Geometry :cal SetSyn("tssgm") -an 50.150.400 &Syntax.T.TSS.Optics :cal SetSyn("tssop") -an 50.150.410 &Syntax.T.Typescript :cal SetSyn("typescript") -an 50.150.420 &Syntax.T.TypescriptReact :cal SetSyn("typescriptreact") +an 50.150.230 &Syntax.T.Tera :cal SetSyn("tera") +an 50.150.240 &Syntax.T.Tera\ Term :cal SetSyn("teraterm") +an 50.150.250 &Syntax.T.TeX.TeX/LaTeX :cal SetSyn("tex") +an 50.150.260 &Syntax.T.TeX.plain\ TeX :cal SetSyn("plaintex") +an 50.150.270 &Syntax.T.TeX.Initex :cal SetSyn("initex") +an 50.150.280 &Syntax.T.TeX.ConTeXt :cal SetSyn("context") +an 50.150.290 &Syntax.T.TeX.TeX\ configuration :cal SetSyn("texmf") +an 50.150.300 &Syntax.T.TeX.Texinfo :cal SetSyn("texinfo") +an 50.150.310 &Syntax.T.TF\ mud\ client :cal SetSyn("tf") +an 50.150.320 &Syntax.T.Tidy\ configuration :cal SetSyn("tidy") +an 50.150.330 &Syntax.T.Tilde :cal SetSyn("tilde") +an 50.150.340 &Syntax.T.Tmux\ configuration :cal SetSyn("tmux") +an 50.150.350 &Syntax.T.TPP :cal SetSyn("tpp") +an 50.150.360 &Syntax.T.Trasys\ input :cal SetSyn("trasys") +an 50.150.370 &Syntax.T.Treetop :cal SetSyn("treetop") +an 50.150.380 &Syntax.T.Trustees :cal SetSyn("trustees") +an 50.150.390 &Syntax.T.TSS.Command\ Line :cal SetSyn("tsscl") +an 50.150.400 &Syntax.T.TSS.Geometry :cal SetSyn("tssgm") +an 50.150.410 &Syntax.T.TSS.Optics :cal SetSyn("tssop") +an 50.150.420 &Syntax.T.Typescript :cal SetSyn("typescript") +an 50.150.430 &Syntax.T.TypescriptReact :cal SetSyn("typescriptreact") an 50.160.100 &Syntax.UV.Udev\ config :cal SetSyn("udevconf") an 50.160.110 &Syntax.UV.Udev\ permissions :cal SetSyn("udevperm") an 50.160.120 &Syntax.UV.Udev\ rules :cal SetSyn("udevrules") diff --git a/runtime/syntax/Makefile b/runtime/syntax/Makefile index 84d6f83dea..9392b8dc98 100644 --- a/runtime/syntax/Makefile +++ b/runtime/syntax/Makefile @@ -3,7 +3,7 @@ # To run the test manually: # ../../src/vim -u 'testdir/runtest.vim' --cmd 'breakadd func RunTest' -# Override this if needed, the default assumes Vim was build in the src dir. +# Override this if needed, the default assumes Vim was built in the src dir. #VIMPROG = vim VIMPROG = ../../src/vim @@ -13,6 +13,10 @@ VIMRUNTIME = ../.. # Uncomment this line to use valgrind for memory leaks and extra warnings. # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=45 --log-file=valgrind.$* +# Trace ruler liveness on demand. +# VIM_SYNTAX_TEST_LOG = `pwd`/testdir/failed/00-TRACE_LOG + +# ENVVARS = LC_ALL=C VIM_SYNTAX_TEST_LOG="$(VIM_SYNTAX_TEST_LOG)" # ENVVARS = LC_ALL=C LANG=C LANGUAGE=C # Run the syntax tests with a C locale ENVVARS = LC_ALL=C @@ -22,6 +26,10 @@ RUN_VIMTEST = VIMRUNTIME=$(VIMRUNTIME) $(VALGRIND) $(ENVVARS) ../$(VIMPROG) -f $ # Uncomment this line for debugging # DEBUGLOG = --log testlog +# All initial phony targets; these names may clash with file types. +phonies = clean test testclean +.PHONY: $(phonies) + # Run the tests that didn't run yet or failed previously. # If a test succeeds a testdir/done/{name} file will be written. # If a test fails a testdir/failed/{name}.dump file will be written. @@ -31,33 +39,38 @@ test: @# the "vimcmd" file is used by the screendump utils @echo "../$(VIMPROG)" > testdir/vimcmd @echo "$(RUN_VIMTEST)" >> testdir/vimcmd - VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null - @rm -f testdir/Xfilter + @# Trace ruler liveness on demand. + @#mkdir -p testdir/failed + @#touch "$(VIM_SYNTAX_TEST_LOG)" + VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null @# FIXME: Temporarily show the whole file to find out what goes wrong @#if [ -f testdir/messages ]; then tail -n 6 testdir/messages; fi @if [ -f testdir/messages ]; then cat testdir/messages; fi +# add dependence on syntax files +testdir/testdeps.mk: + ./testdir/tools/maketestdeps $(phonies) > $@ -clean testclean: - rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter +-include testdir/testdeps.mk -# All initial phony targets; these names may clash with file extensions. -phonies = clean test testclean +clean testclean: + rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter testdir/testdeps.mk -# Collect all input filenames and their file extensions. +# Collect all input filenames and their file types. testnames != set +f; \ awk 'BEGIN { \ for (i = 1; i < ARGC; i++) { \ split(ARGV[i], names, /\//); \ - split(names[3], parts, /\./); \ - exts[parts[2]]; \ + split(names[3], parts, /[._]/); \ + types[parts[1]]; \ print names[3]; \ } \ + delete types["vim9"]; \ split("$(phonies)", scratch); \ for (phony in scratch) \ phonies[scratch[phony]]; \ - for (ext in exts) \ - print ext ((ext in phonies) ? "_" : ""); \ + for (type in types) \ + print type ((type in phonies) ? "_" : ""); \ }' testdir/input/*.* .PHONY: self-testing $(testnames) diff --git a/runtime/syntax/abnf.vim b/runtime/syntax/abnf.vim new file mode 100644 index 0000000000..13459eb9f8 --- /dev/null +++ b/runtime/syntax/abnf.vim @@ -0,0 +1,33 @@ +" Vim compiler file +" Language: abnf +" Maintainer: A4-Tacks +" Last Change: 2025 Mar 05 +" Upstream: https://github.com/A4-Tacks/abnf.vim + +" Implementing RFC-5234, RFC-7405 + +if exists('b:current_syntax') + finish +endif + +syn case ignore + +syn match abnfError /[<>"]/ +syn match abnfComment /;.*/ +syn match abnfOption /[[/\]]/ +syn region abnfString start=/\(%[si]\)\="/ end=/"/ oneline +syn region abnfProse start=// oneline +syn match abnfNumVal /\v\%b[01]+%(%(\.[01]+)+|-[01]+)=>/ +syn match abnfNumVal /\v\%d\d+%(%(\.\d+)+|-\d+)=>/ +syn match abnfNumVal /\v\%x[0-9a-f]+%(%(\.[0-9a-f]+)+|-[0-9a-f]+)=>/ +syn match abnfRepeat /\v%(%(<\d+)=\*\d*|<\d+ =)\ze[^ \t\r\n0-9*/)\]]/ + +hi def link abnfError Error +hi def link abnfComment Comment +hi def link abnfOption PreProc +hi def link abnfString String +hi def link abnfProse String +hi def link abnfNumVal Number +hi def link abnfRepeat Repeat + +" vim:noet:ts=8:sts=8:nowrap diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim index 104470ac4b..3ae6bfca8d 100644 --- a/runtime/syntax/cs.vim +++ b/runtime/syntax/cs.vim @@ -3,7 +3,7 @@ " Maintainer: Nick Jensen " Former Maintainers: Anduin Withers " Johannes Zellner -" Last Change: 2022-11-16 +" Last Change: 2025-03-14 " Filenames: *.cs " License: Vim (see :h license) " Repository: https://github.com/nickspoons/vim-cs @@ -190,6 +190,18 @@ syn match csUnicodeNumber +\\U00\x\{6}+ contained contains=csUnicodeSpecifier di syn match csUnicodeSpecifier +\\[uUx]+ contained display syn region csString matchgroup=csQuote start=+"+ end=+"\%(u8\)\=+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell + +for s:i in range(3, get(g:, "cs_raw_string_quote_count", 8)) + exe 'syn region csRawString' .. s:i .. ' matchgroup=csQuote start=+\z("\{' .. s:i .. '}\)+ end=+\z1+ oneline nextgroup=csRawStringError' .. s:i + exe 'syn region csRawString' .. s:i .. ' matchgroup=csQuote start=+\z("\{' .. s:i .. '}\)\s*$+ end=+^\s*\z1+ nextgroup=csRawStringError' .. s:i .. ' contains=csRawStringError' .. s:i + exe 'syn match csRawStringError' .. s:i .. ' /\%("\{' .. s:i .. '}\)\@' .. s:i .. '<="\+/ contained' + exe 'syn match csRawStringError' .. s:i .. ' /\S.\{-}\s*"\{' .. s:i .. '}"\@!/ contained' + + exe 'hi def link csRawString' .. s:i .. ' csString' + exe 'hi def link csRawStringError' .. s:i .. ' Error' +endfor +unlet s:i + syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display syn match csCharacter "'\\''" contains=csSpecialChar display syn match csCharacter "'[^\\]'" display @@ -217,11 +229,26 @@ syn match csInterpolationAlignDel +,+ contained display syn match csInterpolationFormatDel +:+ contained display syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csVerbatimQuote,@Spell + +" Interpolated raw string literals +for s:i in range(1, get(g:, "cs_raw_string_interpolation_brace_count", 8)) + exe 'syn region csInterpolatedRawString' .. s:i .. ' matchgroup=csQuote start=+$\{' .. s:i .. '}\z("""\+\)+ end=+\z1+ extend contains=csInterpolation' .. s:i .. ',csInterpolationDelimiterError' .. s:i .. ',@Spell' + exe 'syn match csInterpolationDelimiterError' .. s:i .. ' "}\{' .. s:i .. '}" contained' + exe 'syn match csInterpolationDelimiterError' .. s:i .. ' "{\{' .. 2 * s:i .. ',}" contained' + exe 'syn match csInterpolationDelimiterError' .. s:i .. ' "}\{' .. 2 * s:i .. ',}" contained' + exe 'syn region csInterpolation' .. s:i .. ' matchgroup=csInterpolationDelimiter start=+\%({\{' .. s:i .. '}\)\@' .. s:i .. ' " Doug Kearns -" Last Change: 2025 Feb 16 +" Last Change: 2025 Mar 17 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. " THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim. " (Search string "GEN_SYN_VIM:" in this file) -" Automatically generated keyword lists: {{{1 - -" Quit when a syntax file was already loaded {{{2 +" Quit when a syntax file was already loaded {{{1 if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim +" Feature testing {{{1 + let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>' +function s:has(feature) + return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1 +endfunction + +" Automatically generated keyword lists: {{{1 + " vimTodo: contains common special-notices for comments {{{2 " Use the vimCommentGroup cluster to add your own. syn keyword vimTodo contained COMBAK FIXME TODO XXX @@ -41,7 +47,6 @@ syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue Di " vimOptions: These are the invertible variants {{{2 " GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR='' - " termcap codes (which can also be set) {{{2 " GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod' " term key codes @@ -55,6 +60,19 @@ syn match vimOption contained "t_&8" syn match vimOption contained "t_%i" syn match vimOption contained "t_k;" +" vimOptions: These are the variable names {{{2 +" GEN_SYN_VIM: vimOption normal variable, START_STR='syn keyword vimOptionVarName contained', END_STR='' +" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR='' +syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku +syn match vimOptionVarName contained "t_%1" +syn match vimOptionVarName contained "t_#2" +syn match vimOptionVarName contained "t_#4" +syn match vimOptionVarName contained "t_@7" +syn match vimOptionVarName contained "t_*7" +syn match vimOptionVarName contained "t_&8" +syn match vimOptionVarName contained "t_%i" +syn match vimOptionVarName contained "t_k;" + " unsupported settings: some were supported by vi but don't do anything in vim {{{2 " GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR='' @@ -72,10 +90,20 @@ syn case match " Function Names {{{2 " GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR='' +" Predefined variable names {{{2 +" GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained', END_STR='' + +"--- syntax here and above generated by runtime/syntax/generator/gen_syntax_vim.vim --- -"--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 +" Neovim keyword list additions {{{2 + +if s:has("nvim") + syn keyword vimOptionVarName contained channel inccommand mousescroll pumblend redrawdebug scrollback shada shadafile statuscolumn termpastefilter termsync winbar winblend winhighlight + syn keyword vimVimVarName contained lua msgpack_types relnum stderr termrequest virtnum +endif + " Set up commands for this syntax highlighting file {{{2 com! -nargs=* Vim9 execute s:vim9script ? "" : "contained" @@ -202,9 +230,10 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vim syn case match " All vimCommands are contained by vimIsCommand. {{{2 -syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList +syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var -syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1 +syn match vimCmdSep "\\\@1" nextgroup=vimBang contains=vimCommand syn match vimBang contained "!" @@ -212,14 +241,17 @@ syn match vimBang contained "!" syn region vimSubscript contained matchgroup=vimSubscriptBracket start="\[" end="]" nextgroup=vimSubscript contains=@vimExprList syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vim9Super,vim9This -syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript -syn match vimVar "\" nextgroup=vimSubscript -syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript - -syn match vimVimVar "\" nextgroup=vimSubscript -syn match vimOptionVar "&\%([lg]:\)\=\a\+\>" nextgroup=vimSubscript -syn match vimOptionVar "&t_\S[a-zA-Z0-9]\>" nextgroup=vimSubscript -syn match vimOptionVar "&t_k;" nextgroup=vimSubscript +syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope +syn match vimVar "\" nextgroup=vimSubscript contains=vimVarScope +syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope + +" match the scope prefix independently of the retrofitted scope dictionary +syn match vimVarScope contained "\<[bwglstav]:" +syn match vimVimVar contained "\<[bwglstav]:\%(\h\|\d\)\@!" nextgroup=vimSubscript + +syn match vimVarNameError contained "\<\h\w*\>" +syn match vimVimVar "\" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPatt syn match vimFunction "\!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams syn match vimDef "\!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams -syn match vimFuncComment contained +".*+ skipwhite skipempty nextgroup=vimFuncBody,vimEndfunction -syn match vimDefComment contained "#.*" skipwhite skipempty nextgroup=vimDefBody,vimEnddef +syn region vimFuncComment contained + \ start=+".*+ + \ skip=+\n\s*\\\|\n\s*"\\ + + \ end="$" + \ skipwhite skipempty nextgroup=vimFuncBody,vimEndfunction +syn region vimDefComment contained + \ start="#.*" + \ skip=+\n\s*\\\|\n\s*#\\ + + \ end="$" + \ skipwhite skipempty nextgroup=vimDefBody,vimEnddef syn match vimFuncBang contained "!" syn match vimFuncSID contained "\c" @@ -403,15 +443,24 @@ syn match vimFuncBlank contained "\s\+" " Types: {{{2 " ===== -syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent +syn region vimReturnType contained + \ start=":\%(\s\|\n\)\@=" + \ skip=+\n\s*\\\|\n\s*#\\ \|^\s*#\\ + + \ end="$" + \ matchgroup=vim9Comment + "\ allow for legacy script tail comment error + \ end="\ze[#"]" + \ skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError + \ contains=@vim9Continue,@vimType + \ transparent syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep -syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType +syn match vimTypeSep contained ":\%(\s\|\n\)\@=" skipwhite nextgroup=@vimType syn keyword vimType contained any blob bool channel float job number string void syn match vimType contained "\" syn region vimCompoundType contained matchgroup=vimType start="\" +syn match vimUserType contained "\<\%(\h\w*\.\)*\u\w*\>" syn cluster vimType contains=vimType,vimCompoundType,vimUserType @@ -424,10 +473,10 @@ if s:vim9script syn match vim9MethodDefName contained "\<\h\w*\>" nextgroup=vim9MethodDefParams contains=@vim9MethodName syn region vim9MethodDefParams contained \ matchgroup=Delimiter start="(" end=")" - \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError + \ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError \ contains=vimDefParam,vim9Comment,vimFuncParamEquals - syn match vim9ConstructorDefName contained "\" + syn match vim9ConstructorDefName contained "\<_\=new\w*\>" \ nextgroup=vim9ConstructorDefParams \ contains=@vim9MethodName syn match vim9ConstructorDefParam contained "\<\%(this\.\)\=\h\w*\>" @@ -435,14 +484,25 @@ if s:vim9script \ contains=vim9This,vimOper syn region vim9ConstructorDefParams contained \ matchgroup=Delimiter start="(" end=")" - \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vimCommentError + \ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vimCommentError \ contains=vim9ConstructorDefParam,vim9Comment,vimFuncParamEquals syn region vim9MethodDefReturnType contained - \ start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" - \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimCommentError - \ contains=vimTypeSep + \ start=":\%(\s\|\n\)\@=" + \ skip=+\n\s*\\\|\n\s*#\\ \|^\s*#\\ + + \ end="$" + \ matchgroup=vim9Comment + \ end="\ze#" + \ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vimCommentError + \ contains=@vim9Continue,vimType,vimTypeSep \ transparent + + syn region vim9MethodDefComment contained + \ start="#.*" + \ skip=+\n\s*\\\|\n\s*#\\ + + \ end="$" + \ skipwhite skipempty nextgroup=vim9MethodDefBody,vimEnddef + syn region vim9MethodDefBody contained \ start="^.\=" matchgroup=vimCommand end="\" \ skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError @@ -453,14 +513,14 @@ if s:vim9script if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror") syn match vim9MethodNameError contained "\<[a-z0-9]\i\>" endif - syn match vim9MethodName contained "\" + syn match vim9MethodName contained "\<_\=new\w*\>" syn keyword vim9MethodName contained empty len string syn cluster vim9MethodName contains=vim9MethodName,vim9MethodNameError if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f' syn region vim9MethodDefFold contained start="\%(^\s*\%(:\=static\s\+\)\=\)\@16<=:\=def\s\+\h\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent - syn region vim9MethodDefFold contained start="^\s*:\=def\s\+new\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent + syn region vim9MethodDefFold contained start="^\s*:\=def\s\+_\=new\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent endif syn cluster vim9MethodDef contains=vim9MethodDef,vim9MethodDefFold @@ -715,9 +775,9 @@ syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1 syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' " Set command and associated set-options (vimOptions) with comment {{{2 -syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimSetRegion -syn region vimSetRegion contained start="\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*["#]\\ + matchgroup=vimCmdSep end="|" end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=@vimComment,@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap -syn region vimSetEqual contained matchgroup=vimOper start="[=:]\|[-+^]=" skip=+\\\\\|\\|\|\\\s\|\n\s*\\\|\n\s*["#]\\ \|^\s*\\\|^\s*["#]\\ + matchgroup=vimCmdSep end="|" end="\ze\s" end="$" contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep +syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimSetArgs +syn region vimSetArgs contained start="\S" skip=+\\|\|\n\s*\\\|\n\s*["#]\\ + matchgroup=vimCmdSep end="|" end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=@vimComment,@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap +syn region vimSetEqual contained matchgroup=vimOper start="[=:]\|[-+^]=" skip=+\\|\|\\\s\|\n\s*\\\|\n\s*["#]\\ \|^\s*\\\|^\s*["#]\\ + matchgroup=vimCmdSep end="|" end="\ze\s" end="$" contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep syn match vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap syn keyword vimSetAll contained all nextgroup=vimSetMod syn keyword vimSetTermcap contained termcap @@ -738,7 +798,7 @@ syn match vimUnletBang contained "\a\@1<=!" skipwhite nextgroup=vimUnletVars syn region vimUnletVars contained \ start="$\I\|\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]" \ nextgroup=vimCmdSep,vimComment - \ contains=@vimContinue,vimEnvvar,vimVar + \ contains=@vimContinue,vimEnvvar,vimVar,vimVimVar VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' extend VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\%(\s*\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' extend @@ -834,15 +894,17 @@ syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod " GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs' syn keyword vimUnmap unm[ap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs -syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs -syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue +syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation,vimMapLeader skipwhite nextgroup=vimMapRhs +syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation,vimMapLeader skipwhite skipnl nextgroup=vimMapRhsContinue syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs -syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs -syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue +syn match vimMapMod contained "\%#=1<\%(buffer\|expr\|nowait\|script\|silent\|special\|unique\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs +syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation,vimMapLeader skipnl nextgroup=vimMapRhsContinue " assume a continuation comment introduces the RHS -syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation +syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation,vimMapLeader +syn match vimMapLeader contained "\%#=1\c<\%(local\)\=leader>" contains=vimMapLeaderKey +syn keyword vimMapModKey contained buffer expr nowait script silent special unique syn case ignore -syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique +syn keyword vimMapLeaderKey contained leader localleader syn case match " Menus: {{{2 @@ -904,6 +966,19 @@ syn match vimMap "\\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!' +" Vim user commands + +" Compiler plugins +syn match vimCompilerSet "\" skipwhite nextgroup=vimSetArgs + +" runtime/makemenu.vim +syn match vimSynMenu "\" skipwhite nextgroup=vimSynMenuPath +syn match vimSynMenuPath contained ".*\ze:" nextgroup=vimSynMenuColon contains=vimMenuNotation +syn match vimSynMenuColon contained ":" nextgroup=vimSynMenuName +syn match vimSynMenuName contained "\w\+" + +syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynMenu + " Errors And Warnings: {{{2 " ==================== if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror") @@ -973,17 +1048,25 @@ syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w* syn match vimGroupAdd contained keepend "\" skipwhite nextgroup=vimSynConceal,vimSynConcealError +if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynconcealerror") + syn match vimSynConcealError contained "\i\+" +endif +syn keyword vimSynConceal contained on off + " Syntax: foldlevel {{{2 -syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError -if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror") - syn match vimSynFoldMethodError contained "\i\+" +syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldlevel,vimSynFoldlevelError +if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldlevelerror") + syn match vimSynFoldlevelError contained "\i\+" endif -syn keyword vimSynFoldMethod contained start minimum +syn keyword vimSynFoldlevel contained start minimum " Syntax: iskeyword {{{2 -syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList -syn match vimIskList contained '\S\+' contains=vimIskSep -syn match vimIskSep contained ',' +syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimSynIskeyword +syn keyword vimSynIskeyword contained clear +syn match vimSynIskeyword contained "\S\+" contains=vimSynIskeywordSep +syn match vimSynIskeywordSep contained "," " Syntax: include {{{2 syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList @@ -992,13 +1075,13 @@ syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup -syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" +syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" " Syntax: match {{{2 syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup -syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" +syn match vimSynMtchOpt contained "\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" " Syntax: off and on {{{2 syn keyword vimSynType contained enable list manual off on reset @@ -1007,34 +1090,49 @@ syn keyword vimSynType contained enable list manual off on reset syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion -syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup -syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>" +syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup +syn match vimSynRegOpt contained "\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>" syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg -syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=" -syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod +syn match vimSynPatMod contained "\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\=" +syn match vimSynPatMod contained "\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\=," nextgroup=vimSynPatMod syn match vimSynPatMod contained "lc=\d\+" syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]" syn match vimSynNotPatRange contained "\\\\\|\\\[" syn match vimMtchComment contained '"[^"]\+$' +" Syntax: spell {{{2 +syn keyword vimSynType contained spell skipwhite nextgroup=vimSynSpell,vimSynSpellError +if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynspellerror") + syn match vimSynSpellError contained "\i\+" +endif +syn keyword vimSynSpell contained default notoplevel toplevel + " Syntax: sync {{{2 " ============ -syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion +syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncClear,vimSyncMatch,vimSyncError,vimSyncRegion,vimSyncArgs if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror") syn match vimSyncError contained "\i\+" endif -syn keyword vimSyncC contained ccomment clear fromstart + +syn region vimSyncArgs contained start="\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=vimSyncLines,vimSyncLinebreak,vimSyncLinecont,vimSyncFromstart,vimSyncCcomment + +syn keyword vimSyncCcomment contained ccomment skipwhite nextgroup=vimGroupName +syn keyword vimSyncClear contained clear skipwhite nextgroup=vimSyncGroupName +syn keyword vimSyncFromstart contained fromstart syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName -syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg -syn match vimSyncLinebreak contained "\" skipwhite nextgroup=vimSyncGroup -syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone +syn match vimSyncLines contained "\" skipwhite nextgroup=vimSyncKey +syn match vimSyncKey contained "\" skipwhite nextgroup=vimSyncGroup +syn match vimSyncKey contained "\" skipwhite nextgroup=vimSyncGroup +syn match vimSyncGroup contained "\<\h\w*\>" skipwhite nextgroup=vimSynRegPat,vimSyncNone syn keyword vimSyncNone contained NONE " Additional IsCommand: here by reasons of precedence {{{2 @@ -1052,6 +1150,7 @@ syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluste syn match vimHiGroup contained "\i\+" syn case ignore +syn keyword vimHiNone contained NONE syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble syn keyword vimFgBgAttrib contained none bg background fg foreground syn case match @@ -1060,14 +1159,14 @@ syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup syn case ignore syn keyword vimHiCtermColor contained black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey grey40 grey50 grey90 lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred lightyellow magenta red seagreen white yellow syn match vimHiCtermColor contained "\" - syn case match + syn match vimHiFontname contained "[a-zA-Z\-*]\+" syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'" syn match vimHiGuiRgb contained "#\x\{6}" " Highlighting: hi group key=arg ... {{{2 -syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment +syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiNone,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment syn region vimHiKeyList contained start="\i\+" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimHiCluster if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror") syn match vimHiKeyError contained "\i\+="he=e-1 @@ -1371,7 +1470,12 @@ if !exists("skip_vim_syntax_inits") hi def link vimShebangError vimError hi def link vimSubstFlagErr vimError hi def link vimSynCaseError vimError - hi def link vimSynFoldMethodError vimError + hi def link vimSyncError vimError + hi def link vimSynConcealError vimError + hi def link vimSynError vimError + hi def link vimSynFoldlevelError vimError + hi def link vimSynIskeywordError vimError + hi def link vimSynSpellError vimError hi def link vimBufnrWarn vimWarn hi def link vim9TypeAliasError vimError @@ -1435,10 +1539,10 @@ if !exists("skip_vim_syntax_inits") hi def link vimFuncMod Special hi def link vimFuncParam vimVar hi def link vimFuncParamEquals vimOper - hi def link vimFuncScope vimVar + hi def link vimFuncScope vimVarScope hi def link vimFuncSID vimNotation hi def link vimGroupAdd vimSynOption - hi def link vimGroupName vimGroup + hi def link vimGroupName Normal hi def link vimGroupRem vimSynOption hi def link vimGroupSpecial Special hi def link vimGroup Type @@ -1457,11 +1561,11 @@ if !exists("skip_vim_syntax_inits") hi def link vimHiGuiRgb vimNumber hi def link vimHiGui vimHiTerm hi def link vimHiNmbr Number + hi def link vimHiNone vimGroup hi def link vimHiStartStop vimHiTerm hi def link vimHiTerm Type hi def link vimHLGroup vimGroup hi def link vimInsert vimString - hi def link vimIskSep Delimiter hi def link vim9KeymapLineComment vimKeymapLineComment hi def link vimKeymapLineComment vimComment hi def link vimKeymapTailComment vimComment @@ -1473,6 +1577,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimLetRegister Special hi def link vimLineComment vimComment hi def link vimMapBang vimBang + hi def link vimMapLeader vimBracket + hi def link vimMapLeaderKey vimNotation hi def link vimMapModKey vimFuncSID hi def link vimMapMod vimBracket hi def link vimMap vimCommand @@ -1503,7 +1609,7 @@ if !exists("skip_vim_syntax_inits") hi def link vimOperContinueComment vimContinueComment hi def link vimOption PreProc hi def link vimOptionVar Identifier - hi def link vimVimVar Identifier + hi def link vimOptionVarName Identifier hi def link vimParenSep Delimiter hi def link vimPatSepErr vimError hi def link vimPatSepR vimPatSep @@ -1543,31 +1649,38 @@ if !exists("skip_vim_syntax_inits") hi def link vimSubstSubstr SpecialChar hi def link vimSubstTwoBS vimString hi def link vimSubst vimCommand - hi def link vimSynCaseError Error hi def link vimSynCase Type - hi def link vimSyncC Type - hi def link vimSyncError Error - hi def link vimSyncGroupName vimGroupName + hi def link vimSyncCcomment Type + hi def link vimSynCchar vimSynOption + hi def link vimSynCcharValue Character + hi def link vimSyncClear Type + hi def link vimSyncFromstart Type hi def link vimSyncGroup vimGroupName + hi def link vimSyncGroupName vimGroupName hi def link vimSyncKey Type + hi def link vimSyncLinebreak Type + hi def link vimSyncLinecont Type + hi def link vimSyncLines Type + hi def link vimSyncMatch Type hi def link vimSyncNone Type + hi def link vimSynConceal Type hi def link vimSynContains vimSynOption - hi def link vimSynError Error - hi def link vimSynFoldMethodError Error - hi def link vimSynFoldMethod Type + hi def link vimSyncRegion Type + hi def link vimSynFoldlevel Type + hi def link vimSynIskeyword Type + hi def link vimSynIskeywordSep Delimiter hi def link vimSynKeyContainedin vimSynContains hi def link vimSynKeyOpt vimSynOption - hi def link vimSynCchar vimSynOption - hi def link vimSynCcharValue Character hi def link vimSynMtchGrp vimSynOption hi def link vimSynMtchOpt vimSynOption hi def link vimSynNextgroup vimSynOption hi def link vimSynNotPatRange vimSynRegPat hi def link vimSynOption Special hi def link vimSynPatRange vimString + hi def link vimSynReg Type hi def link vimSynRegOpt vimSynOption hi def link vimSynRegPat vimString - hi def link vimSynReg Type + hi def link vimSynSpell Type hi def link vimSyntax vimCommand hi def link vimSynType vimSpecial hi def link vimThrow vimCommand @@ -1587,6 +1700,9 @@ if !exists("skip_vim_syntax_inits") hi def link vimUserCmdKey vimCommand hi def link vimUserFunc Normal hi def link vimVar Normal + hi def link vimVarScope Identifier + hi def link vimVimVar Identifier + hi def link vimVimVarName Identifier hi def link vimWarn WarningMsg hi def link vim9Abstract vimCommand @@ -1614,6 +1730,7 @@ if !exists("skip_vim_syntax_inits") hi def link vim9LhsVariable vimVar hi def link vim9LineComment vimComment hi def link vim9MethodDef vimCommand + hi def link vim9MethodDefComment vimDefComment hi def link vim9MethodNameError vimFunctionError hi def link vim9Null Constant hi def link vim9Public vimCommand @@ -1628,6 +1745,10 @@ if !exists("skip_vim_syntax_inits") hi def link vim9Var vimCommand hi def link vim9Vim9ScriptArg Special hi def link vim9Vim9Script vimCommand + + hi def link vimCompilerSet vimCommand + hi def link vimSynMenu vimCommand + hi def link vimSynMenuPath vimMenuName endif " Current Syntax Variable: {{{2 diff --git a/runtime/syntax/hyprlang.vim b/runtime/syntax/hyprlang.vim index cde504d9ca..081d917b4c 100644 --- a/runtime/syntax/hyprlang.vim +++ b/runtime/syntax/hyprlang.vim @@ -1,11 +1,14 @@ " Vim syntax file " Language: hyprlang " Maintainer: Luca Saccarola -" Last Change: 2025 Jan 29 +" Last Change: 2025 Mar 26 if exists("b:current_syntax") finish endif +let s:cpo= &cpo +set cpo&vim + let b:current_syntax = "hyprlang" syn case ignore @@ -56,4 +59,6 @@ hi def link hyprString String hi def link hyprColor Structure hi def link hyprCommand Keyword +let &cpo = s:cpo +unlet s:cpo " vim: ts=8 sts=2 sw=2 et diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim index 9c5a490582..f5851d024f 100644 --- a/runtime/syntax/lua.vim +++ b/runtime/syntax/lua.vim @@ -2,7 +2,7 @@ " Language: Lua 4.0, Lua 5.0, Lua 5.1, Lua 5.2 and Lua 5.3 " Maintainer: Marcus Aurelius Farias " First Author: Carlos Augusto Teixeira Mendes -" Last Change: 2022 Sep 07 +" Last Change: 2025 Feb 25 " Options: lua_version = 4 or 5 " lua_subversion = 0 (for 4.0 or 5.0) " or 1, 2, 3 (for 5.1, 5.2 or 5.3) @@ -16,6 +16,7 @@ endif let s:cpo_save = &cpo set cpo&vim +" keep in sync with ftplugin/lua.vim if !exists("lua_version") " Default is lua 5.3 let lua_version = 5 diff --git a/runtime/syntax/m17ndb.vim b/runtime/syntax/m17ndb.vim new file mode 100644 index 0000000000..8d63e6f918 --- /dev/null +++ b/runtime/syntax/m17ndb.vim @@ -0,0 +1,28 @@ +" Vim syntax file +" Language: m17n database +" Maintainer: David Mandelberg +" Last Change: 2025 Feb 21 +" +" https://www.nongnu.org/m17n/manual-en/m17nDBFormat.html describes the +" syntax, but some of its regexes don't match the code. read_element() in +" https://git.savannah.nongnu.org/cgit/m17n/m17n-lib.git/tree/src/plist.c +" seems to be a better place to understand the syntax. + +if exists("b:current_syntax") + finish +endif +let b:current_syntax = "m17ndb" + +syn match m17ndbSymbol /\([^\x00- ()"\\]\|\\\_.\)\+/ +syn match m17ndbComment ";.*$" contains=@Spell +syn match m17ndbInteger "-\?[0-9]\+" +syn match m17ndbInteger "[0#]x[0-9A-Fa-f]\+" +syn match m17ndbCharacter "?\(\_[^\\]\|\\\_.\)" +syn region m17ndbText start=/\Z"/ skip=/\\\\\|\\"/ end=/"/ +syn region m17ndbPlist matchgroup=m17ndbParen start="(" end=")" fold contains=ALL + +hi def link m17ndbCharacter Character +hi def link m17ndbComment Comment +hi def link m17ndbInteger Number +hi def link m17ndbParen Delimiter +hi def link m17ndbText String diff --git a/runtime/syntax/omnimark.vim b/runtime/syntax/omnimark.vim index 6294945ffb..9b12d5ecdd 100644 --- a/runtime/syntax/omnimark.vim +++ b/runtime/syntax/omnimark.vim @@ -1,106 +1,833 @@ -" Vim syntax file -" Language: Omnimark -" Maintainer: Paul Terray -" Last Change: 11 Oct 2000 - -" quit when a syntax file was already loaded +vim9script +# Vim syntax file +# Language: OmniMark +# Maintainer: Peter Kenny +# Previous Maintainer: Paul Terray +# Last Change: 2025-03-23 +# License: Vim (see :help license) +# History: 2000-10-11 Vintage minimal syntax file (Paul Terray) +# +# - Syntax is grouped, generally, by type (action to rule), using the +# version 12 headings. Refer: +# https://developers.stilo.com/docs/html/keyword/type.html +# - Deprecated/legacy syntax back to version 4 is included. +# - OmniMark is largely case insensitive, with handled exceptions (e.g., %g) +# ---------------------------------------------------------------------------- +syntax case ignore +# Current syntax exists: finish {{{ if exists("b:current_syntax") finish endif - -setlocal iskeyword=@,48-57,_,128-167,224-235,- - -syn keyword omnimarkKeywords ACTIVATE AGAIN -syn keyword omnimarkKeywords CATCH CLEAR CLOSE COPY COPY-CLEAR CROSS-TRANSLATE -syn keyword omnimarkKeywords DEACTIVATE DECLARE DECREMENT DEFINE DISCARD DIVIDE DO DOCUMENT-END DOCUMENT-START DONE DTD-START -syn keyword omnimarkKeywords ELEMENT ELSE ESCAPE EXIT -syn keyword omnimarkKeywords FAIL FIND FIND-END FIND-START FORMAT -syn keyword omnimarkKeywords GROUP -syn keyword omnimarkKeywords HALT HALT-EVERYTHING -syn keyword omnimarkKeywords IGNORE IMPLIED INCLUDE INCLUDE-END INCLUDE-START INCREMENT INPUT -syn keyword omnimarkKeywords JOIN -syn keyword omnimarkKeywords LINE-END LINE-START LOG LOOKAHEAD -syn keyword omnimarkKeywords MACRO -syn keyword omnimarkKeywords MACRO-END MARKED-SECTION MARKUP-COMMENT MARKUP-ERROR MARKUP-PARSER MASK MATCH MINUS MODULO -syn keyword omnimarkKeywords NEW NEWLINE NEXT -syn keyword omnimarkKeywords OPEN OUTPUT OUTPUT-TO OVER -syn keyword omnimarkKeywords PROCESS PROCESS-END PROCESS-START PROCESSING-INSTRUCTION PROLOG-END PROLOG-IN-ERROR PUT -syn keyword omnimarkKeywords REMOVE REOPEN REPEAT RESET RETHROW RETURN -syn keyword omnimarkKeywords WHEN WHITE-SPACE -syn keyword omnimarkKeywords SAVE SAVE-CLEAR SCAN SELECT SET SGML SGML-COMMENT SGML-DECLARATION-END SGML-DTD SGML-DTDS SGML-ERROR SGML-IN SGML-OUT SGML-PARSE SGML-PARSER SHIFT SUBMIT SUCCEED SUPPRESS -syn keyword omnimarkKeywords SYSTEM-CALL -syn keyword omnimarkKeywords TEST-SYSTEM THROW TO TRANSLATE -syn keyword omnimarkKeywords UC UL UNLESS UP-TRANSLATE -syn keyword omnimarkKeywords XML-PARSE - -syn keyword omnimarkCommands ACTIVE AFTER ANCESTOR AND ANOTHER ARG AS ATTACHED ATTRIBUTE ATTRIBUTES -syn keyword omnimarkCommands BASE BEFORE BINARY BINARY-INPUT BINARY-MODE BINARY-OUTPUT BREAK-WIDTH BUFFER BY -syn keyword omnimarkCommands CASE CHILDREN CLOSED COMPILED-DATE COMPLEMENT CONREF CONTENT CONTEXT-TRANSLATE COUNTER CREATED CREATING CREATOR CURRENT -syn keyword omnimarkCommands DATA-ATTRIBUTE DATA-ATTRIBUTES DATA-CONTENT DATA-LETTERS DATE DECLARED-CONREF DECLARED-CURRENT DECLARED-DEFAULTED DECLARED-FIXED DECLARED-IMPLIED DECLARED-REQUIRED -syn keyword omnimarkCommands DEFAULT-ENTITY DEFAULTED DEFAULTING DELIMITER DIFFERENCE DIRECTORY DOCTYPE DOCUMENT DOCUMENT-ELEMENT DOMAIN-FREE DOWN-TRANSLATE DTD DTD-END DTDS -syn keyword omnimarkCommands ELEMENTS ELSEWHERE EMPTY ENTITIES ENTITY EPILOG-START EQUAL EXCEPT EXISTS EXTERNAL EXTERNAL-DATA-ENTITY EXTERNAL-ENTITY EXTERNAL-FUNCTION EXTERNAL-OUTPUT-FUNCTION -syn keyword omnimarkCommands EXTERNAL-TEXT-ENTITY -syn keyword omnimarkCommands FALSE FILE FUNCTION FUNCTION-LIBRARY -syn keyword omnimarkCommands GENERAL GLOBAL GREATER-EQUAL GREATER-THAN GROUPS -syn keyword omnimarkCommands HAS HASNT HERALDED-NAMES -syn keyword omnimarkCommands ID ID-CHECKING IDREF IDREFS IN IN-LIBRARY INCLUSION INITIAL INITIAL-SIZE INSERTION-BREAK INSTANCE INTERNAL INVALID-DATA IS ISNT ITEM -syn keyword omnimarkCommands KEY KEYED -syn keyword omnimarkCommands LAST LASTMOST LC LENGTH LESS-EQUAL LESS-THAN LETTERS LIBRARY LITERAL LOCAL -syn keyword omnimarkCommands MATCHES MIXED MODIFIABLE -syn keyword omnimarkCommands NAME NAME-LETTERS NAMECASE NAMED NAMES NDATA-ENTITY NEGATE NESTED-REFERENTS NMTOKEN NMTOKENS NO NO-DEFAULT-IO NON-CDATA NON-IMPLIED NON-SDATA NOT NOTATION NUMBER-OF NUMBERS -syn keyword omnimarkCommands NUTOKEN NUTOKENS -syn keyword omnimarkCommands OCCURRENCE OF OPAQUE OPTIONAL OR -syn keyword omnimarkCommands PARAMETER PARENT PAST PATTERN PLUS PREPARENT PREVIOUS PROPER PUBLIC -syn keyword omnimarkCommands READ-ONLY READABLE REFERENT REFERENTS REFERENTS-ALLOWED REFERENTS-DISPLAYED REFERENTS-NOT-ALLOWED REMAINDER REPEATED REPLACEMENT-BREAK REVERSED -syn keyword omnimarkCommands SILENT-REFERENT SIZE SKIP SOURCE SPECIFIED STATUS STREAM SUBDOC-ENTITY SUBDOCUMENT SUBDOCUMENTS SUBELEMENT SWITCH SYMBOL SYSTEM -syn keyword omnimarkCommands TEXT-MODE THIS TIMES TOKEN TRUE -syn keyword omnimarkCommands UNANCHORED UNATTACHED UNION USEMAP USING -syn keyword omnimarkCommands VALUE VALUED VARIABLE -syn keyword omnimarkCommands WITH WRITABLE -syn keyword omnimarkCommands XML XML-DTD XML-DTDS -syn keyword omnimarkCommands YES -syn keyword omnimarkCommands #ADDITIONAL-INFO #APPINFO #CAPACITY #CHARSET #CLASS #COMMAND-LINE-NAMES #CONSOLE #CURRENT-INPUT #CURRENT-OUTPUT #DATA #DOCTYPE #DOCUMENT #DTD #EMPTY #ERROR #ERROR-CODE -syn keyword omnimarkCommands #FILE-NAME #FIRST #GROUP #IMPLIED #ITEM #LANGUAGE-VERSION #LAST #LIBPATH #LIBRARY #LIBVALUE #LINE-NUMBER #MAIN-INPUT #MAIN-OUTPUT #MARKUP-ERROR-COUNT #MARKUP-ERROR-TOTAL -syn keyword omnimarkCommands #MARKUP-PARSER #MARKUP-WARNING-COUNT #MARKUP-WARNING-TOTAL #MESSAGE #NONE #OUTPUT #PLATFORM-INFO #PROCESS-INPUT #PROCESS-OUTPUT #RECOVERY-INFO #SGML #SGML-ERROR-COUNT -syn keyword omnimarkCommands #SGML-ERROR-TOTAL #SGML-WARNING-COUNT #SGML-WARNING-TOTAL #SUPPRESS #SYNTAX #! - -syn keyword omnimarkPatterns ANY ANY-TEXT -syn keyword omnimarkPatterns BLANK -syn keyword omnimarkPatterns CDATA CDATA-ENTITY CONTENT-END CONTENT-START -syn keyword omnimarkPatterns DIGIT -syn keyword omnimarkPatterns LETTER -syn keyword omnimarkPatterns NUMBER -syn keyword omnimarkPatterns PCDATA -syn keyword omnimarkPatterns RCDATA -syn keyword omnimarkPatterns SDATA SDATA-ENTITY SPACE -syn keyword omnimarkPatterns TEXT -syn keyword omnimarkPatterns VALUE-END VALUE-START -syn keyword omnimarkPatterns WORD-END WORD-START - -syn region omnimarkComment start=";" end="$" - -" strings -syn region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape -syn region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape -syn match omnimarkEscape contained +%.+ -syn match omnimarkEscape contained +%[0-9][0-9]#+ - -"syn sync maxlines=100 -syn sync minlines=2000 - -" Define the default highlighting. -" Only when an item doesn't have highlighting yet - -hi def link omnimarkCommands Statement -hi def link omnimarkKeywords Identifier -hi def link omnimarkString String -hi def link omnimarkPatterns Macro -" hi def link omnimarkNumber Number -hi def link omnimarkComment Comment -hi def link omnimarkEscape Special - - -let b:current_syntax = "omnimark" - -" vim: ts=8 - +# }}} +# Keyword characters {{{ +# !#%&*+-/0123456789<=>@ +# ABCDEFGHIJKLMNOPQRSTUVWXYZ +# \_abcdefghijklmnopqrstuvwxyz|~ +setlocal iskeyword=33,35,37-38,42-43,45,47-57,60-62,64-90,92,95,97-122,124,126 +# }}} +# _ action {{{ +syntax keyword omnimarkAction activate +syntax keyword omnimarkAction assert +syntax keyword omnimarkAction clear +syntax keyword omnimarkAction close +syntax keyword omnimarkAction collect-garbage +syntax match omnimarkAction "\v\c<%(copy)%(-clear)?" +syntax keyword omnimarkAction deactivate +syntax keyword omnimarkAction decrement +syntax keyword omnimarkAction discard +syntax keyword omnimarkAction flush +syntax match omnimarkAction "\v\c<%(halt)%(-everything)?" +syntax keyword omnimarkAction increment +syntax keyword omnimarkAction log +syntax keyword omnimarkAction log-message +syntax keyword omnimarkAction match +syntax keyword omnimarkAction new + # new takes before and after (as in new x{"wilma"} after [2]) + syntax keyword omnimarkAction after + syntax keyword omnimarkAction before +# This is the only way 'next' is used (and it cannot be 'isnt'): +syntax match omnimarkAction "\v\c<%(next\s+group\s+is)" +syntax keyword omnimarkAction not-reached +syntax keyword omnimarkAction open +syntax match omnimarkAction "\v\c<%(output)%(-to)?" +syntax keyword omnimarkAction put +# When alone, 'referent' is nearly always 'put...referent,' which is an action +syntax keyword omnimarkAction referent +syntax match omnimarkAction "\v\c<%(remove)%(\s+key\s+of)?" +syntax keyword omnimarkAction reopen +syntax keyword omnimarkAction reset +syntax keyword omnimarkAction return +# 'scan' because it can start a line in a block of 'do *-parse ... done' +syntax keyword omnimarkAction scan +syntax match omnimarkAction "\v\c<%(set)%(\s+%(buffer|creator\s+of|external-function|file|function-library|key\s+of|new|referent|stream))?" +syntax keyword omnimarkAction sgml-in +syntax keyword omnimarkAction sgml-out +syntax keyword omnimarkAction signal +syntax keyword omnimarkAction submit +syntax keyword omnimarkAction suppress +syntax keyword omnimarkAction throw +syntax keyword omnimarkAction void +# }}} +# _ built-in data type {{{ +# attribute-declaration: Every attribute-declaration instance has two +# properties: attribute-default-declaration and +# attribute-value-declaration +# attribute-default-declaration: is the abstract type of declared defaults for +# unspecified attribute values. Its concrete +# instances can be obtained with the following +# four constants: +syntax keyword omnimarkConstant attribute-declared-conref +syntax keyword omnimarkConstant attribute-declared-current +syntax keyword omnimarkConstant attribute-declared-implied +syntax keyword omnimarkConstant attribute-declared-required +# and with two operators which take a string +# default value argument: +syntax match omnimarkOperator "\v\c<%(attribute-declared-defaulted\s+to)" +syntax match omnimarkOperator "\v\c<%(attribute-declared-fixed to)" +# attribute-value-declaration: is the abstract type of values that an +# attribute is declared to accept. Its concrete +# instances can be obtained with the following +# constants: +syntax match omnimarkConstant "\v\c<%(attribute-declared-fixed to)" +syntax keyword omnimarkConstant attribute-declared-id +syntax keyword omnimarkConstant attribute-declared-idref +syntax keyword omnimarkConstant attribute-declared-idrefs +syntax keyword omnimarkConstant attribute-declared-name +syntax keyword omnimarkConstant attribute-declared-names +syntax keyword omnimarkConstant attribute-declared-nmtoken +syntax keyword omnimarkConstant attribute-declared-nmtokens +syntax keyword omnimarkConstant attribute-declared-number +syntax keyword omnimarkConstant attribute-declared-numbers +syntax keyword omnimarkConstant attribute-declared-nutoken +syntax keyword omnimarkConstant attribute-declared-nutokens +# and with one operator that takes a string shelf +# argument listing all the values allowed for the +# attribute: +syntax keyword omnimarkOperator attribute-declared-group +# content-model - the following six constants are the only possible values: +syntax keyword omnimarkConstant any-content-model +syntax keyword omnimarkConstant cdata-content-model +syntax keyword omnimarkConstant element-content-model +syntax keyword omnimarkConstant empty-content-model +syntax keyword omnimarkConstant mixed-content-model +syntax keyword omnimarkConstant rcdata-content-model +# refer also: +# developers.stilo.com/docs/html/keyword/create-element-declaration.html +# +# declared-attribute is and abstract type with subtypes: +# implied-attribute +# specified-attribute +# dtd abstract data type has subtypes: +# sgml-dtd +# xml-dtd +# element-declaration +# entity-declaration +# markup-element-event +# markup-event has subtypes: +# markup-point-event +# markup-region-event +# }}} +# _ built-in entity {{{ +syntax match omnimarkBuiltinEntity "\v\c<%(#capacity)" +syntax match omnimarkBuiltinEntity "\v\c<%(#charset)" +syntax match omnimarkBuiltinEntity "\v\c<%(#document)" +syntax match omnimarkBuiltinEntity "\v\c<%(#dtd)" +syntax match omnimarkBuiltinEntity "\v\c<%(#implied)" +syntax match omnimarkBuiltinEntity "\v\c<%(#schema)" +syntax match omnimarkBuiltinEntity "\v\c<%(#syntax)" +# }}} +# _ built-in shelf {{{ +syntax match omnimarkBuiltinShelf "\v\c<%(#additional-info)" +syntax match omnimarkBuiltinShelf "\v\c<%(#appinfo)" +syntax match omnimarkBuiltinShelf "\v\c<%(#args)" +syntax match omnimarkBuiltinShelf "\v\c<%(#class)" +syntax match omnimarkBuiltinShelf "\v\c<%(#command-line-names)" +syntax match omnimarkBuiltinShelf "\v\c<%(#console)" +syntax match omnimarkBuiltinShelf "\v\c<%(#content)" +syntax match omnimarkBuiltinShelf "\v\c<%(#current-dtd)" +syntax match omnimarkBuiltinShelf "\v\c<%(#current-input)" +syntax match omnimarkBuiltinShelf "\v\c<%(#current-markup-event)" +syntax match omnimarkBuiltinShelf "\v\c<%(#current-output)" +syntax match omnimarkBuiltinShelf "\v\c<%(#doctype)" +syntax match omnimarkBuiltinShelf "\v\c<%(#error)" +syntax match omnimarkBuiltinShelf "\v\c<%(#error-code)" +syntax match omnimarkBuiltinShelf "\v\c<%(#file-name)" +syntax match omnimarkBuiltinShelf "\v\c<%(#language-version)" +syntax match omnimarkBuiltinShelf "\v\c<%(#libpath)" +syntax match omnimarkBuiltinShelf "\v\c<%(#library)" +syntax match omnimarkBuiltinShelf "\v\c<%(#libvalue)" +syntax match omnimarkBuiltinShelf "\v\c<%(#line-number)" +syntax match omnimarkBuiltinShelf "\v\c<%(#log)" +syntax match omnimarkBuiltinShelf "\v\c<%(#main-input)" +syntax match omnimarkBuiltinShelf "\v\c<%(#main-output)" +syntax match omnimarkBuiltinShelf "\v\c<%(#markup-error-count)" +syntax match omnimarkBuiltinShelf "\v\c<%(#markup-error-total)" +syntax match omnimarkBuiltinShelf "\v\c<%(#markup-parser)" +syntax match omnimarkBuiltinShelf "\v\c<%(#markup-warning-count)" +syntax match omnimarkBuiltinShelf "\v\c<%(#markup-warning-total)" +syntax match omnimarkBuiltinShelf "\v\c<%(#message)" +syntax match omnimarkBuiltinShelf "\v\c<%(#output)" +syntax match omnimarkBuiltinShelf "\v\c<%(#platform-info)" +syntax match omnimarkBuiltinShelf "\v\c<%(#process-input)" +syntax match omnimarkBuiltinShelf "\v\c<%(#process-output)" +syntax match omnimarkBuiltinShelf "\v\c<%(#recovery-info)" +syntax match omnimarkBuiltinShelf "\v\c<%(#sgml)" +syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-error-count)" +syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-error-total)" +syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-warning-count)" +syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-warning-total)" +syntax match omnimarkBuiltinShelf "\v\c<%(#suppress)" +syntax match omnimarkBuiltinShelf "\v\c<%(#xmlns-names)" +syntax keyword omnimarkBuiltinShelf attributes +syntax match omnimarkBuiltinShelf "\v\c<%(current)%(\s+%(element%(s)?|dtd|sgml-dtd))" +syntax keyword omnimarkBuiltinShelf data-attributes +syntax keyword omnimarkBuiltinShelf referents +syntax keyword omnimarkBuiltinShelf sgml-dtds + # deprecated synonym for sgml-dtds: + syntax keyword omnimarkBuiltinShelf dtds +syntax keyword omnimarkBuiltinShelf xml-dtds +syntax match omnimarkBuiltinShelf "\v\c<%(specified\s+attributes)" +# }}} +# _ catch name {{{ +syntax match omnimarkCatchName "\v\c<%(#external-exception)" + # external exception parameters + syntax keyword omnimarkCatchName identity + syntax keyword omnimarkCatchName message +syntax keyword omnimarkCatchName location +syntax match omnimarkCatchName "\v\c<%(#markup-end)" +syntax match omnimarkCatchName "\v\c<%(#markup-point)" +syntax match omnimarkCatchName "\v\c<%(#markup-start)" +syntax match omnimarkCatchName "\v\c<%(#program-error)" +# }}} +# _ constant {{{ +syntax keyword omnimarkConstant false +syntax keyword omnimarkConstant true +# Example: local stream u initial {unattached} +syntax keyword omnimarkConstant unattached +# }}} +# _ control structure {{{ +syntax match omnimarkControlStructure "\v\c<%(#first)" +syntax match omnimarkControlStructure "\v\c<%(#group)" +syntax match omnimarkControlStructure "\v\c<%(#item)" +syntax match omnimarkControlStructure "\v\c<%(#last)" +syntax match omnimarkControlStructure "\v%(\s)?%(-\>)%(\s)?" +syntax keyword omnimarkControlStructure again +syntax keyword omnimarkControlStructure always +syntax keyword omnimarkControlStructure as +syntax keyword omnimarkControlStructure case +syntax keyword omnimarkControlStructure catch +syntax match omnimarkControlStructure "\v\c<%(do)>%(%(\s|\n)+%((markup|sgml|xml)-parse|scan|select|select-type|skip%(\s+over)?|unless|when))?" + # with id-checking and with utf-8, example: + # do sgml-parse document with id-checking false scan file "my.sgml" + syntax keyword omnimarkControlStructure id-checking + syntax keyword omnimarkControlStructure utf-8 + syntax keyword omnimarkControlStructure with +syntax keyword omnimarkControlStructure done +syntax keyword omnimarkControlStructure else +syntax keyword omnimarkControlStructure exit +syntax match omnimarkControlStructure "\v\c<%(repeat)>%(\s+%(for|over%(\s+current elements)?|scan|to))?" + # Example: repeat over reversed + syntax keyword omnimarkControlStructure reversed +# Note: repeat over attribute(s) not needed - handled separately +# Note: repeat over data-attribute(s) not needed - handled separately +# Note: repeat over referents not needed - handled separately +syntax keyword omnimarkControlStructure rethrow +syntax keyword omnimarkControlStructure select +syntax keyword omnimarkControlStructure unless +syntax match omnimarkControlStructure "\v\c<%(using)%( %(%(data-)?attribute%(s)?|catch|group|input as|nested-referents|output\s+as|referents))?" +syntax keyword omnimarkControlStructure when +# }}} +# _ data type {{{ +# (not a v12 heading) +syntax keyword omnimarkDataType bcd +syntax keyword omnimarkDataType counter +# db.database data type - refer omdb, below, for library functions +syntax match omnimarkDataType "\v\c<%(db)%([.])?%(database)" +syntax keyword omnimarkDataType document +syntax keyword omnimarkDataType float +syntax keyword omnimarkDataType instance +syntax match omnimarkDataType "\v\c<%(int32)" +syntax keyword omnimarkDataType integer +syntax match omnimarkDataType "\v\c<%(markup\s+sink)" +syntax match omnimarkDataType "\v\c<%(markup\s+source)" +syntax keyword omnimarkDataType pattern +syntax keyword omnimarkDataType string +syntax match omnimarkDataType "\v\c<%(string\s+sink)" +syntax match omnimarkDataType "\v\c<%(string\s+source)" +syntax keyword omnimarkDataType stream +syntax keyword omnimarkDataType string +syntax keyword omnimarkDataType subdocument +syntax keyword omnimarkDataType switch +# }}} +# _ declaration/definition {{{ +syntax keyword omnimarkDeclaration constant +syntax keyword omnimarkDeclaration context-translate +syntax keyword omnimarkDeclaration created by +syntax keyword omnimarkDeclaration cross-translate +syntax keyword omnimarkDeclaration declare +syntax match omnimarkDeclaration "\v\c<%(declare)%(\s+%(data-letters|function-library|heralded-names|markup-identification))?" +# Note: declare #error, #main-input, #main-output, #process-input, +# #process-output, catch, data-letters, function-library, letters, +# name-letters, no-default-io, opaque, record +# - Those are all handed as separate keywords/matches +syntax match omnimarkDeclaration "\v\c<%(define\s+conversion-function)" +syntax match omnimarkDeclaration "\v\c<%(define\s+external)\s+%(source\s+)?%(function)" + # in function-library is part of an external function + syntax match omnimarkDeclaration "\v\c<%(in\s+function-library)" +syntax match omnimarkDeclaration "\v\c<%(define\s+external\s+output)" +syntax match omnimarkDeclaration "\v\c<%(define\s+function)" +syntax match omnimarkDeclaration "\v\c<%(define\s+\w+function)" + # Example: define integer function add (value integer x, value ...) + syntax keyword omnimarkDeclaration value +syntax match omnimarkDeclaration "\v\c<%(define\s+infix-function)" +syntax match omnimarkDeclaration "\v\c<%(define\s+overloaded\s+function)" +syntax match omnimarkDeclaration "\v\c<%(define\s+string\s+sink\s+function)" +syntax match omnimarkDeclaration "\v\c<%(define\s+string\s+source\s+function)" +# Some combinations are missed, so the general, 'define', is needed too: +syntax match omnimarkDeclaration "\v\c<%(define\s+)" +syntax keyword omnimarkDeclaration delimiter +syntax keyword omnimarkDeclaration domain-bound +syntax keyword omnimarkDeclaration down-translate +syntax keyword omnimarkDeclaration dynamic +syntax keyword omnimarkDeclaration elsewhere +syntax keyword omnimarkDeclaration escape +syntax match omnimarkDeclaration "\v\c<%(export\s+as\s+opaque)" +syntax keyword omnimarkDeclaration export +syntax keyword omnimarkDeclaration field +syntax keyword omnimarkDeclaration function +syntax keyword omnimarkDeclaration global +syntax match omnimarkDeclaration "\v\c<%(group)%(s)?" +syntax keyword omnimarkDeclaration import +syntax match omnimarkDeclaration "\v\c<%(include)%(-guard)?" +syntax match omnimarkDeclaration "\v\c<%(initial)%(-size)?" +syntax keyword omnimarkDeclaration letters +syntax keyword omnimarkDeclaration library +syntax keyword omnimarkDeclaration local +syntax match omnimarkDeclaration "\v\c<%(macro)%(-end)?" + # macros can take an arg and/or a token (or args or tokens) + syntax keyword omnimarkDeclaration arg + syntax keyword omnimarkDeclaration token +syntax keyword omnimarkDeclaration modifiable +syntax keyword omnimarkDeclaration module +syntax keyword omnimarkDeclaration name-letters +syntax match omnimarkDeclaration "\v\c<%(namecase\s+entity)" +syntax match omnimarkDeclaration "\v\c<%(namecase\s+general)" +syntax keyword omnimarkDeclaration newline +syntax keyword omnimarkDeclaration no-default-io +syntax keyword omnimarkDeclaration opaque +syntax keyword omnimarkDeclaration optional +syntax keyword omnimarkDeclaration overriding +syntax match omnimarkDeclaration "\v\c<%(prefixed\s+by)" +syntax keyword omnimarkDeclaration read-only +syntax keyword omnimarkDeclaration record +syntax keyword omnimarkDeclaration remainder +syntax keyword omnimarkDeclaration require +syntax keyword omnimarkDeclaration save +syntax keyword omnimarkDeclaration save-clear +syntax keyword omnimarkDeclaration silent-referent +syntax keyword omnimarkDeclaration size +syntax keyword omnimarkDeclaration supply +syntax keyword omnimarkDeclaration symbol +syntax keyword omnimarkDeclaration unprefixed +syntax keyword omnimarkDeclaration up-translate +syntax keyword omnimarkDeclaration use +syntax keyword omnimarkDeclaration variable +syntax keyword omnimarkDeclaration write-only +# }}} +# _ element qualifier {{{ +syntax keyword omnimarkElementQualifier ancestor +syntax keyword omnimarkElementQualifier doctype +syntax keyword omnimarkElementQualifier document-element +syntax match omnimarkElementQualifier "\v\c<%(open\s+element)" +syntax keyword omnimarkElementQualifier parent +syntax keyword omnimarkElementQualifier preparent +syntax keyword omnimarkElementQualifier previous +# }}} +# _ modifier {{{ +syntax match omnimarkModifier "\v\c<%(#base)" +syntax match omnimarkModifier "\v\c<%(#full)" +syntax match omnimarkModifier "\v\c<%(#xmlns)" +syntax keyword omnimarkModifier append +syntax keyword omnimarkModifier binary-input +syntax keyword omnimarkModifier binary-mode +syntax keyword omnimarkModifier binary-output +syntax keyword omnimarkModifier break-width +syntax keyword omnimarkModifier buffered +syntax match omnimarkModifier "\v\c<%(declare\s+#main-output\s+has\s+domain-free)" +syntax keyword omnimarkModifier defaulting +syntax keyword omnimarkModifier domain-free +syntax keyword omnimarkModifier notation +# of may be standalone, e.g., data-attribute colwidth of (attribute name) +syntax match omnimarkModifier "\v\c<%(of)%(\s%(ancestor|doctype|element|open element|%(pre)?parent))?" +syntax keyword omnimarkModifier referents-allowed +syntax keyword omnimarkModifier referents-displayed +syntax keyword omnimarkModifier referents-not-allowed +syntax keyword omnimarkModifier text-mode +syntax keyword omnimarkModifier unbuffered +# : (field selection operator) [not included] +# ` (keyword access character) [not included] +# }}} +# _ operator {{{ +syntax keyword omnimarkOperator ! +syntax keyword omnimarkOperator not +syntax keyword omnimarkOperator != +# 'isnt equal' is handled by separate keywords +syntax keyword omnimarkOperator !== +syntax match omnimarkOperator "\%(#!\)" +syntax match omnimarkOperator "\v\c<%(#empty)" +# Example: usemap is #none: +syntax match omnimarkOperator "\v\c<%(#none)" +syntax keyword omnimarkOperator % +syntax keyword omnimarkOperator format +syntax keyword omnimarkOperator & +syntax keyword omnimarkOperator and +syntax keyword omnimarkOperator * +syntax keyword omnimarkOperator times +syntax keyword omnimarkOperator ** +syntax keyword omnimarkOperator power +syntax keyword omnimarkOperator + +syntax keyword omnimarkOperator plus +syntax keyword omnimarkOperator - +syntax keyword omnimarkOperator minus +syntax keyword omnimarkOperator negate +syntax keyword omnimarkOperator / +syntax keyword omnimarkOperator divide +syntax keyword omnimarkOperator < +syntax keyword omnimarkOperator less-than +syntax keyword omnimarkOperator greater-equal +syntax keyword omnimarkOperator <= +syntax keyword omnimarkOperator less-equal +syntax keyword omnimarkOperator = +syntax keyword omnimarkOperator equal +# 'is equal' is handled by separate keywords +syntax keyword omnimarkOperator == +syntax match omnimarkOperator "\v<[=][>]\s*" +syntax keyword omnimarkOperator > +syntax keyword omnimarkOperator greater-than +syntax keyword omnimarkOperator >= +syntax keyword omnimarkOperator greater-equal +syntax keyword omnimarkOperator abs +syntax keyword omnimarkOperator active +syntax keyword omnimarkOperator attribute + # attribute is defaulted, implied, specified: split to single keywords + # because it can be isnt too. Similarly for ancestor (is/isnt) + # with ancestor being an element qualifier. + # Tests for element attributes, e.g.: + # do when attribute myid is (id | idref | idrefs) + # cdata (already omnimarkPattern) + # name (already omnimarkOperator) + syntax keyword omnimarkAttributeType names + # number: match rather than keyword since "number of" is an operator + syntax match omnimarkAttributeType "\v\c<%(number)" + syntax keyword omnimarkAttributeType numbers + syntax keyword omnimarkAttributeType nmtoken + syntax keyword omnimarkAttributeType nmtokens + syntax keyword omnimarkAttributeType nutoken + syntax keyword omnimarkAttributeType nutokens + syntax keyword omnimarkAttributeType id + syntax keyword omnimarkAttributeType idref + syntax keyword omnimarkAttributeType idrefs + # notation (already omnimarkModifier) + # entity (already omnimarkOperator) + # entities (already omnimarkOperator) +syntax keyword omnimarkOperator base +syntax keyword omnimarkOperator binary +syntax keyword omnimarkOperator cast +syntax keyword omnimarkOperator ceiling +syntax keyword omnimarkOperator children +syntax keyword omnimarkOperator compiled-date +syntax keyword omnimarkOperator complement +syntax match omnimarkOperator "\v\c<%(content\s+of)" +syntax keyword omnimarkOperator create-attribute-declaration +syntax keyword omnimarkOperator create-element-declaration +syntax keyword omnimarkOperator create-element-event +syntax keyword omnimarkOperator create-processing-instruction-event +syntax keyword omnimarkOperator create-specified-attribute +syntax keyword omnimarkOperator create-unspecified-attribute +syntax keyword omnimarkOperator creating +syntax match omnimarkOperator "\v\c<%(creator\s+of)" +syntax keyword omnimarkOperator data-attribute +syntax keyword omnimarkOperator date +syntax match omnimarkOperator "\v\c<%(declaration\s+of)" +syntax keyword omnimarkOperator declared-elements +syntax keyword omnimarkOperator declared-general-entities +syntax keyword omnimarkOperator declared-parameter-entities +syntax keyword omnimarkOperator defaulted +syntax keyword omnimarkOperator difference +syntax match omnimarkOperator "\v\c<%(doctype\s+is)" +syntax keyword omnimarkOperator drop +syntax match omnimarkOperator "\v\c<%(element\s+is)" +syntax match omnimarkOperator "\v\c<%(elements\s+of)" +syntax match omnimarkOperator "\v\c<%(entity\s+is)" +syntax keyword omnimarkOperator except +syntax keyword omnimarkOperator exists +syntax keyword omnimarkOperator exp +syntax keyword omnimarkOperator external-function +syntax keyword omnimarkOperator file +syntax keyword omnimarkOperator floor +syntax match omnimarkOperator "\v\c<%(function-library\s+of)" +syntax keyword omnimarkOperator has +syntax keyword omnimarkOperator hasnt + # 'has'/'hasnt' (before 'key'/'^' or 'item'/'@' (other obscure things too?): + syntax keyword omnimarkOperator key + syntax match omnimarkOperator "\v[\^]" + # 'item' is addressed elsewhere - @ needs to be a match, not keyword + syntax match omnimarkOperator "\v<[@]" +syntax keyword omnimarkOperator implied +syntax keyword omnimarkOperator in-codes +syntax keyword omnimarkOperator is +syntax keyword omnimarkOperator isnt + # 'is'/'isnt' (usually before, or sometime after, e.g., 'content isnt'): + syntax keyword omnimarkOperator attached + syntax keyword omnimarkOperator buffer + syntax keyword omnimarkOperator catchable + syntax keyword omnimarkOperator cdata-entity + syntax keyword omnimarkOperator closed + syntax keyword omnimarkOperator conref + syntax keyword omnimarkOperator content + # 'content is' ... empty, any, cdata, rcdata, mixed, conref + syntax keyword omnimarkOperator default-entity + syntax keyword omnimarkOperator directory + # 'entity'/'entities', e.g., 'attribute x is (entity | entities)' + syntax match omnimarkOperator "\v\c<%(entit)%(y|ies)" + syntax keyword omnimarkOperator external + # E.g., 'open s as external-output-function' (v. buffer, etc.) '-call'? + syntax match omnimarkOperator "\v\c<%(external-output-function)%(-call)?" + syntax keyword omnimarkOperator file + syntax keyword omnimarkOperator general + syntax keyword omnimarkOperator in-library + syntax keyword omnimarkOperator internal + syntax keyword omnimarkOperator keyed + syntax keyword omnimarkOperator markup-parser + syntax keyword omnimarkOperator ndata-entity + # These are not to be confused with the omnimarkAction, 'open' + syntax match omnimarkOperator "\v\c<%(is\s+open)" + syntax match omnimarkOperator "\v\c<%(isnt\s+open)" + syntax keyword omnimarkOperator parameter + syntax keyword omnimarkOperator past + syntax keyword omnimarkOperator public + syntax keyword omnimarkOperator readable + # These are not to be confused with the omnimarkAction, 'referent' + syntax match omnimarkOperator "\v\c<%(is\s+referent)" + syntax match omnimarkOperator "\v\c<%(isnt\s+referent)" + syntax keyword omnimarkOperator sdata-entity + # Deprecated form - markup-parser is recommended + syntax keyword omnimarkOperator sgml-parser + syntax keyword omnimarkOperator subdoc-entity + syntax keyword omnimarkOperator system + syntax keyword omnimarkOperator thrown +syntax match omnimarkOperator "\v\c<%(item)%(\sof)?%(\s%(data-)?attributes)?" +syntax match omnimarkOperator "\v\c<%(key\s+of)" +# 'key of attribute'/s not needed: 'key of' and 'attribute' are separate +# 'key of data-attribute'/s not needed: 'key of' &c. are separate +# 'key of referents' not needed: 'key of' and 'referents' are separate +syntax keyword omnimarkOperator last +syntax keyword omnimarkOperator lastmost +syntax match omnimarkOperator "\v\c<%(length\s*of)" +syntax keyword omnimarkOperator literal +syntax keyword omnimarkOperator ln +syntax keyword omnimarkOperator log10 +syntax keyword omnimarkOperator lookahead +# 'lookahead not' not needed: 'lookahead' and 'not' are separate +syntax keyword omnimarkOperator mask +syntax keyword omnimarkOperator matches +syntax keyword omnimarkOperator modulo +syntax match omnimarkOperator "\v\c<%(name)>%(\s+of)?%(\s+current)?%(\s+element)?" +syntax keyword omnimarkOperator named +syntax match omnimarkOperator "\v\c<%(notation\s+equals)" +syntax match omnimarkOperator "\v\c<%(number\s+of)" +# 'number of attribute'/s not needed: 'number of' and 'attribute' are separate +# 'number of current elements' is not needed: 'number of' &c. are separate +syntax match omnimarkOperator "\v\c<%(number\s+of\s+current\s+subdocuments)" +# 'number of data-attribute'/s not needed: 'number of' &c. are separate +# 'number of referents' not needed: 'number of' and 'referents' are separate +syntax keyword omnimarkOperator occurrence +syntax match omnimarkOperator "\v\c<%(open\s+element\s+is)" +syntax match omnimarkOperator "\v\c<%(parent\s+is)" +syntax match omnimarkOperator "\v\c<%(preparent\s+is)" +syntax match omnimarkOperator "\v\c<%(previous\s+is)" +syntax match omnimarkOperator "\v\c<%(public-identifier\s+of)" +syntax match omnimarkOperator "\v\c<%(referents\s+has\s+key)" +syntax match omnimarkOperator "\v\c<%(referents\s+is\s+attached)" +syntax keyword omnimarkOperator round +syntax keyword omnimarkOperator shift +syntax keyword omnimarkOperator specified +syntax keyword omnimarkOperator sqrt +# E.g., last proper? subelement _element-qualifier_ is/isnt +syntax keyword omnimarkOperator subelement +syntax keyword omnimarkOperator system-call +syntax match omnimarkOperator "\v\c<%(system-identifier\s+of)" +syntax keyword omnimarkOperator status + # E.g., 'status ... is (proper | inclusion)' + syntax keyword omnimarkOperator inclusion + syntax keyword omnimarkOperator proper + # E.g., 'last content {element-qualifier} is #DATA' + syntax match omnimarkOperator "\v\c<%(#data)" +syntax keyword omnimarkOperator take +# 'this' only appears before 'referent', so requires no standalone 'this' +syntax match omnimarkOperator "\v\c<%(this\s*referent)" +syntax keyword omnimarkOperator to +syntax keyword omnimarkOperator truncate +syntax keyword omnimarkOperator ul +syntax keyword omnimarkOperator union +syntax keyword omnimarkOperator usemap +syntax keyword omnimarkOperator valued +syntax keyword omnimarkOperator writable +syntax keyword omnimarkOperator xmlns-name +syntax match omnimarkOperator "\v%(\s)%([\\])%(\s)" +syntax match omnimarkOperator "\v%(\s)([_])%(\s)" +syntax match omnimarkOperator "\v%(\s)([\|])%(\s)" +syntax keyword omnimarkOperator or +syntax match omnimarkOperator "\v%(\s)([\|][\|])%(\s)" +syntax keyword omnimarkOperator join +syntax match omnimarkOperator "\v%(\s)([\|][\|][\*])%(\s)" +syntax keyword omnimarkOperator repeated +syntax match omnimarkOperator "\v%(\s)([~])" +# }}} +# _ pattern {{{ +syntax match omnimarkPattern "\v%(\s)%(\=\|)" +syntax match omnimarkPattern "\v\c<%(any)%(\+%(\+)?|*%(*)?|\?)?" +syntax match omnimarkPattern "\v\c<%(any-text)%(\+|*|\?)?" +syntax match omnimarkPattern "\v\c<%(blank)%(\+|*|\?)?" +syntax keyword omnimarkPattern cdata +syntax keyword omnimarkPattern content-end +syntax keyword omnimarkPattern content-start +syntax match omnimarkPattern "\v\c<%(digit)%(\+|*|\?)?" +syntax keyword omnimarkPattern empty +syntax match omnimarkPattern "\v\c<%(lc)%(\+|*|\?)?" +syntax match omnimarkPattern "\v\c<%(letter)%(\+|*|\?)?" +syntax keyword omnimarkPattern line-end +syntax keyword omnimarkPattern line-start +syntax keyword omnimarkPattern mixed +syntax keyword omnimarkPattern non-cdata +syntax keyword omnimarkPattern non-sdata +syntax keyword omnimarkPattern null +syntax keyword omnimarkPattern pcdata +syntax keyword omnimarkPattern rcdata +syntax keyword omnimarkPattern sdata +syntax match omnimarkPattern "\v\c<%(space)%(\+|*|\?)?" +syntax match omnimarkPattern "\v\c<%(text)%([[:space:]\n])" +syntax match omnimarkPattern "\v\c<%(uc)%(\+|*|\?)?" +syntax keyword omnimarkPattern unanchored +syntax keyword omnimarkPattern value-end +syntax keyword omnimarkPattern value-start +syntax match omnimarkPattern "\v\c<%(white-space)%(\+|*|\?)?" +syntax keyword omnimarkPattern word-end +syntax keyword omnimarkPattern word-start +syntax match omnimarkPattern "\v%(\s)%(\|\=)" +# }}} +# _ rule {{{ +syntax keyword omnimarkRule data-content +syntax keyword omnimarkRule document-end +syntax keyword omnimarkRule document-start +syntax keyword omnimarkRule document-type-declaration +syntax keyword omnimarkRule dtd-end +syntax keyword omnimarkRule dtd-start +syntax keyword omnimarkRule element +syntax keyword omnimarkRule epilog-start +syntax keyword omnimarkRule external-entity +syntax keyword omnimarkRule external-data-entity +syntax keyword omnimarkRule external-text-entity +syntax match omnimarkRule "\v\c<%(external-text-entity\s+#document)" +syntax keyword omnimarkRule find +syntax keyword omnimarkRule find-end +syntax keyword omnimarkRule find-start +syntax keyword omnimarkRule insertion-break +syntax keyword omnimarkRule invalid-data +syntax match omnimarkRule "\v\c<%(marked-section)%(\s+%(cdata|ignore|include-%(end|start)|rcdata))?" +syntax keyword omnimarkRule markup-comment +syntax keyword omnimarkRule markup-error +syntax keyword omnimarkRule process +syntax keyword omnimarkRule process-end +syntax keyword omnimarkRule processing-instruction +syntax keyword omnimarkRule process-start +syntax keyword omnimarkRule prolog-end +syntax keyword omnimarkRule prolog-in-error +syntax keyword omnimarkRule replacement-break +syntax keyword omnimarkRule sgml-comment +syntax keyword omnimarkRule sgml-declaration-end +syntax keyword omnimarkRule sgml-error +syntax keyword omnimarkRule translate +syntax keyword omnimarkRule xmlns-change +# }}} +# Libraries {{{ +# ombase64 +syntax match omnimarkLibrary "\v\c<%(base64[.])%([orw])%([[:print:]])+" +# ombcd +# (NB: abs, ceiling, exp, floor, ln, log10, round, sqrt, and truncate +# are all operators) +syntax match omnimarkLibrary "\v\c<%(ombcd-version)" +# ombessel +syntax match omnimarkLibrary "\v\c<%(j0|j1|jn|y0|y1|yn)" +# ombig5 +syntax match omnimarkLibrary "\v\c<%(big5[.])%([orw])%([[:print:]])+" +# omblowfish and omffblowfish +syntax match omnimarkLibrary "\v\c<%(blowfish[.])%([deorsw])%(\a|-)+" +# omcgi +syntax match omnimarkLibrary "\v\c<%(cgiGet)%([EQ])\a+" +# omff8859 +syntax match omnimarkLibrary "\v\c<%(iso8859[.])%([iorw])%([[:print:]])+" +# omfloat +# (NB: uses same operator names as ombcd except for the following) +syntax match omnimarkLibrary "\v\c<%(is-nan)" +syntax match omnimarkLibrary "\v\c<%(omfloat-version)" +# omdate +syntax match omnimarkLibrary "\v\c<%(add-to-ymdhms)" +syntax match omnimarkLibrary "\v\c<%(arpadate-to-ymdhms)" +syntax match omnimarkLibrary "\v\c<%(format-ymdhms)" +syntax match omnimarkLibrary "\v\c<%(now-as-ymdhms)" +syntax match omnimarkLibrary "\v\c<%(round-down-ymdhms)" +syntax match omnimarkLibrary "\v\c<%(round-up-ymdhms)" +syntax match omnimarkLibrary "\v\c<%(ymdhms-)%([adjmst])%(\a|-)+" +syntax match omnimarkLibrary "\v\c<%(ymd-weekday)" +# omdb +syntax match omnimarkLibrary "\v\c<%(db[.])%([acdefimopqrstuw])%(\a|-|1)+" +# omffeuc +syntax match omnimarkLibrary "\v\c<%(euc[.])%([orw])%(\a|-)+" +# omffjis +syntax match omnimarkLibrary "\v\c<%(jis[.])%([orw])%(\a|-)+" +# omffutf16 and omffutf32 +syntax match omnimarklibrary "\v\c<%(utf)%(16|32)%([.])%([orw])%(\a|-)+" +# omfloat +syntax match omnimarklibrary "\v\C<%(FP_)%([a-z])+\d?" +# omfsys +syntax match omnimarkLibrary "\v\C<%(FS_)%([CDGLMR])\a+" +# omftp +syntax match omnimarkLibrary "\v\c<%(FTP)%([CIL])\a+" +# omhttp +syntax match omnimarkLibrary "\v\c<%(Http)%([CORS])\a+" +# omiobuf +syntax match omnimarkLibrary "\v\c<%(iobuf[.])%([brw])\a+" +# omldap +syntax match omnimarkLibrary "\v\c<%(ldap[.])%([acdemnors])%(\a|-)+" +# omprocess +syntax match omnimarkLibrary "\v\c<%(command-line)" +syntax match omnimarkLibrary "\v\c<%(executable-name)" +syntax match omnimarkLibrary "\v\c<%(execute)" +syntax match omnimarkLibrary "\v\c<%(glob)" +syntax match omnimarkLibrary "\v\c<%(omprocess-version)" +# omrandom +syntax match omnimarkLibrary "\v\c<%(random[.])%([eosu])%(\a|-)+" +# omunicode +syntax match omnimarkLibrary "\v\c<%(unicode[.])%([bgo])%(\a|-)+" +# omutf8 +syntax match omnimarkLibrary "\v\c<%(utf8[.])%([bceilmos])%(\a|8|-)+" +# omioe/omfio +syntax match omnimarkLibrary "\v\c<%(get-exception-status)" +syntax match omnimarkLibrary "\v\c<%(io-exception-text)" +syntax match omnimarkLibrary "\v\c<%(new-io-exception)" +syntax match omnimarkLibrary "\v\c<%(set-voluntary-end-exception)" +syntax match omnimarkLibrary "\v\c<%(%(Big5|euc|jis|sjis|utf16)%(-))?%(%(in|out)put-file)" +# omioprotocol +syntax match omnimarkLibrary "\v\c<%(IOProtocol)%([EILMS])\a+" +# ommail +syntax match omnimarkLibrary "\v\c<%(Mail)%([ILO]\a+)" +# omtrig +syntax match omnimarkLibrary "\v\c<%(a)?%(cos%(h)?|sin%(h)?|tan%(h|2)?|hypot)" +# omnetutl +syntax match omnimarkLibrary "\v\c<%(from-net-long)" +syntax match omnimarkLibrary "\v\c<%(net-long)" +syntax match omnimarkLibrary "\v\c<%(NET)%([GIL]\a+)" +syntax match omnimarkLibrary "\v\c<%(to-net-long)" +# omnetutil +syntax match omnimarkLibrary "\v\c<%(netutil[.])%([fhnot]%(\a|3|2|-)+)" +# omoci +syntax match omnimarkLibrary "\v\c<%(OCI_)%([GLoS]\a+)" +# omodbc +syntax match omnimarkLibrary "\v\c<%(SQL)%([_])?%([ABCDEFGLMNPRST][[:alpha:]]+)" +# omsocat +syntax match omnimarkLibrary "\v\c<%(socat-[clr-])%([[:alpha:]]+)" +# omsort +syntax match omnimarkLibrary "\v\c<%(sort[.][os])%(\a|-)+" +# omutil +syntax match omnimarkLibrary "\v\c<%(UTIL[_.][EGLmopRSU])%(\a|-)+" +# omvfs +syntax match omnimarkLibrary "\v\c<%(vfs[.][cdflmorstuw])%(\a|-)+" +# tcp +syntax match omnimarkLibrary "\v\c<%(TCP)%([.])?%([acdegilmoprstw][[:alpha:]-]+)" +# uri +syntax match omnimarkLibrary "\v\c<%(uri[.])%([ceopr])%(\a|-)+" +# wsb +syntax match omnimarkLibrary "\v\c<%(wsb[.])%([acdfhrsw])%(\a|-)+" +# }}} +# Comments {{{ +# ------- +syntax region omnimarkComment start=";" end="$" +# }}} +# Strings and format-modifiers {{{ +syntax region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape +syntax region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape + # This handles format items inside strings: + # NB: escape _quoted-character_ allows a new character to be used to + # indicate a special character or a format item, rather than the normal %. + # The use of escape is deprecated in general, because it leads to + # non-standard OmniMark code that can be difficult to understand. It has + # not be handled here as it would be almost impossible to do so. + # dynamic: %a %b %d %g %i %p %q %v %x %w %y + # a - integer data type formatting + # b - integer data type formatting + # c - parsed data formatting + # d - integer data type formatting, BCD data type formatting + # g - string data formatting + # i - integer data type formatting + # p - parsed data formatting + # q - parsed data formatting + # v - parsed data formatting + # x - deprecated format command used instead of g + # y - symbol declaration + # @ - macro arguments + # static: %% %_ %n %t %# %) %" %' %/ %[ %] %@%% + # %% - insert an explicit percent sign + # %_ - insert an explicit space character + # %n - insert an explicit newline character + # %t - insert an explicit tab character + # %0# through to %255# - insert an explicit byte with given value + # %{...}—a sequence of characters, e.g., %16r{0d, 0a} + # %#—insert an explicit octothorpe character (#) + # %)—insert an explicit closing parenthesis + # %"—insert an explicit double quote character + # %'—insert an explicit single quote character + # %/—indicates a point where line breaking can occur + # %[ and %]—protect the delimited text from line breaking + # %@%—insert an explicit percent sign inside a macro expansion + # % format-modifier a + syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f))?%(j|k|l|u|w)*)?a)= + # % format-modifier b + syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f))?%(\d)?)?b)= + # % format-modifier c + syntax match omnimarkEscape contained =\v\C%(%(\%%(h|l|u|s|z)*c))= + # % format-modifier d + syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f|r|s)?)*%(j|k|l|u|z)*)?d)= + # % format-modifier g + syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f|r|s)?)*%(j|k|l|u|z)*)?g)= + # % format-modifier + syntax match omnimarkEscape contained =\v\C%(%(\%[abdgipqvxwy%_nt#)"'/\[\]])|%(\%\@\%)|%(\%\d+#)|\%%(\d+r[{]%([0-9A-z, ]+)}))+= + # }}} +# Number {{{ +syntax match omnimarkNumber "\v([[:alpha:]]+)@\|<\|%\|\~\)=\?" +syn match prqlOperator display "&&\|||" +syn keyword prqlInclude module + +" Annotations +syn match prqlAnnotation "@" display contained +syn match prqlAnnotationName "@\s*{\h\%(\w\|=\)*}" display contains=prqlAnnotation + +syn match prqlFunction "\h\w*" display contained + +syn match prqlComment "#.*$" contains=prqlTodo,@Spell +syn keyword prqlTodo FIXME NOTE TODO XXX contained + +" Triple-quoted strings can contain doctests. +syn region prqlString matchgroup=prqlQuotes + \ start=+\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=prqlEscape,@Spell +syn region prqlString matchgroup=prqlTripleQuotes + \ start=+\z('''\|"""\)+ end="\z1" keepend + \ contains=prqlEscape,prqlSpaceError,prqlDoctest,@Spell +syn region prqlFString matchgroup=prqlQuotes + \ start=+[f]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=prqlEscape,@Spell +syn region prqlFString matchgroup=prqlTripleQuotes + \ start=+f\z('''\|"""\)+ end="\z1" keepend + \ contains=prqlEscape,prqlSpaceError,prqlDoctest,@Spell +syn region prqlRString matchgroup=prqlQuotes + \ start=+r\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=@Spell +syn region prqlRString matchgroup=prqlTripleQuotes + \ start=+r\z('''\|"""\)+ end="\z1" keepend + \ contains=prqlSpaceError,prqlDoctest,@Spell +syn region prqlSString matchgroup=prqlQuotes + \ start=+s\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=@Spell +syn region prqlSString matchgroup=prqlTripleQuotes + \ start=+s\z('''\|"""\)+ end="\z1" keepend + \ contains=prqlSpaceError,prqlDoctest,@Spell + +syn match prqlEscape +\\[bfnrt'"\\]+ contained +syn match prqlEscape "\\\o\{1,3}" contained +syn match prqlEscape "\\x\x\{2}" contained +syn match prqlEscape "\%(\\u\x\{1,6}\)" contained +syn match prqlEscape "\\$" + +" It is very important to understand all details before changing the +" regular expressions below or their order. +" The word boundaries are *not* the floating-point number boundaries +" because of a possible leading or trailing decimal point. +" The expressions below ensure that all valid number literals are +" highlighted, and invalid number literals are not. For example, +" +" - a decimal point in '4.' at the end of a line is highlighted, +" - a second dot in 1.0.0 is not highlighted, +" - 08 is not highlighted, +" - 08e0 or 08j are highlighted, +" +if !exists("prql_no_number_highlight") + " numbers (including complex) + syn match prqlNumber "\<0[oO]\%(_\=\o\)\+\>" + syn match prqlNumber "\<0[xX]\%(_\=\x\)\+\>" + syn match prqlNumber "\<0[bB]\%(_\=[01]\)\+\>" + syn match prqlNumber "\<\%([1-9]\%(_\=\d\)*\|0\+\%(_\=0\)*\)\>" + syn match prqlNumber "\<\d\%(_\=\d\)*[jJ]\>" + syn match prqlNumber "\<\d\%(_\=\d\)*[eE][+-]\=\d\%(_\=\d\)*[jJ]\=\>" + syn match prqlNumber + \ "\<\d\%(_\=\d\)*\.\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\%(\W\|$\)\@=" + syn match prqlNumber + \ "\%(^\|\W\)\zs\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\>" +endif + +" https://prql-lang.org/book/reference/stdlib/transforms/ +" +" PRQL built-in functions are in alphabetical order. +" + +" Built-in functions +syn keyword prqlBuiltin aggregate derive filter from group join select sort take window + +" Built-in types +syn keyword prqlType bool float int int8 int16 int32 int64 int128 text date time timestamp + +" avoid highlighting attributes as builtins +syn match prqlAttribute /\.\h\w*/hs=s+1 + \ contains=ALLBUT,prqlBuiltin,prqlFunction + \ transparent + +if exists("prql_space_error_highlight") + " trailing whitespace + syn match prqlSpaceError display excludenl "\s\+$" + " mixed tabs and spaces + syn match prqlSpaceError display " \+\t" + syn match prqlSpaceError display "\t\+ " +endif + +" Do not spell doctests inside strings. +" Notice that the end of a string, either ''', or """, will end the contained +" doctest too. Thus, we do *not* need to have it as an end pattern. +if !exists("prql_no_doctest_highlight") + if !exists("prql_no_doctest_code_highlight") + syn region prqlDoctest + \ start="^\s*>>>\s" end="^\s*$" + \ contained contains=ALLBUT,prqlDoctest,prqlFunction,@Spell + syn region prqlDoctestValue + \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" + \ contained + else + syn region prqlDoctest + \ start="^\s*>>>" end="^\s*$" + \ contained contains=@NoSpell + endif +endif + +" The default highlight links. Can be overridden later. +hi def link prqlBoolean Boolean +hi def link prqlStatement Statement +hi def link prqlType Type +hi def link prqlConditional Conditional +hi def link prqlRepeat Repeat +hi def link prqlOperator Operator +hi def link prqlInclude Include +hi def link prqlAnnotation Define +hi def link prqlAnnotationName Function +hi def link prqlFunction Function +hi def link prqlComment Comment +hi def link prqlTodo Todo +hi def link prqlSelf Constant +hi def link prqlString String +hi def link prqlFString String +hi def link prqlRString String +hi def link prqlSString String +hi def link prqlQuotes String +hi def link prqlTripleQuotes prqlQuotes +hi def link prqlEscape Special +if !exists("prql_no_number_highlight") + hi def link prqlNumber Number +endif +if !exists("prql_no_builtin_highlight") + hi def link prqlBuiltin Function +endif +if exists("prql_space_error_highlight") + hi def link prqlSpaceError Error +endif +if !exists("prql_no_doctest_highlight") + hi def link prqlDoctest Special + hi def link prqlDoctestValue Define +endif + +let b:current_syntax = "prql" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set sw=2 sts=2 ts=8 noet: diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index 67268cdfe3..37d1c0a83c 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -7,6 +7,7 @@ " 2024 Nov 03 by Aliaksei Budavei <0x000c70 AT gmail DOT com> (improved bracket expressions, #15941) " 2025 Jan 06 add $PS0 to bashSpecialVariables (#16394) " 2025 Jan 18 add bash coproc, remove duplicate syn keywords (#16467) +" 2025 Mar 21 update shell capability detection (#16939) " Version: 208 " Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax @@ -17,6 +18,9 @@ if exists("b:current_syntax") finish endif +" Ensure this is set unless we find another shell +let b:is_sh = 1 + " If the shell script itself specifies which shell to use, use it if getline(1) =~ '\' let b:is_kornshell = 1 @@ -24,55 +28,45 @@ elseif getline(1) =~ '\' let b:is_bash = 1 elseif getline(1) =~ '\' let b:is_dash = 1 -elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") && !exists("g:is_dash") - " user did not specify which shell to use, and - " the script itself does not specify which shell to use. FYI: /bin/sh is ambiguous. - " Assuming /bin/sh is executable, and if its a link, find out what it links to. - let s:shell = "" - if executable("/bin/sh") - let s:shell = resolve("/bin/sh") - elseif executable("/usr/bin/sh") - let s:shell = resolve("/usr/bin/sh") - endif - if s:shell =~ '\' - let b:is_kornshell= 1 - elseif s:shell =~ '\' - let b:is_bash = 1 - elseif s:shell =~ '\' - let b:is_dash = 1 - endif - unlet s:shell -endif - " handling /bin/sh with is_kornshell/is_sh {{{1 " b:is_sh will be set when "#! /bin/sh" is found; " However, it often is just a masquerade by bash (typically Linux) " or kornshell (typically workstations with Posix "sh"). -" So, when the user sets "g:is_bash", "g:is_kornshell", -" or "g:is_posix", a b:is_sh is converted into b:is_bash/b:is_kornshell, -" respectively. -if !exists("b:is_kornshell") && !exists("b:is_bash") && !exists("b:is_dash") - if exists("g:is_posix") && !exists("g:is_kornshell") - let g:is_kornshell= g:is_posix +" So, when the user sets "g:is_kornshell", "g:is_bash", +" "g:is_posix" or "g:is_dash", a b:is_sh is converted into +" b:is_kornshell/b:is_bash/b:is_posix/b:is_dash, respectively. +elseif !exists("b:is_kornshell") && !exists("b:is_bash") && !exists("b:is_posix") && !exists("b:is_dash") + if exists("g:is_kornshell") + let b:is_kornshell= 1 + elseif exists("g:is_bash") + let b:is_bash= 1 + elseif exists("g:is_dash") + let b:is_dash= 1 + elseif exists("g:is_posix") + let b:is_posix= 1 + elseif exists("g:is_sh") + let b:is_sh= 1 + else + " user did not specify which shell to use, and + " the script itself does not specify which shell to use. FYI: /bin/sh is ambiguous. + " Assuming /bin/sh is executable, and if its a link, find out what it links to. + let s:shell = "" + if executable("/bin/sh") + let s:shell = resolve("/bin/sh") + elseif executable("/usr/bin/sh") + let s:shell = resolve("/usr/bin/sh") endif - if exists("g:is_kornshell") - let b:is_kornshell= 1 - if exists("b:is_sh") - unlet b:is_sh - endif - elseif exists("g:is_bash") - let b:is_bash= 1 - if exists("b:is_sh") - unlet b:is_sh - endif - elseif exists("g:is_dash") - let b:is_dash= 1 - if exists("b:is_sh") - unlet b:is_sh - endif + if s:shell =~ '\' + let b:is_kornshell= 1 + elseif s:shell =~ '\' + let b:is_bash = 1 + elseif s:shell =~ '\' + let b:is_dash = 1 else - let b:is_sh= 1 + let b:is_posix = 1 endif + unlet s:shell + endif endif " if b:is_dash, set b:is_posix too @@ -80,6 +74,12 @@ if exists("b:is_dash") let b:is_posix= 1 endif +if exists("b:is_kornshell") || exists("b:is_bash") + if exists("b:is_sh") + unlet b:is_sh + endif +endif + " set up default g:sh_fold_enabled {{{1 " ================================ if !exists("g:sh_fold_enabled") diff --git a/runtime/syntax/solidity.vim b/runtime/syntax/solidity.vim index a46d041a10..5391bba707 100644 --- a/runtime/syntax/solidity.vim +++ b/runtime/syntax/solidity.vim @@ -2,10 +2,11 @@ " Language: Solidity " Maintainer: Cothi (jiungdev@gmail.com) " Original Author: tomlion (https://github.com/tomlion/vim-solidity/blob/master/syntax/solidity.vim) -" Last Change: 2022 Sep 27 +" Last Change: 2025 Mar 25 " " Contributors: " Modified by thesis (https://github.com/thesis/vim-solidity/blob/main/indent/solidity.vim) +" Modified by S0AndS0 (https://github.com/S0AndS0/vim/blob/syntax-solidity-updates/runtime/syntax/solidity.vim) if exists("b:current_syntax") finish @@ -15,7 +16,7 @@ endif syn keyword solKeyword abstract anonymous as break calldata case catch constant constructor continue default switch revert require syn keyword solKeyword ecrecover addmod mulmod keccak256 syn keyword solKeyword delete do else emit enum external final for function if immutable import in indexed inline -syn keyword solKeyword interface internal is let match memory modifier new of payable pragma private public pure override virtual +syn keyword solKeyword interface internal is let match memory modifier new of payable pragma private public pure override virtual transient syn keyword solKeyword relocatable return returns static storage struct throw try type typeof using syn keyword solKeyword var view while @@ -158,6 +159,15 @@ hi def link solEvent Type hi def link solEventName Function hi def link solEventArgSpecial Label +" Error +syn match solError /\/ nextgroup=solErrorName,solErrorArgs skipwhite +syn match solErrorName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=solErrorArgs skipwhite +syn region solErrorArgs contained matchgroup=solFuncParens start='(' end=')' contains=solErrorArgCommas,solBuiltinType skipwhite skipempty +syn match solErrorArgCommas contained ',' + +hi def link solError Type +hi def link solErrorName Function + " Comment syn keyword solCommentTodo TODO FIXME XXX TBD contained syn match solNatSpec contained /@title\|@author\|@notice\|@dev\|@param\|@inheritdoc\|@return/ diff --git a/runtime/syntax/spajson.vim b/runtime/syntax/spajson.vim new file mode 100644 index 0000000000..78ade5f929 --- /dev/null +++ b/runtime/syntax/spajson.vim @@ -0,0 +1,50 @@ +" Vim syntax file +" Language: SPA JSON +" Maintainer: David Mandelberg +" Last Change: 2025 Mar 22 +" +" Based on parser code: +" https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/spa/include/spa/utils/json-core.h + +if exists("b:current_syntax") + finish +endif +let b:current_syntax = "spajson" + +syn sync minlines=500 + +" Treat the __BARE parser state as a keyword, to make it easier to match +" keywords and numbers only when they're not part of a larger __BARE section. +" E.g., v4l2 and pipewire-0 probably shouldn't highlight anything as +" spajsonInt. +syn iskeyword 32-126,^ ,^",^#,^:,^,,^=,^],^},^\ + +syn match spajsonEscape "\\["\\/bfnrt]" contained +syn match spajsonEscape "\\u[0-9A-Fa-f]\{4}" contained + +syn match spajsonError "." +syn match spajsonBare "\k\+" +syn match spajsonComment "#.*$" contains=@Spell +syn region spajsonString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=spajsonEscape +syn match spajsonKeyDelimiter "[:=]" +syn region spajsonArray matchgroup=spajsonBracket start="\[" end="]" contains=ALLBUT,spajsonKeyDelimiter fold +syn region spajsonObject matchgroup=spajsonBrace start="{" end="}" contains=ALL fold +syn match spajsonFloat "\<[+-]\?[0-9]\+\(\.[0-9]*\)\?\([Ee][+-]\?[0-9]\+\)\?\>" +syn match spajsonFloat "\<[+-]\?\.[0-9]\+\([Ee][+-]\?[0-9]\+\)\?\>" +syn match spajsonInt "\<[+-]\?0[Xx][0-9A-Fa-f]\+\>" +syn match spajsonInt "\<[+-]\?[1-9][0-9]*\>" +syn match spajsonInt "\<[+-]\?0[0-7]*\>" +syn keyword spajsonBoolean true false +syn keyword spajsonNull null +syn match spajsonWhitespace "[\x00\t \r\n,]" + +hi def link spajsonBoolean Boolean +hi def link spajsonBrace Delimiter +hi def link spajsonBracket Delimiter +hi def link spajsonComment Comment +hi def link spajsonError Error +hi def link spajsonEscape SpecialChar +hi def link spajsonFloat Float +hi def link spajsonInt Number +hi def link spajsonNull Constant +hi def link spajsonString String diff --git a/runtime/syntax/tera.vim b/runtime/syntax/tera.vim new file mode 100644 index 0000000000..3fcc21df49 --- /dev/null +++ b/runtime/syntax/tera.vim @@ -0,0 +1,94 @@ +" Vim syntax file +" Language: Tera +" Maintainer: Muntasir Mahmud +" Last Change: 2025 Mar 11 + +if exists("b:current_syntax") + finish +endif + +" Detect the underlying language based on filename pattern +" For files like file.html.tera, we want to load html syntax +let s:filename = expand("%:t") +let s:dotpos = strridx(s:filename, '.', strridx(s:filename, '.tera') - 1) +let s:underlying_filetype = "" + +if s:dotpos != -1 + let s:underlying_ext = s:filename[s:dotpos+1:strridx(s:filename, '.tera')-1] + if s:underlying_ext != "" && s:underlying_ext != "tera" + let s:underlying_filetype = s:underlying_ext + endif +endif + +" Load the underlying language syntax if detected +if s:underlying_filetype != "" + execute "runtime! syntax/" . s:underlying_filetype . ".vim" + unlet! b:current_syntax +else + " Default to HTML if no specific language detected + runtime! syntax/html.vim + unlet! b:current_syntax +endif + +" Tera comment blocks: {# comment #} +syn region teraCommentBlock start="{#" end="#}" contains=@Spell + +" Tera statements: {% if condition %} +syn region teraStatement start="{%" end="%}" contains=teraKeyword,teraString,teraNumber,teraFunction,teraBoolean,teraFilter,teraOperator + +" Tera expressions: {{ variable }} +syn region teraExpression start="{{" end="}}" contains=teraString,teraNumber,teraFunction,teraBoolean,teraFilter,teraOperator,teraIdentifier + +" Special handling for raw blocks - content inside shouldn't be processed +syn region teraRawBlock start="{% raw %}" end="{% endraw %}" contains=TOP,teraCommentBlock,teraStatement,teraExpression + +" Control structure keywords +syn keyword teraKeyword contained if else elif endif for endfor in macro endmacro +syn keyword teraKeyword contained block endblock extends include import set endset +syn keyword teraKeyword contained break continue filter endfilter raw endraw + +" Identifiers - define before operators for correct priority +syn match teraIdentifier contained "\<\w\+\>" + +" Operators used in expressions and statements +syn match teraOperator contained "==\|!=\|>=\|<=\|>\|<\|+\|-\|*\|/" +syn match teraOperator contained "{\@" +syn match teraNumber contained "\<\d\+\.\d\+\>" + +" Boolean values +syn keyword teraBoolean contained true false + +" Highlighting links +hi def link teraCommentBlock Comment +hi def link teraKeyword Statement +hi def link teraOperator Operator +hi def link teraFunction Function +hi def link teraIdentifier Identifier +hi def link teraString String +hi def link teraNumber Number +hi def link teraBoolean Boolean +hi def link teraFilter Function +hi def link teraStatement Statement +hi def link teraExpression Statement + +" Clean up script-local variables +unlet s:filename +unlet s:dotpos +if exists("s:underlying_ext") + unlet s:underlying_ext +endif +unlet s:underlying_filetype + +let b:current_syntax = "tera" diff --git a/runtime/syntax/testdir/README.txt b/runtime/syntax/testdir/README.txt index 6703228b9b..e4f3945c8f 100644 --- a/runtime/syntax/testdir/README.txt +++ b/runtime/syntax/testdir/README.txt @@ -67,8 +67,8 @@ If there is no further setup required, you can now run all tests: make test -Or you can run the tests for a filetype only by passing its file extension as -another target, e.g. "java", before "test": +Or you can run the tests for a filetype only by passing its name as another +target, e.g. "java", before "test": make java test @@ -117,7 +117,7 @@ Adjusting a syntax plugin test If you make changes to the syntax plugin, you should add code to the input file to see the effect of these changes. So that the effect of the changes -are covered by the test. You can follow these steps: +is covered by the test. You can follow these steps: 1. Edit the syntax plugin somewhere in your personal setup. Use a file somewhere to try out the changes. @@ -133,19 +133,19 @@ are covered by the test. You can follow these steps: Fix the syntax plugin until the result is good. 2. Edit the input file for your language to add the items you have improved. (TODO: how to add another screendump?). - Run the tests and you should get failures. Like with the previous step, - carefully check that the new screendumps in the "failed" directory are - good. Update the syntax plugin and the input file until the highlighting - is good and you can see the effect of the syntax plugin improvements. Then - move the screendumps from the "failed" to the "dumps" directory. Now "make - test" should succeed. + Run the tests and you should get failures. (You may opt for faster failure + by assigning a small number, e.g. "1", to a VIM_SYNTAX_TEST_WAIT_TIME + environment variable and gambling away an "uncertain" possibility of + success.) Like with the previous step, carefully check that the new + screendumps in the "failed" directory are good. Update the syntax plugin + and the input file until the highlighting is good and you can see the + effect of the syntax plugin improvements. Then move the screendumps from + the "failed" to the "dumps" directory. Now "make test" should succeed. 3. Prepare a pull request with the modified files: - syntax plugin: syntax/{name}.vim - Vim setup file: syntax/testdir/input/setup/{name}.vim (if any) - test input file: syntax/testdir/input/{name}.{ext} - - test dump files: syntax/testdir/dumps/{name}_00.dump - syntax/testdir/dumps/{name}_01.dump (if any) - ... + - test dump files: syntax/testdir/dumps/{name}_*.dump As an extra check you can temporarily put back the old syntax plugin and verify that the tests fail. Then you know your changes are covered by the diff --git a/runtime/syntax/testdir/dumps/c_character_constant_00.vim b/runtime/syntax/testdir/dumps/c_character_constant_00.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_character_constant_00.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/c_character_constant_01.vim b/runtime/syntax/testdir/dumps/c_character_constant_01.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_character_constant_01.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/c_character_constant_02.vim b/runtime/syntax/testdir/dumps/c_character_constant_02.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_character_constant_02.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/c_string_literal_00.vim b/runtime/syntax/testdir/dumps/c_string_literal_00.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_string_literal_00.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/c_string_literal_01.vim b/runtime/syntax/testdir/dumps/c_string_literal_01.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_string_literal_01.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/c_string_literal_02.vim b/runtime/syntax/testdir/dumps/c_string_literal_02.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_string_literal_02.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/c_string_literal_03.vim b/runtime/syntax/testdir/dumps/c_string_literal_03.vim new file mode 100644 index 0000000000..44191f8816 --- /dev/null +++ b/runtime/syntax/testdir/dumps/c_string_literal_03.vim @@ -0,0 +1,2 @@ +" Replace known non-Latin-1 characters. +%s+[🍌猫�]+?+ge diff --git a/runtime/syntax/testdir/dumps/tera_00.dump b/runtime/syntax/testdir/dumps/tera_00.dump new file mode 100644 index 0000000000..62ac461be4 --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_00.dump @@ -0,0 +1,20 @@ +><+0#0000e05#ffffff0|!|D|O|C|T|Y|P|E| |h|t|m|l|>| +0#0000000&@59 +|<+0#00e0e07&|h+0#af5f00255&|t|m|l| +0#00e0e07&|l+0#00e0003&|a|n|g|=+0#00e0e07&|"+0#e000002&|e|n|"|>+0#00e0e07&| +0#0000000&@58 +|<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@68 +| +0#e000e06&@3|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|c+0#00e0003&|h|a|r|s|e|t|=+0#00e0e07&|"+0#e000002&|U|T|F|-|8|"|>+0#00e0e07&| +0#0000000&@48 +| +0#e000e06&@3|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|v|i|e|w|p|o|r|t|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|w|i|d|t|h|=|d|e|v|i|c|e|-|w|i|d|t|h|,| |i|n|i|t|i|a|l|-|s|c|a|l|e|=|1|.|0|"|>+0#00e0e07&| +0#0000000& +| +0#e000e06&@3|<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|{+0#e000e06&@1| |p|a|g|e|_|t|i|t|l|e| ||| |d|e|f|a|u|l|t|(|v|a|l|u|e|=|"|T|e|r|a| |T|e|s|t|"|)| |}@1|<+0#00e0e07&|/|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&| +0#0000000&@10 +| +0#e000e06&@3|{|%| |i|f| |i|n|c|l|u|d|e|_|s|t|y|l|e|s| |%|}| +0#0000000&@47 +| +0#e000e06&@3|<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@63 +@8|b+0#af5f00255&|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&@60 +@12|f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |{+0#00e0e07&@1| +0#0000000&|f|o|n|t|_+0#0000e05&|f+0#0000000&|a|m|i|l|y| ||| |d|e|f|a|u|l|t|(|v|a|l|u|e|=|"+0#e000002&|s|a|n|s|-|s|e|r|i|f|"|)+0#0000000&| |}+0#00e0e07&@1|;+0#0000000&| @1 +@12|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|3@2|;+0#0000000&| @50 +@12|l+0#00e0003&|i|n|e|-|h|e|i|g|h|t|:+0#0000000&| |1+0#e000002&|.|6|;+0#0000000&| @45 +@8|}+0#00e0e07&| +0#0000000&@65 +@8|.+0#00e0e07&|c|o|n|t|a|i|n|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&@54 +@12|w+0#00e0003&|i|d|t|h|:+0#0000000&| |8+0#e000002&|0|%|;+0#0000000&| @51 +@12|m+0#00e0003&|a|r|g|i|n|:+0#0000000&| |0+0#e000002&| +0#0000000&|a+0#e000002&|u|t|o|;+0#0000000&| @47 +@8|}+0#00e0e07&| +0#0000000&@65 +@8|{+0#00e0e07&|%+0#0000000&| |i|f| |d|a|r|k|_+0#0000e05&|m+0#0000000&|o|d|e| |%|}+0#00e0e07&| +0#0000000&@48 +@8|b+0#af5f00255&|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&@60 +@57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/tera_01.dump b/runtime/syntax/testdir/dumps/tera_01.dump new file mode 100644 index 0000000000..e0f3cbdcd8 --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_01.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@7|.+0#00e0e07&|c|o|n|t|a|i|n|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&@54 +@12|w+0#00e0003&|i|d|t|h|:+0#0000000&| |8+0#e000002&|0|%|;+0#0000000&| @51 +@12|m+0#00e0003&|a|r|g|i|n|:+0#0000000&| |0+0#e000002&| +0#0000000&|a+0#e000002&|u|t|o|;+0#0000000&| @47 +@8|}+0#00e0e07&| +0#0000000&@65 +@8|{+0#00e0e07&|%+0#0000000&| |i|f| |d|a|r|k|_+0#0000e05&|m+0#0000000&|o|d|e| |%|}+0#00e0e07&| +0#0000000&@48 +@8>b+0#af5f00255&|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&@60 +@12|b+0#00e0003&|a|c|k|g|r|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|2@2|;+0#0000000&| @39 +@12|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|e@2|;+0#0000000&| @50 +@8|}+0#00e0e07&| +0#0000000&@65 +@8|{+0#00e0e07&|%+0#0000000&| |e|n|d|i|f| |%|}+0#00e0e07&| +0#0000000&@55 +@4|<+0#00e0e07&|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@62 +| +0#e000e06&@3|{|%| |e|n|d|i|f| |%|}| +0#0000000&@59 +|<+0#00e0e07&|/|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@67 +|<+0#00e0e07&|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@68 +@4|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|c|o|n|t|a|i|n|e|r|"|>+0#00e0e07&| +0#0000000&@47 +@8|{+0#0000e05&|#| |H|e|a|d|e|r| |S|e|c|t|i|o|n| |w|i|t|h| |v|a|r|i|a|b|l|e| |i|n|t|e|r|p|o|l|a|t|i|o|n| |#|}| +0#0000000&@18 +@8|<+0#00e0e07&|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&| +0#0000000&@58 +@12|<+0#00e0e07&|h+0#af5f00255&|1|>+0#00e0e07&|{+0#e000e06&@1| |h|e|a|d|e|r|_|t|e|x|t| ||| |u|p@1|e|r| |}@1|<+0#00e0e07&|/|h+0#af5f00255&|1|>+0#00e0e07&| +0#0000000&@28 +@12|{+0#af5f00255&|%| |i|f| |s|u|b|h|e|a|d|e|r| |%|}| +0#0000000&@44 +@57|1|9|,|9| @10|8|%| diff --git a/runtime/syntax/testdir/dumps/tera_02.dump b/runtime/syntax/testdir/dumps/tera_02.dump new file mode 100644 index 0000000000..374fadb2ae --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_02.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@11|{+0#af5f00255&|%| |i|f| |s|u|b|h|e|a|d|e|r| |%|}| +0#0000000&@44 +@16|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|{+0#e000e06&@1| |s|u|b|h|e|a|d|e|r| |}@1|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@34 +@12|{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@51 +@8|<+0#00e0e07&|/|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&| +0#0000000&@57 +@75 +@8>{+0#0000e05&|#| |N|a|v|i|g|a|t|i|o|n| |e|x|a|m|p|l|e| |w|i|t|h| |f|o|r| |l|o@1|p| |#|}| +0#0000000&@28 +@8|<+0#00e0e07&|n+0#af5f00255&|a|v|>+0#00e0e07&| +0#0000000&@61 +@12|<+0#00e0e07&|u+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@58 +@16|{+0#af5f00255&|%| |f|o|r| |i|t|e|m| |i|n| |n|a|v|i|g|a|t|i|o|n| |%|}| +0#0000000&@30 +@20|<+0#00e0e07&|l+0#af5f00255&|i| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|{@1| |l|o@1|p|.|i|n|d|e|x|0| |=@1| |c|u|r@1|e|n|t|_|p|a|g|e| |?| |'|a|c|t|i|v|e|'| |:| +|'@1| |}@1|"|>+0#00e0e07&| +0#0000000&@67 +@24|<+0#00e0e07&|a+0#af5f00255&| +0#00e0e07&|h+0#00e0003&|r|e|f|=+0#00e0e07&|"+0#e000002&|{@1| |i|t|e|m|.|u|r|l| |}@1|"|>+0#00e0e07&|{+8#e000e06&@1| |i|t|e|m|.|t|i|t|l|e| |}@1|<+0#00e0e07&|/|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@5 +@20|<+0#00e0e07&|/|l+0#af5f00255&|i|>+0#00e0e07&| +0#0000000&@49 +@16|{+0#af5f00255&|%| |e|n|d|f|o|r| |%|}| +0#0000000&@46 +@12|<+0#00e0e07&|/|u+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@57 +@8|<+0#00e0e07&|/|n+0#af5f00255&|a|v|>+0#00e0e07&| +0#0000000&@60 +@75 +@8|{+0#0000e05&|#| |M|a|i|n| |c|o|n|t|e|n|t| |s|e|c|t|i|o|n| |w|i|t|h| |v|a|r|i|o|u|s| |t|e|m|p|l|a|t|e| |f|e|a|t|u|r|e|s| |#|}| +0#0000000&@9 +@8|<+0#00e0e07&|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@60 +@57|3|7|,|9| @9|2|1|%| diff --git a/runtime/syntax/testdir/dumps/tera_03.dump b/runtime/syntax/testdir/dumps/tera_03.dump new file mode 100644 index 0000000000..2e84203898 --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_03.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@7|<+0#00e0e07&|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@60 +@12|{+0#0000e05&|#| |C|o|n|d|i|t|i|o|n|a|l|s| |#|}| +0#0000000&@44 +@12|{+0#af5f00255&|%| |i|f| |u|s|e|r| |%|}| +0#0000000&@49 +@16|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|w|e|l|c|o|m|e|"|>+0#00e0e07&| +0#0000000&@33 +@20|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|W+0#e000e06&|e|l|c|o|m|e| |b|a|c|k|,| |{@1| |u|s|e|r|.|n|a|m|e| |}@1|!|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@15 +@20><+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|L+0#0000000&|a|s|t| |l|o|g|i|n|:| |{+0#af5f00255&@1| |u+0#00e0e07&|s|e|r|.+0#af5f00255&|l+0#00e0e07&|a|s|t|_|l|o|g|i|n| +0#af5f00255&||+0#00e0e07&| |d|a|t|e|(+0#af5f00255&|f+0#00e0e07&|o|r|m|a|t|=+0#af5f00255&|"+0#e000002&|%|Y|-|%|m|- +|%|d|"|)+0#af5f00255&| |}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@63 +@16|<+0#00e0e07&|/|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@48 +@12|{+0#af5f00255&|%| |e|l|i|f| |v|i|s|i|t|o|r|_|c|o|u|n|t| |>| |0+0#e000002&| +0#af5f00255&|%|}| +0#0000000&@34 +@16|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|w|e|l|c|o|m|e|"|>+0#00e0e07&| +0#0000000&@33 +@20|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|W+0#e000e06&|e|l|c|o|m|e|,| |v|i|s|i|t|o|r|!|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@28 +@20|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|Y+0#0000000&|o|u| |a|r|e| |v|i|s|i|t|o|r| |n|u|m|b|e|r| |{+0#af5f00255&@1| |v+0#00e0e07&|i|s|i|t|o|r|_|c|o|u|n|t| +0#af5f00255&|}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@5 +@16|<+0#00e0e07&|/|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@48 +@12|{+0#af5f00255&|%| |e|l|s|e| |%|}| +0#0000000&@52 +@16|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|w|e|l|c|o|m|e|"|>+0#00e0e07&| +0#0000000&@33 +@20|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|W+0#e000e06&|e|l|c|o|m|e| |t|o| |o|u|r| |s|i|t|e|!|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@25 +@16|<+0#00e0e07&|/|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@48 +@12|{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@51 +@75 +@57|5|4|,|2|1| @8|3|2|%| diff --git a/runtime/syntax/testdir/dumps/tera_04.dump b/runtime/syntax/testdir/dumps/tera_04.dump new file mode 100644 index 0000000000..18fc2f3871 --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_04.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +@12|{+0#0000e05&|#| |M|a|c|r|o| |d|e|f|i|n|i|t|i|o|n| |a|n|d| |u|s|a|g|e| |#|}| +0#0000000&@30 +@12|{+0#af5f00255&|%| |m|a|c|r|o| |r+0#00e0e07&|e|n|d|e|r|_|i|t|e|m|(+0#af5f00255&|i|t|e|m|,| |f|e|a|t|u|r|e|d|=|f+0#e000002&|a|l|s|e|)+0#af5f00255&| |%|}| +0#0000000&@17 +@16|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|i|t|e|m| |{@1| |f|e|a|t|u|r|e|d| |?| |'|f|e|a|t|u|r|e|d|'| |:| |'@1| |}@1|"|>+0#00e0e07&| +0#0000000&@7 +@20|<+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|{+0#e000e06&@1| |i|t|e|m|.|t|i|t|l|e| |}@1|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@29 +@20><+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|{+0#af5f00255&@1| |i+0#00e0e07&|t|e|m|.+0#af5f00255&|d+0#00e0e07&|e|s|c|r|i|p|t|i|o|n| +0#af5f00255&||+0#00e0e07&| |t|r|u|n|c|a|t|e|(+0#af5f00255&|l+0#00e0e07&|e|n|g|t|h|=+0#af5f00255&|1+0#e000002&|0@1|)+0#af5f00255&| |}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@2 +@20|{+0#af5f00255&|%| |i|f| |i|t|e|m|.|t|a|g|s| |%|}| +0#0000000&@36 +@24|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|t|a|g|s|"|>+0#00e0e07&| +0#0000000&@32 +@28|{+0#af5f00255&|%| |f|o|r| |t|a|g| |i|n| |i|t|e|m|.|t|a|g|s| |%|}| +0#0000000&@20 +@32|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|t|a|g|"|>+0#00e0e07&|{+0#af5f00255&@1| |t+0#00e0e07&|a|g| +0#af5f00255&|}@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@8 +@28|{+0#af5f00255&|%| |e|n|d|f|o|r| |%|}| +0#0000000&@34 +@24|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@44 +@20|{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@43 +@16|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@52 +@12|{+0#af5f00255&|%| |e|n|d|m|a|c|r|o| |r|e|n|d|e|r|_|i|t|e|m| |%|}| +0#0000000&@36 +@75 +@12|{+0#0000e05&|#| |I|t|e|m|s| |s|e|c|t|i|o|n| |w|i|t|h| |m|a|c|r|o| |u|s|a|g|e| |#|}| +0#0000000&@26 +@12|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|i|t|e|m|s|"|>+0#00e0e07&| +0#0000000&@39 +@16|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|I+0#e000e06&|t|e|m|s| |(|{@1| |i|t|e|m|s| ||| |l|e|n|g|t|h| |}@1|)|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@21 +@57|7|1|,|2|1| @8|4@1|%| diff --git a/runtime/syntax/testdir/dumps/tera_05.dump b/runtime/syntax/testdir/dumps/tera_05.dump new file mode 100644 index 0000000000..8c8eb2112e --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_05.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@15|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|I+0#e000e06&|t|e|m|s| |(|{@1| |i|t|e|m|s| ||| |l|e|n|g|t|h| |}@1|)|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@21 +@75 +@16|{+0#af5f00255&|%| |f|o|r| |i|t|e|m| |i|n| |i|t|e|m|s| |%|}| +0#0000000&@35 +@20|{+0#af5f00255&@1| |s+0#00e0e07&|e|l|f|:+0#af5f00255&@1|r+0#00e0e07&|e|n|d|e|r|_|i|t|e|m|(+0#af5f00255&|i+0#00e0e07&|t|e|m|=+0#af5f00255&|i+0#00e0e07&|t|e|m|,+0#af5f00255&| |f+0#00e0e07&|e|a|t|u|r|e|d|=+0#af5f00255&|i+0#00e0e07&|t|e|m|.+0#af5f00255&|i+0#00e0e07&|d| +0#af5f00255&|=@1| |f+0#00e0e07&|e|a +|t|u|r|e|d|_|i|d|)+0#af5f00255&| |}@1| +0#0000000&@62 +> @74 +@20|{+0#af5f00255&|%| |i|f| |n|o|t| |l|o@1|p|.|l|a|s|t| |%|}| +0#0000000&@32 +@24|<+0#00e0e07&|h+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@46 +@20|{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@43 +@16|{+0#af5f00255&|%| |e|n|d|f|o|r| |%|}| +0#0000000&@46 +@12|<+0#00e0e07&|/|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@52 +@75 +@12|{+0#0000e05&|#| |R|a|w| |c|o|n|t|e|n|t| |t|h|a|t| |s|h|o|u|l|d|n|'|t| |b|e| |p|r|o|c|e|s@1|e|d| |#|}| +0#0000000&@17 +@12|{|%| |r|a|w| |%|}| @53 +@16|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|e|x|a|m|p|l|e|"|>+0#00e0e07&| +0#0000000&@37 +@20|T|h|e| |s|y|n|t|a|x| |{@1| |v|a|r|i|a|b|l|e| |}@1| |w|i|l@1| |n|o|t| |b|e| |p|r|o|c|e|s@1|e|d| |i|n| |r|a|w| +|b|l|o|c|k|s|.| @67 +@20|N|e|i|t|h|e|r| |w|i|l@1| |{|%| |c|o|n|t|r|o|l| |%|}| |s|t|r|u|c|t|u|r|e|s|.| @16 +@16|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@52 +@57|8@1|,|0|-|1| @7|5|6|%| diff --git a/runtime/syntax/testdir/dumps/tera_06.dump b/runtime/syntax/testdir/dumps/tera_06.dump new file mode 100644 index 0000000000..5bcafc951e --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_06.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@15|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@52 +@12|{|%| |e|n|d|r|a|w| |%|}| @50 +@75 +@12|{+0#0000e05&|#| |I|n|c|l|u|d|e|s| |#|}| +0#0000000&@48 +@12|{+0#af5f00255&|%| |i|n|c|l|u|d|e| |"+0#e000002&|p|a|r|t|i|a|l|s|/|f|o@1|t|e|r|.|t|e|r|a|"| +0#af5f00255&|%|}| +0#0000000&@26 +> @74 +@12|{+0#0000e05&|#| |I|n|h|e|r|i|t|a|n|c|e| |e|x|a|m|p|l|e| |#|}| +0#0000000&@37 +@12|{+0#af5f00255&|%| |b|l|o|c|k| |c|o|n|t|e|n|t| |%|}| +0#0000000&@43 +@16|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000000&|h|i|s| |i|s| |t|h|e| |d|e|f|a|u|l|t| |c|o|n|t|e|n|t|.|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@23 +@12|{+0#af5f00255&|%| |e|n|d|b|l|o|c|k| |c|o|n|t|e|n|t| |%|}| +0#0000000&@40 +@75 +@12|{+0#0000e05&|#| |S|e|t| |v|a|r|i|a|b|l|e|s| |#|}| +0#0000000&@43 +@12|{+0#af5f00255&|%| |s|e|t| |t|e|x|t|_|c|o|l|o|r| |=| |d|a|r|k|_|m|o|d|e| |?| |"+0#e000002&|#|f@2|"| +0#af5f00255&|:| |"+0#e000002&|#|3@2|"| +0#af5f00255&|%|}| +0#0000000&@12 +@12|{+0#af5f00255&|%| |s|e|t| |i|t|e|m|s|_|c|o|u|n|t| |=| |i|t|e|m|s| ||+0#00e0e07&| |l|e|n|g|t|h| +0#af5f00255&|%|}| +0#0000000&@24 +@75 +@12|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|s+0#00e0003&|t|y|l|e|=+0#00e0e07&|"+0#e000002&|c|o|l|o|r|:| |{@1| |t|e|x|t|_|c|o|l|o|r| |}@1|"|>+0#00e0e07&| +0#0000000&@25 +@16|W|e| |h|a|v|e| |{+0#af5f00255&@1| |i+0#00e0e07&|t|e|m|s|_|c|o|u|n|t| +0#af5f00255&|}@1| +0#0000000&|i|t|e|m|s|.| @26 +@12|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@56 +@75 +@57|1|0|5|,|0|-|1| @6|6|7|%| diff --git a/runtime/syntax/testdir/dumps/tera_07.dump b/runtime/syntax/testdir/dumps/tera_07.dump new file mode 100644 index 0000000000..b20c1614d1 --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_07.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +@12|{+0#0000e05&|#| |F|i|l|t|e|r|s| |w|i|t|h| |c|o|m|p|l|e|x| |e|x|p|r|e|s@1|i|o|n|s| |#|}| +0#0000000&@24 +@12|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|{+0#af5f00255&@1| |"+0#e000002&|H|e|l@1|o|,| |"| +0#af5f00255&|~| |u+0#00e0e07&|s|e|r|.+0#af5f00255&|n+0#00e0e07&|a|m|e| +0#af5f00255&||+0#00e0e07&| |d|e|f|a|u|l|t|(+0#af5f00255&|v+0#00e0e07&|a|l|u|e|=+0#af5f00255&|"+0#e000002&|G|u|e|s|t|"|)+0#af5f00255&| ||+0#00e0e07&| |u|p@1|e|r| +0#af5f00255&|}@1 +|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@70 +@12|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|{+0#af5f00255&@1| |i+0#00e0e07&|t|e|m|s| +0#af5f00255&||+0#00e0e07&| |f|i|l|t|e|r|(+0#af5f00255&|a+0#00e0e07&|t@1|r|i|b|u|t|e|=+0#af5f00255&|"+0#e000002&|f|e|a|t|u|r|e|d|"|,+0#af5f00255&| |v+0#00e0e07&|a|l|u|e|=+0#af5f00255&|t+0#e000002&|r|u|e|)+0#af5f00255&| ||+0#00e0e07&| |l|e|n|g|t|h +| +0#af5f00255&|}@1| +0#0000000&|f|e|a|t|u|r|e|d| |i|t|e|m|s|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@52 +> @74 +@12|{+0#0000e05&|#| |W|i|t|h| |s|t|a|t|e|m|e|n|t| |#|}| +0#0000000&@42 +@12|{+0#af5f00255&|%| |w|i|t|h| |%|}| +0#0000000&@52 +@16|{+0#af5f00255&|%| |s|e|t| |l|o|c|a|l|_|v|a|r| |=| |"+0#e000002&|O|n|l|y| |v|i|s|i|b|l|e| |i|n| |t|h|i|s| |s|c|o|p|e|"| +0#af5f00255&|%|}| +0#0000000&@8 +@16|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|{+0#af5f00255&@1| |l+0#00e0e07&|o|c|a|l|_|v|a|r| +0#af5f00255&|}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@36 +@12|{+0#af5f00255&|%| |e|n|d|w|i|t|h| |%|}| +0#0000000&@49 +@75 +@12|{+0#0000e05&|#| |M|a|t|h|e|m|a|t|i|c|a|l| |o|p|e|r|a|t|i|o|n|s| |#|}| +0#0000000&@33 +@12|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|m|a|t|h|"|>+0#00e0e07&| +0#0000000&@44 +@16|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|P+0#0000000&|r|i|c|e|:| |$|{+0#af5f00255&@1| |p+0#00e0e07&|r|i|c|e| +0#af5f00255&|}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@32 +@16|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000000&|a|x| |(|{+0#af5f00255&@1| |t+0#00e0e07&|a|x|_|r|a|t|e| +0#af5f00255&|*| |1+0#e000002&|0@1| +0#af5f00255&|}@1|%+0#0000000&|)|:| |$|{+0#af5f00255&@1| |p+0#00e0e07&|r|i|c|e| +0#af5f00255&|*| |t+0#00e0e07&|a|x|_|r|a|t|e| +0#af5f00255&|}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07& +| +0#0000000&@15|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000000&|o|t|a|l|:| |$|{+0#af5f00255&@1| |p+0#00e0e07&|r|i|c|e| +0#af5f00255&|*| |(|1+0#e000002&| +0#af5f00255&|+| |t+0#00e0e07&|a|x|_|r|a|t|e|)+0#af5f00255&| |}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@15 +@12|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@56 +@57|1|2@1|,|0|-|1| @6|7|9|%| diff --git a/runtime/syntax/testdir/dumps/tera_08.dump b/runtime/syntax/testdir/dumps/tera_08.dump new file mode 100644 index 0000000000..0ae5c1bdf2 --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_08.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@11|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@56 +@75 +@12|{+0#0000e05&|#| |B|o@1|l|e|a|n| |o|p|e|r|a|t|i|o|n|s| |#|}| +0#0000000&@38 +@12|{+0#af5f00255&|%| |i|f| |u|s|e|r| |a|n|d| |u|s|e|r|.|i|s|_|a|d|m|i|n| |o|r| |s|u|p|e|r|_|u|s|e|r| |%|}| +0#0000000&@17 +@16|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|a|d|m|i|n|-|p|a|n|e|l|"|>+0#00e0e07&|A+0#0000000&|d|m|i|n| |p|a|n|e|l|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@16 +@12>{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@51 +@8|<+0#00e0e07&|/|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@59 +@75 +@8|{+0#0000e05&|#| |F|o@1|t|e|r| |s|e|c|t|i|o|n| |w|i|t|h| |f|i|l|t|e|r|s| |a|n|d| |i|n|c|l|u|d|e|s| |#|}| +0#0000000&@20 +@8|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@58 +@12|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|&+0#e000e06&|c|o|p|y|;| +0#0000000&|{+0#af5f00255&@1| |c+0#00e0e07&|u|r@1|e|n|t|_|y|e|a|r| +0#af5f00255&|}@1| +0#0000000&|{+0#af5f00255&@1| |c+0#00e0e07&|o|m|p|a|n|y|_|n|a|m|e| +0#af5f00255&||+0#00e0e07&| |d|e|f|a|u|l|t|(+0#af5f00255&|v+0#00e0e07&|a|l|u|e|=+0#af5f00255&|"+0#e000002&|O +|u|r| |C|o|m|p|a|n|y|"|)+0#af5f00255&| |}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@55 +@75 +@12|{+0#af5f00255&|%| |i|f| |d|e|b|u|g| |%|}| +0#0000000&@48 +@16|<+0#00e0e07&|d+0#af5f00255&|i|v| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|d|e|b|u|g|-|i|n|f|o|"|>+0#00e0e07&| +0#0000000&@34 +@20|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|R+0#0000000&|e|n|d|e|r| |t|i|m|e|:| |{+0#af5f00255&@1| |r+0#00e0e07&|e|n|d|e|r|_|t|i|m|e| +0#af5f00255&|}@1|m+0#0000000&|s|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@15 +@20|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000000&|e|m|p|l|a|t|e| |v|e|r|s|i|o|n|:| |{+0#af5f00255&@1| |v+0#00e0e07&|e|r|s|i|o|n| +0#af5f00255&|}@1|<+0#00e0e07&|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@16 +@16|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@52 +@12|{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@51 +@57|1|3|9|,|1|3| @7|9|0|%| diff --git a/runtime/syntax/testdir/dumps/tera_09.dump b/runtime/syntax/testdir/dumps/tera_09.dump new file mode 100644 index 0000000000..d3d11ee93a --- /dev/null +++ b/runtime/syntax/testdir/dumps/tera_09.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@11|{+0#af5f00255&|%| |e|n|d|i|f| |%|}| +0#0000000&@51 +@8|<+0#00e0e07&|/|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@57 +@4|<+0#00e0e07&|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@64 +@75 +@4|<+0#00e0e07&|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@62 +| +0#e000e06&@7>c+0#af5f00255&|o|n|s|t| +0#e000e06&|a|p@1|D|a|t|a| |=| |{+0#00e0e07&| +0#0000000&@49 +| +0#e000e06&@11|"+0#e000002&|u|s|e|r|"|:+0#e000e06&| |{+0#00e0e07&|%+0#e000e06&| |i+0#af5f00255&|f| +0#e000e06&|u|s|e|r| |%|}+0#00e0e07&|{@1| +0#e000e06&|u|s|e|r| ||| |j|s|o|n|_|e|n|c|o|d|e|(+0#0000000&|)| +0#e000e06&|}+0#00e0e07&@1|{|%+0#e000e06&| |e+0#af5f00255&|l|s|e| +0#e000e06&|%|}+0#00e0e07&|n+0#af5f00255&|u|l@1|{+0#00e0e07&|%+0#e000e06& +| |e|n|d|i|f| |%|}+0#00e0e07&|,+0#e000e06&| +0#0000000&@64 +| +0#e000e06&@11|"+0#e000002&|s|e|t@1|i|n|g|s|"|:+0#e000e06&| |{+0#00e0e07&| +0#0000000&@49 +| +0#e000e06&@15|"+0#e000002&|t|h|e|m|e|"|:+0#e000e06&| |"+0#e000002&|{@1| |t|h|e|m|e| ||| |d|e|f|a|u|l|t|(|v|a|l|u|e|=|"|l+0#e000e06&|i|g|h|t|"+0#e000002&|)| |}@1|"|,+0#e000e06&| +0#0000000&@10 +| +0#e000e06&@15|"+0#e000002&|n|o|t|i|f|i|c|a|t|i|o|n|s|"|:+0#e000e06&| |{+0#00e0e07&@1| +0#e000e06&|n|o|t|i|f|i|c|a|t|i|o|n|s|_|e|n|a|b|l|e|d| ||| |s+0#00e0003&|t|r|i|n|g| +0#e000e06&||| |l|o|w|e|r| +|}+0#00e0e07&@1| +0#0000000&@72 +| +0#e000e06&@11|}+0#00e0e07&| +0#0000000&@61 +| +0#e000e06&@7|}+0#00e0e07&|;+0#e000e06&| +0#0000000&@64 +| +0#e000e06&@3|<+0#00e0e07&|/|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@61 +|<+0#00e0e07&|/|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@67 +|<+0#00e0e07&|/|h+0#af5f00255&|t|m|l|>+0#00e0e07&| +0#0000000&@67 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|1|5|6|,|9| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim9_constructor_00.dump b/runtime/syntax/testdir/dumps/vim9_constructor_00.dump new file mode 100644 index 0000000000..1b30c562de --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_constructor_00.dump @@ -0,0 +1,20 @@ +>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64 +@75 +|#+0#0000e05&| |V|i|m|9| |c|o|n|s|t|r|u|c|t|o|r| +0#0000000&@56 +@75 +@75 +|c+0#af5f00255&|l|a|s@1| +0#0000000&|A| @67 +@2|s+0#af5f00255&|t|a|t|i|c| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|_|i|n|s|t|a|n|c|e|:| |A| @49 +@2|v+0#af5f00255&|a|r| +0#0000000&|s|t|r|:| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@57 +@2|d+0#af5f00255&|e|f| +0#0000000&|_+0#00e0e07&|n|e|w|(+0#e000e06&|s+0#0000000&|t|r|:| |s+0#00e0003&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@51 +@4|t+0#00e0e07&|h|i|s|.+0#af5f00255&|s+0#0000000&|t|r| |=+0#af5f00255&| +0#0000000&|s|t|r| @56 +@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66 +@2|s+0#af5f00255&|t|a|t|i|c| +0#0000000&|d+0#af5f00255&|e|f| +0#0000000&|G|e|t|I|n|s|t|a|n|c|e|(+0#e000e06&|s+0#0000000&|t|r|:| |s+0#00e0003&|t|r|i|n|g|)+0#e000e06&|:+0#0000000&| |A| @34 +@4|i+0#af5f00255&|f| +0#0000000&|_|i|n|s|t|a|n|c|e| |=+0#af5f00255&@1| +0#0000000&|n+0#e000002&|u|l@1| +0#0000000&@50 +@6|_|i|n|s|t|a|n|c|e| |=+0#af5f00255&| +0#0000000&|A|.|_+0#00e0e07&|n|e|w|(+0#e000e06&|s+0#0000000&|t|r|)+0#e000e06&| +0#0000000&@45 +@4|e+0#af5f00255&|n|d|i|f| +0#0000000&@65 +@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|_|i|n|s|t|a|n|c|e| @54 +@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66 +|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66 +@75 +@57|1|,|1| @10|A|l@1| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump index a871473b92..6f7cd599b2 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump @@ -12,7 +12,7 @@ @2|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 @2|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 @75 -@2|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +@2|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 @2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump index e0a5b24be2..d5511cad47 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump @@ -1,5 +1,5 @@ | +0&#ffffff0@74 -@2|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +@2|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 @2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 @@ -17,4 +17,4 @@ @2|v+0#af5f00255&|a|r| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43 @2|v+0#af5f00255&|a|r| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @62 @8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @59 -@57|1|9|,|3| @10|7|%| +@57|1|9|,|3| @10|6|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump index 34d583e744..9bb006ed6a 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump @@ -17,4 +17,4 @@ | +0#e000002&@3|.@2| +0#0000000&@67 | +0#e000e06&@1|E|N|D| +0#0000000&@69 @75 -@57|3|7|,|1| @9|1|7|%| +@57|3|7|,|1| @9|1|5|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump index 8accf9510f..dd75ae84d8 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump @@ -10,11 +10,11 @@ @1| +0#00e0e07&|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @1| +0#00e0e07&|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 +@1| +0#00e0e07&|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@1| +0#00e0e07&|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@75 @1| +0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @1| +0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @1| +0#00e0e07&|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @1| +0#00e0e07&|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -@1| +0#00e0e07&|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -@1| +0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -@75 -@57|5@1|,|3| @9|2|7|%| +@57|5@1|,|3| @9|2|3|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump index bb8f80301b..7d28f18c7f 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump @@ -1,9 +1,12 @@ -| +0&#ffffff0@74 +| +0&#ffffff0| +0#00e0e07&|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +@1| +0#00e0e07&|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +@1| +0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +@75 @2|b+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +@2>g+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 @2|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 @2|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -> @74 +@75 @2|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @2|g+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @2|t+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @@ -14,7 +17,4 @@ @2|t+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @2|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 -@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -@57|7|3|,|0|-|1| @7|3|7|%| +@57|7|3|,|3| @9|3|2|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump index f3397567bf..57bb62f846 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump @@ -1,9 +1,12 @@ -| +0&#ffffff0@1|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +| +0&#ffffff0@74 +@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @2|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -@75 +> @74 @2|b+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @2|g+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -@2>t+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @2|w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 @2|b+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @@ -14,7 +17,4 @@ @2|b+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @2|g+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @2|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -@75 -@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -@57|9|1|,|3| @9|4|6|%| +@57|9|1|,|0|-|1| @7|4|1|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump index 23396ad2bd..a0ab49421b 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -@2|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +| +0&#ffffff0@1|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @75 +@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +@2|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +> @74 @2|@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 @2|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -> @74 -@2|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 -@2|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@51 +@2|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 -@2|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +@2|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@51 @75 -@2|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -@2|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +@2|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 -@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +@2|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +@2|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 @75 -@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -@57|1|0|9|,|0|-|1| @6|5|6|%| +@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +@57|1|0|9|,|0|-|1| @6|5|0|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump index 119cc253d5..6d92e190c9 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +| +0&#ffffff0@1|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 -@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +> @74 +@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 -@2>&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 @75 @2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| @67 @8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @65 -@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| @66 -@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@57|1|2|7|,|3| @8|6@1|%| +@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@48 +@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @64 +@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 +@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@57|1|2|7|,|0|-|1| @6|5|8|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump index 686fa47a13..33dddb64e9 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump @@ -1,9 +1,12 @@ -| +0&#ffffff0@1|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +| +0&#ffffff0@1|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| @66 +@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @2|[+0#e000e06&|$|f|o@1|,+0#0000000&| @66 -@8|\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@8>\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @2|[+0#e000e06&|@|a|,+0#0000000&| |@+0#e000e06&|b|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @2|[+0#e000e06&|@|a|,+0#0000000&| @68 -@8>\+0#e000e06&| +0#0000000&@1|@+0#e000e06&|a|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@8|\+0#e000e06&| +0#0000000&@1|@+0#e000e06&|a|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @75 @2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @@ -14,7 +17,4 @@ @75 @2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 @2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| @67 -@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @60 -@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@44 -@57|1|4|5|,|2|-|9| @6|7|6|%| +@57|1|4|5|,|2|-|9| @6|6|7|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump index 0c5a48d9bd..4cdfb12457 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@44 -@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @65 -@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|;+0#0000000&| @58 -@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +| +0&#ffffff0@1|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| @67 +@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @60 +@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@40 +@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @64 +@8>\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @56 +@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|n|o|n|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 @2|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47 -@2>[+0#e000e06&|$|f|o@1|,+0#0000000&| @66 +@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| @66 @8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @59 @8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47 -@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| @66 -@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @59 -@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47 +@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| @66 +@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @59 +@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 @2|[+0#e000e06&|@|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @2|[+0#e000e06&|@|a|,+0#0000000&| @68 @8|\+0#e000e06&| +0#0000000&|@+0#e000e06&|b|;+0#0000000&| @61 @8|\+0#e000e06&| +0#0000000&|@+0#e000e06&|c|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@75 -@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@61 -|.+0#e000002&@2| +0#0000000&@71 -@57|1|6|3|,|3| @8|8|6|%| +@57|1|6|3|,|2|-|9| @6|7|6|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump index 9cba8550ce..a0d6b804c9 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump @@ -1,9 +1,12 @@ -|.+0#e000002#ffffff0@2| +0#0000000&@71 +| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|@+0#e000e06&|c|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@75 +@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@61 +|.+0#e000002&@2| +0#0000000&@71 |E+0#e000e06&|N|D| +0#0000000&@71 -@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@56 +@1| +0#00e0e07&>f|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@56 | +0#e000002&@1|.@2| +0#0000000&@69 | +0#e000e06&@1|E|N|D| +0#0000000&@69 -@1| +0#00e0e07&>f|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@56 +@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@56 |.+0#e000002&@2| +0#0000000&@71 |E+0#e000e06&|N|D| +0#0000000&@71 @1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@51 @@ -14,7 +17,4 @@ | +0#e000e06&@1|E|N|D| +0#0000000&@69 @75 | +0#0000e05&@1|#| |:|f|o|r| +0#0000000&@66 -@75 -@2|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 -@57|1|8|1|,|3| @8|9|6|%| +@57|1|8|1|,|3| @8|8|4|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump index 9948671c25..abe24e7168 100644 --- a/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 +| +0#0000e05#ffffff0@1|#| |:|f|o|r| +0#0000000&@66 @75 -@2|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 +@2|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 -|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 -> @74 @75 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|9@1|,|0|-|1| @6|B|o|t| +@2>f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 +@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 +@75 +|#+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +@75 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +@57|1|9@1|,|3| @8|9|3|%| diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_12.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_12.dump new file mode 100644 index 0000000000..ea9b184ae8 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_def_variables_12.dump @@ -0,0 +1,20 @@ +|f+0#af5f00255#ffffff0|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +@75 +|#+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18 +> @74 +|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46 +@75 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|1|7|,|0|-|1| @6|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_01.vim b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.vim similarity index 100% rename from runtime/syntax/testdir/dumps/vim9_keymap_01.vim rename to runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.vim diff --git a/runtime/syntax/testdir/dumps/vim9_expr_00.dump b/runtime/syntax/testdir/dumps/vim9_expr_00.dump index 373b3a0d8c..e8fe31860d 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_00.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_00.dump @@ -2,19 +2,19 @@ |#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |e|x|p|r|e|s@1|i|o|n|s| +0#0000000&@49 @75 @75 -|#+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63 +|#+0#0000e05&| |D|i|c|t|i|o|n|a|r|y| +0#0000000&@62 @75 -|#+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&|}| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@2|f+0#00e0e07&|o@1|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21 -@75 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60 -@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59 -@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52 -@16|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50 -@16|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58 @57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_01.dump b/runtime/syntax/testdir/dumps/vim9_expr_01.dump index 597161e765..f31e777ee3 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_01.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_01.dump @@ -1,20 +1,20 @@ -|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60 -@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59 -@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52 -@16|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50 -@16|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52 ->e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58 -@8|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59 -@8|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52 -@16|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50 -@16|l+0#00e0e07&|n|u|m| +0#0000000&@54 +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43 +> @74 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|:+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@50 -|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 -|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54 -|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51 -|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57 -@57|1|9|,|1| @9|1|3|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +@57|1|9|,|0|-|1| @8|9|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_02.dump b/runtime/syntax/testdir/dumps/vim9_expr_02.dump index 4b9842ce6d..f8b6d90eed 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_02.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_02.dump @@ -1,20 +1,20 @@ -|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57 -|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|f+0#e000002&|a|l|s|e|)+0#e000e06&| +0#0000000&@44 -|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54 -@75 -|#+0#0000e05&| |F|a|l|s|y| +0#0000000&@67 +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 > @74 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@75 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43 -|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62 -@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@68 +| +0#0000e05&@1|#| |c|o|m@1|e|n|t| +0#0000000&@63 +@2|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@66 +@4|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&@59 +@2|}+0#e000e06&| +0#0000000&@71 +|}+0#e000e06&| +0#0000000&@73 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@57 -|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63 -|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55 -@57|3|7|,|0|-|1| @7|3|2|%| +@57|3|7|,|0|-|1| @7|2|1|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_03.dump b/runtime/syntax/testdir/dumps/vim9_expr_03.dump index 80ce231486..1b6b634764 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_03.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_03.dump @@ -1,20 +1,20 @@ -|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55 -|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 -|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55 -|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57 -|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53 ->e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61 -|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59 +| +0&#ffffff0@74 +|#+0#0000e05&| |m|a|t|c|h| |a|s| |k|e|y|s| |n|o|t| |s|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@36 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |w+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |t+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |g+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |l+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |s+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |v+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2| +0#0000000&@1|}+0#e000e06&| +0#0000000&@10 @75 +|#+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63 +> @74 +|#+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65 @75 -|#+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @75 -|F|o@1|(+0#e000e06&|t+0#e000002&|r|u|e|,+0#0000000&| |f+0#e000002&|a|l|s|e|,+0#0000000&| |n+0#e000002&|u|l@1|)+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45 +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21 @75 -@75 -|#+0#0000e05&| |C|o|m@1|a|n|d| |{|e|x|p|r|}| |a|r|g|u|m|e|n|t|s| +0#0000000&@48 -@75 -|i+0#af5f00255&|f| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@67 -@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63 -@57|5@1|,|1| @9|5|1|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60 +@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59 +@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52 +@16|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50 +@16|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58 +@57|5@1|,|0|-|1| @7|3|4|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_04.dump b/runtime/syntax/testdir/dumps/vim9_expr_04.dump index c8383bc639..47754a0baa 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_04.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_04.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63 -|e+0#af5f00255&|l|s|e|i|f| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62 -@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62 -|e+0#af5f00255&|n|d|i|f| +0#0000000&@69 +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58 +@8|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59 +@8|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52 +@16|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50 +@16|l+0#00e0e07&|n|u|m| +0#0000000&@54 +> @74 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|:+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@50 +|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|f+0#e000002&|a|l|s|e|)+0#e000e06&| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54 @75 ->w+0#af5f00255&|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64 -@2|b+0#af5f00255&|r|e|a|k| +0#0000000&@67 -|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@66 +|#+0#0000e05&| |F|a|l|s|y| +0#0000000&@67 @75 -|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@59 -@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@61 -|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 -@75 -@75 -|#+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27 -@75 -|:|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@66 -|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46 -@4|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66 -@57|7|3|,|1| @9|7|0|%| +@57|7|3|,|0|-|1| @7|4|6|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_05.dump b/runtime/syntax/testdir/dumps/vim9_expr_05.dump index 083705e83b..753d3279e7 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_05.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_05.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@3|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66 -@4|)+0#e000e06&| +0#0000000&@69 -@4|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66 -@4|)+0#e000e06&| +0#0000000&@69 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63 -> @74 -|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65 -| +0#e000002&@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64 -@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@44 -@6|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64 -@6|)+0#e000e06&| +0#0000000&@67 -@6|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64 -@6|)+0#e000e06&| +0#0000000&@67 -@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61 -|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 -@75 +| +0&#ffffff0@74 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 -|#+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|7| |(|V|i|m|s|c|r|i|p|t| |t|e|r|n|a|r|y| |e|x|p|r|e|s@1|i|o|n| |h|i|g|h|l|i|g|h|t|i|n|g|)| +0#0000000&@16 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47 +> @74 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62 +@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59 +@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51 @75 -@57|9|1|,|0|-|1| @7|8|9|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55 +|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55 +|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61 +@57|9|1|,|0|-|1| @7|5|9|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_06.dump b/runtime/syntax/testdir/dumps/vim9_expr_06.dump index d60bd9dea0..d8b69bc1d1 100644 --- a/runtime/syntax/testdir/dumps/vim9_expr_06.dump +++ b/runtime/syntax/testdir/dumps/vim9_expr_06.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@74 -|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@24|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25 -|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@36 -|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|z| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52 -@12|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@53 -@12>\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53 -|v+0#af5f00255&|a|r| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52 -@12|?+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25 -@12|:+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25 -|e+0#af5f00255&|c|h|o| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|q|u@1|x|'| +0#0000000&@56 +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61 +|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59 @75 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|0|9|,|1|3| @7|B|o|t| +@75 +>#+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58 +@75 +|F|o@1|(+0#e000e06&|t+0#e000002&|r|u|e|,+0#0000000&| |f+0#e000002&|a|l|s|e|,+0#0000000&| |n+0#e000002&|u|l@1|)+0#e000e06&| +0#0000000&@52 +@75 +@75 +|#+0#0000e05&| |C|o|m@1|a|n|d| |{|e|x|p|r|}| |a|r|g|u|m|e|n|t|s| +0#0000000&@48 +@75 +|i+0#af5f00255&|f| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@67 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63 +|e+0#af5f00255&|l|s|e|i|f| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62 +|e+0#af5f00255&|n|d|i|f| +0#0000000&@69 +@75 +|w+0#af5f00255&|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64 +@57|1|0|9|,|1| @8|7|1|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_07.dump b/runtime/syntax/testdir/dumps/vim9_expr_07.dump new file mode 100644 index 0000000000..22c0e01e25 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_expr_07.dump @@ -0,0 +1,20 @@ +|w+0#af5f00255#ffffff0|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64 +@2|b+0#af5f00255&|r|e|a|k| +0#0000000&@67 +|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@66 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@59 +@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@61 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +@75 +|#+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27 +@75 +|:|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@66 +|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46 +@4|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66 +@4|)+0#e000e06&| +0#0000000&@69 +@4|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66 +@4|)+0#e000e06&| +0#0000000&@69 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63 +@75 +@57|1|2|7|,|3| @8|8|4|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_08.dump b/runtime/syntax/testdir/dumps/vim9_expr_08.dump new file mode 100644 index 0000000000..1fff98338d --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_expr_08.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65 +| +0#e000002&@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64 +@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@44 +@6|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64 +@6>)+0#e000e06&| +0#0000000&@67 +@6|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64 +@6|)+0#e000e06&| +0#0000000&@67 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +@75 +|#+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|7| |(|V|i|m|s|c|r|i|p|t| |t|e|r|n|a|r|y| |e|x|p|r|e|s@1|i|o|n| |h|i|g|h|l|i|g|h|t|i|n|g|)| +0#0000000&@16 +@75 +|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@24|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25 +|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@36 +|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|z| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52 +@12|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@53 +@12|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53 +@57|1|4|5|,|7| @8|9|6|%| diff --git a/runtime/syntax/testdir/dumps/vim9_expr_09.dump b/runtime/syntax/testdir/dumps/vim9_expr_09.dump new file mode 100644 index 0000000000..ce5416a63a --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_expr_09.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@11|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53 +|v+0#af5f00255&|a|r| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52 +@12|?+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25 +@12|:+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25 +|e+0#af5f00255&|c|h|o| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|q|u@1|x|'| +0#0000000&@56 +> @74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|6|3|,|0|-|1| @6|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim9_function_calls_00.dump b/runtime/syntax/testdir/dumps/vim9_function_calls_00.dump new file mode 100644 index 0000000000..83d5c4db47 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_function_calls_00.dump @@ -0,0 +1,20 @@ +>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64 +@75 +|#+0#0000e05&| |V|i|m|9| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@53 +@75 +|c+0#00e0e07&|l|e|a|r|m|a|t|c|h|e|s|(+0#e000e06&|)| +0#0000000&@60 +|:|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|l|e|a|r|m|a|t|c|h|e|s|(+0#e000e06&|)| +0#0000000&@54 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |c+0#00e0e07&|l|e|a|r|m|a|t|c|h|e|s|(+0#e000e06&|)| +0#0000000&@47 +@75 +@75 +|#+0#0000e05&| |I|s@1|u|e| |1|6|7|2|1| |(|v|i|m|s|c|r|i|p|t| |h|i|g|h|l|i|g|h|t| |o|f| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n| |a|f|t|e|r| |||)| +0#0000000&@11 +@75 +|&+0#00e0e07&|d|i|r|e|c|t|o|r|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|s|w|a|p|/|'| +0#0000000&@35 +|&+0#00e0e07&|b|a|c|k|u|p|d|i|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|b|a|c|k|u|p|/@1|'| +0#0000000&@32 +|&+0#00e0e07&|u|n|d|o|d|i|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|u|n|d|o|/@1|'| +0#0000000&@36 +|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|u|n|d|o|d|i|r|)+0#e000e06&| +0#0000000&@2||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|u|n|d|o|d|i|r|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&@2||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14 +|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|b|a|c|k|u|p|d|i|r|)+0#e000e06&| +0#0000000&||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|b|a|c|k|u|p|d|i|r|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14 +|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|d|i|r|e|c|t|o|r|y|)+0#e000e06&| +0#0000000&||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|d|i|r|e|c|t|o|r|y|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14 +@75 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_00.dump b/runtime/syntax/testdir/dumps/vim9_variables_00.dump index 766069e771..cd9f976c81 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_00.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_00.dump @@ -11,7 +11,7 @@ |t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 |w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 @75 -|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 |$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 @75 diff --git a/runtime/syntax/testdir/dumps/vim9_variables_01.dump b/runtime/syntax/testdir/dumps/vim9_variables_01.dump index 35547c00db..eb6a9530ac 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_01.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_01.dump @@ -1,4 +1,4 @@ -|v+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +|v+0#00e0e07#ffffff0|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 |$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 @75 @@ -17,4 +17,4 @@ |v+0#af5f00255&|a|r| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @64 @6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @61 @6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@57|1|9|,|1| @10|7|%| +@57|1|9|,|1| @10|6|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_02.dump b/runtime/syntax/testdir/dumps/vim9_variables_02.dump index 3b111f7d95..efc11673f2 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_02.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_02.dump @@ -17,4 +17,4 @@ |E+0#e000e06&|N|D| +0#0000000&@71 @75 |#+0#0000e05&| |A|s@1|i|g|n|m|e|n|t|s| +0#0000000&@61 -@57|3|7|,|1| @9|1|7|%| +@57|3|7|,|1| @9|1|5|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_03.dump b/runtime/syntax/testdir/dumps/vim9_variables_03.dump index f2d245b89a..d3530e2a0c 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_03.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_03.dump @@ -9,12 +9,12 @@ |f+0#00e0e07&|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 |f+0#00e0e07&|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 +|f+0#00e0e07&|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|f+0#00e0e07&|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +@75 |f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 |f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 |f+0#00e0e07&|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 |f+0#00e0e07&|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 |f+0#00e0e07&|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 -|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 -@75 -|b+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 -@57|5@1|,|0|-|1| @7|2|7|%| +@57|5@1|,|0|-|1| @7|2|4|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_04.dump b/runtime/syntax/testdir/dumps/vim9_variables_04.dump index b54b1a6711..6f7c793b1f 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_04.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_04.dump @@ -1,9 +1,12 @@ -|b+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +|f+0#00e0e07#ffffff0|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 +|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +@75 +|b+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 |g+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 -|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +>t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 |w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 @75 ->b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 |g+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 |t+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 |w+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @@ -14,7 +17,4 @@ |w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 |b+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -@57|7|3|,|1| @9|3|7|%| +@57|7|3|,|1| @9|3@1|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_05.dump b/runtime/syntax/testdir/dumps/vim9_variables_05.dump index 2abfee7773..e7f903b824 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_05.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_05.dump @@ -1,9 +1,12 @@ -|w+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|b+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 -|b+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +>b+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 |g+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 |t+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 ->w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 |b+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 |g+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @@ -14,7 +17,4 @@ |g+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 |t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 |w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -@75 -|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 -|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 -@57|9|1|,|1| @9|4|7|%| +@57|9|1|,|1| @9|4|1|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_06.dump b/runtime/syntax/testdir/dumps/vim9_variables_06.dump index b0380cbb22..9fbcf7708e 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_06.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_06.dump @@ -1,20 +1,20 @@ -|$+0#e000e06#ffffff0|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|w+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 @75 -|@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@65 +|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 +|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +@75 +>@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@65 |@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 @75 ->&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 +|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63 @75 |&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@53 @75 -|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 @75 -|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 -|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 +|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62 @75 -|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 -|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -@57|1|0|9|,|1| @8|5|7|%| +@57|1|0|9|,|1| @8|5|0|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_07.dump b/runtime/syntax/testdir/dumps/vim9_variables_07.dump index adf80f5cfa..a7a60acdab 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_07.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_07.dump @@ -1,20 +1,20 @@ -|&+0#00e0e07#ffffff0|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +| +0&#ffffff0@74 +|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @75 -|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61 +>&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 -|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 ->&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 -|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 +|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @75 |[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 |[|f+0#00e0e07&|o@1|,+0#0000000&| @69 @6|\| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @67 -@6|\| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @68 -@6|\| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|[|$+0#e000e06&|f|o@1|,+0#0000000&| @68 -@57|1|2|7|,|1| @8|6|7|%| +|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 +|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @66 +@6|\| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @68 +@57|1|2|7|,|1| @8|5|9|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_08.dump b/runtime/syntax/testdir/dumps/vim9_variables_08.dump index 5348a7e836..38b1f31b72 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_08.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_08.dump @@ -1,9 +1,12 @@ -|[+0&#ffffff0|$+0#e000e06&|f|o@1|,+0#0000000&| @68 +|[+0&#ffffff0|&+0#00e0e07&|a|r|i|,+0#0000000&| @68 +@6|\| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +|[|$+0#e000e06&|f|o@1|,+0#0000000&| @68 @6|\| @1|$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +>[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 |[|@+0#e000e06&|a|,+0#0000000&| @70 @6|\| @1|@+0#e000e06&|a|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -> @74 +@75 |[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 |[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 |[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 @@ -14,7 +17,4 @@ |[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 |[|f+0#00e0e07&|o@1|,+0#0000000&| @69 @6|\| |b+0#00e0e07&|a|r|;+0#0000000&| @62 -@6|\| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46 -|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @67 -@57|1|4|5|,|0|-|1| @6|7|8|%| +@57|1|4|5|,|1| @8|6|8|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_09.dump b/runtime/syntax/testdir/dumps/vim9_variables_09.dump index 1294cb1001..7db340624b 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_09.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_09.dump @@ -1,20 +1,20 @@ -|[+0&#ffffff0|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @67 -@6|\| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| @60 -@6|\| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +| +0&#ffffff0@5|\| |b+0#00e0e07&|a|r|;+0#0000000&| @62 +@6|\| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@42 +|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @66 +@6|\| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @58 +@6>\| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 |[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 |[|$+0#e000e06&|f|o@1|,+0#0000000&| @68 -@6>\| |$+0#e000e06&|b|a|r|;+0#0000000&| @61 +@6|\| |$+0#e000e06&|b|a|r|;+0#0000000&| @61 @6|\| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 -|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @68 -@6|\| |&+0#00e0e07&|b|a|r|;+0#0000000&| @61 -@6|\| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 +|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @68 +@6|\| |&+0#00e0e07&|b|k|c|;+0#0000000&| @61 +@6|\| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 |[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 |[|@+0#e000e06&|a|,+0#0000000&| @70 @6|\| |@+0#e000e06&|b|;+0#0000000&| @63 @6|\| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 @75 -|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@63 -|.+0#e000002&@2| +0#0000000&@71 -|E+0#e000e06&|N|D| +0#0000000&@71 -@57|1|6|3|,|7| @8|8@1|%| +@57|1|6|3|,|7| @8|7@1|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_10.dump b/runtime/syntax/testdir/dumps/vim9_variables_10.dump index b2dd950213..534a0543e3 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_10.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_10.dump @@ -1,10 +1,13 @@ -|E+0#e000e06#ffffff0|N|D| +0#0000000&@71 -|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@58 +| +0&#ffffff0@74 +|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@63 |.+0#e000002&@2| +0#0000000&@71 |E+0#e000e06&|N|D| +0#0000000&@71 -|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@58 +|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@58 >.+0#e000002&@2| +0#0000000&@71 |E+0#e000e06&|N|D| +0#0000000&@71 +|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@58 +|.+0#e000002&@2| +0#0000000&@71 +|E+0#e000e06&|N|D| +0#0000000&@71 |f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@53 |.+0#e000002&@2| +0#0000000&@71 |E+0#e000e06&|N|D| +0#0000000&@71 @@ -14,7 +17,4 @@ @75 |#+0#0000e05&| |:|f|o|r| +0#0000000&@68 @75 -|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 -|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68 -@75 -@57|1|8|1|,|1| @8|9|8|%| +@57|1|8|1|,|1| @8|8|6|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_11.dump b/runtime/syntax/testdir/dumps/vim9_variables_11.dump index 9b3552e303..136245e332 100644 --- a/runtime/syntax/testdir/dumps/vim9_variables_11.dump +++ b/runtime/syntax/testdir/dumps/vim9_variables_11.dump @@ -1,20 +1,20 @@ | +0&#ffffff0@74 -|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68 -> @74 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|9|7|,|0|-|1| @6|B|o|t| +@75 +|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +>e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68 +@75 +|#+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +@75 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +@57|1|9@1|,|1| @8|9|5|%| diff --git a/runtime/syntax/testdir/dumps/vim9_variables_12.dump b/runtime/syntax/testdir/dumps/vim9_variables_12.dump new file mode 100644 index 0000000000..96b7c7ccd6 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_variables_12.dump @@ -0,0 +1,20 @@ +|f+0#af5f00255#ffffff0|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +@75 +|#+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18 +@75 +>e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|1|7|,|1| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_return_type_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_00.dump new file mode 100644 index 0000000000..04e16a4a54 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_00.dump @@ -0,0 +1,20 @@ +>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64 +|#+0#0000e05&| |V|i|m|9| |f|u|n|c|t|i|o|n| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@46 +|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|U|s|e|r|T|y|p|e| |T|o|d|o| +0#0000000&@33 +@75 +@75 +|#+0#0000e05&| |I|s@1|u|e| |#|1|4@2|2| |(|v|i|m|.|v|i|m|:| |c|o|n|f|u|s|i|o|n| |f|o|r| |f|u|n|c|t|i|o|n| |r|e|t|u|r|n| |t|y|p|e|s| |s|t|a|r|t|i|n|g| |o|n| |a|n +|o|t|h|e|r| |l|i|n|e|)| +0#0000000&@63 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|A|_@61|(+0#e000e06&|)|:+0#0000000&| +@4|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@64 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|B|_@3|(+0#e000e06&|r+0#0000000&|e|s|u|l|t|:| |d+0#00e0003&|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,+0#0000000&| |f|s|:| |l+0#00e0003&|i|s|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| +@4|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@64 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|C|_@3|(+0#e000e06&|m+0#0000000&|a|y|b|e|:| |b+0#00e0003&|o@1|l|,+0#0000000&| |F|:| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| |d+0#00e0003&|i|c|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| +@8|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@60 +@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@56 +@57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_return_type_01.dump b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_01.dump new file mode 100644 index 0000000000..ed7fd6c579 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_01.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@3|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@64 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|C|_@3|(+0#e000e06&|m+0#0000000&|a|y|b|e|:| |b+0#00e0003&|o@1|l|,+0#0000000&| |F|:| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| |d+0#00e0003&|i|c|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| +@8|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@60 +@4>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@56 +@4|}+0#e000e06&| +0#0000000&@69 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|D|_@3|(+0#e000e06&|f+0#0000000&|s|:| |l+0#00e0003&|i|s|t|<|f|u|n|c|(|)|:+0#0000000&| |d+0#00e0003&|i|c|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |b+0#00e0003&|o@1|l|>@1|)+0#e000e06&|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| +@8|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@60 +@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@50 +@4|}+0#e000e06&| +0#0000000&@69 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t|s| @63 +@4|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|A|_@57|(+0#e000e06&|)|:+0#0000000&| +@8|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@60 +@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64 +@57|1|8|,|5| @9|2|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_return_type_02.dump b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_02.dump new file mode 100644 index 0000000000..dc6ab66845 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_02.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@3|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64 +@75 +@4|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|B|(+0#e000e06&|r+0#0000000&|e|s|u|l|t|:| |d+0#00e0003&|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,+0#0000000&| |f|s|:| |l+0#00e0003&|i|s|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| +@8|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@60 +@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64 +> @74 +@4|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|C|(+0#e000e06&|m+0#0000000&|a|y|b|e|:| |b+0#00e0003&|o@1|l|,+0#0000000&| |F|:| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| |d+0#00e0003&|i|c|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| +@12|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@56 +@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@52 +@8|}+0#e000e06&| +0#0000000&@65 +@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64 +@75 +@4|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|D|(+0#e000e06&|f+0#0000000&|s|:| |l+0#00e0003&|i|s|t|<|f|u|n|c|(|)|:+0#0000000&| |d+0#00e0003&|i|c|t|<|f|u|n|c|(|n|u|m|b|e|r|)|:+0#0000000&| |b+0#00e0003&|o@1|l|>@1|)+0#e000e06&|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|)|:+0#0000000&| +@12|\+0#e000e06&| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@56 +@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@46 +@8|}+0#e000e06&| +0#0000000&@65 +@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64 +|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66 +@75 +@57|3|6|,|0|-|1| @7|7|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_return_type_03.dump b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_03.dump new file mode 100644 index 0000000000..a4e71137c5 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_def_return_type_03.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +|d+0#af5f00255&|e|f| +0#0000000&|F|(+0#e000e06&|G+0#0000000&|:| |f+0#00e0003&|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)|:+0#0000000&| |l+0#0000001#ffff4012|i|b|.|T|r|a|m|p|o|l|i|n|e|)+0#e000e06#ffffff0|:+0#0000000&| @19 +@40|\+0#e000e06&| +0#0000000&|f+0#00e0003&|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)|:+0#0000000&| @3 +@40|\+0#e000e06&| +0#0000000&|f+0#00e0003&|u|n|c|(|)|:+0#0000000&| |l+0#0000001#ffff4012|i|b|.|T|r|a|m|p|o|l|i|n|e| +0#0000000#ffffff0@10 +@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&@1|H+0#0000000&|:| |f+0#00e0003&|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)|:+0#0000000&| |l+0#0000001#ffff4012|i|b|.|T|r|a|m|p|o|l|i|n|e|)+0#e000e06#ffffff0| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@6 +@32>(+0#e000e06&|a+0#0000000&|1|:| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |a|2|:| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |n|:| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@4 +@32|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@37 +@16|H|(+0#e000e06&|a+0#0000000&|2|,| |(+0#e000e06&|a+0#0000000&|1| |++0#af5f00255&| +0#0000000&|a|2|)+0#e000e06&|,+0#0000000&| |(+0#e000e06&|n+0#0000000&| |-+0#af5f00255&| +0#0000000&|1+0#e000002&|)+0#e000e06&@2|(|G+0#0000000&|)+0#e000e06&| +0#0000000&@29 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@64 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|5|4|,|5|-|3@1| @6|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_01.dump index 8e169efb52..a14e929206 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_01.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|{|"|F|"|}|o|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@52 -@57|1|9|,|1| @10|7|%| +@57|1|9|,|1| @10|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_02.dump index 95cec64483..282c06c423 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_02.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_02.dump @@ -17,4 +17,4 @@ @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 -@57|3|7|,|0|-|1| @7|1|7|%| +@57|3|7|,|0|-|1| @7|1|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_03.dump b/runtime/syntax/testdir/dumps/vim_ex_function_03.dump index 8db514c816..8192288c85 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_03.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_03.dump @@ -17,4 +17,4 @@ @75 |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|#|b|a|r|#|F|o@1|(+0#e000e06&|)| +0#0000000&@52 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 -@57|5@1|,|1| @9|2|7|%| +@57|5@1|,|1| @9|2|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_04.dump b/runtime/syntax/testdir/dumps/vim_ex_function_04.dump index cf2287bc9e..486dfd84c7 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_04.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_04.dump @@ -17,4 +17,4 @@ |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@54 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 -@57|7|3|,|1| @9|3|7|%| +@57|7|3|,|1| @9|3|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_05.dump b/runtime/syntax/testdir/dumps/vim_ex_function_05.dump index a7530754d4..4359d4e255 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_05.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_05.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 |f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@53 -@57|9|1|,|0|-|1| @7|4|7|%| +@57|9|1|,|0|-|1| @7|4|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_06.dump b/runtime/syntax/testdir/dumps/vim_ex_function_06.dump index 06ff65673b..f4d96ac649 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_06.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_06.dump @@ -17,4 +17,4 @@ |f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@34 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 -@57|1|0|9|,|3| @8|5|7|%| +@57|1|0|9|,|3| @8|5|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump index 447f144667..160f9ad9bf 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@53 @75 @75 -@57|1|2|7|,|1| @8|6|7|%| +@57|1|2|7|,|1| @8|6|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_08.dump b/runtime/syntax/testdir/dumps/vim_ex_function_08.dump index c9a2d06be5..98e02cfd13 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_08.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_08.dump @@ -17,4 +17,4 @@ @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 -@57|1|4|5|,|1| @8|7@1|%| +@57|1|4|5|,|1| @8|7|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump index 46b3c93407..60ea6cb364 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump @@ -6,15 +6,15 @@ @2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 -|"+0#0000e05&| |I|s@1|u|e| |#|1|6|2|4|3| |(|v|i|m|s|c|r|i|p|t| |d|e|f| |p|a|r|a|m|e|t|e|r|s| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t| |i|s| |w|r|o|n|g|)| +0#0000000&@7 -@75 -|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|T|e|s|t|(+0#e000e06&|l+0#00e0e07&|i|n|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|,+0#0000000&| |l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|]|)| +0#0000000&@29 -|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 +|"+0#0000e05&| |a|r|g|u|m|e|n|t|s| +0#0000000&@63 @75 -|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64 +|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|,+0#0000000&| |b+0#00e0e07&|,+0#0000000&| |c+0#00e0e07&|)+0#e000e06&| +0#0000000&@53 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|a| +0#0000000&|a+0#00e0e07&|:|b| +0#0000000&|a+0#00e0e07&|:|c| +0#0000000&@56 +|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 -|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60 -@2|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49 -@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58 -@57|1|6|3|,|3| @8|8|7|%| +|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|.+0#00e0e07&@2|)+0#e000e06&| +0#0000000&@57 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0@2| +0#0000000&@62 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0| +0#0000000&@64 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|1| +0#0000000&|a+0#00e0e07&|:|2| +0#0000000&|a+0#00e0e07&|:|3| +0#0000000&|a+0#00e0e07&|:|4| +0#0000000&|a+0#00e0e07&|:|5| +0#0000000&|a+0#00e0e07&|:|6| +0#0000000&|a+0#00e0e07&|:|7| +0#0000000&|a+0#00e0e07&|:|8| +0#0000000&|a+0#00e0e07&|:|9| +0#0000000&|a+0#00e0e07&|:|1|0| +0#0000000&|a+0#00e0e07&|:|1@1| +0#0000000&|a+0#00e0e07&|:|1|2| +0#0000000&|a+0#00e0e07&|:|1|3| +0#0000000&|a+0#00e0e07&|:|1|4| +0#0000000&|a+0#00e0e07&|:|1|5|@+0#4040ff13&@2 +| +0#0000000&@56|1|6|3|,|3| @8|8|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump index b9ae9b1521..21c9372560 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58 -@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 +| +0&#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|1| +0#0000000&|a+0#00e0e07&|:|2| +0#0000000&|a+0#00e0e07&|:|3| +0#0000000&|a+0#00e0e07&|:|4| +0#0000000&|a+0#00e0e07&|:|5| +0#0000000&|a+0#00e0e07&|:|6| +0#0000000&|a+0#00e0e07&|:|7| +0#0000000&|a+0#00e0e07&|:|8| +0#0000000&|a+0#00e0e07&|:|9| +0#0000000&|a+0#00e0e07&|:|1|0| +0#0000000&|a+0#00e0e07&|:|1@1| +0#0000000&|a+0#00e0e07&|:|1|2| +0#0000000&|a+0#00e0e07&|:|1|3| +0#0000000&|a+0#00e0e07&|:|1|4| +0#0000000&|a+0#00e0e07&|:|1|5| +0#0000000&|a+0#00e0e07&|: +|1|6| +0#0000000&|a+0#00e0e07&|:|1|7| +0#0000000&|a+0#00e0e07&|:|1|8| +0#0000000&|a+0#00e0e07&|:|1|9| +0#0000000&|a+0#00e0e07&|:|2|0| +0#0000000&@52 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 @75 ->"+0#0000e05&| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55 +>"+0#0000e05&| |I|s@1|u|e| |#|1|6|2|4|3| |(|v|i|m|s|c|r|i|p|t| |d|e|f| |p|a|r|a|m|e|t|e|r|s| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t| |i|s| |w|r|o|n|g|)| +0#0000000&@7 @75 -|s+0#af5f00255&|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@52 +|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|T|e|s|t|(+0#e000e06&|l+0#00e0e07&|i|n|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|,+0#0000000&| |l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|]|)| +0#0000000&@29 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 @75 -|"+0#0000e05&| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@47 +|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@47 +|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60 +@2|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49 +@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58 +@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 -@75 -|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57 -@75 -@57|1|8|1|,|1| @8|9|7|%| +@57|1|8|0|,|1| @8|8|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_11.dump index c0e9e386c6..868930304f 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_11.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_11.dump @@ -1,20 +1,20 @@ | +0&#ffffff0@74 +@75 +|"+0#0000e05&| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55 +@75 +|s+0#af5f00255&|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@52 +>e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 +@75 +@75 +|"+0#0000e05&| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@47 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@47 +|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 +@75 +@75 +|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57 +@75 |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59 |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@55 |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58 -|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@55 -> @74 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|9@1|,|0|-|1| @6|B|o|t| +@57|1|9|8|,|1| @8|9|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_12.dump b/runtime/syntax/testdir/dumps/vim_ex_function_12.dump new file mode 100644 index 0000000000..d5e26ae2a8 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_function_12.dump @@ -0,0 +1,20 @@ +|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58 +|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@55 +> @74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|1|3|,|0|-|1| @6|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump index c8c048a0fe..326df16a61 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump @@ -17,4 +17,4 @@ | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@54 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 -@57|1|9|,|0|-|1| @8|5|%| +@57|1|9|,|0|-|1| @8|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump index 7787c5e945..8eb430d972 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump @@ -17,4 +17,4 @@ | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@48 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 -@57|3|7|,|1| @9|1|2|%| +@57|3|7|,|1| @9|1@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump index a5c5905e13..6a9fd9488f 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump @@ -17,4 +17,4 @@ ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@52 -@57|7|3|,|1| @9|2|5|%| +@57|7|3|,|1| @9|2|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump index 1bd9a10ad3..e0e97add1f 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump @@ -17,4 +17,4 @@ |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@33 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 -@57|9|1|,|3| @9|3|2|%| +@57|9|1|,|3| @9|3|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump index 0fc4e79991..934e3115a7 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump @@ -17,4 +17,4 @@ ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@32 -@57|1|0|9|,|0|-|1| @6|3|9|%| +@57|1|0|9|,|0|-|1| @6|3|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump index 3baa3fcac4..fba5b012e0 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump @@ -17,4 +17,4 @@ |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51 -@57|1|2|7|,|1| @8|4|6|%| +@57|1|2|7|,|1| @8|4@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump index 9a63a152c3..b4007e6d02 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump @@ -17,4 +17,4 @@ | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@38 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 -@57|1|4|5|,|1| @8|5|3|%| +@57|1|4|5|,|1| @8|5|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump index 9fd52eeb9a..47b294c6c1 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump @@ -9,12 +9,12 @@ ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@62 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|r|g|u|m|e|n|t|s| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@47 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|,+0#0000000&| |b+0#00e0e07&|,+0#0000000&| |c+0#00e0e07&|)+0#e000e06&| +0#0000000&@51 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|a| +0#0000000&|a+0#00e0e07&|:|b| +0#0000000&|a+0#00e0e07&|:|c| +0#0000000&@54 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -@57|1|6|3|,|7| @8|6|0|%| +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|.+0#00e0e07&@2|)+0#e000e06&| +0#0000000&@55 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0@2| +0#0000000&@60 +@57|1|6|3|,|7| @8|5|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump index 0ced9e88f0..dd7f7a1759 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump @@ -1,20 +1,20 @@ +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0@2| +0#0000000&@60 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0| +0#0000000&@62 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|1| +0#0000000&|a+0#00e0e07&|:|2| +0#0000000&|a+0#00e0e07&|:|3| +0#0000000&|a+0#00e0e07&|:|4| +0#0000000&|a+0#00e0e07&|:|5| +0#0000000&|a+0#00e0e07&|:|6| +0#0000000&|a+0#00e0e07&|:|7| +0#0000000&|a+0#00e0e07&|:|8| +0#0000000&|a+0#00e0e07&|:|9| +0#0000000&|a+0#00e0e07&|:|1|0| +0#0000000&|a+0#00e0e07&|:|1@1| +0#0000000&|a+0#00e0e07&|:|1|2| +0#0000000&|a+0#00e0e07&|:|1|3| +0#0000000&|a+0#00e0e07&|:|1|4| +0#0000000&|a+0#00e0e07&|:|1|5| +0#0000000& +||+0#0000e05#a8a8a8255| |a+0#00e0e07#ffffff0|:|1|6| +0#0000000&|a+0#00e0e07&|:|1|7| +0#0000000&|a+0#00e0e07&|:|1|8| +0#0000000&|a+0#00e0e07&|:|1|9| +0#0000000&|a+0#00e0e07&|:|2|0| +0#0000000&@48 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 +| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@62 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@53 -| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50 -||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 -| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@45 -| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@45 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@47 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@55 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@53 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @57 -| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53 -| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56 -@57|1|8|1|,|1| @8|6|7|%| +|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50 +@57|1|8|0|,|0|-|1| @6|6|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump index 32ddd8bf9d..631cb21ebe 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump @@ -1,20 +1,20 @@ -| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56 -| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53 +|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@45 | +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 +|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@45 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|n|d|f|u|n|c|t|i|o|n|"| +0#0000000&@52 -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52 -||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 -||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67 -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 -@57|1|9@1|,|0|-|1| @6|7|4|%| +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@55 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @57 +| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53 +| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56 +| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52 +@57|1|9|8|,|0|-|1| @6|7|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump index 7a247fbda8..7fd54b4cf7 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump @@ -1,20 +1,20 @@ -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|a|p@1|e|n|d| +0#0000000&@64 -||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 -||+0#0000e05#a8a8a8255| >.+0#af5f00255#ffffff0| +0#0000000&@71 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 +| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|n|d|f|u|n|c|t|i|o|n|"| +0#0000000&@52 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|c|h|a|n|g|e| +0#0000000&@64 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52 ||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 -||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 +||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 |-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 -||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|i|n|s|e|r|t| +0#0000000&@64 +||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|a|p@1|e|n|d| +0#0000000&@64 ||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 -||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71 -@57|2|1|7|,|1| @8|8|1|%| +@57|2|1|6|,|0|-|1| @6|7@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump index 7270a96b4a..e8f41dad6a 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump @@ -1,20 +1,20 @@ +||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 ||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@57 -||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@60 -| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |I|s@1|u|e| |#|1|5|6|7|1| +0#0000000&@58 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |:|f|u|n| |o|r| |:|d|e|f| |b|o|d|i|e|s| |c|o|m@1|e|n|c|i|n|g| |w|i|t|h| |e|m|p|t|y| |l|i|n|e|s| |i|f| +0#0000000&@2 -| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |c|o|n|t|a|i|n|s| |"+0#e000002&|f|"| +0#0000000&@41 -| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|1|(+0#e000e06&|)| +0#0000000&@63 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 +||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1>c|h|a|n|g|e| +0#0000000&@64 +||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 +||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58 +||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|i|n|s|e|r|t| +0#0000000&@64 +||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57 +||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|2|(+0#e000e06&|)| +0#0000000&@63 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 -@57|2|3|5|,|0|-|1| @6|8@1|%| +|-+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@57 +||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@60 +@57|2|3|4|,|3| @8|8|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump index ac0923c36d..5459f01440 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump @@ -1,20 +1,20 @@ -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@60 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|2|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 -||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |I|s@1|u|e| |#|1|5|6|7|1| +0#0000000&@58 +| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |:|f|u|n| |o|r| |:|d|e|f| |b|o|d|i|e|s| |c|o|m@1|e|n|c|i|n|g| |w|i|t|h| |e|m|p|t|y| |l|i|n|e|s| |i|f| +0#0000000&@2 +| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |c|o|n|t|a|i|n|s| |"+0#e000002&|f|"| +0#0000000&@41 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|1|(+0#e000e06&|)| +0#0000000&@63 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|2|(+0#e000e06&|)| +0#0000000&@63 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 -@57|2|5|3|,|5| @8|9|5|%| +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 +@57|2|5|2|,|1| @8|9|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump index bf7a660348..e77a995f7a 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump @@ -1,20 +1,20 @@ +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56 -||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|2|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 ||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 ||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|2|7|1|,|5| @8|B|o|t| +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 +@57|2|7|0|,|5| @8|9|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_16.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_16.dump new file mode 100644 index 0000000000..81c8a8cb0a --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_16.dump @@ -0,0 +1,20 @@ +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56 +||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62 +||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|8@1|,|5| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump index 7b0f19ffa6..ff9c0c5dbf 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump @@ -16,5 +16,5 @@ |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@39 @75 |"+0#0000e05&| |l|i|n|k| +0#0000000&@68 -|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@48 +|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@48 @57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump index 95e478dee4..e9c825710b 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump @@ -3,16 +3,16 @@ |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@39 @75 |"+0#0000e05&| |l|i|n|k| +0#0000000&@68 ->h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@48 -|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@47 -|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@51 -|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@50 +>h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@48 +|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@47 +|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@51 +|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@50 @75 |"+0#0000e05&| |d|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@60 -|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@40 -|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@39 -|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@43 -|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@42 +|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@40 +|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@39 +|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@43 +|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@42 @75 @75 |"+0#0000e05&| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |a|n|d| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@33 diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump index 38313aa429..ce26bc1ad9 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump @@ -16,5 +16,5 @@ |h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@5 @75 |h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63 +@6|\+0#e000e06&| +0#0000000&|F|o@1| @63 @57|3|7|,|7| @9|8|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump index 5d45c1989d..0ba712e0e2 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump @@ -1,8 +1,8 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63 +| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|F|o@1| @63 @6|\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@59 @75 |h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63 +@6|\+0#e000e06&| +0#0000000&|F|o@1| @63 @6>\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@46 |~+0#4040ff13&| @73 |~| @73 diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump index 80f43cfaea..f85f860b48 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump @@ -16,5 +16,5 @@ ||+0#0000e05#a8a8a8255| |A+0#e000e06#ffffff0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@59 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72 | +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|r@1|o|r| |-| |l|e|a|d|i|n|g| |l|o|w|e|r|c|a|s|e| |c|h|a|r|a|c|t|e|r| +0#0000000&@35 -| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47 +| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&+0#00e0e07&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47 @57|1|7|9|,|1| @8|9|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump index 761c21078d..6e0a5fb2d0 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump @@ -1,7 +1,7 @@ -| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47 +| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&+0#00e0e07&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47 | +0#0000e05#a8a8a8255@1|l+0#00e0e07#ffffff0|i|n|e|1| +0#0000000&@67 | +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e|2| @67 -| +0#0000e05#a8a8a8255@1|a+0#af5f00255#ffffff0|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@59 +| +0#0000e05#a8a8a8255@1|a+0#af5f00255#ffffff0|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&+0#00e0e07&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@59 | +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72 |~+0#4040ff13&| @73 |~| @73 diff --git a/runtime/syntax/testdir/dumps/vim_keymap_04.vim b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.vim similarity index 100% rename from runtime/syntax/testdir/dumps/vim_keymap_04.vim rename to runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.vim diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump index 763e641275..0f5ccdbffa 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump @@ -5,16 +5,16 @@ |m+0#af5f00255&|a|p| +0#0000000&@71 |m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| @63 @75 -|m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@1|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|m+0#af5f00255&|a|p|c|l|e|a|r|!| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -|t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>|<|e|x|p|r|>|<|n|o|w|a|i|t|>|<|s|c|r|i|p|t|>|<|s|i|l|e|n|t|>|<|s|p|e|c|i|a|l|>|<|u|n|i|q|u|e|>| +0#0000000&|l|h|s| |r|h|s| @7 +|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|n|o|w|a|i|t|>| +0#0000000&|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|<+0#e000e06&|s|p|e|c|i|a|l|>| +0#0000000&|<+0#e000e06&|u|n|i|q|u|e|>| +0#0000000&|l|h|s| |r|h|s| @1 +@75 +|"+0#0000e05&| |:|m|a|p| |s|p|e|c|i|a|l| |a|r|g|u|m|e|n|t|s| |a|r|e| |c|a|s|e| |s|e|n|s|i|t|i|v|e|,| |<|B|U|F@1|E|R|>| |i|s| |t|h|e| |L|H|S| +0#0000000&@10 +|m+0#af5f00255&|a|p| +0#0000000&|<|B|U|F@1|E|R|>| |r|h|s| @58 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|L|e|a|d|e|r|>|l+0#0000000&|h|s| @5|r|h|s| @50 +|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|L|o|c|a|l|L|e|a|d|e|r|>|l+0#0000000&|h|s| |r|h|s| @50 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |<+0#e000e06&|L|e|a|d|e|r|>|r+0#0000000&|h|s| @55 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |<+0#e000e06&|L|o|c|a|l|L|e|a|d|e|r|>|r+0#0000000&|h|s| @50 @75 @57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_01.dump b/runtime/syntax/testdir/dumps/vim_ex_map_01.dump index 0d9edd427f..51299511e9 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_01.dump @@ -1,20 +1,20 @@ -|o+0#af5f00255#ffffff0|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|m+0#af5f00255#ffffff0|a|p| +0#0000000&|<+0#e000e06&|L|e|a|d|e|r|>|l+0#0000000&|h|s| @5|r|h|s| @50 +|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|L|o|c|a|l|L|e|a|d|e|r|>|l+0#0000000&|h|s| |r|h|s| @50 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |<+0#e000e06&|L|e|a|d|e|r|>|r+0#0000000&|h|s| @55 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |<+0#e000e06&|L|o|c|a|l|L|e|a|d|e|r|>|r+0#0000000&|h|s| @50 +> @74 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |<+0#e000e06&|P|l|u|g|>|r+0#0000000&|h|s| @57 +@75 +|m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@1|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|m+0#af5f00255&|a|p|c|l|e|a|r|!| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 |t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 -> @74 -@75 -|"+0#0000e05&| |:|h|e|l|p| |m|a|p|-|b|a|r| +0#0000000&@59 -@75 -|"+0#0000e05&| |<|B|a|r|>| @4|'|<|'| |i|s| |n|o|t| |i|n| |'|c|p|o|p|t|i|o|n|s|'| +0#0000000&@37 -|m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |<+0#e000e06&|B|a|r|>| +0#0000000&|m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@35 -|"+0#0000e05&| |\||| @7|'|b|'| |i|s| |n|o|t| |i|n| |'|c|p|o|p|t|i|o|n|s|'| +0#0000000&@37 -|m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |\||| |m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@38 -|"+0#0000e05&| |^|V||| @6|a|l|w|a|y|s|,| |i|n| |V|i|m| |a|n|d| |V|i| +0#0000000&@41 -|m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |^+0#0000e05&|V||+0#0000000&| |m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@37 -@75 -|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |:|s|e|a|r|c|h|(|'|f|o@1|\@1|||b|a|r|'|)|<+0#e000e06&|C|R|>|:+0#0000000&|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@27 -@75 -@75 -@57|1|9|,|0|-|1| @7|1|5|%| +@57|1|9|,|0|-|1| @7|1|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_02.dump b/runtime/syntax/testdir/dumps/vim_ex_map_02.dump index 58ec003a44..a05d8a2945 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_02.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_02.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@74 -|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |R|H|S| +0#0000000&@59 +|t+0#af5f00255#ffffff0|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56 +@75 +@75 +|"+0#0000e05&| |:|h|e|l|p| |m|a|p|-|b|a|r| +0#0000000&@59 @75 -|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|b+0#0000000&|a|z| @59 -@2|\+0#e000e06&| +0#0000000&|:|e|c|h|o| |(|<+0#e000e06&|b|a|r|>| +0#0000000&@58 -@2>\+0#e000e06&| +0#0000000&@71 -@2|\+0#e000e06&|'+0#0000000&|b|a|r|'|)|<+0#e000e06&|c|r|>| +0#0000000&@61 -@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +>"+0#0000e05&| |<|B|a|r|>| @4|'|<|'| |i|s| |n|o|t| |i|n| |'|c|p|o|p|t|i|o|n|s|'| +0#0000000&@37 +|m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |<+0#e000e06&|B|a|r|>| +0#0000000&|m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@35 +|"+0#0000e05&| |\||| @7|'|b|'| |i|s| |n|o|t| |i|n| |'|c|p|o|p|t|i|o|n|s|'| +0#0000000&@37 +|m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |\||| |m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@38 +|"+0#0000e05&| |^|V||| @6|a|l|w|a|y|s|,| |i|n| |V|i|m| |a|n|d| |V|i| +0#0000000&@41 +|m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |^+0#0000e05&|V||+0#0000000&| |m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@37 @75 -|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67 -@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 -@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |:|s|e|a|r|c|h|(|'|f|o@1|\@1|||b|a|r|'|)|<+0#e000e06&|C|R|>|:+0#0000000&|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@27 @75 -|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67 -@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 -@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 @75 -|m+0#af5f00255&|a|p| +0#0000000&|l|h|s|^+0#0000e05&|V| +0#0000000&@65 -@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 -@57|3|7|,|3| @9|3|6|%| +|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |R|H|S| +0#0000000&@59 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|L|e|a|d|e|r|>|b+0#0000000&|a|z| @59 +@2|\+0#e000e06&| +0#0000000&|:|e|c|h|o| |(|<+0#e000e06&|B|a|r|>| +0#0000000&@58 +@57|3|7|,|1| @9|3|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_03.dump b/runtime/syntax/testdir/dumps/vim_ex_map_03.dump index 62966be03a..d6dbe57398 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_03.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_03.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 -@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 -@75 -|m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|s| @64 +| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&|:|e|c|h|o| |(|<+0#e000e06&|B|a|r|>| +0#0000000&@58 +@2|\+0#e000e06&| +0#0000000&@71 +@2|\+0#e000e06&|'+0#0000000&|b|a|r|'|)|<+0#e000e06&|C|R|>| +0#0000000&@61 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 -@2>\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 @75 -|m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|s| @64 +>m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 @2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 @75 -|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| @63 -|m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|^+0#0000e05&|V| +0#0000000&|s|^+0#0000e05&|V| +0#0000000&@1|r|h|s| @54 -@75 |m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67 -@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| |(|m|a|t|c|h|e|s| |a|s| |R|H|S| |b|u|t| |h|a|r|m|l|e|s@1|)| +0#0000000&@32 -|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|l|e|a|r|"| +0#0000000&@62 +@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 @75 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s|^+0#0000e05&|V| +0#0000000&@65 +@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 @75 -@57|5@1|,|3| @9|5|6|%| +|m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|s| @64 +@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +@57|5@1|,|1| @9|4|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_04.dump b/runtime/syntax/testdir/dumps/vim_ex_map_04.dump index 7f12539ce4..feb06ed1e0 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_04.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_04.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@74 -|"+0#0000e05&| |D|i|f@1|e|r|e|n|t|i|a|t|e| |m|a|p|(|)| |f|r|o|m| |:|m|a|p| +0#0000000&@43 +| +0&#ffffff0@1|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 @75 -|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@46 +|m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|s| @64 +@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +@2>\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| @63 +|m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|^+0#0000e05&|V| +0#0000000&|s|^+0#0000e05&|V| +0#0000000&@1|r|h|s| @54 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67 +@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| |(|m|a|t|c|h|e|s| |a|s| |R|H|S| |b|u|t| |h|a|r|m|l|e|s@1|)| +0#0000000&@32 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|l|e|a|r|"| +0#0000000&@62 @75 ->c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@51 -|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@50 @75 -|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60 -@2|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@44 -@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@49 -@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@48 -|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 +|"+0#0000e05&| |D|i|f@1|e|r|e|n|t|i|a|t|e| |m|a|p|(|)| |f|r|o|m| |:|m|a|p| +0#0000000&@43 +@75 +|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@46 @75 -|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65 -@2|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@44 -@2|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@54 -| +0#0000e05&@1|#| |:|m|a|p| |L|H|S|=|(|l|i|s|t|,| |R|H|S|=|'|v|:|v|a|l|'|)| +0#0000000&@42 -@2|m+0#af5f00255&|a|p| +0#0000000&|(|l|i|s|t|,| |'|v|:|v|a|l|'|)| @53 -@57|7|3|,|1| @9|7@1|%| +@57|7|3|,|3| @9|6|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_05.dump b/runtime/syntax/testdir/dumps/vim_ex_map_05.dump index 4bb04c0886..9f2285edab 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_05.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_05.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|m+0#af5f00255&|a|p| +0#0000000&|(|l|i|s|t|,| |'|v|:|v|a|l|'|)| @53 -|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 -@75 -@75 -|"+0#0000e05&| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59 -> @74 -|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|f+0#0000000&|o@1| |:|e|c|h|o| |c|a|l@1|(| @42 -@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 -@2|\+0#e000e06&| +0#0000000&|{|x|-|>|x|}|,| @63 -@2|\+0#e000e06&| +0#0000000&|[|'|f|o@1|'|]|)|<+0#e000e06&|c|r|>| +0#0000000&@58 +| +0&#ffffff0@74 +|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@51 +|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@50 @75 -|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|b+0#0000000&|a|r| |:|e|c|h|o| |(| @46 -@2|\+0#e000e06&| +0#0000000&@71 -@2|\+0#e000e06&| +0#0000000&|'|b|a|r|'|)|<+0#e000e06&|c|r|>| +0#0000000&@60 +|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60 +@2>m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@44 +@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@49 +@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@48 +|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 +|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65 +@2|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@44 +@2|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@54 +| +0#0000e05&@1|#| |:|m|a|p| |L|H|S|=|(|l|i|s|t|,| |R|H|S|=|'|v|:|v|a|l|'|)| +0#0000000&@42 +@2|m+0#af5f00255&|a|p| +0#0000000&|(|l|i|s|t|,| |'|v|:|v|a|l|'|)| @53 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 @75 -|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000000&@64 -|"+0#0000e05&| @2|/|a|u|t|o|l|o|a|d|/|n|e|t|r|w|.|v|i|m| +0#0000000&@51 @75 -@57|9|1|,|0|-|1| @7|9|8|%| +|"+0#0000e05&| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59 +@57|9|1|,|3| @9|8|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_06.dump b/runtime/syntax/testdir/dumps/vim_ex_map_06.dump index 35e9022e75..f047296918 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_map_06.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_map_06.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@74 ->i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|m|a|p|t|o|(+0#e000e06&|'+0#e000002&|<|P|l|u|g|>|N|e|t|r|w|O|p|e|n|F|i|l|e|'|)+0#e000e06&| +0#0000000&@9|||n+0#af5f00255&|m|a|p| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|<+0#e000e06&|n|o|w|a|i +|"+0#0000e05#ffffff0| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59 +@75 +|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|L|e|a|d|e|r|>|f+0#0000000&|o@1| |:|e|c|h|o| |c|a|l@1|(| @42 +@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62 +@2|\+0#e000e06&| +0#0000000&|{|x|-|>|x|}|,| @63 +@2>\+0#e000e06&| +0#0000000&|[|'|f|o@1|'|]|)|<+0#e000e06&|C|R|>| +0#0000000&@58 +@75 +|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|L|e|a|d|e|r|>|b+0#0000000&|a|r| |:|e|c|h|o| |(| @46 +@2|\+0#e000e06&| +0#0000000&@71 +@2|\+0#e000e06&| +0#0000000&|'|b|a|r|'|)|<+0#e000e06&|C|R|>| +0#0000000&@60 +@75 +@75 +|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000000&@64 +|"+0#0000e05&| @2|/|a|u|t|o|l|o|a|d|/|n|e|t|r|w|.|v|i|m| +0#0000000&@51 +@75 +|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|m|a|p|t|o|(+0#e000e06&|'+0#e000002&|<|P|l|u|g|>|N|e|t|r|w|O|p|e|n|F|i|l|e|'|)+0#e000e06&| +0#0000000&@9|||n+0#af5f00255&|m|a|p| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|<+0#e000e06&|n|o|w|a|i |t|>| +0#0000000&|%| |<+0#e000e06&|P|l|u|g|>|N+0#0000000&|e|t|r|w|O|p|e|n|F|i|l|e|||e+0#af5f00255&|n|d|i|f| +0#0000000&@44 |~+0#4040ff13&| @73 |~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|0|5|,|1| @8|B|o|t| +| +0#0000000&@56|1|0|9|,|3| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_01.dump b/runtime/syntax/testdir/dumps/vim_ex_set_01.dump index 012170ecce..6c1421ae2b 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_set_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_set_01.dump @@ -17,4 +17,4 @@ |s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|++0#af5f00255&|=|9+0#0000000&|6| @61 |s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|^+0#af5f00255&|=|2+0#0000000&| @62 |s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|-+0#af5f00255&|=|9+0#0000000&|6| @61 -@57|1|9|,|1| @9|1|7|%| +@57|1|9|,|1| @9|1|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_02.dump b/runtime/syntax/testdir/dumps/vim_ex_set_02.dump index d6328d2dba..0765de0c8e 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_set_02.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_set_02.dump @@ -17,4 +17,4 @@ |"+0#0000e05&| |:|h|e|l|p| |o|p|t|i|o|n|-|b|a|c|k|s|l|a|s|h| +0#0000000&@50 @75 |"+0#0000e05&| |W|h|e|n| |s|e|t@1|i|n|g| |o|p|t|i|o|n|s| |u|s|i|n|g| |||:|l|e|t||| |a|n|d| |||l|i|t|e|r|a|l|-|s|t|r|i|n|g|||,| |y|o|u| |n|e@1|d| |t|o| |u|s|@+0#4040ff13&@2 -| +0#0000000&@56|3|7|,|0|-|1| @7|4|1|%| +| +0#0000000&@56|3|7|,|0|-|1| @7|3|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_03.dump b/runtime/syntax/testdir/dumps/vim_ex_set_03.dump index fb013bc992..5d2285ff4f 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_set_03.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_set_03.dump @@ -17,4 +17,4 @@ |"+0#0000e05&| |T|h|i|s| |e|x|a|m|p|l|e| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|||t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@15 |s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|i|t|l|e|s|t|r|i|n|g|=+0#af5f00255&|h+0#0000000&|i|\|||t|h|e|r|e| @49 |"+0#0000e05&| |T|h|i|s| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|"| +0#0000e05&|a|n|d| |'|i|c|o|n|s|t|r|i|n|g|'| |t|o| |"+0#e000002&|t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@1 -@57|5|4|,|1| @9|6|5|%| +@57|5|4|,|1| @9|5|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_04.dump b/runtime/syntax/testdir/dumps/vim_ex_set_04.dump index 6280f6af4e..e2b6b9d263 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_set_04.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_set_04.dump @@ -17,4 +17,4 @@ |s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @54 @6|"+0#0000e05&|\| |d|e|f| |i|s| |t|h|e| |'|d|e|f|i|n|e|'| |o|p|t|i|o|n| +0#0000000&@39 @6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|e|f|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @51 -@57|7|2|,|1| @9|8|9|%| +@57|7|2|,|1| @9|7|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_05.dump b/runtime/syntax/testdir/dumps/vim_ex_set_05.dump index 3f675294e6..fcc8be4d62 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_set_05.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_set_05.dump @@ -7,14 +7,14 @@ |s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&| +0#0000000&@65 @6|"+0#0000e05&|\| |d|e|f| |i|s| |a| |'|p|a|t|h|'| |d|i|r|e|c|t|o|r|y| |v|a|l|u|e| +0#0000000&@34 @6|\+0#e000e06&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f| @60 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|9|0|,|0|-|1| @7|B|o|t| +@75 +@75 +|"+0#0000e05&| |C|o|m|p|i|l|e|r|S|e|t| +0#0000000&@61 +@75 +|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|a+0#0000000&|n|t| @51 +|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|e+0#e000e06&|r@1|o|r|f|o|r|m|a|t|=+0#af5f00255&|\+0#0000000&| |%|#|[|%|.|%|#|]|\| |%|#|%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|%+0#0000000&|v|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|\+0#0000000&| |%|t|%|[|%|^|:+0#e000e06&|]+0#0000000&|%|#|:+0#e000e06&|%+0#0000000&|m|,+0#e000e06& +| +0#0000000&@3|\+0#e000e06&|%+0#0000000&|A|\| |%|#|[|%|.|%|#|]|\| |%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|\+0#0000000&| |%|m|,+0#e000e06&|%+0#0000000&|-|Z|\| |%|#|[|%|.|%|#|]|\| |%|p|^|,+0#e000e06&|%+0#0000000&|C|\| |%|#|[|%|.|%|#|]|\| |%|#|%|m| @7 +@75 +@75 +|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|d|o|u|b|l|e| |b|a|c|k|s|l|a|s|h|)| +0#0000000&@37 +@57|9|0|,|0|-|1| @7|8|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_06.dump b/runtime/syntax/testdir/dumps/vim_ex_set_06.dump new file mode 100644 index 0000000000..8807faff9b --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_set_06.dump @@ -0,0 +1,20 @@ +|"+0#0000e05#ffffff0| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|d|o|u|b|l|e| |b|a|c|k|s|l|a|s|h|)| +0#0000000&@37 +@75 +|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&|c+0#e000e06&|o|m|=+0#af5f00255&|s+0#0000000&|1|:+0#e000e06&|/+0#0000000&|*|,+0#e000e06&|m+0#0000000&|b|:+0#e000e06&|*+0#0000000&|,+0#e000e06&|e+0#0000000&|x|:+0#e000e06&|*+0#0000000&|/|,+0#e000e06&|b+0#0000000&|:+0#e000e06&|-+0#0000000&@1|,+0#e000e06&|b+0#0000000&|e|:+0#e000e06&|\+0#0000000&@1| @34 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@64 +|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&|i+0#e000e06&|n|c|l|u|d|e|=+0#af5f00255&|^+0#0000000&|\@1|s|*|\@1|%|(|s|o|\@1|%|[|u|r|c|e|]|\@2|||r|u|\@1|%|[|n|t|i|m|e|]|\@1|)|[|!|\| |]|\| |*|\@1|z|s|[|^|\@1|||]|* +>e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@64 +|s+0#af5f00255&|e|t| +0#0000000&|q+0#e000e06&|u|o|t|e@1|s|c|a|p|e|=+0#af5f00255&|\+0#0000000&@1| @56 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@64 +|s+0#af5f00255&|e|t| +0#0000000&|q+0#e000e06&|u|o|t|e@1|s|c|a|p|e|=+0#af5f00255&|\+0#0000000&| @57 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@64 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|0|8|,|1| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump index 916f96dc4a..7707bb33e4 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump @@ -1,20 +1,20 @@ >"+0#0000e05#ffffff0| |V|i|m| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d| +0#0000000&@53 @75 -|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@20 -|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s| |n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&|k|e|y|w|o|r|d| |c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18 -|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a -|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @43 @75 -|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54 +|"+0#0000e05&| |:|s|y|n|-|c|a|s|e| +0#0000000&@63 @75 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51 -@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 -@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59 -@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e| +0#0000000&@63 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&@57 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e| +0#0000000&|i+0#00e0003&|g|n|o|r|e| +0#0000000&@56 +@75 +|"+0#0000e05&| |:|s|y|n|-|c|o|n|c|e|a|l| +0#0000000&@60 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&@60 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|n| +0#0000000&@57 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56 +@75 +|"+0#0000e05&| |:|s|y|n|-|f|o|l|d|l|e|v|e|l| +0#0000000&@58 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&@58 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52 @57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump index bef158c761..0898a8f100 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59 -@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 -@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41 -@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34 -@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55 -@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 -@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57 -@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60 -@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52 -@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56 -@57|1|8|,|7| @10|7|%| +|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56 +@75 +|"+0#0000e05&| |:|s|y|n|-|f|o|l|d|l|e|v|e|l| +0#0000000&@58 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&@58 +>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l| +0#0000000&|m+0#00e0003&|i|n|i|m|u|m| +0#0000000&@50 +@75 +|"+0#0000e05&| |:|s|y|n|-|i|s|k|e|y|w|o|r|d| +0#0000000&@58 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&@58 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@52 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d| +0#0000000&|@+0#00e0003&|,+0#e000e06&|4+0#00e0003&|8|-|5|7|,+0#e000e06&|1+0#00e0003&|9|2|-|2|5@1|,+0#e000e06&|$+0#00e0003&|,+0#e000e06&|_+0#00e0003&| +0#0000000&@38 +@75 +|"+0#0000e05&| |:|s|y|n|-|l|i|s|t| +0#0000000&@63 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&@63 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|F|o@1| @59 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|@|B|a|r| @58 +@57|1|9|,|1| @10|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump index bcc59d488d..e86d0df0fa 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56 -@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58 -@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56 -@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58 -@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56 -@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58 +|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|@|B|a|r| @58 @75 -|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&@55 -@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52 -@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65 -| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47 -| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b| +0#0000000&@53 -| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47 -| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b| +0#0000000&@53 -| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47 -| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b| +0#0000000&@53 -| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54 -| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66 -@57|3|6|,|7| @9|1|7|%| +|"+0#0000e05&| |:|s|y|n|-|s|p|e|l@1| +0#0000000&@62 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&@62 +>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|t+0#00e0003&|o|p|l|e|v|e|l| +0#0000000&@53 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|n+0#00e0003&|o|t|o|p|l|e|v|e|l| +0#0000000&@51 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| +0#0000000&@54 +@75 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c@1|o|m@1|e|n|t| +0#0000000&@54 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&@54 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| @50 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n +|"| +0#0000000&@73 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| |m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t +@1|e|r|n|"| +0#0000000&@69 +@75 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53 +@57|3|7|,|1| @9|1|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump index 66ccef3128..50b0c5073e 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump @@ -1,20 +1,20 @@ -| +0#e000002#ffffff0@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66 -@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 -@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59 -@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 -@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41 -@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34 -@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55 -@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 -@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57 -@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52 -@57|5|4|,|7| @9|2|8|%| +|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|f+0#00e0003&|r|o|m|s|t|a|r|t| +0#0000000&@53 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|f+0#00e0003&|r|o|m|s|t|a|r|t| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r +|n|"| +0#0000000&@72 +> @74 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|b|r|e|a|k|s| +0#0000000&@52 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@50 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7 +@75 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|c|o|n|t| +0#0000000&@54 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@44 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@7 +@75 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|(|m|i|n|||m|a|x|)|l|i|n|e|s| +0#0000000&@48 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39 +@57|5|2|,|0|-|1| @7|1|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump index 0cd153d562..0b45809b77 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28 -@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54 -@6>\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62 -@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59 -@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60 -@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57 -@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59 +|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7 +|"+0#0000e05&| |o|b|s|o|l|e|t|e| +0#0000000&@64 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|l+0#00e0003&|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@54 @75 -|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53 -@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 -@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53 -@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45 -@57|7|2|,|7| @9|3|9|%| +>"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|y|n|c| |p|a|t@1|e|r|n|s| +0#0000000&@49 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|t|e|s|t|F|o@1| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|t|e|s|t|B|a|r| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|N|O|N|E| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h| |g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|N|O|N|E| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17 +@75 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|k|i|p| |g|r|o|u|p|s| +0#0000000&@51 +@75 +|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@40 +|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e +|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@63 +@75 +|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57 +@57|7|0|,|1| @9|2|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump index ff05fd1b50..ee3fe19136 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45 -@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54 -@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&@47 -@6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55 -@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@49 -@6>"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51 +|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57 +@75 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@57 +|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|F|o@1| @53 +@75 +>"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|r|e| |n|o|t| |e|x|p|l|i|c|i|t|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |:|s|y|n|t|a|x|,| |s|e@1| |:|h|e|l|p| |:|c|o|m@1|e|n|t +|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@20 +|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s| |n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| |k|e|y|w|o|r|d| |c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18 +|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| |s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a +|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @43 +@75 +|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54 +@75 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51 +@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 +@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59 @6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41 -@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34 -@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55 -@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 -@57|9|0|,|7| @9|5|0|%| +@57|8|7|,|1| @9|3|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump index 05cfd6419f..f9e0a5185b 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 +| +0&#ffffff0@5|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 +@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41 +@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34 +@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47 +@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55 +@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 @6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57 @6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60 -@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28 -@6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59 -@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54 -@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62 -@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59 -@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60 -@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55 -@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57 -@57|1|0|8|,|7| @8|6|1|%| +@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52 +@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56 +@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58 +@57|1|0|4|,|7| @8|3|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump index d442dd2910..648169124b 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57 -@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51 -@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59 -@75 -|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51 -@6>"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 -@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50 -@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3| @13 -@75 -|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51 +| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58 +@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56 +@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58 +@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56 +@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58 +> @74 +|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h| @55 +@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52 +@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65 +| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47 +| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b| +0#0000000&@53 +| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47 +| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b| +0#0000000&@53 +| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47 +| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b| +0#0000000&@53 +| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54 +| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66 @6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 -@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55 -@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55 -@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49 -@75 -@75 -|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52 -@75 -@57|1|2|6|,|7| @8|7|1|%| +@57|1|2@1|,|0|-|1| @6|4|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump index 84862c7c35..0fb66ca32d 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@74 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|1| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|2| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|3| +0#0000000&|k|e|y|w|o|r|d| @45 ->s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|4| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|5| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|6| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|7| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|8| +0#0000000&|k|e|y|w|o|r|d| @45 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|9| +0#0000000&|k|e|y|w|o|r|d| @45 -@75 -|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51 +| +0&#ffffff0@5|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 +@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59 +@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 +@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41 @6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56 -@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 -@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43 -@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 -@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49 -@57|1|4@1|,|1| @8|8|2|%| +@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34 +@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47 +@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55 +@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 +@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57 +@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60 +@57|1|4|0|,|7| @8|5|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump index 0b5e3d7ab5..dfae08ddff 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49 -@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 -@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r| |s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32 -@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58 -@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58 -@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58 +| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28 +@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54 +@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62 +@6>"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51 +@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59 +@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60 +@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57 +@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51 +@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59 @75 -@75 -|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48 -@75 -|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41 -|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d| |n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d|s| +0#0000000&@7 -@75 -|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)| +0#0000000&@46 -@2|"+0#0000e05&| |.@2| +0#0000000&@67 -@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25 -@4|"+0#0000e05&| |.@2| +0#0000000&@65 -@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 -@57|1|6|2|,|7| @8|9|3|%| +|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| @53 +@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 +@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53 +@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45 +@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54 +@57|1|5|8|,|7| @8|6|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump index 1627f394fb..07ea1c2b13 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 -@2|"+0#0000e05&| |.@2| +0#0000000&@67 -|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 -@75 -|"+0#0000e05&| |e|a|r|l|y| |t|e|r|m|i|n|a|t|i|o|n| |o|f| |v|i|m|S|y|n|R|e|g|i|o|n| +0#0000000&@39 -> @74 -|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53 -@6|"+0#0000e05&|\| ||| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |a|r|g|s| |r|e|g|i|o|n| +0#0000000&@35 -@6|"+0#0000e05&|\| |s|t|a|r|t|=|"|f|o@1|\|||b|a|r|"| +0#0000000&@49 -@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|"| +0#0000000&@53 -@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|"| +0#0000000&@57 -@75 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|8|0|,|0|-|1| @6|B|o|t| +| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54 +@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&@47 +@6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55 +@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@49 +@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51 +@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59 +@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41 +@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34 +@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47 +@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55 +@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57 +@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49 +@57|1|7|6|,|7| @8|6|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_11.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_11.dump new file mode 100644 index 0000000000..f7dce6fb2b --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_11.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57 +@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60 +@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50 +@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28 +@6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51 +@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59 +@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54 +@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62 +@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51 +@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59 +@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60 +@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55 +@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57 +@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51 +@57|1|9|4|,|7| @8|7|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_12.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_12.dump new file mode 100644 index 0000000000..f71771096f --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_12.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@5|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51 +@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59 +@75 +|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51 +@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 +@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50 +@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3| @13 +@75 +|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51 +@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58 +@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55 +@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55 +@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49 +@75 +@75 +|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52 +@75 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45 +@57|2|1|2|,|7| @8|8|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_13.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_13.dump new file mode 100644 index 0000000000..ab8d1a8a86 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_13.dump @@ -0,0 +1,20 @@ +|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|1| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|2| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|3| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|4| |k|e|y|w|o|r|d| @45 +>s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|5| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|6| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|7| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|8| |k|e|y|w|o|r|d| @45 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|N|e|x|t|9| |k|e|y|w|o|r|d| @45 +@75 +|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51 +@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56 +@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 +@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43 +@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 +@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49 +@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 +@57|2|3|0|,|1| @8|8@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_14.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_14.dump new file mode 100644 index 0000000000..ee8798c7b7 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_14.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@5|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56 +@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r| |s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32 +@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58 +@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58 +@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58 +@75 +@75 +|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48 +@75 +|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41 +|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d| |n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d|s| +0#0000000&@7 +@75 +|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)| +0#0000000&@46 +@2|"+0#0000e05&| |.@2| +0#0000000&@67 +@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25 +@4|"+0#0000e05&| |.@2| +0#0000000&@65 +@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66 +@2|"+0#0000e05&| |.@2| +0#0000000&@67 +@57|2|4|8|,|7| @8|9|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_15.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_15.dump new file mode 100644 index 0000000000..64a53aabe8 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_15.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@1|"+0#0000e05&| |.@2| +0#0000000&@67 +|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 +@75 +|"+0#0000e05&| |e|a|r|l|y| |t|e|r|m|i|n|a|t|i|o|n| |o|f| |v|i|m|S|y|n|R|e|g|i|o|n| +0#0000000&@39 +@75 +>s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n| @53 +@6|"+0#0000e05&|\| ||| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |a|r|g|s| |r|e|g|i|o|n| +0#0000000&@35 +@6|"+0#0000e05&|\| |s|t|a|r|t|=|"|f|o@1|\|||b|a|r|"| +0#0000000&@49 +@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|"| +0#0000000&@53 +@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|"| +0#0000000&@57 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|6@1|,|1| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump b/runtime/syntax/testdir/dumps/vim_expr_01.dump index c6bb6dbc66..a41994c4c2 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_01.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_01.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|f|o@1|'+0#e000e06&@1|'+0#e000002&| +0#0000000&@62 |e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|f|o@1|'+0#e000e06&@1|b+0#e000002&|a|r|'| +0#0000000&@59 @75 -@57|1|5|,|1| @10|4|%| +@57|1|5|,|1| @10|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump b/runtime/syntax/testdir/dumps/vim_expr_02.dump index 1374c3e277..9f403fb944 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_02.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_02.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|'+0#e000e06&@1|f+0#e000002&|o@1|'| +0#0000000&@61 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|f|o@1|'+0#e000e06&@1|'+0#e000002&| +0#0000000&@61 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|f|o@1|'+0#e000e06&@1|b+0#e000002&|a|r|'| +0#0000000&@58 -@57|3|2|,|0|-|1| @7|1@1|%| +@57|3|2|,|0|-|1| @8|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump b/runtime/syntax/testdir/dumps/vim_expr_03.dump index 8bfd8244e6..f1de1ca96f 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_03.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_03.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|o|3|7@1| +0#0000000&@63 |e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|O|3|7@1| +0#0000000&@63 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|3|7@1| +0#0000000&@64 -@57|5|0|,|1| @9|1|9|%| +@57|5|0|,|1| @9|1|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_04.dump b/runtime/syntax/testdir/dumps/vim_expr_04.dump index 692c9204ce..76f0ca7e22 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_04.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_04.dump @@ -17,4 +17,4 @@ |e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|0|E|-|6| +0#0000000&@63 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@58 @75 -@57|6|8|,|1| @9|2|7|%| +@57|6|8|,|1| @9|2|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_05.dump b/runtime/syntax/testdir/dumps/vim_expr_05.dump index 24e34a2443..21c8594db0 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_05.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_05.dump @@ -17,4 +17,4 @@ @6|\+0#e000e06&|]| +0#0000000&@66 |e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |'+0#e000002&|t|w|o|'|,+0#0000000&| |1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|,+0#0000000&| |"+0#e000002&|f|o|"| +0#0000000&|.+0#af5f00255&@1| +0#0000000&|"+0#e000002&|u|r|"|]+0#e000e06&| +0#0000000&@38 @75 -@57|8|6|,|1| @9|3|5|%| +@57|8|6|,|1| @9|2|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_06.dump b/runtime/syntax/testdir/dumps/vim_expr_06.dump index b6bb3f76d7..fee408f38b 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_06.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_06.dump @@ -3,18 +3,18 @@ |a|c|e| |i|n| |l|i|s|t| |o|f| |s|t|r|i|n|g|)| +0#0000000&@52 |l+0#af5f00255&|e|t| +0#0000000&|l+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|'+0#e000002&|a|'|,+0#0000000&|'+0#e000002&|b|'|,+0#0000000&|'+0#e000002&|c|'|]+0#e000e06&| +0#0000000&@53 @75 ->"+0#0000e05&| |R|e|g|i|s|t|e|r| +0#0000000&@64 +>"+0#0000e05&| |D|i|c|t|i|o|n|a|r|y| +0#0000000&@62 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|"| +0#0000000&@67 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|0| +0#0000000&|@+0#e000e06&|1| +0#0000000&|@+0#e000e06&|2| +0#0000000&|@+0#e000e06&|3| +0#0000000&|@+0#e000e06&|4| +0#0000000&|@+0#e000e06&|5| +0#0000000&|@+0#e000e06&|6| +0#0000000&|@+0#e000e06&|7| +0#0000000&|@+0#e000e06&|8| +0#0000000&|@+0#e000e06&|9| +0#0000000&@40 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|-| +0#0000000&@67 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|@+0#e000e06&|b| +0#0000000&|@+0#e000e06&|c| +0#0000000&|@+0#e000e06&|d| +0#0000000&|@+0#e000e06&|e| +0#0000000&|@+0#e000e06&|f| +0#0000000&|@+0#e000e06&|g| +0#0000000&|@+0#e000e06&|h| +0#0000000&|@+0#e000e06&|i| +0#0000000&|@+0#e000e06&|j| +0#0000000&|@+0#e000e06&|k| +0#0000000&|@+0#e000e06&|l| +0#0000000&|@+0#e000e06&|m| +0#0000000&|@+0#e000e06&|n| +0#0000000&|@+0#e000e06&|o| +0#0000000&|@+0#e000e06&|p| +0#0000000&|@+0#e000e06&|q| +0#0000000&|@+0#e000e06&|r| +0#0000000&|@+0#e000e06&|s| +0#0000000&|@+0#e000e06&|t| +0#0000000&|@+0#e000e06&|u| +0#0000000&|@+0#e000e06&|v| +0#0000000&|@+0#e000e06&|w| +0#0000000&|@+0#e000e06& -|x| +0#0000000&|@+0#e000e06&|y| +0#0000000&|@+0#e000e06&|z| +0#0000000&@67 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|A| +0#0000000&|@+0#e000e06&|B| +0#0000000&|@+0#e000e06&|C| +0#0000000&|@+0#e000e06&|D| +0#0000000&|@+0#e000e06&|E| +0#0000000&|@+0#e000e06&|F| +0#0000000&|@+0#e000e06&|G| +0#0000000&|@+0#e000e06&|H| +0#0000000&|@+0#e000e06&|I| +0#0000000&|@+0#e000e06&|J| +0#0000000&|@+0#e000e06&|K| +0#0000000&|@+0#e000e06&|L| +0#0000000&|@+0#e000e06&|M| +0#0000000&|@+0#e000e06&|N| +0#0000000&|@+0#e000e06&|O| +0#0000000&|@+0#e000e06&|P| +0#0000000&|@+0#e000e06&|Q| +0#0000000&|@+0#e000e06&|R| +0#0000000&|@+0#e000e06&|S| +0#0000000&|@+0#e000e06&|T| +0#0000000&|@+0#e000e06&|U| +0#0000000&|@+0#e000e06&|V| +0#0000000&|@+0#e000e06&|W| +0#0000000&|@+0#e000e06& -|X| +0#0000000&|@+0#e000e06&|Y| +0#0000000&|@+0#e000e06&|Z| +0#0000000&@67 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|:| +0#0000000&|@+0#e000e06&|.| +0#0000000&|@+0#e000e06&|%| +0#0000000&|@+0#e000e06&|#| +0#0000000&|@+0#e000e06&|=| +0#0000000&|@+0#e000e06&|*| +0#0000000&|@+0#e000e06&|+| +0#0000000&|@+0#e000e06&|~| +0#0000000&|@+0#e000e06&|_| +0#0000000&|@+0#e000e06&|/| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&|}| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52 @75 -|"+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 @75 -|"+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65 -@57|1|0|3|,|1| @8|4|2|%| +@57|1|0|3|,|1| @8|3|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_07.dump b/runtime/syntax/testdir/dumps/vim_expr_07.dump index c2796e50bf..849e719771 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_07.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_07.dump @@ -1,20 +1,20 @@ -|"+0#0000e05#ffffff0| |T|e|r|n|a|r|y| +0#0000000&@65 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +| +0&#ffffff0@74 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +>e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21 -> @74 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60 -@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50 -@6|\+0#e000e06&| +0#0000000&@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52 -|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58 -@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52 -@6|\+0#e000e06&| +0#0000000&@8|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50 -@6|\+0#e000e06&| +0#0000000&@8|l+0#00e0e07&|n|u|m| +0#0000000&@54 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 -|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48 -@57|1@1|9|,|0|-|1| @6|5|0|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@68 +@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +@6|\+0#e000e06&|}| +0#0000000&@66 +@57|1|2|1|,|1| @8|3|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_08.dump b/runtime/syntax/testdir/dumps/vim_expr_08.dump index 1b17c0acfd..9bbf30cf34 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_08.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_08.dump @@ -1,20 +1,20 @@ -|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54 -|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51 -|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44 ->e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57 -|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54 +| +0&#ffffff0@5|\+0#e000e06&|}| +0#0000000&@66 @75 -|"+0#0000e05&| |F|a|l|s|y| +0#0000000&@67 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|"+0#0000e05&| +0#0000000&|T+0#0000001#ffff4012|O|D|O|:+0#e000e06#ffffff0| +0#0000e05&|a|r|b|i|t|r|a|r|y| |e|x|p|r|e|s@1|i|o|n| |k|e|y|s| +0#0000000&@41 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43 -|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47 +|"+0#0000e05&| |L|i|t|e|r|a|l| |D|i|c|t|i|o|n|a|r|y| +0#0000000&@54 +> @74 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{|}| +0#0000000&@66 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&@2|f+0#00e0e07&|o@1|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@51 @75 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62 -@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41 @75 -@57|1|3|7|,|1| @8|5|8|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 +@57|1|3|9|,|0|-|1| @6|4@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_09.dump b/runtime/syntax/testdir/dumps/vim_expr_09.dump index d38fcfd19d..5e71b29fc0 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_09.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_09.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@74 -|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63 -|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55 -|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 -|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55 ->e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57 -|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61 -|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59 +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 +>e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39 @75 -|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |u|s|i|n|g| |'|i|g|n|o|r|c|a|s|e|'| +0#0000000&@42 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@57|1|5@1|,|1| @8|6@1|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&@67 +@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&@1|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&@3|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&@1|}+0#e000e06&| +0#0000000&@64 +@57|1|5|7|,|1| @8|5|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_10.dump b/runtime/syntax/testdir/dumps/vim_expr_10.dump index f297af5bdb..74c5c03958 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_10.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_10.dump @@ -1,20 +1,20 @@ -|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t| +0#0000000&@1|e+0#00e0e07&|x|p|r| +0#0000000&@53 +| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&@1|}+0#e000e06&| +0#0000000&@64 +@6|\+0#e000e06&|}| +0#0000000&@66 @75 -|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |m|a|t|c|h| |c|a|s|e| +0#0000000&@49 ->e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|#| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|"+0#0000e05&| |m|a|t|c|h| |a|s| |k|e|y|s| |n|o|t| |s|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@36 +|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |w+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |t+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |g+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |l+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |s+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |v+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2| +0#0000000&@1|}+0#e000e06&| +0#0000000&@9 +> @74 +|"+0#0000e05&| |R|e|g|i|s|t|e|r| +0#0000000&@64 @75 -|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |i|g|n|o|r|e| |c|a|s|e| +0#0000000&@48 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@57|1|7|3|,|1| @8|7|4|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|"| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|0| +0#0000000&|@+0#e000e06&|1| +0#0000000&|@+0#e000e06&|2| +0#0000000&|@+0#e000e06&|3| +0#0000000&|@+0#e000e06&|4| +0#0000000&|@+0#e000e06&|5| +0#0000000&|@+0#e000e06&|6| +0#0000000&|@+0#e000e06&|7| +0#0000000&|@+0#e000e06&|8| +0#0000000&|@+0#e000e06&|9| +0#0000000&@40 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|-| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|@+0#e000e06&|b| +0#0000000&|@+0#e000e06&|c| +0#0000000&|@+0#e000e06&|d| +0#0000000&|@+0#e000e06&|e| +0#0000000&|@+0#e000e06&|f| +0#0000000&|@+0#e000e06&|g| +0#0000000&|@+0#e000e06&|h| +0#0000000&|@+0#e000e06&|i| +0#0000000&|@+0#e000e06&|j| +0#0000000&|@+0#e000e06&|k| +0#0000000&|@+0#e000e06&|l| +0#0000000&|@+0#e000e06&|m| +0#0000000&|@+0#e000e06&|n| +0#0000000&|@+0#e000e06&|o| +0#0000000&|@+0#e000e06&|p| +0#0000000&|@+0#e000e06&|q| +0#0000000&|@+0#e000e06&|r| +0#0000000&|@+0#e000e06&|s| +0#0000000&|@+0#e000e06&|t| +0#0000000&|@+0#e000e06&|u| +0#0000000&|@+0#e000e06&|v| +0#0000000&|@+0#e000e06&|w| +0#0000000&|@+0#e000e06& +|x| +0#0000000&|@+0#e000e06&|y| +0#0000000&|@+0#e000e06&|z| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|A| +0#0000000&|@+0#e000e06&|B| +0#0000000&|@+0#e000e06&|C| +0#0000000&|@+0#e000e06&|D| +0#0000000&|@+0#e000e06&|E| +0#0000000&|@+0#e000e06&|F| +0#0000000&|@+0#e000e06&|G| +0#0000000&|@+0#e000e06&|H| +0#0000000&|@+0#e000e06&|I| +0#0000000&|@+0#e000e06&|J| +0#0000000&|@+0#e000e06&|K| +0#0000000&|@+0#e000e06&|L| +0#0000000&|@+0#e000e06&|M| +0#0000000&|@+0#e000e06&|N| +0#0000000&|@+0#e000e06&|O| +0#0000000&|@+0#e000e06&|P| +0#0000000&|@+0#e000e06&|Q| +0#0000000&|@+0#e000e06&|R| +0#0000000&|@+0#e000e06&|S| +0#0000000&|@+0#e000e06&|T| +0#0000000&|@+0#e000e06&|U| +0#0000000&|@+0#e000e06&|V| +0#0000000&|@+0#e000e06&|W| +0#0000000&|@+0#e000e06& +|X| +0#0000000&|@+0#e000e06&|Y| +0#0000000&|@+0#e000e06&|Z| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|:| +0#0000000&|@+0#e000e06&|.| +0#0000000&|@+0#e000e06&|%| +0#0000000&|@+0#e000e06&|#| +0#0000000&|@+0#e000e06&|=| +0#0000000&|@+0#e000e06&|*| +0#0000000&|@+0#e000e06&|+| +0#0000000&|@+0#e000e06&|~| +0#0000000&|@+0#e000e06&|_| +0#0000000&|@+0#e000e06&|/| +0#0000000&@40 +@75 +|"+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63 +@75 +@57|1|7|5|,|0|-|1| @6|5|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_11.dump b/runtime/syntax/testdir/dumps/vim_expr_11.dump index e9744da433..c7e0dad977 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_11.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_11.dump @@ -1,20 +1,20 @@ -|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 ->e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|?| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +| +0&#ffffff0@74 +|"+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @75 -|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|"|i|s|"| |i|n|c|o|r@1|e|c|t|l|y| |m|a|t|c|h|e|s| |a|s| |"+0#e000002&|e|c|h|o| |v|i|m|N|u|m|b|e|r| |*|v|i|m|C|o|m@1|a|n|d -|*| |v|i|m|N|u|m|b|e|r|"|)+0#0000e05&| +0#0000000&@61 -|e+0#af5f00255&|c|h|o| +0#0000000&|4+0#e000002&|2| +0#0000000&|i+0#af5f00255&|s| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45 +>e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21 @75 -|"+0#0000e05&| |L|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| +0#0000000&@55 -|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&@67 -@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 -@6|\+0#e000e06&| +0#0000000&@67 -@57|1|9|1|,|1| @8|8|1|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60 +@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59 +@6|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50 +@6|\+0#e000e06&| +0#0000000&@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52 +|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59 +@6|\+0#e000e06&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52 +@6|\+0#e000e06&| +0#0000000&@8|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50 +@6|\+0#e000e06&| +0#0000000&@8|l+0#00e0e07&|n|u|m| +0#0000000&@54 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 +@57|1|9|1|,|1| @8|6|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_12.dump b/runtime/syntax/testdir/dumps/vim_expr_12.dump index b6ce12685c..4e946f4abf 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_12.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_12.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&@67 -@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 -@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61 -@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61 +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51 +>e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54 @75 ->l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59 -@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 -@6|\+0#e000e06&| +0#0000000&@67 -@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 -@6|\+0#e000e06&| +0#0000000&@67 -@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61 -@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61 +|"+0#0000e05&| |F|a|l|s|y| +0#0000000&@67 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 -|"+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43 +|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47 @75 -|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|,+0#0000000&| |v+0#00e0e07&|:|n|u|l@1|)+0#e000e06&| +0#0000000&@41 -@75 -@75 -|"+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14 -@57|2|0|8|,|1| @8|8|9|%| +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62 +@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59 +@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51 +@57|2|0|9|,|1| @8|6|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_13.dump b/runtime/syntax/testdir/dumps/vim_expr_13.dump index 56ae4a1a5f..27423a1289 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_13.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_13.dump @@ -1,20 +1,20 @@ -|"+0#0000e05#ffffff0| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14 -|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|'+0#e000002&|g|:|b|a|r|'|-+0#af5f00255&|>|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|)| +0#0000000&@46 +| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51 @75 +|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55 +|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 +>e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55 +|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61 +|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59 @75 -|"+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27 -> @74 -|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@67 -|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 -|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66 -|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69 -|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66 -|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69 -|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63 -@75 -|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60 -| +0#e000002&@1|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@65 -@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@58 -@2|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64 -@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67 -@57|2@1|6|,|0|-|1| @6|9|7|%| +|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |u|s|i|n|g| |'|i|g|n|o|r|c|a|s|e|'| +0#0000000&@42 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@57|2@1|7|,|1| @8|7|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_14.dump b/runtime/syntax/testdir/dumps/vim_expr_14.dump index 2063d80359..0b82948930 100644 --- a/runtime/syntax/testdir/dumps/vim_expr_14.dump +++ b/runtime/syntax/testdir/dumps/vim_expr_14.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67 -@2|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64 -@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67 -@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61 -|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 -> @74 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|2|4@1|,|0|-|1| @6|B|o|t| +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t| +0#0000000&@1|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@75 +>"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |m|a|t|c|h| |c|a|s|e| +0#0000000&@49 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|#| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@75 +|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |i|g|n|o|r|e| |c|a|s|e| +0#0000000&@48 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@57|2|4|5|,|1| @8|8|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_15.dump b/runtime/syntax/testdir/dumps/vim_expr_15.dump new file mode 100644 index 0000000000..2534395084 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_expr_15.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53 +>e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|?| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@75 +|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|"|i|s|"| |i|n|c|o|r@1|e|c|t|l|y| |m|a|t|c|h|e|s| |a|s| |"+0#e000002&|e|c|h|o| |v|i|m|N|u|m|b|e|r| |*|v|i|m|C|o|m@1|a|n|d +|*| |v|i|m|N|u|m|b|e|r|"|)+0#0000e05&| +0#0000000&@61 +|e+0#af5f00255&|c|h|o| +0#0000000&|4+0#e000002&|2| +0#0000000&|i+0#af5f00255&|s| +0#0000000&|4+0#e000002&|2| +0#0000000&@61 +@75 +|"+0#0000e05&| |L|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| +0#0000000&@55 +|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59 +@6|\+0#e000e06&| +0#0000000&@67 +@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@57|2|6|3|,|1| @8|8|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_16.dump b/runtime/syntax/testdir/dumps/vim_expr_16.dump new file mode 100644 index 0000000000..eac357e763 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_expr_16.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&@67 +@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61 +@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61 +> @74 +|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59 +@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&@67 +@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 +@6|\+0#e000e06&| +0#0000000&@67 +@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61 +@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61 +@75 +|"+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58 +@75 +|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|,+0#0000000&| |v+0#00e0e07&|:|n|u|l@1|)+0#e000e06&| +0#0000000&@41 +@75 +@75 +@57|2|8|0|,|0|-|1| @6|9|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_17.dump b/runtime/syntax/testdir/dumps/vim_expr_17.dump new file mode 100644 index 0000000000..860ac05606 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_expr_17.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +|"+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14 +|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|'+0#e000002&|g|:|b|a|r|'|-+0#af5f00255&|>|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|)| +0#0000000&@46 +@75 +@75 +>"+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27 +@75 +|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@67 +|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60 +|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66 +|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69 +|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66 +|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69 +|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63 +@75 +|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60 +| +0#e000002&@1|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@65 +@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@58 +@2|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64 +@57|2|9|8|,|1| @8|9|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_expr_18.dump b/runtime/syntax/testdir/dumps/vim_expr_18.dump new file mode 100644 index 0000000000..b5d468b494 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_expr_18.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64 +@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67 +@2|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64 +@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67 +@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61 +>e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|3|1|6|,|1| @8|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_function_calls_00.dump b/runtime/syntax/testdir/dumps/vim_function_calls_00.dump new file mode 100644 index 0000000000..df0a3cdea0 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_function_calls_00.dump @@ -0,0 +1,20 @@ +>"+0#0000e05#ffffff0| |V|i|m| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@54 +@75 +|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|l|e|a|r|m|a|t|c|h|e|s|(+0#e000e06&|)| +0#0000000&@55 +|:|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|l|e|a|r|m|a|t|c|h|e|s|(+0#e000e06&|)| +0#0000000&@54 +|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|l|e|a|r|m|a|t|c|h|e|s|(+0#e000e06&|)| +0#0000000&@42 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_02.dump b/runtime/syntax/testdir/dumps/vim_function_variables_02.dump index 77fe62979e..c868567978 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_02.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_02.dump @@ -1,8 +1,8 @@ | +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 @2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 -@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 +@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 +@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 > @74 @2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @75 @2|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -@57|3|7|,|0|-|1| @8|8|%| +@57|3|7|,|0|-|1| @8|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_03.dump b/runtime/syntax/testdir/dumps/vim_function_variables_03.dump index 64b3c0131f..d8e00be7a1 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_03.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_03.dump @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 @75 @2|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@57|5@1|,|3| @9|1|3|%| +@57|5@1|,|3| @9|1|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_04.dump b/runtime/syntax/testdir/dumps/vim_function_variables_04.dump index 3627334e8b..b494c6e792 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_04.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_04.dump @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @75 @2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -@57|7|3|,|3| @9|1|8|%| +@57|7|3|,|3| @9|1|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_05.dump b/runtime/syntax/testdir/dumps/vim_function_variables_05.dump index 9e3716dc64..c1d9dd0bf0 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_05.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_05.dump @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@57|9|1|,|3| @9|2|3|%| +@57|9|1|,|3| @9|2|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_06.dump b/runtime/syntax/testdir/dumps/vim_function_variables_06.dump index 2606d3aae0..0d54bab7e1 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_06.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_06.dump @@ -1,20 +1,20 @@ | +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|0+0#e000002&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 > @74 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|:+0#0000000&|2+0#e000002&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|1+0#e000002&|:+0#0000000&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|:+0#0000000&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|"+0#e000002&|k|e|y|"|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@48 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|'+0#e000002&|k|e|y|'|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@48 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@57|1|0|9|,|0|-|1| @6|2|8|%| +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@57|1|0|9|,|0|-|1| @6|2|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_07.dump b/runtime/syntax/testdir/dumps/vim_function_variables_07.dump index aa9dd946eb..c7a38f849e 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_07.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_07.dump @@ -1,6 +1,6 @@ -| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @75 @2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 > @74 @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@57|1|2|7|,|0|-|1| @6|3@1|%| +@57|1|2|7|,|0|-|1| @6|3|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_08.dump b/runtime/syntax/testdir/dumps/vim_function_variables_08.dump index 59386ffe06..8b1c14859a 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_08.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_08.dump @@ -12,9 +12,9 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @2|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 @2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@47 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -@57|1|4|5|,|0|-|1| @6|3|8|%| +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@57|1|4|5|,|0|-|1| @6|3|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_09.dump b/runtime/syntax/testdir/dumps/vim_function_variables_09.dump index 63d7f7bcff..e05918f544 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_09.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_09.dump @@ -1,20 +1,20 @@ -| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 @75 -@2>l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@2>l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @75 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 @75 -@57|1|6|3|,|3| @8|4|3|%| +@57|1|6|3|,|3| @8|3|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_10.dump b/runtime/syntax/testdir/dumps/vim_function_variables_10.dump index 0022446644..9eb9acc6eb 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_10.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_10.dump @@ -2,12 +2,12 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @63 @8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47 -@2>l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @61 -@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @62 -@8|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@44 +@2>l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @60 +@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 +@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 +@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @62 +@8|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 @2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @62 @8|\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @@ -17,4 +17,4 @@ @75 @2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 @2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 -@57|1|8|1|,|3| @8|4|7|%| +@57|1|8|1|,|3| @8|4@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_11.dump b/runtime/syntax/testdir/dumps/vim_function_variables_11.dump index 4c717582a3..54ff6e8ce4 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_11.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_11.dump @@ -6,15 +6,15 @@ @2>l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @63 @8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @60 @8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@40 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @61 -@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|;+0#0000000&| @58 -@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@36 +@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @60 +@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @56 +@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 @2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43 @2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @62 @8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @59 @8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43 -@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @62 -@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @59 -@57|1|9@1|,|3| @8|5|2|%| +@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43 +@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @62 +@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @59 +@57|1|9@1|,|3| @8|4|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_12.dump b/runtime/syntax/testdir/dumps/vim_function_variables_12.dump index 0f70ff775a..1ffe2a810a 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_12.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_12.dump @@ -1,5 +1,5 @@ -| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @59 -@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @59 +@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 @2|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 @2|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| @64 @8|\+0#e000e06&| +0#0000000&|@+0#e000e06&|b|;+0#0000000&| @61 @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@47 | +0#e000002&@1|.@2| +0#0000000&@69 | +0#e000e06&@1|E|N|D| +0#0000000&@69 -@57|2|1|7|,|2|-|9| @6|5|7|%| +@57|2|1|7|,|2|-|9| @6|5|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_13.dump b/runtime/syntax/testdir/dumps/vim_function_variables_13.dump index 3544a053f7..4de7e3c5f3 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_13.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_13.dump @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51 @2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48 @2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| |"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@50 -@57|2|3|5|,|3| @8|6|2|%| +@57|2|3|5|,|3| @8|5|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_14.dump b/runtime/syntax/testdir/dumps/vim_function_variables_14.dump index 24e6ea1420..433231a017 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_14.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_14.dump @@ -17,4 +17,4 @@ @2|u+0#af5f00255&|n|l|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@62 @2|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@61 @75 -@57|2|5|3|,|3| @8|6|7|%| +@57|2|5|3|,|3| @8|6|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_15.dump b/runtime/syntax/testdir/dumps/vim_function_variables_15.dump index 589bb07924..898c57e92d 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_15.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_15.dump @@ -17,4 +17,4 @@ @75 @2|c+0#af5f00255&|o|n|s|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 @75 -@57|2|7|1|,|0|-|1| @6|7|2|%| +@57|2|7|1|,|0|-|1| @6|6|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_16.dump b/runtime/syntax/testdir/dumps/vim_function_variables_16.dump index 049cea6a58..d9a11d2aab 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_16.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_16.dump @@ -17,4 +17,4 @@ | +0#e000002&@3|.@2| +0#0000000&@67 | +0#e000e06&@1|E|N|D| +0#0000000&@69 @75 -@57|2|8|9|,|1| @8|7@1|%| +@57|2|8|9|,|1| @8|7|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_17.dump b/runtime/syntax/testdir/dumps/vim_function_variables_17.dump index 703358829d..add83c3db5 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_17.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_17.dump @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61 @8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56 @8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61 -@57|3|0|7|,|0|-|1| @6|8|2|%| +@57|3|0|7|,|0|-|1| @6|7|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_18.dump b/runtime/syntax/testdir/dumps/vim_function_variables_18.dump index 2d1a2cdfcf..afed84abcd 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_18.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_18.dump @@ -17,4 +17,4 @@ @2|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@43 @75 @2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 -@57|3|2|5|,|3| @8|8|7|%| +@57|3|2|5|,|3| @8|8|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_19.dump b/runtime/syntax/testdir/dumps/vim_function_variables_19.dump index 960ded822d..4c2ac534d1 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_19.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_19.dump @@ -17,4 +17,4 @@ @8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56 @8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61 @75 -@57|3|4|3|,|0|-|1| @6|9|2|%| +@57|3|4|3|,|0|-|1| @6|8|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_20.dump b/runtime/syntax/testdir/dumps/vim_function_variables_20.dump index 59dcf21fe4..ecee1dcb4f 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_20.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_20.dump @@ -17,4 +17,4 @@ @75 @2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@57 @2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@53 -@57|3|6|1|,|0|-|1| @6|9|7|%| +@57|3|6|1|,|0|-|1| @6|9|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_21.dump b/runtime/syntax/testdir/dumps/vim_function_variables_21.dump index 58ee05f254..6eb25b0d93 100644 --- a/runtime/syntax/testdir/dumps/vim_function_variables_21.dump +++ b/runtime/syntax/testdir/dumps/vim_function_variables_21.dump @@ -7,14 +7,14 @@ @2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44 @2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@43 @2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@40 -|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 @75 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|3|7|9|,|3| @8|B|o|t| +|"+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|l+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|s+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|a+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +@57|3|7|9|,|3| @8|9|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_22.dump b/runtime/syntax/testdir/dumps/vim_function_variables_22.dump new file mode 100644 index 0000000000..0b19595af7 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_function_variables_22.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|a+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +@75 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +>f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|l+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|s+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|a+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +@75 +|"+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46 +@57|3|9|7|,|1| @8|9@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_23.dump b/runtime/syntax/testdir/dumps/vim_function_variables_23.dump new file mode 100644 index 0000000000..852ce0e1d1 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_function_variables_23.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46 +@75 +|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63 +> @74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|4|1|3|,|0|-|1| @6|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_lambda_04.dump b/runtime/syntax/testdir/dumps/vim_lambda_04.dump index a26e67e9d0..72e1236d29 100644 --- a/runtime/syntax/testdir/dumps/vim_lambda_04.dump +++ b/runtime/syntax/testdir/dumps/vim_lambda_04.dump @@ -8,8 +8,8 @@ @6|\+0#e000e06&|}@1| +0#0000000&@65 @75 |l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|#+0#e000e06&|{| +0#0000000&@58 -@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |4+0#e000002&|2|,+0#0000000&| @60 -@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |8+0#e000002&|3| +0#0000000&@61 +@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @60 +@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|8+0#e000002&|3| +0#0000000&@61 @6|\+0#e000e06&|}@1| +0#0000000&@65 @75 |l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>|[+0#e000e06&| +0#0000000&@56 diff --git a/runtime/syntax/testdir/dumps/vim_lambda_05.dump b/runtime/syntax/testdir/dumps/vim_lambda_05.dump index 01e9e221b1..e8d31d9986 100644 --- a/runtime/syntax/testdir/dumps/vim_lambda_05.dump +++ b/runtime/syntax/testdir/dumps/vim_lambda_05.dump @@ -5,8 +5,8 @@ @6|\+0#e000e06&|}@2| +0#0000000&@64 > @74 |l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|#+0#e000e06&|{| +0#0000000&@54 -@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |4+0#e000002&|2|,+0#0000000&| @60 -@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |8+0#e000002&|3| +0#0000000&@61 +@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @60 +@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|8+0#e000002&|3| +0#0000000&@61 @6|\+0#e000e06&|}@2| +0#0000000&@64 @75 |"+0#0000e05&| |:|h|e|l|p| |l|a|m|b|d|a| +0#0000000&@60 diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump index 3dde6fac3e..b9abdc03fe 100644 --- a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump +++ b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump @@ -1,9 +1,9 @@ | +0&#ffffff0@74 |l+0#af5f00255&|e|t| +0#0000000&|d+0#00e0e07&|i|c|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|#+0#e000e06&|{| +0#0000000&@61 @6|"+0#0000e05&|\| |p|a|i|r| |1| +0#0000000&@59 -@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |1+0#e000002&|,+0#0000000&| @61 +@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:| +0#0000000&|1+0#e000002&|,+0#0000000&| @61 @6|"+0#0000e05&|\| |p|a|i|r| |2| +0#0000000&@59 -@6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |2+0#e000002&|,+0#0000000&| @61 +@6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|2+0#e000002&|,+0#0000000&| @61 @6|"+0#0000e05&|\| |p|a|i|r| |3| +0#0000000&@59 @6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&|:+0#0000000&| |3+0#e000002&| +0#0000000&@62 @6|\+0#e000e06&|}| +0#0000000&@66 diff --git a/runtime/syntax/testdir/dumps/vim_nvim_variables_00.dump b/runtime/syntax/testdir/dumps/vim_nvim_variables_00.dump new file mode 100644 index 0000000000..c7dab677a0 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_nvim_variables_00.dump @@ -0,0 +1,20 @@ +>"+0#0000e05#ffffff0| |N|e|o|v|i|m| |v|a|r|i|a|b|l|e| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@44 +|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|v|i|m|_|f|e|a|t|u|r|e|s| |=| |[|"|n|v|i|m|"|]| +0#0000000&@21 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l|u|a| +0#0000000&|v+0#00e0e07&|:|m|s|g|p|a|c|k|_|t|y|p|e|s| +0#0000000&|v+0#00e0e07&|:|r|e|l|n|u|m| +0#0000000&|v+0#00e0e07&|:|s|t|d|e|r@1| +0#0000000&|v+0#00e0e07&|:|t|e|r|m|r|e|q|u|e|s|t| +0#0000000&|v+0#00e0e07&|:|v|i|r|t|n|u|m| +0#0000000&@6 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c|h|a|n@1|e|l| +0#0000000&|&+0#00e0e07&|i|n|c@1|o|m@1|a|n|d| +0#0000000&|&+0#00e0e07&|m|o|u|s|e|s|c|r|o|l@1| +0#0000000&|&+0#00e0e07&|p|u|m|b|l|e|n|d| +0#0000000&|&+0#00e0e07&|r|e|d|r|a|w|d|e|b|u|g| +0#0000000&|&+0#00e0e07&|s|c|r|o|l@1|b|a|c|k| +0#0000000&@1 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s|h|a|d|a| +0#0000000&|&+0#00e0e07&|s|h|a|d|a|f|i|l|e| +0#0000000&|&+0#00e0e07&|s|t|a|t|u|s|c|o|l|u|m|n| +0#0000000&|&+0#00e0e07&|t|e|r|m|p|a|s|t|e|f|i|l|t|e|r| +0#0000000&|&+0#00e0e07&|t|e|r|m|s|y|n|c| +0#0000000&|&+0#00e0e07&|w|i|n|b|a|r| +0#0000000&@3 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w|i|n|b|l|e|n|d| +0#0000000&|&+0#00e0e07&|w|i|n|h|i|g|h|l|i|g|h|t| +0#0000000&@46 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/runtime/syntax/testdir/dumps/vim_predefined_user_commands_00.dump b/runtime/syntax/testdir/dumps/vim_predefined_user_commands_00.dump new file mode 100644 index 0000000000..8d0e81c230 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_predefined_user_commands_00.dump @@ -0,0 +1,20 @@ +>"+0#0000e05#ffffff0| |V|i|m| |p|r|e|d|e|f|i|n|e|d| |u|s|e|r| |c|o|m@1|a|n|d|s| +0#0000000&@44 +@75 +@75 +|"+0#0000e05&| |:|C|o|m|p|i|l|e|r|S|e|t| |-| |r|u|n|t|i|m|e|/|c|o|m|p|i|l|e|r|/| +0#0000000&@40 +@75 +|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|a+0#0000000&|n|t| @51 +|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|e+0#e000e06&|r@1|o|r|f|o|r|m|a|t|=+0#af5f00255&|\+0#0000000&| |%|#|[|%|.|%|#|]|\| |%|#|%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|%+0#0000000&|v|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|\+0#0000000&| |%|t|%|[|%|^|:+0#e000e06&|]+0#0000000&|%|#|:+0#e000e06&|%+0#0000000&|m|,+0#e000e06& +| +0#0000000&@3|\+0#e000e06&|%+0#0000000&|A|\| |%|#|[|%|.|%|#|]|\| |%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|\+0#0000000&| |%|m|,+0#e000e06&|%+0#0000000&|-|Z|\| |%|#|[|%|.|%|#|]|\| |%|p|^|,+0#e000e06&|%+0#0000000&|C|\| |%|#|[|%|.|%|#|]|\| |%|#|%|m| @7 +@75 +@75 +|"+0#0000e05&| |:|S|y|n|M|e|n|u| |-| |r|u|n|t|i|m|e|/|m|a|k|e|m|e|n|u|.|v|i|m| +0#0000000&@41 +@75 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|2|p|s|\| |c|o|n|f|i|g|:+0#0000000&|a|2|p|s| @46 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|a|p|:+0#0000000&|a@1|p| @56 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|A|P|/|4|:+0#0000000&|a|b|a|p| @52 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|b|a|q|u|s|:+0#0000000&|a|b|a|q|u|s| @50 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|C|\| |m|u|s|i|c|\| |n|o|t|a|t|i|o|n|:+0#0000000&|a|b|c| @39 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|E|L|:+0#0000000&|a|b|e|l| @54 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|c|e|D|B|\| |m|o|d|e|l|:+0#0000000&|a|c|e|d|b| @45 +@57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_predefined_user_commands_01.dump b/runtime/syntax/testdir/dumps/vim_predefined_user_commands_01.dump new file mode 100644 index 0000000000..39475638f0 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_predefined_user_commands_01.dump @@ -0,0 +1,20 @@ +|S+0#af5f00255#ffffff0|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|a|p|:+0#0000000&|a@1|p| @56 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|A|P|/|4|:+0#0000000&|a|b|a|p| @52 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|b|a|q|u|s|:+0#0000000&|a|b|a|q|u|s| @50 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|C|\| |m|u|s|i|c|\| |n|o|t|a|t|i|o|n|:+0#0000000&|a|b|c| @39 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|E|L|:+0#0000000&|a|b|e|l| @54 +>S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|c|e|D|B|\| |m|o|d|e|l|:+0#0000000&|a|c|e|d|b| @45 +|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|d|a|:+0#0000000&|a|d|a| @56 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|9|,|1| @9|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_variables_02.dump b/runtime/syntax/testdir/dumps/vim_variables_02.dump index bd23de5428..ce0a8c3443 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_02.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_02.dump @@ -1,7 +1,7 @@ |l+0#af5f00255#ffffff0|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @75 -|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @75 >l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 |l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @@ -17,4 +17,4 @@ @75 |l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 |l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@57|3|7|,|1| @10|8|%| +@57|3|7|,|1| @10|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_03.dump b/runtime/syntax/testdir/dumps/vim_variables_03.dump index e2ff94ddb2..ac24e5e75b 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_03.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_03.dump @@ -17,4 +17,4 @@ @75 |l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @75 -@57|5@1|,|1| @9|1|3|%| +@57|5@1|,|1| @9|1|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_04.dump b/runtime/syntax/testdir/dumps/vim_variables_04.dump index 2958aedb7e..4f3b2aadbd 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_04.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_04.dump @@ -17,4 +17,4 @@ @75 |l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @75 -@57|7|3|,|0|-|1| @7|1|8|%| +@57|7|3|,|0|-|1| @7|1|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_05.dump b/runtime/syntax/testdir/dumps/vim_variables_05.dump index 3933933109..0601c4344b 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_05.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_05.dump @@ -17,4 +17,4 @@ |l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 |l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 @75 -@57|9|1|,|1| @9|2|3|%| +@57|9|1|,|1| @9|2|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_06.dump b/runtime/syntax/testdir/dumps/vim_variables_06.dump index be006fc6d3..833f52b62b 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_06.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_06.dump @@ -1,20 +1,20 @@ | +0&#ffffff0@74 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 @75 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @75 ->l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 +>l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @75 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50 @75 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@57|1|0|9|,|1| @8|2|8|%| +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +@57|1|0|9|,|1| @8|2|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_07.dump b/runtime/syntax/testdir/dumps/vim_variables_07.dump index 7851c85f80..ded6062d5c 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_07.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_07.dump @@ -1,5 +1,5 @@ -|l+0#af5f00255#ffffff0|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255#ffffff0|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @75 |l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @75 @@ -17,4 +17,4 @@ |l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 |l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 |l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@57|1|2|7|,|1| @8|3@1|%| +@57|1|2|7|,|1| @8|3|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_08.dump b/runtime/syntax/testdir/dumps/vim_variables_08.dump index 33de2cf470..d209554930 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_08.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_08.dump @@ -11,10 +11,10 @@ |l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60 |l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59 @75 |l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@49 @75 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -@57|1|4|5|,|1| @8|3|8|%| +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +@57|1|4|5|,|1| @8|3|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_09.dump b/runtime/syntax/testdir/dumps/vim_variables_09.dump index 101d7a228a..6627a389ce 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_09.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_09.dump @@ -1,20 +1,20 @@ -|l+0#af5f00255#ffffff0|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +|l+0#af5f00255#ffffff0|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58 @75 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 > @74 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @75 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 @75 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 -|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 @75 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -@57|1|6|3|,|0|-|1| @6|4|3|%| +@57|1|6|3|,|0|-|1| @6|4|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_10.dump b/runtime/syntax/testdir/dumps/vim_variables_10.dump index 254ec890ad..29931ed158 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_10.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_10.dump @@ -1,12 +1,12 @@ |l+0#af5f00255#ffffff0|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65 @6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49 -|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @63 -@6>\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 -|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 -|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @64 -@6|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46 +|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @62 +@6>\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 +|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @64 +@6|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 |l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 |l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @64 @6|\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 @@ -17,4 +17,4 @@ |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 -@57|1|8|1|,|7| @8|4|8|%| +@57|1|8|1|,|7| @8|4@1|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_11.dump b/runtime/syntax/testdir/dumps/vim_variables_11.dump index 7bb6003f6b..40fcb3a5cc 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_11.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_11.dump @@ -5,16 +5,16 @@ |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65 @6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @62 @6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55 -|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@42 -|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @63 -@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|;+0#0000000&| @60 -@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53 +|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@38 +|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @62 +@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @58 +@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52 |l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@45 |l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @64 @6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @61 @6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@45 -|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @64 -@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @61 -@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 -@57|1|9@1|,|7| @8|5|3|%| +|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@45 +|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @64 +@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @61 +@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +@57|1|9@1|,|7| @8|4|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_12.dump b/runtime/syntax/testdir/dumps/vim_variables_12.dump index db1c966ee0..5117e1ad03 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_12.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_12.dump @@ -1,4 +1,4 @@ -| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 +| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54 |l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 |l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| @66 @6|\+0#e000e06&| +0#0000000&|@+0#e000e06&|b|;+0#0000000&| @63 @@ -17,4 +17,4 @@ |.+0#e000002&@2| +0#0000000&@71 |E+0#e000e06&|N|D| +0#0000000&@71 |l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |t|r|i|m| |E|N|D| +0#0000000&@49 -@57|2|1|7|,|0|-|1| @6|5|8|%| +@57|2|1|7|,|0|-|1| @6|5|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_13.dump b/runtime/syntax/testdir/dumps/vim_variables_13.dump index 64706fd37d..bfa84286a1 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_13.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_13.dump @@ -17,4 +17,4 @@ |l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50 |l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| |"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@52 @75 -@57|2|3|5|,|0|-|1| @6|6|3|%| +@57|2|3|5|,|0|-|1| @6|5|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_14.dump b/runtime/syntax/testdir/dumps/vim_variables_14.dump index cdda808d96..4cb8061bb6 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_14.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_14.dump @@ -17,4 +17,4 @@ |u+0#af5f00255&|n|l|e|t|!| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@63 @75 |u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|]+0#0000000&| @61 -@57|2|5|3|,|1| @8|6|8|%| +@57|2|5|3|,|1| @8|6|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_15.dump b/runtime/syntax/testdir/dumps/vim_variables_15.dump index 44a9223995..73cc0c676e 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_15.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_15.dump @@ -17,4 +17,4 @@ |c+0#af5f00255&|o|n|s|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51 @75 |c+0#af5f00255&|o|n|s|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46 -@57|2|7|1|,|1| @8|7|3|%| +@57|2|7|1|,|1| @8|6|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_16.dump b/runtime/syntax/testdir/dumps/vim_variables_16.dump index 5821a4cccc..1b0ddfab06 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_16.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_16.dump @@ -17,4 +17,4 @@ |E+0#e000e06&|N|D| +0#0000000&@71 @75 |c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65 -@57|2|8|9|,|1| @8|7@1|%| +@57|2|8|9|,|1| @8|7|2|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_17.dump b/runtime/syntax/testdir/dumps/vim_variables_17.dump index 1ba850545f..07cb153d52 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_17.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_17.dump @@ -17,4 +17,4 @@ @6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58 @6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63 @75 -@57|3|0|7|,|1| @8|8|2|%| +@57|3|0|7|,|1| @8|7|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_18.dump b/runtime/syntax/testdir/dumps/vim_variables_18.dump index 9a798022df..75c9d8000d 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_18.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_18.dump @@ -17,4 +17,4 @@ @75 |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61 |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@57 -@57|3|2|5|,|0|-|1| @6|8|7|%| +@57|3|2|5|,|0|-|1| @6|8|1|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_19.dump b/runtime/syntax/testdir/dumps/vim_variables_19.dump index dcaa8aadfe..853644e398 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_19.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_19.dump @@ -17,4 +17,4 @@ @6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63 @75 |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51 -@57|3|4|3|,|1| @8|9|2|%| +@57|3|4|3|,|1| @8|8|6|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_20.dump b/runtime/syntax/testdir/dumps/vim_variables_20.dump index 4eb79fdb47..e280dd0c4d 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_20.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_20.dump @@ -17,4 +17,4 @@ |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@55 |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59 -@57|3|6|1|,|1| @8|9|7|%| +@57|3|6|1|,|1| @8|9|0|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_21.dump b/runtime/syntax/testdir/dumps/vim_variables_21.dump index 36a08af25c..ecc9a4bf42 100644 --- a/runtime/syntax/testdir/dumps/vim_variables_21.dump +++ b/runtime/syntax/testdir/dumps/vim_variables_21.dump @@ -7,14 +7,14 @@ |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@45 |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@42 @75 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|3|7|9|,|1| @8|B|o|t| +|"+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|l+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|s+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|a+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +@57|3|7|9|,|1| @8|9|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_variables_22.dump b/runtime/syntax/testdir/dumps/vim_variables_22.dump new file mode 100644 index 0000000000..afb4dbf42a --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_variables_22.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 +@75 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +>f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|l+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|s+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|a+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35 +@75 +|"+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3 +|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46 +@75 +@57|3|9|7|,|1| @8|B|o|t| diff --git a/runtime/syntax/testdir/input/tera.tera b/runtime/syntax/testdir/input/tera.tera new file mode 100644 index 0000000000..161793c963 --- /dev/null +++ b/runtime/syntax/testdir/input/tera.tera @@ -0,0 +1,165 @@ + + + + + + {{ page_title | default(value="Tera Test") }} + {% if include_styles %} + + {% endif %} + + +
+ {# Header Section with variable interpolation #} +
+

{{ header_text | upper }}

+ {% if subheader %} +

{{ subheader }}

+ {% endif %} +
+ + {# Navigation example with for loop #} + + + {# Main content section with various template features #} +
+ {# Conditionals #} + {% if user %} +
+

Welcome back, {{ user.name }}!

+

Last login: {{ user.last_login | date(format="%Y-%m-%d") }}

+
+ {% elif visitor_count > 0 %} +
+

Welcome, visitor!

+

You are visitor number {{ visitor_count }}

+
+ {% else %} +
+

Welcome to our site!

+
+ {% endif %} + + {# Macro definition and usage #} + {% macro render_item(item, featured=false) %} + + {% endmacro render_item %} + + {# Items section with macro usage #} +
+

Items ({{ items | length }})

+ + {% for item in items %} + {{ self::render_item(item=item, featured=item.id == featured_id) }} + + {% if not loop.last %} +
+ {% endif %} + {% endfor %} +
+ + {# Raw content that shouldn't be processed #} + {% raw %} +
+ The syntax {{ variable }} will not be processed in raw blocks. + Neither will {% control %} structures. +
+ {% endraw %} + + {# Includes #} + {% include "partials/footer.tera" %} + + {# Inheritance example #} + {% block content %} +

This is the default content.

+ {% endblock content %} + + {# Set variables #} + {% set text_color = dark_mode ? "#fff" : "#333" %} + {% set items_count = items | length %} + +
+ We have {{ items_count }} items. +
+ + {# Filters with complex expressions #} +

{{ "Hello, " ~ user.name | default(value="Guest") | upper }}

+

{{ items | filter(attribute="featured", value=true) | length }} featured items

+ + {# With statement #} + {% with %} + {% set local_var = "Only visible in this scope" %} +

{{ local_var }}

+ {% endwith %} + + {# Mathematical operations #} +
+

Price: ${{ price }}

+

Tax ({{ tax_rate * 100 }}%): ${{ price * tax_rate }}

+

Total: ${{ price * (1 + tax_rate) }}

+
+ + {# Boolean operations #} + {% if user and user.is_admin or super_user %} +
Admin panel
+ {% endif %} +
+ + {# Footer section with filters and includes #} +
+

© {{ current_year }} {{ company_name | default(value="Our Company") }}

+ + {% if debug %} +
+

Render time: {{ render_time }}ms

+

Template version: {{ version }}

+
+ {% endif %} +
+
+ + + + diff --git a/runtime/syntax/testdir/input/vim9_constructor.vim b/runtime/syntax/testdir/input/vim9_constructor.vim new file mode 100644 index 0000000000..71a2ea422f --- /dev/null +++ b/runtime/syntax/testdir/input/vim9_constructor.vim @@ -0,0 +1,19 @@ +vim9script + +# Vim9 constructor + + +class A + static var _instance: A + var str: string + def _new(str: string) + this.str = str + enddef + static def GetInstance(str: string): A + if _instance == null + _instance = A._new(str) + endif + return _instance + enddef +endclass + diff --git a/runtime/syntax/testdir/input/vim9_def_variables.vim b/runtime/syntax/testdir/input/vim9_def_variables.vim index 94ef810b8b..4580c0eefc 100644 --- a/runtime/syntax/testdir/input/vim9_def_variables.vim +++ b/runtime/syntax/testdir/input/vim9_def_variables.vim @@ -12,7 +12,7 @@ def Foo() t:foo = expr w:foo = expr - v:foo = expr + v:true = expr $FOO = expr @@ -59,6 +59,9 @@ END foo[1:] = expr foo[:] = expr + foo["key"] = expr + foo['key'] = expr + foo += expr foo -= expr foo *= expr @@ -107,36 +110,36 @@ END @f = expr @f ..= expr - &foo = expr + &ari = expr &t_k1 = "\[234;" - &foo ..= expr + &ari ..= expr - &foo += expr - &foo -= expr + &ari += expr + &ari -= expr - &l:foo = expr + &l:aleph = expr - &l:foo ..= expr - &l:foo += expr - &l:foo -= expr + &l:aleph ..= expr + &l:aleph += expr + &l:aleph -= expr - &g:foo = expr + &g:aleph = expr - &g:foo ..= expr - &g:foo += expr - &g:foo -= expr + &g:aleph ..= expr + &g:aleph += expr + &g:aleph -= expr [foo, bar] = expr [foo, \ bar] = expr - [v:foo, v:bar] = expr - [v:foo, - \ v:bar] = expr - [&foo, &bar] = expr - [&foo, - \ &bar] = expr + [v:true, v:false] = expr + [v:true, + \ v:false] = expr + [&ari, &bkc] = expr + [&ari, + \ &bkc] = expr [$foo, $bar] = expr [$foo, \ $bar] = expr @@ -155,18 +158,18 @@ END [foo, \ bar; \ baz] = expr - [v:foo, v:bar; v:baz] = expr - [v:foo, - \ v:bar; - \ v:baz] = expr + [v:true, v:false; v:none] = expr + [v:true, + \ v:false; + \ v:none] = expr [$foo, $bar; $baz] = expr [$foo, \ $bar; \ $baz] = expr - [&foo, &bar; &baz] = expr - [&foo, - \ &bar; - \ &baz] = expr + [&ari, &bkc; &cmp] = expr + [&ari, + \ &bkc; + \ &cmp] = expr [@a, @b; @c] = expr [@a, \ @b; @@ -195,6 +198,28 @@ END for [foo, bar] in expr endfor -enddef +# Scope dictionaries + +echo get(b:, 'foo', 42) +echo get(w:, 'foo', 42) +echo get(t:, 'foo', 42) +echo get(g:, 'foo', 42) +echo get(v:, 'foo', 42) + +for k in keys(b:) | echo b:[k] | endfor +for k in keys(w:) | echo w:[k] | endfor +for k in keys(t:) | echo t:[k] | endfor +for k in keys(g:) | echo g:[k] | endfor +for k in keys(v:) | echo v:[k] | endfor + +# Neovim-specific variables (not highlighted by default) + +echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum + +echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback +echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar +echo &winblend &winhighlight + +enddef diff --git a/runtime/syntax/testdir/input/vim9_expr.vim b/runtime/syntax/testdir/input/vim9_expr.vim index fd9cbb0091..fc94abd522 100644 --- a/runtime/syntax/testdir/input/vim9_expr.vim +++ b/runtime/syntax/testdir/input/vim9_expr.vim @@ -2,6 +2,55 @@ vim9script # Vim9-script expressions +# Dictionary + +echo {} +echo { foo: 21 * 2 } +echo { -foo-: 21 * 2 } +echo { 42: 21 * 2 } +echo { 'foo': 21 * 2 } +echo { "foo": 21 * 2 } + +echo { foo: { bar: 21 * 2 } } +echo { foo: { -bar-: 21 * 2 } } +echo { foo: { 42: 21 * 2 } } +echo { foo: { 'bar': 21 * 2 } } +echo { foo: { "bar": 21 * 2 } } + +echo { -foo-: { bar: 21 * 2 } } +echo { -foo-: { -bar-: 21 * 2 } } +echo { -foo-: { 42: 21 * 2 } } +echo { -foo-: { 'bar': 21 * 2 } } +echo { -foo-: { "bar": 21 * 2 } } + +echo { 42: { bar: 21 * 2 } } +echo { 42: { -bar-: 21 * 2 } } +echo { 42: { 42: 21 * 2 } } +echo { 42: { 'bar': 21 * 2 } } +echo { 42: { "bar": 21 * 2 } } + +echo { 'foo': { bar: 21 * 2 } } +echo { 'foo': { -bar-: 21 * 2 } } +echo { 'foo': { 42: 21 * 2 } } +echo { 'foo': { "bar": 21 * 2 } } +echo { 'foo': { 'bar': 21 * 2 } } + +echo { "foo": { bar: 21 * 2 } } +echo { "foo": { -bar-: 21 * 2 } } +echo { "foo": { 42: 21 * 2 } } +echo { "foo": { 'bar': 21 * 2 } } +echo { "foo": { "bar": 21 * 2 } } + +echo { + # comment + foo: { + bar: 21 * 2 + } +} + +# match as keys not scope dictionaries +echo { b: 42, w: 42, t: 42, g: 42, l: 42, s: 42, a: 42, v: 42 } + # Operators # Ternary diff --git a/runtime/syntax/testdir/input/vim9_function_calls.vim b/runtime/syntax/testdir/input/vim9_function_calls.vim new file mode 100644 index 0000000000..aecfc11427 --- /dev/null +++ b/runtime/syntax/testdir/input/vim9_function_calls.vim @@ -0,0 +1,18 @@ +vim9script + +# Vim9 function calls + +clearmatches() +:call clearmatches() +echo "Foo" | clearmatches() + + +# Issue 16721 (vimscript highlight of builtin function after |) + +&directory = $'{$MYVIMDIR}/.data/swap/' +&backupdir = $'{$MYVIMDIR}/.data/backup//' +&undodir = $'{$MYVIMDIR}/.data/undo//' +if !isdirectory(&undodir) | mkdir(&undodir, "p") | endif +if !isdirectory(&backupdir) | mkdir(&backupdir, "p") | endif +if !isdirectory(&directory) | mkdir(&directory, "p") | endif + diff --git a/runtime/syntax/testdir/input/vim9_variables.vim b/runtime/syntax/testdir/input/vim9_variables.vim index 88dfb58aae..14b1d1dd3b 100644 --- a/runtime/syntax/testdir/input/vim9_variables.vim +++ b/runtime/syntax/testdir/input/vim9_variables.vim @@ -11,7 +11,7 @@ g:foo = expr t:foo = expr w:foo = expr -v:foo = expr +v:true = expr $FOO = expr @@ -58,6 +58,9 @@ foo[:2] = expr foo[1:] = expr foo[:] = expr +foo["key"] = expr +foo['key'] = expr + foo += expr foo -= expr foo *= expr @@ -106,36 +109,36 @@ $FOO ..= expr @f = expr @f ..= expr -&foo = expr +&ari = expr &t_k1 = "\[234;" -&foo ..= expr +&ari ..= expr -&foo += expr -&foo -= expr +&ari += expr +&ari -= expr -&l:foo = expr +&l:aleph = expr -&l:foo ..= expr -&l:foo += expr -&l:foo -= expr +&l:aleph ..= expr +&l:aleph += expr +&l:aleph -= expr -&g:foo = expr +&g:aleph = expr -&g:foo ..= expr -&g:foo += expr -&g:foo -= expr +&g:aleph ..= expr +&g:aleph += expr +&g:aleph -= expr [foo, bar] = expr [foo, \ bar] = expr -[v:foo, v:bar] = expr -[v:foo, - \ v:bar] = expr -[&foo, &bar] = expr -[&foo, - \ &bar] = expr +[v:true, v:false] = expr +[v:true, + \ v:false] = expr +[&ari, &bkc] = expr +[&ari, + \ &bkc] = expr [$foo, $bar] = expr [$foo, \ $bar] = expr @@ -154,18 +157,18 @@ $FOO ..= expr [foo, \ bar; \ baz] = expr -[v:foo, v:bar; v:baz] = expr -[v:foo, - \ v:bar; - \ v:baz] = expr +[v:true, v:false; v:none] = expr +[v:true, + \ v:false; + \ v:none] = expr [$foo, $bar; $baz] = expr [$foo, \ $bar; \ $baz] = expr -[&foo, &bar; &baz] = expr -[&foo, - \ &bar; - \ &baz] = expr +[&ari, &bkc; &cmp] = expr +[&ari, + \ &bkc; + \ &cmp] = expr [@a, @b; @c] = expr [@a, \ @b; @@ -195,3 +198,25 @@ endfor for [foo, bar] in expr endfor +# Scope dictionaries + +echo get(b:, 'foo', 42) +echo get(w:, 'foo', 42) +echo get(t:, 'foo', 42) +echo get(g:, 'foo', 42) +echo get(v:, 'foo', 42) + +for k in keys(b:) | echo b:[k] | endfor +for k in keys(w:) | echo w:[k] | endfor +for k in keys(t:) | echo t:[k] | endfor +for k in keys(g:) | echo g:[k] | endfor +for k in keys(v:) | echo v:[k] | endfor + +# Neovim-specific variables (not highlighted by default) + +echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum + +echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback +echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar +echo &winblend &winhighlight + diff --git a/runtime/syntax/testdir/input/vim_ex_def_return_type.vim b/runtime/syntax/testdir/input/vim_ex_def_return_type.vim new file mode 100644 index 0000000000..af88721ff4 --- /dev/null +++ b/runtime/syntax/testdir/input/vim_ex_def_return_type.vim @@ -0,0 +1,60 @@ +vim9script +# Vim9 function return types +# VIM_TEST_SETUP hi link vimUserType Todo + + +# Issue #14442 (vim.vim: confusion for function return types starting on another line) + +def TestA______________________________________________________________(): + \ void +enddef + +def TestB____(result: dict>, fs: list): + \ void +enddef + +def TestC____(maybe: bool, F: func(): dict): func(): + \ void + return () => { + } +enddef + +def TestD____(fs: list>): func(): func(): + \ void + return () => () => { + } +enddef + +class Tests + def TestA__________________________________________________________(): + \ void + enddef + + def TestB(result: dict>, fs: list): + \ void + enddef + + def TestC(maybe: bool, F: func(): dict): func(): + \ void + return () => { + } + enddef + + def TestD(fs: list>): func(): func(): + \ void + return () => () => { + } + enddef +endclass + +def F(G: func(number, number, number): lib.Trampoline): + \ func(number, number, number): + \ func(): lib.Trampoline + return ((H: func(number, number, number): lib.Trampoline) => + (a1: number, a2: number, n: number) => + () => + H(a2, (a1 + a2), (n - 1)))(G) +enddef + +defcompile + diff --git a/runtime/syntax/testdir/input/vim_ex_function.vim b/runtime/syntax/testdir/input/vim_ex_function.vim index 1b781913b8..c09019e087 100644 --- a/runtime/syntax/testdir/input/vim_ex_function.vim +++ b/runtime/syntax/testdir/input/vim_ex_function.vim @@ -163,6 +163,20 @@ function Foo( return 42 endfunction + +" arguments + +function Foo(a, b, c) + echo a:a a:b a:c +endfunction + +function Foo(...) + echo a:000 + echo a:0 + echo a:1 a:2 a:3 a:4 a:5 a:6 a:7 a:8 a:9 a:10 a:11 a:12 a:13 a:14 a:15 a:16 a:17 a:18 a:19 a:20 +endfunction + + " Issue #16243 (vimscript def parameters syntax highlight is wrong) function Test(lines = [line('.'), line('.')]) diff --git a/runtime/syntax/testdir/input/vim_ex_function_fold.vim b/runtime/syntax/testdir/input/vim_ex_function_fold.vim index bd0cf610e1..1be9c2582f 100644 --- a/runtime/syntax/testdir/input/vim_ex_function_fold.vim +++ b/runtime/syntax/testdir/input/vim_ex_function_fold.vim @@ -166,6 +166,19 @@ function Foo( endfunction +" arguments + +function Foo(a, b, c) + echo a:a a:b a:c +endfunction + +function Foo(...) + echo a:000 + echo a:0 + echo a:1 a:2 a:3 a:4 a:5 a:6 a:7 a:8 a:9 a:10 a:11 a:12 a:13 a:14 a:15 a:16 a:17 a:18 a:19 a:20 +endfunction + + " comments function Foo() diff --git a/runtime/syntax/testdir/input/vim_ex_map.vim b/runtime/syntax/testdir/input/vim_ex_map.vim index 3ddc9e9a8d..5d469b2c23 100644 --- a/runtime/syntax/testdir/input/vim_ex_map.vim +++ b/runtime/syntax/testdir/input/vim_ex_map.vim @@ -5,6 +5,20 @@ map! lhs rhs map map lhs rhs +map