summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--runtime/autoload/dist/ft.vim101
-rw-r--r--runtime/autoload/dist/man.vim7
-rw-r--r--runtime/autoload/dist/vim.vim4
-rw-r--r--runtime/autoload/dist/vim9.vim4
-rw-r--r--runtime/autoload/netrw.vim203
-rw-r--r--runtime/autoload/typst.vim50
-rw-r--r--runtime/autoload/zip.vim258
-rw-r--r--runtime/colors/blue.vim16
-rw-r--r--runtime/colors/darkblue.vim16
-rw-r--r--runtime/colors/delek.vim19
-rw-r--r--runtime/colors/desert.vim10
-rw-r--r--runtime/colors/elflord.vim10
-rw-r--r--runtime/colors/evening.vim16
-rw-r--r--runtime/colors/habamax.vim293
-rw-r--r--runtime/colors/industry.vim10
-rw-r--r--runtime/colors/koehler.vim16
-rw-r--r--runtime/colors/lunaperche.vim26
-rw-r--r--runtime/colors/morning.vim16
-rw-r--r--runtime/colors/murphy.vim10
-rw-r--r--runtime/colors/pablo.vim16
-rw-r--r--runtime/colors/peachpuff.vim20
-rw-r--r--runtime/colors/quiet.vim21
-rw-r--r--runtime/colors/retrobox.vim48
-rw-r--r--runtime/colors/ron.vim16
-rw-r--r--runtime/colors/shine.vim16
-rw-r--r--runtime/colors/slate.vim18
-rw-r--r--runtime/colors/sorbet.vim26
-rw-r--r--runtime/colors/torte.vim16
-rw-r--r--runtime/colors/wildcharm.vim194
-rw-r--r--runtime/colors/zaibatsu.vim10
-rw-r--r--runtime/colors/zellner.vim18
-rw-r--r--runtime/compiler/pandoc.vim45
-rw-r--r--runtime/compiler/typst.vim15
-rw-r--r--runtime/doc/Make_mvc.mak6
-rw-r--r--runtime/doc/Makefile88
-rw-r--r--runtime/doc/autocmd.txt52
-rw-r--r--runtime/doc/builtin.txt155
-rw-r--r--runtime/doc/change.txt25
-rw-r--r--runtime/doc/channel.txt7
-rw-r--r--runtime/doc/cmdline.txt5
-rw-r--r--runtime/doc/editing.txt16
-rw-r--r--runtime/doc/eval.txt10
-rw-r--r--runtime/doc/evim-it.18
-rw-r--r--runtime/doc/evim-it.UTF-8.18
-rw-r--r--runtime/doc/evim-ru.180
-rw-r--r--runtime/doc/evim-ru.UTF-8.180
-rw-r--r--runtime/doc/evim.18
-rw-r--r--runtime/doc/evim.man9
-rw-r--r--runtime/doc/filetype.txt39
-rw-r--r--runtime/doc/gui.txt4
-rw-r--r--runtime/doc/index.txt8
-rw-r--r--runtime/doc/insert.txt40
-rw-r--r--runtime/doc/map.txt3
-rw-r--r--runtime/doc/mbyte.txt6
-rw-r--r--runtime/doc/mlang.txt6
-rw-r--r--runtime/doc/motion.txt5
-rw-r--r--runtime/doc/options.txt56
-rw-r--r--runtime/doc/pattern.txt8
-rw-r--r--runtime/doc/pi_netrw.txt11
-rw-r--r--runtime/doc/popup.txt20
-rw-r--r--runtime/doc/quickfix.txt28
-rw-r--r--runtime/doc/quickref.txt1
-rw-r--r--runtime/doc/repeat.txt334
-rw-r--r--runtime/doc/scroll.txt5
-rw-r--r--runtime/doc/sign.txt24
-rw-r--r--runtime/doc/sponsor.txt11
-rw-r--r--runtime/doc/starting.txt25
-rw-r--r--runtime/doc/syntax.txt275
-rw-r--r--runtime/doc/tabpage.txt5
-rw-r--r--runtime/doc/tags44
-rw-r--r--runtime/doc/tagsrch.txt20
-rw-r--r--runtime/doc/terminal.txt48
-rw-r--r--runtime/doc/testing.txt30
-rw-r--r--runtime/doc/todo.txt7
-rw-r--r--runtime/doc/uganda.rux19
-rw-r--r--runtime/doc/uganda.txt6
-rw-r--r--runtime/doc/usr_05.txt20
-rw-r--r--runtime/doc/usr_41.txt4
-rw-r--r--runtime/doc/various.txt7
-rw-r--r--runtime/doc/version9.txt41
-rw-r--r--runtime/doc/vim-it.1175
-rw-r--r--runtime/doc/vim-it.UTF-8.1175
-rw-r--r--runtime/doc/vim-ja.UTF-8.191
-rw-r--r--runtime/doc/vim-ru.1794
-rw-r--r--runtime/doc/vim-ru.UTF-8.1794
-rw-r--r--runtime/doc/vim.1166
-rw-r--r--runtime/doc/vim.man241
-rw-r--r--runtime/doc/vimdiff-it.12
-rw-r--r--runtime/doc/vimdiff-it.UTF-8.12
-rw-r--r--runtime/doc/vimdiff-ru.165
-rw-r--r--runtime/doc/vimdiff-ru.UTF-8.165
-rw-r--r--runtime/doc/vimdiff.12
-rw-r--r--runtime/doc/vimdiff.man2
-rw-r--r--runtime/doc/vimtutor-it.112
-rw-r--r--runtime/doc/vimtutor-it.UTF-8.112
-rw-r--r--runtime/doc/vimtutor-ru.176
-rw-r--r--runtime/doc/vimtutor-ru.UTF-8.176
-rw-r--r--runtime/doc/vimtutor.112
-rw-r--r--runtime/doc/vimtutor.man9
-rw-r--r--runtime/doc/windows.txt5
-rw-r--r--runtime/doc/xxd-it.183
-rw-r--r--runtime/doc/xxd-it.UTF-8.183
-rw-r--r--runtime/doc/xxd-ja.UTF-8.15
-rw-r--r--runtime/doc/xxd-ru.1466
-rw-r--r--runtime/doc/xxd-ru.UTF-8.1466
-rw-r--r--runtime/doc/xxd.159
-rw-r--r--runtime/doc/xxd.man53
-rw-r--r--runtime/filetype.vim88
-rw-r--r--runtime/ftplugin/antlr4.vim14
-rw-r--r--runtime/ftplugin/asy.vim14
-rw-r--r--runtime/ftplugin/autohotkey.vim16
-rw-r--r--runtime/ftplugin/bindzone.vim16
-rw-r--r--runtime/ftplugin/cabal.vim13
-rw-r--r--runtime/ftplugin/cedar.vim13
-rw-r--r--runtime/ftplugin/chicken.vim16
-rw-r--r--runtime/ftplugin/cmakecache.vim13
-rw-r--r--runtime/ftplugin/csv.vim23
-rw-r--r--runtime/ftplugin/cuda.vim11
-rw-r--r--runtime/ftplugin/editorconfig.vim13
-rw-r--r--runtime/ftplugin/gdscript.vim6
-rw-r--r--runtime/ftplugin/go.vim6
-rw-r--r--runtime/ftplugin/goaccess.vim14
-rw-r--r--runtime/ftplugin/gomod.vim16
-rw-r--r--runtime/ftplugin/hlsplaylist.vim37
-rw-r--r--runtime/ftplugin/htmlangular.vim12
-rw-r--r--runtime/ftplugin/javacc.vim20
-rw-r--r--runtime/ftplugin/kivy.vim13
-rw-r--r--runtime/ftplugin/ldapconf.vim13
-rw-r--r--runtime/ftplugin/lex.vim14
-rw-r--r--runtime/ftplugin/man.vim14
-rw-r--r--runtime/ftplugin/mediawiki.vim42
-rw-r--r--runtime/ftplugin/mermaid.vim5
-rw-r--r--runtime/ftplugin/mojo.vim41
-rw-r--r--runtime/ftplugin/mysql.vim9
-rw-r--r--runtime/ftplugin/objcpp.vim1
-rw-r--r--runtime/ftplugin/scheme.vim18
-rw-r--r--runtime/ftplugin/sql.vim26
-rw-r--r--runtime/ftplugin/squirrel.vim17
-rw-r--r--runtime/ftplugin/terraform.vim14
-rw-r--r--runtime/ftplugin/tf.vim13
-rw-r--r--runtime/ftplugin/thrift.vim17
-rw-r--r--runtime/ftplugin/typst.vim22
-rw-r--r--runtime/ftplugin/yacc.vim16
-rw-r--r--runtime/indent/Make_mvc.mak4
-rw-r--r--runtime/indent/Makefile4
-rw-r--r--runtime/indent/glsl.vim14
-rw-r--r--runtime/indent/lua.vim9
-rw-r--r--runtime/indent/mojo.vim6
-rw-r--r--runtime/indent/ocaml.vim4
-rw-r--r--runtime/indent/proto.vim19
-rw-r--r--runtime/indent/rust.vim9
-rw-r--r--runtime/indent/scheme.vim9
-rw-r--r--runtime/indent/testdir/lua.in19
-rw-r--r--runtime/indent/testdir/lua.ok19
-rw-r--r--runtime/indent/testdir/thrift.in38
-rw-r--r--runtime/indent/testdir/thrift.ok38
-rw-r--r--runtime/indent/thrift.vim74
-rw-r--r--runtime/indent/typst.vim18
-rw-r--r--runtime/indent/vim.vim6
-rw-r--r--runtime/indent/yaml.vim5
-rw-r--r--runtime/lang/Makefile92
-rw-r--r--runtime/lang/menu_pt_br.vim304
-rw-r--r--runtime/lang/menu_pt_pt.vim38
-rw-r--r--runtime/macros/maze/mazeclean.c2
-rw-r--r--runtime/optwin.vim4
-rw-r--r--runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim20
-rw-r--r--runtime/pack/dist/opt/termdebug/plugin/termdebug.vim625
-rw-r--r--runtime/plugin/manpager.vim8
-rw-r--r--runtime/plugin/matchparen.vim8
-rw-r--r--runtime/syntax/antlr4.vim30
-rw-r--r--runtime/syntax/asy.vim243
-rw-r--r--runtime/syntax/chicken.vim18
-rw-r--r--runtime/syntax/csv.vim39
-rw-r--r--runtime/syntax/debcopyright.vim4
-rw-r--r--runtime/syntax/dockerfile.vim4
-rw-r--r--runtime/syntax/dosbatch.vim9
-rw-r--r--runtime/syntax/dune.vim3
-rw-r--r--runtime/syntax/fstab.vim22
-rw-r--r--runtime/syntax/generator/Makefile6
-rw-r--r--runtime/syntax/generator/gen_syntax_vim.vim19
-rw-r--r--runtime/syntax/generator/vim.vim.base298
-rw-r--r--runtime/syntax/glsl.vim752
-rw-r--r--runtime/syntax/goaccess.vim34
-rw-r--r--runtime/syntax/html.vim3
-rw-r--r--runtime/syntax/htmlangular.vim18
-rw-r--r--runtime/syntax/java.vim462
-rw-r--r--runtime/syntax/javascript.vim9
-rw-r--r--runtime/syntax/kconfig.vim4
-rw-r--r--runtime/syntax/kivy.vim10
-rw-r--r--runtime/syntax/logindefs.vim27
-rw-r--r--runtime/syntax/make.vim21
-rw-r--r--runtime/syntax/mediawiki.vim292
-rw-r--r--runtime/syntax/mysql.vim314
-rw-r--r--runtime/syntax/ocaml.vim407
-rw-r--r--runtime/syntax/opam.vim52
-rw-r--r--runtime/syntax/progress.vim14
-rw-r--r--runtime/syntax/scheme.vim21
-rw-r--r--runtime/syntax/sdc.vim46
-rw-r--r--runtime/syntax/testdir/README.txt102
-rw-r--r--runtime/syntax/testdir/dumps/c_02.dump10
-rw-r--r--runtime/syntax/testdir/dumps/c_03.dump8
-rw-r--r--runtime/syntax/testdir/dumps/c_04.dump12
-rw-r--r--runtime/syntax/testdir/dumps/c_05.dump12
-rw-r--r--runtime/syntax/testdir/dumps/c_06.dump12
-rw-r--r--runtime/syntax/testdir/dumps/c_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/c_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_01_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_01_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_01_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_01_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_02_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_02_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_02_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_02_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_03_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_03_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_03_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_03_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_04_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_04_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_04_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_04_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_04_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_05_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_05_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_05_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_05_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_05_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_06_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_06_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_06_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_06_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_07_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_07_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_07_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_07_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_07_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_08_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_08_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_08_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_08_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_08_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_09_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_09_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_09_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_09_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_10_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_10_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_10_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_10_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_10_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_10_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_11_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_11_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_11_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_11_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_11_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_11_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_12_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_12_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_12_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_12_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_12_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_13_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_13_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_13_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_13_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_13_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_14_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_14_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_14_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_14_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_14_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_15_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_15_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_15_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_15_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_16_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_16_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_16_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_16_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_17_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_17_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_17_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_17_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_18_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_18_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_18_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_18_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_19_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_19_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_19_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_19_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_20_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/dots_20_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/html_01.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_02.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_03.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_04.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_05.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_06.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_07.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_08.dump12
-rw-r--r--runtime/syntax/testdir/dumps/html_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_comments_02.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_comments_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_comments_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_00.dump14
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_01.dump28
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_02.dump40
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_escapes_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_escapes_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_generics_signature_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump (renamed from runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump)16
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_09.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_09.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_method_references_signature_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_01.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_02.dump4
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_04.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_05.vim (renamed from runtime/syntax/testdir/dumps/java_methods_indent2_99.vim)0
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim (renamed from runtime/syntax/testdir/dumps/java_methods_indent4_99.vim)0
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim (renamed from runtime/syntax/testdir/dumps/java_methods_indent8_99.vim)0
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim (renamed from runtime/syntax/testdir/dumps/java_methods_style_99.vim)0
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim (renamed from runtime/syntax/testdir/dumps/vim_keymap_99.vim)2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_01.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_02.dump4
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_04.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_05.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_01.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_02.dump4
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_04.dump10
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_05.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_numbers_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_numbers_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_string_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_01.dump10
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_02.dump10
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_03.dump12
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_04.dump10
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_05.dump12
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_06.dump12
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_switch_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_01.dump2
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_02.dump4
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_03.dump28
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_04.dump28
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_05.dump (renamed from runtime/syntax/testdir/dumps/java_unfoldment_99.dump)18
-rw-r--r--runtime/syntax/testdir/dumps/markdown_conceal_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/modula2_iso_02.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_iso_03.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_iso_04.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_iso_05.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_iso_06.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_iso_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/modula2_pim_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/modula2_pim_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_02.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_03.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_04.dump12
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_05.dump10
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_06.dump12
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_07.dump12
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/modula2_r10_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/progress_comments_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/progress_comments_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/progress_comments_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_01_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_02_01.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_02_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_03_01.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_03_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_03_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_04_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_02.dump6
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_03.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_04.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_05.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_06.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_07.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_08.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_09.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_10.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_11.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_12.dump14
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_13.dump14
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_14.dump14
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_15.dump14
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_16.dump16
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_17.dump16
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_18.dump16
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_19.dump18
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_20.dump16
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_21.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_05_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_06_01.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_06_02.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_06_03.dump14
-rw-r--r--runtime/syntax/testdir/dumps/sh_06_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_06_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_07_01.dump16
-rw-r--r--runtime/syntax/testdir/dumps/sh_07_02.dump18
-rw-r--r--runtime/syntax/testdir/dumps/sh_07_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_07_04.dump26
-rw-r--r--runtime/syntax/testdir/dumps/sh_07_05.dump (renamed from runtime/syntax/testdir/dumps/sh_07_99.dump)6
-rw-r--r--runtime/syntax/testdir/dumps/sh_08_02.dump10
-rw-r--r--runtime/syntax/testdir/dumps/sh_08_03.dump12
-rw-r--r--runtime/syntax/testdir/dumps/sh_08_04.dump14
-rw-r--r--runtime/syntax/testdir/dumps/sh_08_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_09_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_10_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_11_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/sh_11_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_00.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_01.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump4
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump4
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump (renamed from runtime/syntax/testdir/dumps/vim9_keymap_00.dump)4
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump (renamed from runtime/syntax/testdir/dumps/vim9_keymap_01.dump)0
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump4
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump4
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_keymap_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_shebang_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_behave_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_call_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_call_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_call_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_call_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_catch_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_command_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_05.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_06.dump8
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_07.dump8
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_08.dump8
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_09.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_10.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_11.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_12.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_13.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_14.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_15.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_16.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_17.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_18.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_19.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_20.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_21.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_22.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_23.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_24.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_25.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_26.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_27.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_28.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_29.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_30.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_31.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_32.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_33.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_34.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_35.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_36.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_37.dump18
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_38.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_39.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_40.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_41.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_42.dump22
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_43.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_44.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_45.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_46.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_47.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_48.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_49.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_50.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_51.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_52.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_53.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_54.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_55.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_56.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_57.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_58.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_59.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_60.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_61.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_62.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_63.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_64.dump30
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_65.dump30
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_66.dump40
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_67.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_68.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_commands_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_05.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump22
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump22
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_echo_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_echo_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_execute_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump26
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump30
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump34
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump (renamed from runtime/syntax/testdir/dumps/vim_keymap_99.dump)28
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_00.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_01.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_02.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_03.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_04.dump32
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_05.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_map_99.dump)10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_map_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_match_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_match_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_menu_03.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_menu_04.dump12
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_menu_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_menu_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_set_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_set_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_set_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_set_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_set_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_set_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump10
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_throw_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_expr_01.dump14
-rw-r--r--runtime/syntax/testdir/dumps/vim_expr_02.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_expr_03.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_expr_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_expr_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_key_notation_09.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_key_notation_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_keymap_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_keymap_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_keymap_04.vim (renamed from runtime/syntax/testdir/dumps/vim9_keymap_99.vim)0
-rw-r--r--runtime/syntax/testdir/dumps/vim_line_continuation_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_new_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_object_methods_00.dump4
-rw-r--r--runtime/syntax/testdir/dumps/vim_object_methods_02.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim_object_methods_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_object_methods_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_shebang_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_variables_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml.yaml_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/yaml_01.dump4
-rw-r--r--runtime/syntax/testdir/dumps/yaml_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/yaml_04.dump2
-rw-r--r--runtime/syntax/testdir/dumps/yaml_05.dump8
-rw-r--r--runtime/syntax/testdir/dumps/yaml_06.dump12
-rw-r--r--runtime/syntax/testdir/dumps/yaml_07.dump16
-rw-r--r--runtime/syntax/testdir/dumps/yaml_99.dump20
-rw-r--r--runtime/syntax/testdir/input/java_annotations_signature.java78
-rw-r--r--runtime/syntax/testdir/input/java_enfoldment.java16
-rw-r--r--runtime/syntax/testdir/input/java_generics.java140
-rw-r--r--runtime/syntax/testdir/input/java_generics_signature.java140
-rw-r--r--runtime/syntax/testdir/input/java_lambda_expressions.java2
-rw-r--r--runtime/syntax/testdir/input/java_lambda_expressions_signature.java154
-rw-r--r--runtime/syntax/testdir/input/java_method_references.java186
-rw-r--r--runtime/syntax/testdir/input/java_method_references_signature.java186
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent2.java18
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent2_signature.java104
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent4.java18
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent4_signature.java104
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent8.java18
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent8_signature.java104
-rw-r--r--runtime/syntax/testdir/input/java_methods_style_signature.java82
-rw-r--r--runtime/syntax/testdir/input/java_switch.java10
-rw-r--r--runtime/syntax/testdir/input/java_unfoldment.java14
-rw-r--r--runtime/syntax/testdir/input/progress_comments.p45
-rw-r--r--runtime/syntax/testdir/input/selftestdir/README.txt10
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_01 (renamed from runtime/syntax/testdir/input/vim_keymap.vim)87
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_0230
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_0320
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_0415
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_0512
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_0610
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_079
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_088
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_097
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_106
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_116
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_125
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_135
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_145
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_154
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_164
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_174
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_184
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_194
-rw-r--r--runtime/syntax/testdir/input/selftestdir/dots_202
-rw-r--r--runtime/syntax/testdir/input/vim9_ex_commands.vim1225
-rw-r--r--runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim44
-rw-r--r--runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim44
-rw-r--r--runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim (renamed from runtime/syntax/testdir/input/vim9_keymap.vim)4
-rw-r--r--runtime/syntax/testdir/input/vim_ex_call.vim51
-rw-r--r--runtime/syntax/testdir/input/vim_ex_commands.vim56
-rw-r--r--runtime/syntax/testdir/input/vim_ex_def.vim2
-rw-r--r--runtime/syntax/testdir/input/vim_ex_def_fold.vim4
-rw-r--r--runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim43
-rw-r--r--runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim43
-rw-r--r--runtime/syntax/testdir/input/vim_ex_function_fold.vim3
-rw-r--r--runtime/syntax/testdir/input/vim_ex_let_heredoc.vim196
-rw-r--r--runtime/syntax/testdir/input/vim_ex_loadkeymap.vim24
-rw-r--r--runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim10
-rw-r--r--runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim10
-rw-r--r--runtime/syntax/testdir/input/vim_ex_map.vim24
-rw-r--r--runtime/syntax/testdir/input/vim_ex_match.vim32
-rw-r--r--runtime/syntax/testdir/input/vim_ex_set.vim93
-rw-r--r--runtime/syntax/testdir/input/yaml.yaml7
-rw-r--r--runtime/syntax/testdir/runtest.vim204
-rw-r--r--runtime/syntax/testdir/viewdumps.vim24
-rw-r--r--runtime/syntax/thrift.vim74
-rw-r--r--runtime/syntax/tmux.vim12
-rw-r--r--runtime/syntax/tsv.vim12
-rw-r--r--runtime/syntax/typst.vim472
-rw-r--r--runtime/syntax/vim.vim368
-rw-r--r--runtime/syntax/yaml.vim2
-rw-r--r--runtime/tutor/Makefile52
-rw-r--r--runtime/tutor/tutor.es2
-rw-r--r--runtime/tutor/tutor.es.utf-82
895 files changed, 20992 insertions, 7272 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index bf9e32e..c8942eb 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -9,6 +9,8 @@ vim9script
# These functions are moved here from runtime/filetype.vim to make startup
# faster.
+var prolog_pattern = '^\s*\(:-\|%\+\(\s\|$\)\|\/\*\)\|\.\s*$'
+
export def Check_inp()
if getline(1) =~ '%%'
setf tex
@@ -402,18 +404,38 @@ export def FTharedoc()
endif
enddef
-# Distinguish between HTML, XHTML and Django
+# Distinguish between HTML, XHTML, Django and Angular
export def FThtml()
var n = 1
- while n < 10 && n <= line("$")
+
+ # Test if the filename follows the Angular component template convention
+ # Disabled for the reasons mentioned here: #13594
+ # if expand('%:t') =~ '^.*\.component\.html$'
+ # setf htmlangular
+ # return
+ # endif
+
+ while n < 40 && n <= line("$")
+ # Check for Angular
+ if getline(n) =~ '@\(if\|for\|defer\|switch\)\|\*\(ngIf\|ngFor\|ngSwitch\|ngTemplateOutlet\)\|ng-template\|ng-content\|{{.*}}'
+ setf htmlangular
+ return
+ endif
+ # Check for XHTML
if getline(n) =~ '\<DTD\s\+XHTML\s'
setf xhtml
return
endif
- if getline(n) =~ '{%\s*\(extends\|block\|load\)\>\|{#\s\+'
+ # Check for Django
+ if getline(n) =~ '{%\s*\(autoescape\|block\|comment\|csrf_token\|cycle\|debug\|extends\|filter\|firstof\|for\|if\|ifchanged\|include\|load\|lorem\|now\|query_string\|regroup\|resetcycle\|spaceless\|templatetag\|url\|verbatim\|widthratio\|with\)\>\|{#\s\+'
setf htmldjango
return
endif
+ # Check for SuperHTML
+ if getline(n) =~ '<extend\|<super>'
+ setf superhtml
+ return
+ endif
n += 1
endwhile
setf FALLBACK html
@@ -449,7 +471,7 @@ export def ProtoCheck(default: string)
# recognize Prolog by specific text in the first non-empty line
# require a blank after the '%' because Perl uses "%list" and "%translate"
var lnum = getline(nextnonblank(1))
- if lnum =~ '\<prolog\>' || lnum =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || lnum =~ ':-'
+ if lnum =~ '\<prolog\>' || lnum =~ prolog_pattern
setf prolog
else
exe 'setf ' .. default
@@ -514,6 +536,25 @@ export def FTm()
endif
enddef
+export def FTmake()
+ # Check if it is a Microsoft Makefile
+ unlet! b:make_microsoft
+ var n = 1
+ while n < 1000 && n <= line('$')
+ var line = getline(n)
+ if line =~? '^\s*!\s*\(ifn\=\(def\)\=\|include\|message\|error\)\>'
+ b:make_microsoft = 1
+ break
+ elseif line =~ '^ *ifn\=\(eq\|def\)\>' || line =~ '^ *[-s]\=include\s'
+ break
+ elseif line =~ '^ *\w\+\s*[!?:+]='
+ break
+ endif
+ n += 1
+ endwhile
+ setf make
+enddef
+
export def FTmms()
var n = 1
while n < 20
@@ -628,7 +669,7 @@ export def FTpl()
# recognize Prolog by specific text in the first non-empty line
# require a blank after the '%' because Perl uses "%list" and "%translate"
var line = getline(nextnonblank(1))
- if line =~ '\<prolog\>' || line =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || line =~ ':-'
+ if line =~ '\<prolog\>' || line =~ prolog_pattern
setf prolog
else
setf perl
@@ -1265,6 +1306,56 @@ export def FTtyp()
setf typst
enddef
+# Detect Microsoft Developer Studio Project files (Makefile) or Faust DSP
+# files.
+export def FTdsp()
+ if exists("g:filetype_dsp")
+ exe "setf " .. g:filetype_dsp
+ return
+ endif
+
+ # Test the filename
+ if expand('%:t') =~ '^[mM]akefile.*$'
+ setf make
+ return
+ endif
+
+ # Test the file contents
+ for line in getline(1, 200)
+ # Chech for comment style
+ if line =~ '^#.*'
+ setf make
+ return
+ endif
+
+ # Check for common lines
+ if line =~ '^.*Microsoft Developer Studio Project File.*$'
+ setf make
+ return
+ endif
+
+ if line =~ '^!MESSAGE This is not a valid makefile\..+$'
+ setf make
+ return
+ endif
+
+ # Check for keywords
+ if line =~ '^!(IF,ELSEIF,ENDIF).*$'
+ setf make
+ return
+ endif
+
+ # Check for common assignments
+ if line =~ '^SOURCE=.*$'
+ setf make
+ return
+ endif
+ endfor
+
+ # Otherwise, assume we have a Faust file
+ setf faust
+enddef
+
# Set the filetype of a *.v file to Verilog, V or Cog based on the first 200
# lines.
export def FTv()
diff --git a/runtime/autoload/dist/man.vim b/runtime/autoload/dist/man.vim
index 708e106..d9dbaf4 100644
--- a/runtime/autoload/dist/man.vim
+++ b/runtime/autoload/dist/man.vim
@@ -4,6 +4,7 @@
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Autoload Split: Bram Moolenaar
" Last Change: 2024 Jan 17 (make it work on AIX, see #13847)
+" 2024 Jul 06 (honor command modifiers, #15117)
let s:cpo_save = &cpo
set cpo-=C
@@ -165,7 +166,9 @@ func dist#man#GetPage(cmdmods, ...)
endwhile
endif
if &filetype != "man"
- if exists("g:ft_man_open_mode")
+ if a:cmdmods =~ '\<\(tab\|vertical\|horizontal\)\>'
+ let open_cmd = a:cmdmods . ' split'
+ elseif exists("g:ft_man_open_mode")
if g:ft_man_open_mode == 'vert'
let open_cmd = 'vsplit'
elseif g:ft_man_open_mode == 'tab'
@@ -174,7 +177,7 @@ func dist#man#GetPage(cmdmods, ...)
let open_cmd = 'split'
endif
else
- let open_cmd = a:cmdmods . ' split'
+ let open_cmd = 'split'
endif
endif
endif
diff --git a/runtime/autoload/dist/vim.vim b/runtime/autoload/dist/vim.vim
index 021244c..d519406 100644
--- a/runtime/autoload/dist/vim.vim
+++ b/runtime/autoload/dist/vim.vim
@@ -18,6 +18,10 @@ endif
if !has('vim9script')
function dist#vim#IsSafeExecutable(filetype, executable)
let cwd = getcwd()
+ if empty(exepath(a:executable))
+ echomsg a:executable .. " not found in $PATH"
+ return v:false
+ endif
return get(g:, a:filetype .. '_exec', get(g:, 'plugin_exec', 0)) &&
\ (fnamemodify(exepath(a:executable), ':p:h') !=# cwd
\ || (split($PATH, has('win32') ? ';' : ':')->index(cwd) != -1 &&
diff --git a/runtime/autoload/dist/vim9.vim b/runtime/autoload/dist/vim9.vim
index 807140d..8fa9380 100644
--- a/runtime/autoload/dist/vim9.vim
+++ b/runtime/autoload/dist/vim9.vim
@@ -6,6 +6,10 @@ vim9script
# Last Change: 2023 Oct 25
export def IsSafeExecutable(filetype: string, executable: string): bool
+ if empty(exepath(executable))
+ echomsg executable .. " not found in $PATH"
+ return v:false
+ endif
var cwd = getcwd()
return get(g:, filetype .. '_exec', get(g:, 'plugin_exec', 0))
&& (fnamemodify(exepath(executable), ':p:h') !=# cwd
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index d8de432..e747ce2 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -3,7 +3,7 @@
" Maintainer: This runtime file is looking for a new maintainer.
" Date: May 03, 2023
" Version: 173a
-" Last Change:
+" Last Change: {{{1
" 2023 Nov 21 by Vim Project: ignore wildignore when expanding $COMSPEC (v173a)
" 2023 Nov 22 by Vim Project: fix handling of very long filename on longlist style (v173a)
" 2024 Feb 19 by Vim Project: (announce adoption)
@@ -15,6 +15,15 @@
" 2024 May 13 by Vim Project: prefer scp over pscp
" 2024 Jun 04 by Vim Project: set bufhidden if buffer changed, nohidden is set and buffer shall be switched (#14915)
" 2024 Jun 13 by Vim Project: glob() on Windows fails when a directory name contains [] (#14952)
+" 2024 Jun 23 by Vim Project: save ad restore registers when liststyle = WIDELIST (#15077, #15114)
+" 2024 Jul 22 by Vim Project: avoid endless recursion (#15318)
+" 2024 Jul 23 by Vim Project: escape filename before trying to delete it (#15330)
+" 2024 Jul 30 by Vim Project: handle mark-copy to same target directory (#12112)
+" 2024 Aug 02 by Vim Project: honor g:netrw_alt{o,v} for :{S,H,V}explore (#15417)
+" 2024 Aug 15 by Vim Project: style changes, prevent E121 (#15501)
+" 2024 Aug 22 by Vim Project: fix mf-selection highlight (#15551)
+" 2024 Aug 22 by Vim Project: adjust echo output of mx command (#15550)
+" }}}
" Former Maintainer: Charles E Campbell
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
@@ -57,11 +66,6 @@ if exists("s:needspatches")
endif
let g:loaded_netrw = "v173"
-if !exists("s:NOTE")
- let s:NOTE = 0
- let s:WARNING = 1
- let s:ERROR = 2
-endif
let s:keepcpo= &cpo
setl cpo&vim
@@ -99,7 +103,7 @@ fun! netrw#ErrorMsg(level,msg,errnum)
endif
" call Decho("level=".level,'~'.expand("<slnum>"))
- if g:netrw_use_errorwindow == 2 && (v:version > 802 || (v:version == 802 && has("patch486")))
+ if g:netrw_use_errorwindow == 2 && exists("*popup_atcursor")
" use popup window
if type(a:msg) == 3
let msg = [level]+a:msg
@@ -215,6 +219,11 @@ if !exists("s:LONGLIST")
call s:NetrwInit("s:MAXLIST" ,4)
endif
+let s:NOTE = 0
+let s:WARNING = 1
+let s:ERROR = 2
+call s:NetrwInit("g:netrw_errorlvl", s:NOTE)
+
" ---------------------------------------------------------------------
" Default option values: {{{2
let g:netrw_localcopycmdopt = ""
@@ -224,7 +233,10 @@ let g:netrw_localmovecmdopt = ""
" ---------------------------------------------------------------------
" Default values for netrw's global protocol variables {{{2
-if (v:version > 802 || (v:version == 802 && has("patch486"))) && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on") && has("mouse")
+if exists("*popup_atcursor")
+\ && has("syntax")
+\ && exists("g:syntax_on")
+\ && has("mouse")
call s:NetrwInit("g:netrw_use_errorwindow",2)
else
call s:NetrwInit("g:netrw_use_errorwindow",1)
@@ -342,7 +354,6 @@ call s:NetrwInit("s:didstarstar",0)
call s:NetrwInit("g:netrw_dirhistcnt" , 0)
call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }')
call s:NetrwInit("g:netrw_dirhistmax" , 10)
-call s:NetrwInit("g:netrw_errorlvl" , s:NOTE)
call s:NetrwInit("g:netrw_fastbrowse" , 1)
call s:NetrwInit("g:netrw_ftp_browse_reject", '^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$')
if !exists("g:netrw_ftp_list_cmd")
@@ -693,12 +704,11 @@ fun! netrw#Explore(indx,dosplit,style,...)
\ ((isdirectory(s:NetrwFile(a:1))))? 'is a directory' : 'is not a directory',
\ '~'.expand("<slnum>"))
if a:1 =~ "\\\s" && !filereadable(s:NetrwFile(a:1)) && !isdirectory(s:NetrwFile(a:1))
-" call Decho("re-trying Explore with <".substitute(a:1,'\\\(\s\)','\1','g').">",'~'.expand("<slnum>"))
- call netrw#Explore(a:indx,a:dosplit,a:style,substitute(a:1,'\\\(\s\)','\1','g'))
-" call Dret("netrw#Explore : returning from retry")
- return
-" else " Decho
-" call Decho("retry not needed",'~'.expand("<slnum>"))
+ let a1 = substitute(a:1, '\\\(\s\)', '\1', 'g')
+ if a1 != a:1
+ call netrw#Explore(a:indx, a:dosplit, a:style, a1)
+ return
+ endif
endif
endif
@@ -714,7 +724,6 @@ fun! netrw#Explore(indx,dosplit,style,...)
" -or- file has been modified AND file not hidden when abandoned
" -or- Texplore used
if a:dosplit || (&modified && &hidden == 0 && &bufhidden != "hide") || a:style == 6
-" call Decho("case dosplit=".a:dosplit." modified=".&modified." a:style=".a:style.": dosplit or file has been modified",'~'.expand("<slnum>"))
call s:SaveWinVars()
let winsz= g:netrw_winsize
if a:indx > 0
@@ -722,57 +731,41 @@ fun! netrw#Explore(indx,dosplit,style,...)
endif
if a:style == 0 " Explore, Sexplore
-" call Decho("style=0: Explore or Sexplore",'~'.expand("<slnum>"))
let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz
if winsz == 0|let winsz= ""|endif
- exe "noswapfile ".winsz."wincmd s"
-" call Decho("exe noswapfile ".winsz."wincmd s",'~'.expand("<slnum>"))
+ exe "noswapfile ".(g:netrw_alto ? "below " : "above ").winsz."wincmd s"
- elseif a:style == 1 "Explore!, Sexplore!
-" call Decho("style=1: Explore! or Sexplore!",'~'.expand("<slnum>"))
+ elseif a:style == 1 " Explore!, Sexplore!
let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz
if winsz == 0|let winsz= ""|endif
- exe "keepalt noswapfile ".winsz."wincmd v"
-" call Decho("exe keepalt noswapfile ".winsz."wincmd v",'~'.expand("<slnum>"))
+ exe "keepalt noswapfile ".(g:netrw_altv ? "rightbelow " : "leftabove ").winsz."wincmd v"
elseif a:style == 2 " Hexplore
-" call Decho("style=2: Hexplore",'~'.expand("<slnum>"))
let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz
if winsz == 0|let winsz= ""|endif
- exe "keepalt noswapfile bel ".winsz."wincmd s"
-" call Decho("exe keepalt noswapfile bel ".winsz."wincmd s",'~'.expand("<slnum>"))
+ exe "keepalt noswapfile ".(g:netrw_alto ? "below " : "above ").winsz."wincmd s"
elseif a:style == 3 " Hexplore!
-" call Decho("style=3: Hexplore!",'~'.expand("<slnum>"))
let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz
if winsz == 0|let winsz= ""|endif
- exe "keepalt noswapfile abo ".winsz."wincmd s"
-" call Decho("exe keepalt noswapfile abo ".winsz."wincmd s",'~'.expand("<slnum>"))
+ exe "keepalt noswapfile ".(!g:netrw_alto ? "below " : "above ").winsz."wincmd s"
elseif a:style == 4 " Vexplore
-" call Decho("style=4: Vexplore",'~'.expand("<slnum>"))
let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz
if winsz == 0|let winsz= ""|endif
- exe "keepalt noswapfile lefta ".winsz."wincmd v"
-" call Decho("exe keepalt noswapfile lefta ".winsz."wincmd v",'~'.expand("<slnum>"))
+ exe "keepalt noswapfile ".(g:netrw_altv ? "rightbelow " : "leftabove ").winsz."wincmd v"
elseif a:style == 5 " Vexplore!
-" call Decho("style=5: Vexplore!",'~'.expand("<slnum>"))
let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz
if winsz == 0|let winsz= ""|endif
- exe "keepalt noswapfile rightb ".winsz."wincmd v"
-" call Decho("exe keepalt noswapfile rightb ".winsz."wincmd v",'~'.expand("<slnum>"))
+ exe "keepalt noswapfile ".(!g:netrw_altv ? "rightbelow " : "leftabove ").winsz."wincmd v"
elseif a:style == 6 " Texplore
call s:SaveBufVars()
-" call Decho("style = 6: Texplore",'~'.expand("<slnum>"))
exe "keepalt tabnew ".fnameescape(curdir)
-" call Decho("exe keepalt tabnew ".fnameescape(curdir),'~'.expand("<slnum>"))
call s:RestoreBufVars()
endif
call s:RestoreWinVars()
-" else " Decho
-" call Decho("case a:dosplit=".a:dosplit." AND modified=".&modified." AND a:style=".a:style." is not 6",'~'.expand("<slnum>"))
endif
NetrwKeepj norm! 0
@@ -4496,7 +4489,15 @@ fun! s:NetrwGetWord()
call cursor(line("."),filestart+1)
NetrwKeepj norm! ma
endif
- let rega= @a
+
+ let dict={}
+ " save the unnamed register and register 0-9 and a
+ let dict.a=[getreg('a'), getregtype('a')]
+ for i in range(0, 9)
+ let dict[i] = [getreg(i), getregtype(i)]
+ endfor
+ let dict.unnamed = [getreg(''), getregtype('')]
+
let eofname= filestart + b:netrw_cpf + 1
if eofname <= col("$")
call cursor(line("."),filestart+b:netrw_cpf+1)
@@ -4504,8 +4505,10 @@ fun! s:NetrwGetWord()
else
NetrwKeepj norm! "ay$
endif
+
let dirname = @a
- let @a = rega
+ call s:RestoreRegister(dict)
+
" call Decho("2: dirname<".dirname.">",'~'.expand("<slnum>"))
let dirname= substitute(dirname,'\s\+$','','e')
" call Decho("3: dirname<".dirname.">",'~'.expand("<slnum>"))
@@ -5573,13 +5576,12 @@ endfun
" ---------------------------------------------------------------------
" netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2
fun! netrw#BrowseXVis()
-" call Dfunc("netrw#BrowseXVis()")
- let akeep = @a
+ let dict={}
+ let dict.a=[getreg('a'), getregtype('a')]
norm! gv"ay
let gxfile= @a
- let @a = akeep
+ call s:RestoreRegister(dict)
call netrw#BrowseX(gxfile,netrw#CheckIfRemote(gxfile))
-" call Dret("netrw#BrowseXVis")
endfun
" ---------------------------------------------------------------------
@@ -6887,11 +6889,7 @@ fun! s:NetrwMarkFile(islocal,fname)
let ykeep = @@
let curbufnr= bufnr("%")
- if a:fname =~ '^\a'
- let leader= '\<'
- else
- let leader= ''
- endif
+ let leader= '\(^\|\s\)\zs'
if a:fname =~ '\a$'
let trailer = '\>[@=|\/\*]\=\ze\%( \|\t\|$\)'
else
@@ -7154,7 +7152,7 @@ fun! s:NetrwMarkFileCopy(islocal,...)
endif
" copy marked files while within the same directory (ie. allow renaming)
- if simplify(s:netrwmftgt) == simplify(b:netrw_curdir)
+ if s:StripTrailingSlash(simplify(s:netrwmftgt)) == s:StripTrailingSlash(simplify(b:netrw_curdir))
if len(s:netrwmarkfilelist_{bufnr('%')}) == 1
" only one marked file
" call Decho("case: only one marked file",'~'.expand("<slnum>"))
@@ -7231,7 +7229,7 @@ fun! s:NetrwMarkFileCopy(islocal,...)
" call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>"))
call system(copycmd.g:netrw_localcopycmdopt." '".args."' '".tgt."'")
if v:shell_error != 0
- if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
+ if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && g:netrw_keepdir
call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",101)
else
call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80)
@@ -7500,7 +7498,13 @@ fun! s:NetrwMarkFileExe(islocal,enbloc)
NetrwKeepj call netrw#ErrorMsg(s:ERROR,"command<".xcmd."> failed, aborting",54)
break
else
- echo ret
+ if ret !=# ''
+ echo "\n"
+ " skip trailing new line
+ echo ret[0:-2]
+ else
+ echo ret
+ endif
endif
endfor
@@ -9779,7 +9783,13 @@ fun! s:NetrwWideListing()
" fpl: filenames per line
" fpc: filenames per column
setl ma noro
- let keepa= @a
+ let dict={}
+ " save the unnamed register and register 0-9 and a
+ let dict.a=[getreg('a'), getregtype('a')]
+ for i in range(0, 9)
+ let dict[i] = [getreg(i), getregtype(i)]
+ endfor
+ let dict.unnamed = [getreg(''), getregtype('')]
" call Decho("setl ma noro",'~'.expand("<slnum>"))
let b:netrw_cpf= 0
if line("$") >= w:netrw_bannercnt
@@ -9787,7 +9797,8 @@ fun! s:NetrwWideListing()
exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
NetrwKeepj call histdel("/",-1)
else
- let @a= keepa
+ " restore stored registers
+ call s:RestoreRegister(dict)
" call Dret("NetrwWideListing")
return
endif
@@ -9839,7 +9850,7 @@ fun! s:NetrwWideListing()
exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>"
" call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>"))
exe "setl ".g:netrw_bufsettings
- let @a= keepa
+ call s:RestoreRegister(dict)
" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
" call Dret("NetrwWideListing")
return
@@ -9851,7 +9862,6 @@ fun! s:NetrwWideListing()
sil! nunmap <buffer> b
endif
endif
-
endfun
" ---------------------------------------------------------------------
@@ -10172,7 +10182,8 @@ fun! s:SetupNetrwStatusLine(statline)
endif
" set up User9 highlighting as needed
- let keepa= @a
+ let dict={}
+ let dict.a=[getreg('a'), getregtype('a')]
redir @a
try
hi User9
@@ -10184,7 +10195,7 @@ fun! s:SetupNetrwStatusLine(statline)
endif
endtry
redir END
- let @a= keepa
+ call s:RestoreRegister(dict)
endif
" set up status line (may use User9 highlighting)
@@ -11435,7 +11446,7 @@ fun! s:NetrwLocalRmFile(path,fname,all)
let all= a:all
let ok = ""
NetrwKeepj norm! 0
- let rmfile= s:NetrwFile(s:ComposePath(a:path,a:fname))
+ let rmfile= s:NetrwFile(s:ComposePath(a:path,escape(a:fname, '\\')))
" call Decho("rmfile<".rmfile.">",'~'.expand("<slnum>"))
if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
@@ -11444,7 +11455,7 @@ fun! s:NetrwLocalRmFile(path,fname,all)
if !all
echohl Statement
call inputsave()
- let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
+ let ok= input("Confirm deletion of file <".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
call inputrestore()
echohl NONE
if ok == ""
@@ -11468,7 +11479,7 @@ fun! s:NetrwLocalRmFile(path,fname,all)
if !all
echohl Statement
call inputsave()
- let ok= input("Confirm *recursive* deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
+ let ok= input("Confirm *recursive* deletion of directory <".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
call inputrestore()
let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
if ok == ""
@@ -11628,6 +11639,13 @@ fun! netrw#WinPath(path)
endfun
" ---------------------------------------------------------------------
+" s:StripTrailingSlash: removes trailing slashes from a path {{{2
+fun! s:StripTrailingSlash(path)
+ " remove trailing slash
+ return substitute(a:path, '[/\\]$', '', 'g')
+endfun
+
+" ---------------------------------------------------------------------
" s:NetrwBadd: adds marked files to buffer list or vice versa {{{2
" cb : bl2mf=0 add marked files to buffer list
" cB : bl2mf=1 use bufferlist to mark files
@@ -11994,6 +12012,16 @@ fun! s:RestoreCursorline()
" call Dret("s:RestoreCursorline : restored cul=".&l:cursorline." cuc=".&l:cursorcolumn)
endfun
+" s:RestoreRegister: restores all registers given in the dict {{{2
+fun! s:RestoreRegister(dict)
+ for [key, val] in items(a:dict)
+ if key == 'unnamed'
+ let key = ''
+ endif
+ call setreg(key, val[0], val[1])
+ endfor
+endfun
+
" ---------------------------------------------------------------------
" s:NetrwDelete: Deletes a file. {{{2
" Uses Steve Hall's idea to insure that Windows paths stay
@@ -12801,54 +12829,3 @@ unlet s:keepcpo
" Modelines: {{{1
" ===============
" vim:ts=8 fdm=marker
-" doing autoload/netrw.vim version v172g ~57
-" varname<g:netrw_dirhistcnt> value=0 ~1
-" varname<s:THINLIST> value=0 ~1
-" varname<s:LONGLIST> value=1 ~1
-" varname<s:WIDELIST> value=2 ~1
-" varname<s:TREELIST> value=3 ~1
-" varname<s:MAXLIST> value=4 ~1
-" varname<g:netrw_use_errorwindow> value=2 ~1
-" varname<g:netrw_http_xcmd> value=-q -O ~1
-" varname<g:netrw_http_put_cmd> value=curl -T ~1
-" varname<g:netrw_keepj> value=keepj ~1
-" varname<g:netrw_rcp_cmd> value=rcp ~1
-" varname<g:netrw_rsync_cmd> value=rsync ~1
-" varname<g:netrw_rsync_sep> value=/ ~1
-" varname<g:netrw_scp_cmd> value=scp -q ~1
-" varname<g:netrw_sftp_cmd> value=sftp ~1
-" varname<g:netrw_ssh_cmd> value=ssh ~1
-" varname<g:netrw_alto> value=0 ~1
-" varname<g:netrw_altv> value=1 ~1
-" varname<g:netrw_banner> value=1 ~1
-" varname<g:netrw_browse_split> value=0 ~1
-" varname<g:netrw_bufsettings> value=noma nomod nonu nobl nowrap ro nornu ~1
-" varname<g:netrw_chgwin> value=-1 ~1
-" varname<g:netrw_clipboard> value=1 ~1
-" varname<g:netrw_compress> value=gzip ~1
-" varname<g:netrw_ctags> value=ctags ~1
-" varname<g:netrw_cursor> value=2 ~1
-" (netrw) COMBAK: cuc=0 cul=0 initialization of s:netrw_cu[cl]
-" varname<g:netrw_cygdrive> value=/cygdrive ~1
-" varname<s:didstarstar> value=0 ~1
-" varname<g:netrw_dirhistcnt> value=0 ~1
-" varname<g:netrw_decompress> value={ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" } ~1
-" varname<g:netrw_dirhistmax> value=10 ~1
-" varname<g:netrw_errorlvl> value=0 ~1
-" varname<g:netrw_fastbrowse> value=1 ~1
-" varname<g:netrw_ftp_browse_reject> value=^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$ ~1
-" varname<g:netrw_ftpmode> value=binary ~1
-" varname<g:netrw_hide> value=1 ~1
-" varname<g:netrw_keepdir> value=1 ~1
-" varname<g:netrw_list_hide> value= ~1
-" varname<g:netrw_localmkdir> value=mkdir ~1
-" varname<g:netrw_remote_mkdir> value=mkdir ~1
-" varname<g:netrw_liststyle> value=0 ~1
-" varname<g:netrw_markfileesc> value=*./[\~ ~1
-" varname<g:netrw_maxfilenamelen> value=32 ~1
-" varname<g:netrw_menu> value=1 ~1
-" varname<g:netrw_mkdir_cmd> value=ssh USEPORT HOSTNAME mkdir ~1
-" varname<g:netrw_mousemaps> value=1 ~1
-" varname<g:netrw_retmap> value=0 ~1
-" varname<g:netrw_chgperm> value=chmod PERM FILENAME ~1
-" varname<g:netrw_preview> value=0 ~1
diff --git a/runtime/autoload/typst.vim b/runtime/autoload/typst.vim
new file mode 100644
index 0000000..55edd23
--- /dev/null
+++ b/runtime/autoload/typst.vim
@@ -0,0 +1,50 @@
+" Language: Typst
+" Maintainer: Gregory Anders
+" Last Change: 2024-07-14
+" Based on: https://github.com/kaarmu/typst.vim
+
+function! typst#indentexpr() abort
+ let l:lnum = v:lnum
+ let s:sw = shiftwidth()
+
+ let [l:plnum, l:pline] = s:get_prev_nonblank(l:lnum - 1)
+ if l:plnum == 0 | return 0 | endif
+
+ let l:line = getline(l:lnum)
+ let l:ind = indent(l:plnum)
+
+ let l:synname = synIDattr(synID(l:lnum, 1, 1), 'name')
+
+ " Use last indent for block comments
+ if l:synname == 'typstCommentBlock'
+ return l:ind
+ endif
+
+ if l:pline =~ '\v[{[(]\s*$'
+ let l:ind += s:sw
+ endif
+
+ if l:line =~ '\v^\s*[}\])]'
+ let l:ind -= s:sw
+ endif
+
+ return l:ind
+endfunction
+
+" Gets the previous non-blank line that is not a comment.
+function! s:get_prev_nonblank(lnum) abort
+ let l:lnum = prevnonblank(a:lnum)
+ let l:line = getline(l:lnum)
+
+ while l:lnum > 0 && l:line =~ '^\s*//'
+ let l:lnum = prevnonblank(l:lnum - 1)
+ let l:line = getline(l:lnum)
+ endwhile
+
+ return [l:lnum, s:remove_comments(l:line)]
+endfunction
+
+" Removes comments from the given line.
+function! s:remove_comments(line) abort
+ return substitute(a:line, '\s*//.*', '', '')
+endfunction
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index d0e706e..4a53fc5 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,11 +1,19 @@
" zip.vim: Handles browsing zipfiles
-" AUTOLOAD PORTION
-" Date: Mar 12, 2023
-" Version: 33
+" AUTOLOAD PORTION
+" Date: 2024 Aug 21
+" Version: 34
" Maintainer: This runtime file is looking for a new maintainer.
" Former Maintainer: Charles E Campbell
" Last Change:
-" 2024 Jun 16 by Vim Project: handle whitespace on Windows properly (#14998)
+" 2024 Jun 16 by Vim Project: handle whitespace on Windows properly (#14998)
+" 2024 Jul 23 by Vim Project: fix 'x' command
+" 2024 Jul 24 by Vim Project: use delete() function
+" 2024 Jul 30 by Vim Project: fix opening remote zipfile
+" 2024 Aug 04 by Vim Project: escape '[' in name of file to be extracted
+" 2024 Aug 05 by Vim Project: workaround for the FreeBSD's unzip
+" 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
" 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,
@@ -22,16 +30,9 @@
if &cp || exists("g:loaded_zip")
finish
endif
-let g:loaded_zip= "v33"
-if v:version < 702
- echohl WarningMsg
- echo "***warning*** this version of zip needs vim 7.2 or later"
- echohl Normal
- finish
-endif
+let g:loaded_zip= "v34"
let s:keepcpo= &cpo
set cpo&vim
-"DechoTabOn
let s:zipfile_escape = ' ?&;\'
let s:ERROR = 2
@@ -59,8 +60,28 @@ if !exists("g:zip_extractcmd")
let g:zip_extractcmd= g:zip_unzipcmd
endif
+" ---------------------------------------------------------------------
+" required early
+" s:Mess: {{{2
+fun! s:Mess(group, msg)
+ redraw!
+ exe "echohl " . a:group
+ echomsg a:msg
+ echohl Normal
+endfun
+
+if v:version < 901
+ " required for defer
+ call s:Mess('WarningMsg', "***warning*** this version of zip needs vim 9.1 or later")
+ finish
+endif
+" sanity checks
+if !executable(g:zip_unzipcmd)
+ call s:Mess('Error', "***error*** (zip#Browse) unzip not available on your system")
+ finish
+endif
if !dist#vim#IsSafeExecutable('zip', g:zip_unzipcmd)
- echoerr "Warning: NOT executing " .. g:zip_unzipcmd .. " from current directory!"
+ call s:Mess('Error', "Warning: NOT executing " .. g:zip_unzipcmd .. " from current directory!")
finish
endif
@@ -71,47 +92,28 @@ endif
" ---------------------------------------------------------------------
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
-" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
- " sanity check: insure that the zipfile has "PK" as its first two letters
- " (zipped files have a leading PK as a "magic cookie")
- if !filereadable(a:zipfile) || readfile(a:zipfile, "", 1)[0] !~ '^PK'
- exe "noswapfile noautocmd noswapfile e ".fnameescape(a:zipfile)
-" call Dret("zip#Browse : not a zipfile<".a:zipfile.">")
+ " sanity check: ensure that the zipfile has "PK" as its first two letters
+ " (zip files have a leading PK as a "magic cookie")
+ if filereadable(a:zipfile) && readblob(a:zipfile, 0, 2) != 0z50.4B
+ exe "noswapfile noautocmd e " .. fnameescape(a:zipfile)
return
-" else " Decho
-" call Decho("zip#Browse: a:zipfile<".a:zipfile."> passed PK test - it's a zip file")
endif
- let repkeep= &report
- set report=10
+ let dict = s:SetSaneOpts()
+ defer s:RestoreOpts(dict)
" sanity checks
- if !exists("*fnameescape")
- if &verbose > 1
- echoerr "the zip plugin is not available (your vim doesn't support fnameescape())"
- endif
- return
- endif
if !executable(g:zip_unzipcmd)
- redraw!
- echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
- let &report= repkeep
-" call Dret("zip#Browse")
+ call s:Mess('Error', "***error*** (zip#Browse) unzip not available on your system")
return
endif
if !filereadable(a:zipfile)
if a:zipfile !~# '^\a\+://'
" if it's an url, don't complain, let url-handlers such as vim do its thing
- redraw!
- echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ call s:Mess('Error', "***error*** (zip#Browse) File not readable <".a:zipfile.">")
endif
- let &report= repkeep
-" call Dret("zip#Browse : file<".a:zipfile."> not readable")
return
endif
-" call Decho("passed sanity checks")
if &ma != 1
set ma
endif
@@ -136,19 +138,15 @@ fun! zip#Browse(zipfile)
\ '" Select a file with cursor and press ENTER'])
keepj $
-" call Decho("exe silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1))
- exe "keepj sil! r! ".g:zip_unzipcmd." -Z -1 -- ".s:Escape(a:zipfile,1)
+ exe $"keepj sil r! {g:zip_unzipcmd} -Z1 -- {s:Escape(a:zipfile, 1)}"
if v:shell_error != 0
- redraw!
- echohl WarningMsg | echo "***warning*** (zip#Browse) ".fnameescape(a:zipfile)." is not a zip file" | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ call s:Mess('WarningMsg', "***warning*** (zip#Browse) ".fnameescape(a:zipfile)." is not a zip file")
keepj sil! %d
let eikeep= &ei
set ei=BufReadCmd,FileReadCmd
exe "keepj r ".fnameescape(a:zipfile)
let &ei= eikeep
keepj 1d
-" call Dret("zip#Browse")
return
endif
@@ -160,63 +158,46 @@ fun! zip#Browse(zipfile)
noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>ZipBrowseSelect()<cr>
endif
- let &report= repkeep
-" call Dret("zip#Browse")
endfun
" ---------------------------------------------------------------------
" ZipBrowseSelect: {{{2
fun! s:ZipBrowseSelect()
- " call Dfunc("ZipBrowseSelect() zipfile<".((exists("b:zipfile"))? b:zipfile : "n/a")."> curfile<".expand("%").">")
- let repkeep= &report
- set report=10
+ let dict = s:SetSaneOpts()
+ defer s:RestoreOpts(dict)
let fname= getline(".")
if !exists("b:zipfile")
-" call Dret("ZipBrowseSelect : b:zipfile doesn't exist!")
return
endif
" sanity check
if fname =~ '^"'
- let &report= repkeep
-" call Dret("ZipBrowseSelect")
return
endif
if fname =~ '/$'
- redraw!
- echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
- let &report= repkeep
-" call Dret("ZipBrowseSelect")
+ call s:Mess('Error', "***error*** (zip#Browse) Please specify a file, not a directory")
return
endif
-" call Decho("fname<".fname.">")
-
" get zipfile to the new-window
let zipfile = b:zipfile
let curfile = expand("%")
-" call Decho("zipfile<".zipfile.">")
-" call Decho("curfile<".curfile.">")
noswapfile new
if !exists("g:zip_nomax") || g:zip_nomax == 0
wincmd _
endif
let s:zipfile_{winnr()}= curfile
-" call Decho("exe e ".fnameescape("zipfile://".zipfile.'::'.fname))
exe "noswapfile e ".fnameescape("zipfile://".zipfile.'::'.fname)
filetype detect
- let &report= repkeep
-" call Dret("ZipBrowseSelect : s:zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
endfun
" ---------------------------------------------------------------------
" zip#Read: {{{2
fun! zip#Read(fname,mode)
- let repkeep= &report
- set report=10
+ let dict = s:SetSaneOpts()
+ defer s:RestoreOpts(dict)
if has("unix")
let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','')
@@ -224,23 +205,20 @@ fun! zip#Read(fname,mode)
else
let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
- let fname = substitute(fname, '[', '[[]', 'g')
endif
+ let fname = fname->substitute('[', '[[]', 'g')->escape('?*\\')
" sanity check
if !executable(substitute(g:zip_unzipcmd,'\s\+.*$','',''))
- redraw!
- echohl Error | echo "***error*** (zip#Read) sorry, your system doesn't appear to have the ".g:zip_unzipcmd." program" | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
- let &report= repkeep
+ call s:Mess('Error', "***error*** (zip#Read) sorry, your system doesn't appear to have the ".g:zip_unzipcmd." program")
return
endif
" the following code does much the same thing as
- " exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
+ " exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1)
" but allows zipfile://... entries in quickfix lists
let temp = tempname()
let fn = expand('%:p')
- exe "sil! !".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1).' > '.temp
+ exe "sil !".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1).' > '.temp
sil exe 'keepalt file '.temp
sil keepj e!
sil exe 'keepalt file '.fnameescape(fn)
@@ -251,58 +229,42 @@ fun! zip#Read(fname,mode)
" cleanup
set nomod
- let &report= repkeep
endfun
" ---------------------------------------------------------------------
" zip#Write: {{{2
fun! zip#Write(fname)
-" call Dfunc("zip#Write(fname<".a:fname.">) zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
- let repkeep= &report
- set report=10
+ let dict = s:SetSaneOpts()
+ defer s:RestoreOpts(dict)
" sanity checks
if !executable(substitute(g:zip_zipcmd,'\s\+.*$','',''))
- redraw!
- echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the ".g:zip_zipcmd." program" | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
- let &report= repkeep
-" call Dret("zip#Write")
+ call s:Mess('Error', "***error*** (zip#Write) sorry, your system doesn't appear to have the ".g:zip_zipcmd." program")
return
endif
if !exists("*mkdir")
- redraw!
- echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
- let &report= repkeep
-" call Dret("zip#Write")
+ call s:Mess('Error', "***error*** (zip#Write) sorry, mkdir() doesn't work on your system")
return
endif
let curdir= getcwd()
let tmpdir= tempname()
-" call Decho("orig tempname<".tmpdir.">")
if tmpdir =~ '\.'
let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
endif
-" call Decho("tmpdir<".tmpdir.">")
call mkdir(tmpdir,"p")
" attempt to change to the indicated directory
if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
- let &report= repkeep
-" call Dret("zip#Write")
return
endif
-" call Decho("current directory now: ".getcwd())
" place temporary files under .../_ZIPVIM_/
if isdirectory("_ZIPVIM_")
- call s:Rmdir("_ZIPVIM_")
+ call delete("_ZIPVIM_", "rf")
endif
call mkdir("_ZIPVIM_")
cd _ZIPVIM_
-" call Decho("current directory now: ".getcwd())
if has("unix")
let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','')
@@ -311,21 +273,17 @@ fun! zip#Write(fname)
let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
endif
-" call Decho("zipfile<".zipfile.">")
-" call Decho("fname <".fname.">")
if fname =~ '/'
let dirpath = substitute(fname,'/[^/]\+$','','e')
if has("win32unix") && executable("cygpath")
let dirpath = substitute(system("cygpath ".s:Escape(dirpath,0)),'\n','','e')
endif
-" call Decho("mkdir(dirpath<".dirpath.">,p)")
call mkdir(dirpath,"p")
endif
if zipfile !~ '/'
let zipfile= curdir.'/'.zipfile
endif
-" call Decho("zipfile<".zipfile."> fname<".fname.">")
exe "w! ".fnameescape(fname)
if has("win32unix") && executable("cygpath")
@@ -336,17 +294,13 @@ fun! zip#Write(fname)
let fname = substitute(fname, '[', '[[]', 'g')
endif
-" call Decho(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
call system(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
if v:shell_error != 0
- redraw!
- echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ call s:Mess('Error', "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname)
elseif s:zipfile_{winnr()} =~ '^\a\+://'
" support writing zipfiles across a network
let netzipfile= s:zipfile_{winnr()}
-" call Decho("handle writing <".zipfile."> across network as <".netzipfile.">")
1split|enew
let binkeep= &binary
let eikeep = &ei
@@ -358,58 +312,58 @@ fun! zip#Write(fname)
q!
unlet s:zipfile_{winnr()}
endif
-
+
" cleanup and restore current directory
cd ..
- call s:Rmdir("_ZIPVIM_")
+ call delete("_ZIPVIM_", "rf")
call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
- call s:Rmdir(tmpdir)
+ call delete(tmpdir, "rf")
setlocal nomod
- let &report= repkeep
-" call Dret("zip#Write")
endfun
" ---------------------------------------------------------------------
" zip#Extract: extract a file from a zip archive {{{2
fun! zip#Extract()
-" call Dfunc("zip#Extract()")
- let repkeep= &report
- set report=10
+ let dict = s:SetSaneOpts()
+ defer s:RestoreOpts(dict)
let fname= getline(".")
-" call Decho("fname<".fname.">")
" sanity check
if fname =~ '^"'
- let &report= repkeep
-" call Dret("zip#Extract")
return
endif
if fname =~ '/$'
- redraw!
- echohl Error | echo "***error*** (zip#Extract) Please specify a file, not a directory" | echohl None
- let &report= repkeep
-" call Dret("zip#Extract")
+ call s:Mess('Error', "***error*** (zip#Extract) Please specify a file, not a directory")
+ return
+ endif
+ if filereadable(fname)
+ call s:Mess('Error', "***error*** (zip#Extract) <" .. fname .."> already exists in directory, not overwriting!")
return
endif
+ let target = fname->substitute('\[', '[[]', 'g')
+ if &shell =~ 'cmd' && has("win32")
+ let target = target
+ \ ->substitute('[?*]', '[&]', 'g')
+ \ ->substitute('[\\]', '?', 'g')
+ \ ->shellescape()
+ " there cannot be a file name with '\' in its name, unzip replaces it by _
+ let fname = fname->substitute('[\\?*]', '_', 'g')
+ else
+ let target = target->escape('*?\\')->shellescape()
+ endif
" extract the file mentioned under the cursor
-" call Decho("system(".g:zip_extractcmd." ".shellescape(b:zipfile)." ".shellescape(shell).")")
- call system(g:zip_extractcmd." ".shellescape(b:zipfile)." ".shellescape(shell))
-" call Decho("zipfile<".b:zipfile.">")
+ call system($"{g:zip_extractcmd} -o {shellescape(b:zipfile)} {target}")
if v:shell_error != 0
- echohl Error | echo "***error*** ".g:zip_extractcmd." ".b:zipfile." ".fname.": failed!" | echohl NONE
+ call s:Mess('Error', "***error*** ".g:zip_extractcmd." ".b:zipfile." ".fname.": failed!")
elseif !filereadable(fname)
- echohl Error | echo "***error*** attempted to extract ".fname." but it doesn't appear to be present!"
+ call s:Mess('Error', "***error*** attempted to extract ".fname." but it doesn't appear to be present!")
else
- echo "***note*** successfully extracted ".fname
+ echomsg "***note*** successfully extracted ".fname
endif
- " restore option
- let &report= repkeep
-
-" call Dret("zip#Extract")
endfun
" ---------------------------------------------------------------------
@@ -424,48 +378,48 @@ fun! s:Escape(fname,isfilt)
else
let qnameq= g:zip_shq.escape(a:fname,g:zip_shq).g:zip_shq
endif
- if exists("+shellslash") && &shellslash && &shell =~ "cmd.exe"
- " renormalize directory separator on Windows
- let qnameq=substitute(qnameq, '/', '\\', 'g')
- endif
return qnameq
endfun
" ---------------------------------------------------------------------
-" ChgDir: {{{2
+" s:ChgDir: {{{2
fun! s:ChgDir(newdir,errlvl,errmsg)
-" call Dfunc("ChgDir(newdir<".a:newdir."> errlvl=".a:errlvl." errmsg<".a:errmsg.">)")
-
try
exe "cd ".fnameescape(a:newdir)
catch /^Vim\%((\a\+)\)\=:E344/
redraw!
if a:errlvl == s:NOTE
- echo "***note*** ".a:errmsg
+ echomsg "***note*** ".a:errmsg
elseif a:errlvl == s:WARNING
- echohl WarningMsg | echo "***warning*** ".a:errmsg | echohl NONE
+ call s:Mess("WarningMsg", "***warning*** ".a:errmsg)
elseif a:errlvl == s:ERROR
- echohl Error | echo "***error*** ".a:errmsg | echohl NONE
+ call s:Mess("Error", "***error*** ".a:errmsg)
endif
-" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-" call Dret("ChgDir 1")
return 1
endtry
-" call Dret("ChgDir 0")
return 0
endfun
" ---------------------------------------------------------------------
-" s:Rmdir: {{{2
-fun! s:Rmdir(fname)
-" call Dfunc("Rmdir(fname<".a:fname.">)")
- if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
- call system("rmdir /S/Q ".s:Escape(a:fname,0))
- else
- call system("/bin/rm -rf ".s:Escape(a:fname,0))
- endif
-" call Dret("Rmdir")
+" s:SetSaneOpts: {{{2
+fun! s:SetSaneOpts()
+ let dict = {}
+ let dict.report = &report
+ let dict.shellslash = &shellslash
+
+ let &report = 10
+ let &shellslash = 0
+
+ return dict
+endfun
+
+" ---------------------------------------------------------------------
+" s:RestoreOpts: {{{2
+fun! s:RestoreOpts(dict)
+ for [key, val] in items(a:dict)
+ exe $"let &{key} = {val}"
+ endfor
endfun
" ------------------------------------------------------------------------
diff --git a/runtime/colors/blue.vim b/runtime/colors/blue.vim
index f95cf27..aafa8e9 100644
--- a/runtime/colors/blue.vim
+++ b/runtime/colors/blue.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Mon 08 Jan 2024 09:42:49 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -22,9 +22,11 @@ hi Normal guifg=#ffd700 guibg=#000087 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#005faf gui=NONE cterm=NONE
hi Pmenu guifg=#ffffff guibg=#008787 gui=NONE cterm=NONE
hi PmenuSel guifg=#008787 guibg=#ffffff gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ffd700 guibg=#008787 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff7f50 guibg=#ffffff gui=NONE cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#d787d7 gui=NONE cterm=NONE
hi ColorColumn guifg=NONE guibg=#870087 gui=NONE cterm=NONE
-hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Conceal guifg=#008787 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#000000 guibg=#00ff00 gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#005faf gui=NONE cterm=NONE
hi CursorIM guifg=#000000 guibg=#ffd700 gui=NONE cterm=NONE
@@ -132,9 +134,11 @@ if s:t_Co >= 256
hi CursorLine ctermfg=NONE ctermbg=25 cterm=NONE
hi Pmenu ctermfg=231 ctermbg=30 cterm=NONE
hi PmenuSel ctermfg=30 ctermbg=231 cterm=NONE
+ hi PmenuMatch ctermfg=220 ctermbg=30 cterm=NONE
+ hi PmenuMatchSel ctermfg=209 ctermbg=231 cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=176 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=90 cterm=NONE
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=30 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=16 ctermbg=46 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=25 cterm=NONE
hi CursorIM ctermfg=16 ctermbg=220 cterm=NONE
@@ -245,9 +249,11 @@ if s:t_Co >= 16
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi Pmenu ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuSel ctermfg=black ctermbg=white cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=white cterm=bold
hi QuickFixLine ctermfg=black ctermbg=magenta cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=darkmagenta cterm=NONE
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Cursor ctermfg=black ctermbg=green cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=blue cterm=NONE
hi CursorIM ctermfg=black ctermbg=yellow cterm=NONE
@@ -358,6 +364,8 @@ if s:t_Co >= 8
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi Pmenu ctermfg=black ctermbg=cyan cterm=NONE
hi PmenuSel ctermfg=black ctermbg=gray cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=cyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=gray cterm=bold
hi QuickFixLine ctermfg=black ctermbg=magenta cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=magenta cterm=NONE
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
diff --git a/runtime/colors/darkblue.vim b/runtime/colors/darkblue.vim
index b792b90..3a0a218 100644
--- a/runtime/colors/darkblue.vim
+++ b/runtime/colors/darkblue.vim
@@ -4,7 +4,7 @@
" Maintainer: Original author Bohdan Vlasyuk <bohdan@vstu.edu.ua>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Mon 08 Jan 2024 09:43:03 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -68,7 +68,7 @@ hi! link CurSearch Search
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#c0c0c0 guibg=#000040 gui=NONE cterm=NONE
-hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Conceal guifg=#008b8b guibg=NONE gui=NONE cterm=NONE
hi ColorColumn guifg=#c0c0c0 guibg=#8b0000 gui=NONE cterm=NONE
hi Cursor guifg=#000000 guibg=#ffff60 gui=NONE cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#ff80ff gui=NONE cterm=NONE
@@ -85,6 +85,8 @@ hi Pmenu guifg=#ffffff guibg=#0030ff gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel guifg=#0030ff guibg=#ffffff gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#ffffff gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff80ff guibg=#0030ff gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff00ff guibg=#ffffff gui=NONE cterm=NONE
hi Question guifg=#90f020 guibg=NONE gui=NONE cterm=NONE
hi SignColumn guifg=#808080 guibg=NONE gui=NONE cterm=NONE
hi SpecialKey guifg=#008b8b guibg=NONE gui=NONE cterm=NONE
@@ -176,7 +178,7 @@ if s:t_Co >= 256
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=252 ctermbg=17 cterm=NONE
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=30 ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=252 ctermbg=88 cterm=NONE
hi Cursor ctermfg=16 ctermbg=227 cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=213 cterm=NONE
@@ -193,6 +195,8 @@ if s:t_Co >= 256
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=27 ctermbg=231 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=231 cterm=NONE
+ hi PmenuMatch ctermfg=213 ctermbg=27 cterm=NONE
+ hi PmenuMatchSel ctermfg=201 ctermbg=231 cterm=NONE
hi Question ctermfg=118 ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=102 ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=30 ctermbg=NONE cterm=NONE
@@ -238,7 +242,7 @@ endif
if s:t_Co >= 16
hi Normal ctermfg=grey ctermbg=black cterm=NONE
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=grey ctermbg=darkred cterm=NONE
hi Cursor ctermfg=black ctermbg=yellow cterm=NONE
hi QuickFixLine ctermfg=black ctermbg=magenta cterm=NONE
@@ -255,6 +259,8 @@ if s:t_Co >= 16
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=blue ctermbg=white cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=white cterm=NONE
+ hi PmenuMatch ctermfg=magenta ctermbg=blue cterm=NONE
+ hi PmenuMatchSel ctermfg=darkmagenta ctermbg=white cterm=NONE
hi Question ctermfg=green ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=darkcyan ctermbg=NONE cterm=NONE
@@ -318,6 +324,8 @@ if s:t_Co >= 8
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=blue ctermbg=grey cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=grey ctermbg=blue cterm=bold
+ hi PmenuMatchSel ctermfg=blue ctermbg=grey cterm=bold
hi Question ctermfg=darkgreen ctermbg=NONE cterm=bold
hi Search ctermfg=darkcyan ctermbg=blue cterm=NONE
hi SignColumn ctermfg=grey ctermbg=NONE cterm=NONE
diff --git a/runtime/colors/delek.vim b/runtime/colors/delek.vim
index 16de514..c06fda2 100644
--- a/runtime/colors/delek.vim
+++ b/runtime/colors/delek.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer David Schweikert <david@schweikert.ch>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:34
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -38,6 +38,8 @@ hi Pmenu guifg=#000000 guibg=#add8e6 gui=NONE cterm=NONE
hi PmenuSel guifg=#ffffff guibg=#00008b gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#ffffff gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#008b8b gui=NONE cterm=NONE
+hi PmenuMatch guifg=#cd00cd guibg=#add8e6 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff87ff guibg=#00008b gui=NONE cterm=NONE
hi TabLine guifg=#000000 guibg=#e4e4e4 gui=NONE cterm=NONE
hi TabLineFill guifg=NONE guibg=#bcbcbc gui=NONE cterm=NONE
hi TabLineSel guifg=#000000 guibg=#ffffff gui=bold cterm=bold
@@ -45,6 +47,7 @@ hi ToolbarLine guifg=NONE guibg=#e4e4e4 gui=NONE cterm=NONE
hi ToolbarButton guifg=#ffffff guibg=#bcbcbc gui=bold cterm=bold
hi NonText guifg=#bcbcbc guibg=NONE gui=NONE cterm=NONE
hi SpecialKey guifg=#bcbcbc guibg=NONE gui=NONE cterm=NONE
+hi Conceal guifg=#bcbcbc guibg=NONE gui=NONE cterm=NONE
hi Folded guifg=#00008b guibg=#e4e4e4 gui=NONE cterm=NONE
hi Visual guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
hi VisualNOS guifg=NONE guibg=#ee0000 gui=NONE cterm=NONE
@@ -82,7 +85,6 @@ hi PreProc guifg=#cd00cd guibg=NONE gui=NONE cterm=NONE
hi Type guifg=#0000ff guibg=NONE gui=bold cterm=bold
hi Special guifg=#ff1493 guibg=NONE gui=NONE cterm=NONE
hi Directory guifg=#008b8b guibg=NONE gui=bold cterm=bold
-hi Conceal guifg=#ee0000 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title guifg=#cd00cd guibg=NONE gui=bold cterm=bold
hi CursorLine guifg=NONE guibg=#e4e4e4 gui=NONE cterm=NONE
@@ -112,6 +114,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=231 ctermbg=18 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=231 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=30 cterm=NONE
+ hi PmenuMatch ctermfg=164 ctermbg=152 cterm=NONE
+ hi PmenuMatchSel ctermfg=213 ctermbg=18 cterm=NONE
hi TabLine ctermfg=16 ctermbg=254 cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=250 cterm=NONE
hi TabLineSel ctermfg=16 ctermbg=231 cterm=bold
@@ -119,6 +123,7 @@ if s:t_Co >= 256
hi ToolbarButton ctermfg=231 ctermbg=250 cterm=bold
hi NonText ctermfg=250 ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=250 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=250 ctermbg=NONE cterm=NONE
hi Folded ctermfg=18 ctermbg=254 cterm=NONE
hi Visual ctermfg=16 ctermbg=252 cterm=NONE
hi VisualNOS ctermfg=NONE ctermbg=196 cterm=NONE
@@ -156,7 +161,6 @@ if s:t_Co >= 256
hi Type ctermfg=21 ctermbg=NONE cterm=bold
hi Special ctermfg=198 ctermbg=NONE cterm=NONE
hi Directory ctermfg=30 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=196 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=164 ctermbg=NONE cterm=bold
hi CursorLine ctermfg=NONE ctermbg=254 cterm=NONE
@@ -180,6 +184,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=white ctermbg=darkblue cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=white cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkcyan cterm=NONE
+ hi PmenuMatch ctermfg=darkmagenta ctermbg=grey cterm=NONE
+ hi PmenuMatchSel ctermfg=magenta ctermbg=darkblue cterm=NONE
hi TabLine ctermfg=black ctermbg=grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=darkgrey cterm=NONE
hi TabLineSel ctermfg=black ctermbg=white cterm=bold
@@ -187,6 +193,7 @@ if s:t_Co >= 16
hi ToolbarButton ctermfg=white ctermbg=darkgrey cterm=bold
hi NonText ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=darkgrey ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Folded ctermfg=darkblue ctermbg=grey cterm=NONE
hi Visual ctermfg=black ctermbg=darkgrey cterm=NONE
hi VisualNOS ctermfg=NONE ctermbg=darkred cterm=NONE
@@ -224,7 +231,6 @@ if s:t_Co >= 16
hi Type ctermfg=blue ctermbg=NONE cterm=bold
hi Special ctermfg=magenta ctermbg=NONE cterm=NONE
hi Directory ctermfg=darkcyan ctermbg=NONE cterm=bold
- hi Conceal ctermfg=darkred ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=darkmagenta ctermbg=NONE cterm=bold
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
@@ -249,6 +255,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=gray ctermbg=black cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=black cterm=NONE
hi TabLineSel ctermfg=black ctermbg=gray cterm=NONE
@@ -256,6 +264,7 @@ if s:t_Co >= 8
hi ToolbarButton ctermfg=black ctermbg=gray cterm=bold,reverse
hi NonText ctermfg=darkblue ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=darkblue ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Folded ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=underline
@@ -291,7 +300,6 @@ if s:t_Co >= 8
hi Type ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Special ctermfg=darkmagenta ctermbg=NONE cterm=bold
hi Directory ctermfg=darkcyan ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=darkmagenta ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
@@ -398,6 +406,7 @@ endif
" Color: darkmagenta #870087 18 darkmagenta
" Color: darkcyan #008787 30 darkcyan
" Color: gray #878787 102 gray
+" Color: magenta #ff87ff 213 magenta
" Term colors: bg0 statement constant preproc identifier type special bg1
" Term colors: comment statement constant preproc identifier type special fg0
" Color: bgDiffA #5F875F 65 darkgreen
diff --git a/runtime/colors/desert.vim b/runtime/colors/desert.vim
index e639653..4c34468 100644
--- a/runtime/colors/desert.vim
+++ b/runtime/colors/desert.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Hans Fugal <hans@fugal.net>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:34
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -37,6 +37,8 @@ hi Pmenu guifg=#ffffff guibg=#666666 gui=NONE cterm=NONE
hi PmenuSel guifg=#333333 guibg=#f0e68c gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#333333 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#c2bfa5 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ffa0a0 guibg=#666666 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#cd5c5c guibg=#f0e68c gui=NONE cterm=NONE
hi TabLine guifg=#333333 guibg=#c2bfa5 gui=NONE cterm=NONE
hi TabLineFill guifg=NONE guibg=#c2bfa5 gui=NONE cterm=NONE
hi TabLineSel guifg=#333333 guibg=#f0e68c gui=NONE cterm=NONE
@@ -111,6 +113,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=236 ctermbg=186 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=236 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=144 cterm=NONE
+ hi PmenuMatch ctermfg=217 ctermbg=241 cterm=NONE
+ hi PmenuMatchSel ctermfg=167 ctermbg=186 cterm=NONE
hi TabLine ctermfg=236 ctermbg=144 cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=144 cterm=NONE
hi TabLineSel ctermfg=236 ctermbg=186 cterm=NONE
@@ -177,6 +181,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=white cterm=NONE
+ hi PmenuMatch ctermfg=NONE ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=white cterm=NONE
hi TabLineSel ctermfg=white ctermbg=black cterm=NONE
@@ -243,6 +249,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
hi TabLineSel ctermfg=grey ctermbg=black cterm=NONE
diff --git a/runtime/colors/elflord.vim b/runtime/colors/elflord.vim
index 3a72dfb..9dc5a11 100644
--- a/runtime/colors/elflord.vim
+++ b/runtime/colors/elflord.vim
@@ -3,7 +3,7 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:35
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -72,6 +72,8 @@ hi Pmenu guifg=#ffffff guibg=#444444 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#bebebe gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#00cdcd gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#ffffff gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff00ff guibg=#444444 gui=bold cterm=bold
+hi PmenuMatchSel guifg=#ff00ff guibg=#00cdcd gui=bold cterm=bold
hi Question guifg=#00ff00 guibg=NONE gui=bold cterm=bold
hi Search guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
hi SignColumn guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
@@ -140,6 +142,8 @@ if s:t_Co >= 256
hi PmenuSbar ctermfg=NONE ctermbg=250 cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=44 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=231 cterm=NONE
+ hi PmenuMatch ctermfg=201 ctermbg=238 cterm=bold
+ hi PmenuMatchSel ctermfg=201 ctermbg=44 cterm=bold
hi Question ctermfg=46 ctermbg=NONE cterm=bold
hi Search ctermfg=16 ctermbg=226 cterm=NONE
hi SignColumn ctermfg=51 ctermbg=NONE cterm=NONE
@@ -211,6 +215,8 @@ if s:t_Co >= 16
hi PmenuSbar ctermfg=NONE ctermbg=grey cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=white cterm=NONE
+ hi PmenuMatch ctermfg=magenta ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=magenta ctermbg=darkcyan cterm=bold
hi Question ctermfg=green ctermbg=NONE cterm=bold
hi Search ctermfg=black ctermbg=yellow cterm=NONE
hi SignColumn ctermfg=cyan ctermbg=NONE cterm=NONE
@@ -281,6 +287,8 @@ if s:t_Co >= 8
hi PmenuSbar ctermfg=grey ctermbg=grey cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkcyan cterm=NONE
+ hi PmenuMatch ctermfg=grey ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi Question ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Search ctermfg=black ctermbg=darkyellow cterm=NONE
hi SignColumn ctermfg=darkcyan ctermbg=NONE cterm=NONE
diff --git a/runtime/colors/evening.vim b/runtime/colors/evening.vim
index 2753daa..7ea265d 100644
--- a/runtime/colors/evening.vim
+++ b/runtime/colors/evening.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Mon 08 Jan 2024 09:43:27 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -75,6 +75,8 @@ hi StatusLine guifg=#333333 guibg=#ffffff gui=bold cterm=bold
hi StatusLineNC guifg=#333333 guibg=#d3d3d3 gui=NONE cterm=NONE
hi TabLineSel guifg=#333333 guibg=#ffffff gui=bold cterm=bold
hi TabLine guifg=#333333 guibg=#d3d3d3 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff80ff guibg=#4d4d4d gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#8b008b guibg=#bebebe gui=NONE cterm=NONE
hi Pmenu guifg=#ffffff guibg=#4d4d4d gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#bebebe gui=NONE cterm=NONE
@@ -84,7 +86,7 @@ hi Cursor guifg=#000000 guibg=#00ff00 gui=NONE cterm=NONE
hi Error guifg=#ff0000 guibg=#ffffff gui=reverse cterm=reverse
hi ErrorMsg guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
hi LineNr guifg=#ffff00 guibg=NONE gui=NONE cterm=NONE
-hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Conceal guifg=#666666 guibg=NONE gui=NONE cterm=NONE
hi FoldColumn guifg=#add8e6 guibg=NONE gui=NONE cterm=NONE
hi Folded guifg=#00008b guibg=#d3d3d3 gui=bold cterm=bold
hi IncSearch guifg=#00ff00 guibg=NONE gui=reverse cterm=reverse
@@ -183,6 +185,8 @@ if s:t_Co >= 256
hi StatusLineNC ctermfg=236 ctermbg=252 cterm=NONE
hi TabLineSel ctermfg=236 ctermbg=231 cterm=bold
hi TabLine ctermfg=236 ctermbg=252 cterm=NONE
+ hi PmenuMatch ctermfg=201 ctermbg=239 cterm=NONE
+ hi PmenuMatchSel ctermfg=90 ctermbg=250 cterm=NONE
hi Pmenu ctermfg=231 ctermbg=239 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=250 cterm=NONE
@@ -192,7 +196,7 @@ if s:t_Co >= 256
hi Error ctermfg=196 ctermbg=231 cterm=reverse
hi ErrorMsg ctermfg=231 ctermbg=196 cterm=NONE
hi LineNr ctermfg=226 ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=241 ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=153 ctermbg=NONE cterm=NONE
hi Folded ctermfg=18 ctermbg=252 cterm=bold
hi IncSearch ctermfg=46 ctermbg=NONE cterm=reverse
@@ -294,6 +298,8 @@ if s:t_Co >= 16
hi StatusLineNC ctermfg=black ctermbg=gray cterm=NONE
hi TabLineSel ctermfg=black ctermbg=white cterm=NONE
hi TabLine ctermfg=black ctermbg=gray cterm=NONE
+ hi PmenuMatch ctermfg=white ctermbg=darkgray cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=gray cterm=bold
hi Pmenu ctermfg=white ctermbg=darkgray cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=gray cterm=NONE
@@ -303,7 +309,7 @@ if s:t_Co >= 16
hi Error ctermfg=red ctermbg=white cterm=reverse
hi ErrorMsg ctermfg=white ctermbg=red cterm=NONE
hi LineNr ctermfg=darkyellow ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkgray ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=lightblue ctermbg=NONE cterm=NONE
hi Folded ctermfg=darkblue ctermbg=gray cterm=bold
hi IncSearch ctermfg=green ctermbg=NONE cterm=reverse
@@ -361,6 +367,8 @@ if s:t_Co >= 8
hi PmenuSbar ctermfg=NONE ctermbg=gray cterm=NONE
hi PmenuSel ctermfg=black ctermbg=gray cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=black cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=gray cterm=bold
hi QuickFixLine ctermfg=gray ctermbg=darkmagenta cterm=NONE
hi Error ctermfg=red ctermbg=gray cterm=reverse
hi ErrorMsg ctermfg=gray ctermbg=red cterm=NONE
diff --git a/runtime/colors/habamax.vim b/runtime/colors/habamax.vim
index f32a549..a9cbf52 100644
--- a/runtime/colors/habamax.vim
+++ b/runtime/colors/habamax.vim
@@ -4,7 +4,7 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Mon 08 Jan 2024 09:39:53 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -16,13 +16,12 @@ let g:colors_name = 'habamax'
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
if (has('termguicolors') && &termguicolors) || has('gui_running')
- let g:terminal_ansi_colors = ['#1c1c1c', '#d75f5f', '#87af87', '#afaf87', '#5f87af', '#af87af', '#5f8787', '#9e9e9e', '#767676', '#d7875f', '#afd7af', '#d7d787', '#87afd7', '#d7afd7', '#87afaf', '#bcbcbc']
+ let g:terminal_ansi_colors = ['#1c1c1c', '#af5f5f', '#5faf5f', '#af875f', '#5f87af', '#af87af', '#5f8787', '#9e9e9e', '#767676', '#d75f87', '#87d787', '#d7af87', '#5fafd7', '#d787d7', '#87afaf', '#bcbcbc']
endif
hi! link Terminal Normal
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link MessageWindow Pmenu
-hi! link PopupNotification Todo
hi! link javaScriptFunction Statement
hi! link javaScriptIdentifier Statement
hi! link sqlKeyword Statement
@@ -34,7 +33,6 @@ hi! link vimOper Normal
hi! link vimSep Normal
hi! link vimParenSep Normal
hi! link vimCommentString Comment
-hi! link gitCommitSummary Title
hi! link markdownUrl String
hi Normal guifg=#bcbcbc guibg=#1c1c1c gui=NONE cterm=NONE
hi Statusline guifg=#1c1c1c guibg=#9e9e9e gui=NONE cterm=NONE
@@ -42,11 +40,11 @@ hi StatuslineNC guifg=#1c1c1c guibg=#767676 gui=NONE cterm=NONE
hi VertSplit guifg=#767676 guibg=#767676 gui=NONE cterm=NONE
hi TabLine guifg=#1c1c1c guibg=#767676 gui=NONE cterm=NONE
hi TabLineFill guifg=#1c1c1c guibg=#767676 gui=NONE cterm=NONE
-hi TabLineSel guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
+hi TabLineSel guifg=#1c1c1c guibg=#9e9e9e gui=bold cterm=bold
hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
-hi ToolbarButton guifg=#9e9e9e guibg=#1c1c1c gui=bold,reverse cterm=bold,reverse
+hi ToolbarButton guifg=#767676 guibg=#1c1c1c gui=bold,reverse cterm=bold,reverse
hi QuickFixLine guifg=#1c1c1c guibg=#5f87af gui=NONE cterm=NONE
-hi CursorLineNr guifg=#ffaf5f guibg=NONE gui=bold cterm=bold
+hi CursorLineNr guifg=#dadada guibg=NONE gui=bold cterm=bold
hi LineNr guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi LineNrAbove guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi LineNrBelow guifg=#585858 guibg=NONE gui=NONE cterm=NONE
@@ -54,71 +52,71 @@ hi NonText guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi EndOfBuffer guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi SpecialKey guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi FoldColumn guifg=#585858 guibg=NONE gui=NONE cterm=NONE
-hi Visual guifg=#1c1c1c guibg=#87afaf gui=NONE cterm=NONE
+hi Visual guifg=#87afaf guibg=#1c1c1c gui=reverse cterm=reverse
hi VisualNOS guifg=#1c1c1c guibg=#5f8787 gui=NONE cterm=NONE
hi Pmenu guifg=NONE guibg=#3a3a3a gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#767676 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
-hi PmenuSel guifg=#1c1c1c guibg=#afaf87 gui=NONE cterm=NONE
-hi PmenuKind guifg=#d7875f guibg=#3a3a3a gui=NONE cterm=NONE
-hi PmenuKindSel guifg=#d75f5f guibg=#afaf87 gui=NONE cterm=NONE
+hi PmenuSel guifg=NONE guibg=#585858 gui=NONE cterm=NONE
+hi PmenuKind guifg=#5f8787 guibg=#3a3a3a gui=NONE cterm=NONE
+hi PmenuKindSel guifg=#5f8787 guibg=#585858 gui=NONE cterm=NONE
hi PmenuExtra guifg=#767676 guibg=#3a3a3a gui=NONE cterm=NONE
-hi PmenuExtraSel guifg=#1c1c1c guibg=#afaf87 gui=NONE cterm=NONE
+hi PmenuExtraSel guifg=#9e9e9e guibg=#585858 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ffaf5f guibg=#3a3a3a gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ffaf5f guibg=#585858 gui=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
-hi Error guifg=#d75f5f guibg=#1c1c1c gui=reverse cterm=reverse
-hi ErrorMsg guifg=#d75f5f guibg=#1c1c1c gui=reverse cterm=reverse
-hi ModeMsg guifg=#1c1c1c guibg=#d7d787 gui=NONE cterm=NONE
-hi MoreMsg guifg=#87af87 guibg=NONE gui=NONE cterm=NONE
-hi Question guifg=#afaf87 guibg=NONE gui=NONE cterm=NONE
-hi WarningMsg guifg=#d7875f guibg=NONE gui=NONE cterm=NONE
-hi Todo guifg=#d7d787 guibg=#1c1c1c gui=reverse cterm=reverse
+hi Error guifg=#af5f5f guibg=#1c1c1c gui=reverse cterm=reverse
+hi ErrorMsg guifg=#af5f5f guibg=#1c1c1c gui=reverse cterm=reverse
+hi ModeMsg guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
+hi MoreMsg guifg=#5faf5f guibg=NONE gui=NONE cterm=NONE
+hi Question guifg=#d7af87 guibg=NONE gui=NONE cterm=NONE
+hi WarningMsg guifg=#d75f87 guibg=NONE gui=NONE cterm=NONE
+hi Todo guifg=#dadada guibg=NONE gui=bold cterm=bold
hi MatchParen guifg=#ff00af guibg=NONE gui=bold cterm=bold
-hi Search guifg=#1c1c1c guibg=#87af87 gui=NONE cterm=NONE
-hi IncSearch guifg=#1c1c1c guibg=#ffaf5f gui=NONE cterm=NONE
-hi CurSearch guifg=#1c1c1c guibg=#afaf87 gui=NONE cterm=NONE
-hi WildMenu guifg=#1c1c1c guibg=#d7d787 gui=NONE cterm=NONE
+hi Search guifg=#5fafd7 guibg=#1c1c1c gui=reverse cterm=reverse
+hi IncSearch guifg=#ffaf5f guibg=#1c1c1c gui=reverse cterm=reverse
+hi CurSearch guifg=#ffaf5f guibg=#1c1c1c gui=reverse cterm=reverse
+hi WildMenu guifg=#1c1c1c guibg=#d7af87 gui=bold cterm=bold
hi debugPC guifg=#1c1c1c guibg=#5f87af gui=NONE cterm=NONE
-hi debugBreakpoint guifg=#1c1c1c guibg=#d7875f gui=NONE cterm=NONE
-hi Cursor guifg=#1c1c1c guibg=#ffaf5f gui=NONE cterm=NONE
+hi debugBreakpoint guifg=#1c1c1c guibg=#d75f87 gui=NONE cterm=NONE
+hi Cursor guifg=#000000 guibg=#dadada gui=NONE cterm=NONE
hi lCursor guifg=#1c1c1c guibg=#5fff00 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#303030 gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#303030 gui=NONE cterm=NONE
hi Folded guifg=#9e9e9e guibg=#262626 gui=NONE cterm=NONE
hi ColorColumn guifg=NONE guibg=#3a3a3a gui=NONE cterm=NONE
hi SpellBad guifg=NONE guibg=NONE guisp=#d75f5f gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
-hi SpellCap guifg=NONE guibg=NONE guisp=#5f87af gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
-hi SpellLocal guifg=NONE guibg=NONE guisp=#87af87 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
-hi SpellRare guifg=NONE guibg=NONE guisp=#d7afd7 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
+hi SpellCap guifg=NONE guibg=NONE guisp=#ffaf5f gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
+hi SpellLocal guifg=NONE guibg=NONE guisp=#5fd75f gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
+hi SpellRare guifg=NONE guibg=NONE guisp=#d787d7 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=underline
hi Comment guifg=#767676 guibg=NONE gui=NONE cterm=NONE
-hi Constant guifg=#d7875f guibg=NONE gui=NONE cterm=NONE
-hi String guifg=#87af87 guibg=NONE gui=NONE cterm=NONE
-hi Character guifg=#afd7af guibg=NONE gui=NONE cterm=NONE
+hi Constant guifg=#d75f87 guibg=NONE gui=NONE cterm=NONE
+hi String guifg=#5faf5f guibg=NONE gui=NONE cterm=NONE
+hi Character guifg=#87d787 guibg=NONE gui=NONE cterm=NONE
hi Identifier guifg=#87afaf guibg=NONE gui=NONE cterm=NONE
hi Statement guifg=#af87af guibg=NONE gui=NONE cterm=NONE
-hi PreProc guifg=#afaf87 guibg=NONE gui=NONE cterm=NONE
-hi Type guifg=#87afd7 guibg=NONE gui=NONE cterm=NONE
+hi PreProc guifg=#af875f guibg=NONE gui=NONE cterm=NONE
+hi Type guifg=#5f87af guibg=NONE gui=NONE cterm=NONE
hi Special guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
-hi Title guifg=#d7d787 guibg=NONE gui=bold cterm=bold
+hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#87afaf guibg=NONE gui=bold cterm=bold
-hi Conceal guifg=#767676 guibg=NONE gui=NONE cterm=NONE
+hi Conceal guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Debug guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE
-hi DiffAdd guifg=#dadada guibg=#5f875f gui=NONE cterm=NONE
-hi DiffDelete guifg=#af875f guibg=NONE gui=NONE cterm=NONE
-hi Added guifg=#87af87 guibg=NONE gui=NONE cterm=NONE
-hi Changed guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE
+hi DiffAdd guifg=#5faf5f guibg=NONE gui=reverse cterm=reverse
+hi DiffChange guifg=#5f87af guibg=NONE gui=reverse cterm=reverse
+hi DiffText guifg=#af87af guibg=NONE gui=reverse cterm=reverse
+hi DiffDelete guifg=#af5f5f guibg=NONE gui=reverse cterm=reverse
+hi Added guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE
+hi Changed guifg=#ffaf5f guibg=NONE gui=NONE cterm=NONE
hi Removed guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE
-hi diffSubname guifg=#af87af guibg=NONE gui=NONE cterm=NONE
-hi DiffText guifg=#dadada guibg=#878787 gui=NONE cterm=NONE
-hi DiffChange guifg=#bcbcbc guibg=#5f5f5f gui=NONE cterm=NONE
if s:t_Co >= 256
hi! link Terminal Normal
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link MessageWindow Pmenu
- hi! link PopupNotification Todo
hi! link javaScriptFunction Statement
hi! link javaScriptIdentifier Statement
hi! link sqlKeyword Statement
@@ -130,7 +128,6 @@ if s:t_Co >= 256
hi! link vimSep Normal
hi! link vimParenSep Normal
hi! link vimCommentString Comment
- hi! link gitCommitSummary Title
hi! link markdownUrl String
hi Normal ctermfg=250 ctermbg=234 cterm=NONE
hi Statusline ctermfg=234 ctermbg=247 cterm=NONE
@@ -138,11 +135,11 @@ if s:t_Co >= 256
hi VertSplit ctermfg=243 ctermbg=243 cterm=NONE
hi TabLine ctermfg=234 ctermbg=243 cterm=NONE
hi TabLineFill ctermfg=234 ctermbg=243 cterm=NONE
- hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi TabLineSel ctermfg=234 ctermbg=247 cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=247 ctermbg=234 cterm=bold,reverse
+ hi ToolbarButton ctermfg=243 ctermbg=234 cterm=bold,reverse
hi QuickFixLine ctermfg=234 ctermbg=67 cterm=NONE
- hi CursorLineNr ctermfg=215 ctermbg=NONE cterm=bold
+ hi CursorLineNr ctermfg=253 ctermbg=NONE cterm=bold
hi LineNr ctermfg=240 ctermbg=NONE cterm=NONE
hi LineNrAbove ctermfg=240 ctermbg=NONE cterm=NONE
hi LineNrBelow ctermfg=240 ctermbg=NONE cterm=NONE
@@ -150,62 +147,63 @@ if s:t_Co >= 256
hi EndOfBuffer ctermfg=240 ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=240 ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=240 ctermbg=NONE cterm=NONE
- hi Visual ctermfg=234 ctermbg=109 cterm=NONE
+ hi Visual ctermfg=109 ctermbg=234 cterm=reverse
hi VisualNOS ctermfg=234 ctermbg=66 cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=237 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=243 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
- hi PmenuSel ctermfg=234 ctermbg=144 cterm=NONE
- hi PmenuKind ctermfg=173 ctermbg=237 cterm=NONE
- hi PmenuKindSel ctermfg=167 ctermbg=144 cterm=NONE
+ hi PmenuSel ctermfg=NONE ctermbg=240 cterm=NONE
+ hi PmenuKind ctermfg=66 ctermbg=237 cterm=NONE
+ hi PmenuKindSel ctermfg=66 ctermbg=240 cterm=NONE
hi PmenuExtra ctermfg=243 ctermbg=237 cterm=NONE
- hi PmenuExtraSel ctermfg=234 ctermbg=144 cterm=NONE
+ hi PmenuExtraSel ctermfg=247 ctermbg=240 cterm=NONE
+ hi PmenuMatch ctermfg=215 ctermbg=237 cterm=NONE
+ hi PmenuMatchSel ctermfg=215 ctermbg=240 cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
- hi Error ctermfg=167 ctermbg=234 cterm=reverse
- hi ErrorMsg ctermfg=167 ctermbg=234 cterm=reverse
- hi ModeMsg ctermfg=234 ctermbg=186 cterm=NONE
- hi MoreMsg ctermfg=108 ctermbg=NONE cterm=NONE
- hi Question ctermfg=144 ctermbg=NONE cterm=NONE
- hi WarningMsg ctermfg=173 ctermbg=NONE cterm=NONE
- hi Todo ctermfg=186 ctermbg=234 cterm=reverse
+ hi Error ctermfg=131 ctermbg=234 cterm=reverse
+ hi ErrorMsg ctermfg=131 ctermbg=234 cterm=reverse
+ hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
+ hi MoreMsg ctermfg=71 ctermbg=NONE cterm=NONE
+ hi Question ctermfg=180 ctermbg=NONE cterm=NONE
+ hi WarningMsg ctermfg=168 ctermbg=NONE cterm=NONE
+ hi Todo ctermfg=253 ctermbg=NONE cterm=bold
hi MatchParen ctermfg=199 ctermbg=NONE cterm=bold
- hi Search ctermfg=234 ctermbg=108 cterm=NONE
- hi IncSearch ctermfg=234 ctermbg=215 cterm=NONE
- hi CurSearch ctermfg=234 ctermbg=144 cterm=NONE
- hi WildMenu ctermfg=234 ctermbg=186 cterm=NONE
+ hi Search ctermfg=74 ctermbg=234 cterm=reverse
+ hi IncSearch ctermfg=215 ctermbg=234 cterm=reverse
+ hi CurSearch ctermfg=215 ctermbg=234 cterm=reverse
+ hi WildMenu ctermfg=234 ctermbg=180 cterm=bold
hi debugPC ctermfg=234 ctermbg=67 cterm=NONE
- hi debugBreakpoint ctermfg=234 ctermbg=173 cterm=NONE
+ hi debugBreakpoint ctermfg=234 ctermbg=168 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=236 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=236 cterm=NONE
hi Folded ctermfg=247 ctermbg=235 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=237 cterm=NONE
hi SpellBad ctermfg=167 ctermbg=NONE cterm=underline
- hi SpellCap ctermfg=67 ctermbg=NONE cterm=underline
- hi SpellLocal ctermfg=108 ctermbg=NONE cterm=underline
- hi SpellRare ctermfg=182 ctermbg=NONE cterm=underline
+ hi SpellCap ctermfg=215 ctermbg=NONE cterm=underline
+ hi SpellLocal ctermfg=77 ctermbg=NONE cterm=underline
+ hi SpellRare ctermfg=176 ctermbg=NONE cterm=underline
hi Comment ctermfg=243 ctermbg=NONE cterm=NONE
- hi Constant ctermfg=173 ctermbg=NONE cterm=NONE
- hi String ctermfg=108 ctermbg=NONE cterm=NONE
- hi Character ctermfg=151 ctermbg=NONE cterm=NONE
+ hi Constant ctermfg=168 ctermbg=NONE cterm=NONE
+ hi String ctermfg=71 ctermbg=NONE cterm=NONE
+ hi Character ctermfg=114 ctermbg=NONE cterm=NONE
hi Identifier ctermfg=109 ctermbg=NONE cterm=NONE
hi Statement ctermfg=139 ctermbg=NONE cterm=NONE
- hi PreProc ctermfg=144 ctermbg=NONE cterm=NONE
- hi Type ctermfg=110 ctermbg=NONE cterm=NONE
+ hi PreProc ctermfg=137 ctermbg=NONE cterm=NONE
+ hi Type ctermfg=67 ctermbg=NONE cterm=NONE
hi Special ctermfg=66 ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
- hi Title ctermfg=186 ctermbg=NONE cterm=bold
+ hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=109 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=243 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=240 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Debug ctermfg=66 ctermbg=NONE cterm=NONE
- hi DiffAdd ctermfg=253 ctermbg=65 cterm=NONE
- hi DiffDelete ctermfg=137 ctermbg=NONE cterm=NONE
- hi Added ctermfg=108 ctermbg=NONE cterm=NONE
- hi Changed ctermfg=66 ctermbg=NONE cterm=NONE
+ hi DiffAdd ctermfg=71 ctermbg=NONE cterm=reverse
+ hi DiffChange ctermfg=67 ctermbg=NONE cterm=reverse
+ hi DiffText ctermfg=139 ctermbg=NONE cterm=reverse
+ hi DiffDelete ctermfg=131 ctermbg=NONE cterm=reverse
+ hi Added ctermfg=77 ctermbg=NONE cterm=NONE
+ hi Changed ctermfg=215 ctermbg=NONE cterm=NONE
hi Removed ctermfg=167 ctermbg=NONE cterm=NONE
- hi diffSubname ctermfg=139 ctermbg=NONE cterm=NONE
- hi DiffText ctermfg=253 ctermbg=102 cterm=NONE
- hi DiffChange ctermfg=250 ctermbg=59 cterm=NONE
unlet s:t_Co
finish
endif
@@ -217,11 +215,11 @@ if s:t_Co >= 16
hi VertSplit ctermfg=darkgray ctermbg=darkgray cterm=NONE
hi TabLine ctermfg=black ctermbg=darkgray cterm=NONE
hi TabLineFill ctermfg=black ctermbg=darkgray cterm=NONE
- hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi TabLineSel ctermfg=black ctermbg=gray cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=gray ctermbg=black cterm=bold,reverse
- hi QuickFixLine ctermfg=black ctermbg=blue cterm=NONE
- hi CursorLineNr ctermfg=red ctermbg=NONE cterm=bold
+ hi ToolbarButton ctermfg=darkgray ctermbg=black cterm=bold,reverse
+ hi QuickFixLine ctermfg=black ctermbg=darkblue cterm=NONE
+ hi CursorLineNr ctermfg=white ctermbg=NONE cterm=bold
hi LineNr ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi LineNrAbove ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi LineNrBelow ctermfg=darkgrey ctermbg=NONE cterm=NONE
@@ -229,7 +227,7 @@ if s:t_Co >= 16
hi EndOfBuffer ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=darkgrey ctermbg=NONE cterm=NONE
- hi Visual ctermfg=black ctermbg=cyan cterm=NONE
+ hi Visual ctermfg=cyan ctermbg=black cterm=reverse
hi VisualNOS ctermfg=black ctermbg=darkcyan cterm=NONE
hi Pmenu ctermfg=black ctermbg=gray cterm=NONE
hi PmenuThumb ctermfg=gray ctermbg=black cterm=NONE
@@ -239,27 +237,29 @@ if s:t_Co >= 16
hi PmenuKindSel ctermfg=darkred ctermbg=darkyellow cterm=NONE
hi PmenuExtra ctermfg=darkgray ctermbg=gray cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=gray cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=darkred ctermbg=black cterm=reverse
hi ErrorMsg ctermfg=darkred ctermbg=black cterm=reverse
- hi ModeMsg ctermfg=black ctermbg=yellow cterm=NONE
+ hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=NONE
- hi Question ctermfg=darkyellow ctermbg=NONE cterm=NONE
+ hi Question ctermfg=yellow ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
- hi Todo ctermfg=yellow ctermbg=black cterm=reverse
+ hi Todo ctermfg=white ctermbg=NONE cterm=bold
hi MatchParen ctermfg=magenta ctermbg=NONE cterm=bold
- hi Search ctermfg=black ctermbg=darkgreen cterm=NONE
- hi IncSearch ctermfg=black ctermbg=red cterm=NONE
- hi CurSearch ctermfg=black ctermbg=darkyellow cterm=NONE
- hi WildMenu ctermfg=black ctermbg=yellow cterm=NONE
- hi debugPC ctermfg=black ctermbg=blue cterm=NONE
+ hi Search ctermfg=blue ctermbg=black cterm=reverse
+ hi IncSearch ctermfg=red ctermbg=black cterm=reverse
+ hi CurSearch ctermfg=red ctermbg=black cterm=reverse
+ hi WildMenu ctermfg=black ctermbg=yellow cterm=bold
+ hi debugPC ctermfg=black ctermbg=darkblue cterm=NONE
hi debugBreakpoint ctermfg=black ctermbg=red cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
hi Folded ctermfg=black ctermbg=darkyellow cterm=NONE
hi ColorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
hi SpellBad ctermfg=darkred ctermbg=NONE cterm=underline
- hi SpellCap ctermfg=blue ctermbg=NONE cterm=underline
+ hi SpellCap ctermfg=darkyellow ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=darkgreen ctermbg=NONE cterm=underline
hi SpellRare ctermfg=magenta ctermbg=NONE cterm=underline
hi Comment ctermfg=darkgray ctermbg=NONE cterm=NONE
@@ -269,22 +269,21 @@ if s:t_Co >= 16
hi Identifier ctermfg=cyan ctermbg=NONE cterm=NONE
hi Statement ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
- hi Type ctermfg=blue ctermbg=NONE cterm=NONE
+ hi Type ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
- hi Title ctermfg=yellow ctermbg=NONE cterm=bold
+ hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=cyan ctermbg=NONE cterm=bold
- hi Conceal ctermfg=darkgray ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Debug ctermfg=darkcyan ctermbg=NONE cterm=NONE
- hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
- hi DiffDelete ctermfg=darkyellow ctermbg=NONE cterm=NONE
+ hi DiffAdd ctermfg=darkgreen ctermbg=NONE cterm=reverse
+ hi DiffChange ctermfg=darkblue ctermbg=NONE cterm=reverse
+ hi DiffText ctermfg=darkmagenta ctermbg=NONE cterm=reverse
+ hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=reverse
hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
- hi Changed ctermfg=darkcyan ctermbg=NONE cterm=NONE
+ hi Changed ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
- hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
- hi DiffText ctermfg=white ctermbg=lightgrey cterm=NONE
- hi DiffChange ctermfg=white ctermbg=darkgray cterm=NONE
unlet s:t_Co
finish
endif
@@ -293,13 +292,13 @@ if s:t_Co >= 8
hi Normal ctermfg=gray ctermbg=black cterm=NONE
hi Statusline ctermfg=gray ctermbg=black cterm=bold,reverse
hi StatuslineNC ctermfg=gray ctermbg=black cterm=reverse
- hi VertSplit ctermfg=gray ctermbg=black cterm=reverse
+ hi VertSplit ctermfg=gray ctermbg=gray cterm=NONE
hi TabLine ctermfg=black ctermbg=gray cterm=NONE
- hi TabLineFill ctermfg=black ctermbg=gray cterm=NONE
- hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi TabLineFill ctermfg=gray ctermbg=gray cterm=NONE
+ hi TabLineSel ctermfg=black ctermbg=gray cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=gray ctermbg=black cterm=bold,reverse
- hi QuickFixLine ctermfg=black ctermbg=blue cterm=NONE
+ hi ToolbarButton ctermfg=gray ctermbg=black cterm=reverse
+ hi QuickFixLine ctermfg=black ctermbg=darkblue cterm=NONE
hi CursorLineNr ctermfg=darkyellow ctermbg=NONE cterm=bold
hi LineNr ctermfg=gray ctermbg=NONE cterm=bold
hi LineNrAbove ctermfg=gray ctermbg=NONE cterm=bold
@@ -318,52 +317,53 @@ if s:t_Co >= 8
hi PmenuKindSel ctermfg=darkred ctermbg=darkyellow cterm=NONE
hi PmenuExtra ctermfg=black ctermbg=gray cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=gray cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=darkred ctermbg=gray cterm=bold,reverse
hi ErrorMsg ctermfg=darkred ctermbg=gray cterm=bold,reverse
- hi ModeMsg ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Question ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=NONE
- hi Todo ctermfg=darkyellow ctermbg=black cterm=reverse
+ hi Todo ctermfg=gray ctermbg=NONE cterm=bold
hi MatchParen ctermfg=magenta ctermbg=NONE cterm=bold
- hi Search ctermfg=black ctermbg=darkgreen cterm=NONE
+ hi Search ctermfg=black ctermbg=darkblue cterm=NONE
hi IncSearch ctermfg=black ctermbg=darkyellow cterm=NONE
hi CurSearch ctermfg=black ctermbg=darkyellow cterm=NONE
hi WildMenu ctermfg=black ctermbg=darkyellow cterm=NONE
- hi debugPC ctermfg=black ctermbg=blue cterm=NONE
+ hi debugPC ctermfg=black ctermbg=darkblue cterm=NONE
hi debugBreakpoint ctermfg=black ctermbg=darkcyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
hi Folded ctermfg=black ctermbg=darkyellow cterm=NONE
hi ColorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
hi SpellBad ctermfg=darkred ctermbg=gray cterm=reverse
- hi SpellCap ctermfg=blue ctermbg=gray cterm=reverse
+ hi SpellCap ctermfg=darkblue ctermbg=gray cterm=reverse
hi SpellLocal ctermfg=darkgreen ctermbg=black cterm=reverse
hi SpellRare ctermfg=darkmagenta ctermbg=gray cterm=reverse
hi Comment ctermfg=gray ctermbg=NONE cterm=bold
- hi Constant ctermfg=darkgreen ctermbg=NONE cterm=NONE
+ hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
hi String ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Character ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Identifier ctermfg=gray ctermbg=NONE cterm=NONE
hi Statement ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
- hi Type ctermfg=blue ctermbg=NONE cterm=NONE
+ hi Type ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
- hi Title ctermfg=darkyellow ctermbg=NONE cterm=bold
+ hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=darkcyan ctermbg=NONE cterm=bold
hi Conceal ctermfg=gray ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Debug ctermfg=darkcyan ctermbg=NONE cterm=NONE
- hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
- hi DiffDelete ctermfg=darkyellow ctermbg=NONE cterm=NONE
+ hi DiffAdd ctermfg=darkgreen ctermbg=NONE cterm=reverse
+ hi DiffChange ctermfg=darkblue ctermbg=NONE cterm=reverse
+ hi DiffText ctermfg=darkmagenta ctermbg=NONE cterm=reverse
+ hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=reverse
hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
- hi Changed ctermfg=darkcyan ctermbg=NONE cterm=NONE
+ hi Changed ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
- hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
- hi DiffText ctermfg=white ctermbg=black cterm=bold,reverse
- hi DiffChange ctermfg=black ctermbg=white cterm=NONE
unlet s:t_Co
finish
endif
@@ -437,36 +437,39 @@ if s:t_Co >= 0
endif
" Background: dark
-" Color: color00 #1C1C1C 234 black
+" Color: color00 #1c1c1c 234 black
" Color: color08 #767676 243 darkgray
-" Color: color01 #D75F5F 167 darkred
-" Color: color09 #D7875F 173 red
-" Color: color02 #87AF87 108 darkgreen
-" Color: color10 #AFD7AF 151 green
-" Color: color03 #AFAF87 144 darkyellow
-" Color: color11 #D7D787 186 yellow
-" Color: color04 #5F87AF 67 blue
-" Color: color12 #87AFD7 110 blue
-" Color: color05 #AF87AF 139 darkmagenta
-" Color: color13 #D7AFD7 182 magenta
-" Color: color06 #5F8787 66 darkcyan
-" Color: color14 #87AFAF 109 cyan
-" Color: color07 #9E9E9E 247 gray
-" Color: color15 #BCBCBC 250 white
+" Color: color01 #af5f5f 131 darkred
+" Color: color09 #d75f87 168 red
+" Color: color02 #5faf5f 71 darkgreen
+" Color: color10 #87d787 114 green
+" Color: color03 #af875f 137 darkyellow
+" Color: color11 #d7af87 180 yellow
+" Color: color04 #5f87af 67 darkblue
+" Color: color12 #5fafd7 74 blue
+" Color: color05 #af87af 139 darkmagenta
+" Color: color13 #d787d7 176 magenta
+" Color: color06 #5f8787 66 darkcyan
+" Color: color14 #87afaf 109 cyan
+" Color: color07 #9e9e9e 247 gray
+" Color: color15 #bcbcbc 250 white
" Color: colorLine #303030 236 darkgrey
" Color: colorB #3a3a3a 237 darkgrey
" Color: colorF #262626 235 darkgrey
" Color: colorNonT #585858 240 darkgrey
-" Color: colorC #FFAF5F 215 red
-" Color: colorlC #5FFF00 82 green
-" Color: colorV #1F3F5F 109 cyan
+" Color: colorC #ffaf5f 215 red
+" Color: colorlC #5fff00 82 green
+" Color: colorV #1f3f5f 109 cyan
" Color: colorMP #ff00af 199 magenta
-" Color: diffAdd #5f875f 65 darkgreen
-" Color: diffDelete #af875f 137 darkyellow
-" Color: diffChange #5f5f5f 59 darkgray
-" Color: diffText #878787 102 lightgrey
+" Color: diffAdd #5faf5f 71 darkgreen
+" Color: diffDelete #af5f5f 131 darkred
+" Color: diffChange #5f87af 67 darkblue
+" Color: diffText #af87af 139 darkmagenta
" Color: black #000000 16 black
" Color: white #dadada 253 white
+" Color: Added #5fd75f 77 darkgreen
+" Color: Changed #ffaf5f 215 darkyellow
+" Color: Removed #d75f5f 167 darkred
" Term colors: color00 color01 color02 color03 color04 color05 color06 color07
" Term colors: color08 color09 color10 color11 color12 color13 color14 color15
" vim: et ts=8 sw=2 sts=2
diff --git a/runtime/colors/industry.vim b/runtime/colors/industry.vim
index dd40f34..71ef4ce 100644
--- a/runtime/colors/industry.vim
+++ b/runtime/colors/industry.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Shian Lee.
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:36
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -29,6 +29,8 @@ hi Pmenu guifg=#dadada guibg=#444444 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#000000 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#6c6c6c gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff00ff guibg=#444444 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff00ff guibg=#ffff00 gui=NONE cterm=NONE
hi TabLine guifg=#dadada guibg=#444444 gui=NONE cterm=NONE
hi TabLineFill guifg=NONE guibg=#6c6c6c gui=NONE cterm=NONE
hi TabLineSel guifg=#ffffff guibg=#000000 gui=bold cterm=bold
@@ -103,6 +105,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=16 ctermbg=226 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=16 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=242 cterm=NONE
+ hi PmenuMatch ctermfg=201 ctermbg=238 cterm=NONE
+ hi PmenuMatchSel ctermfg=201 ctermbg=226 cterm=NONE
hi TabLine ctermfg=253 ctermbg=238 cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=242 cterm=NONE
hi TabLineSel ctermfg=231 ctermbg=16 cterm=bold
@@ -180,6 +184,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=white ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLine ctermfg=white ctermbg=darkgrey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
hi TabLineSel ctermfg=white ctermbg=black cterm=bold
@@ -257,6 +263,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
hi TabLineSel ctermfg=grey ctermbg=black cterm=NONE
diff --git a/runtime/colors/koehler.vim b/runtime/colors/koehler.vim
index 71858f0..f2883fb 100644
--- a/runtime/colors/koehler.vim
+++ b/runtime/colors/koehler.vim
@@ -3,7 +3,7 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:36
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -62,7 +62,7 @@ hi CursorLine guifg=NONE guibg=#555555 gui=NONE cterm=NONE
hi CursorLineNr guifg=#ffff00 guibg=NONE gui=bold cterm=bold
hi Folded guifg=#00cdcd guibg=#666666 gui=NONE cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
-hi Conceal guifg=#e5e5e5 guibg=#a9a9a9 gui=NONE cterm=NONE
+hi Conceal guifg=#666666 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#000000 guibg=#00ff00 gui=NONE cterm=NONE
hi Directory guifg=#cc8000 guibg=NONE gui=NONE cterm=NONE
hi EndOfBuffer guifg=#cd0000 guibg=NONE gui=bold cterm=bold
@@ -77,6 +77,8 @@ hi Pmenu guifg=#ffffff guibg=#444444 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#00cdcd gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#ffffff gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff00ff guibg=#444444 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff0000 guibg=#00cdcd gui=NONE cterm=NONE
hi Question guifg=#5c5cff guibg=NONE gui=bold cterm=bold
hi Search guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
hi SignColumn guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
@@ -123,7 +125,7 @@ if s:t_Co >= 256
hi CursorLineNr ctermfg=226 ctermbg=NONE cterm=bold
hi Folded ctermfg=44 ctermbg=59 cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=226 cterm=NONE
- hi Conceal ctermfg=254 ctermbg=145 cterm=NONE
+ hi Conceal ctermfg=59 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=16 ctermbg=46 cterm=NONE
hi Directory ctermfg=172 ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=160 ctermbg=NONE cterm=bold
@@ -138,6 +140,8 @@ if s:t_Co >= 256
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=44 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=231 cterm=NONE
+ hi PmenuMatch ctermfg=201 ctermbg=238 cterm=NONE
+ hi PmenuMatchSel ctermfg=196 ctermbg=44 cterm=NONE
hi Question ctermfg=63 ctermbg=NONE cterm=bold
hi Search ctermfg=231 ctermbg=196 cterm=NONE
hi SignColumn ctermfg=51 ctermbg=NONE cterm=NONE
@@ -187,7 +191,7 @@ if s:t_Co >= 16
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi Folded ctermfg=darkblue ctermbg=NONE cterm=NONE
hi QuickFixLine ctermfg=black ctermbg=yellow cterm=NONE
- hi Conceal ctermfg=grey ctermbg=grey cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Cursor ctermfg=black ctermbg=green cterm=NONE
hi Directory ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=darkred ctermbg=NONE cterm=bold
@@ -202,6 +206,8 @@ if s:t_Co >= 16
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=white cterm=NONE
+ hi PmenuMatch ctermfg=white ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi Question ctermfg=blue ctermbg=NONE cterm=bold
hi Search ctermfg=white ctermbg=red cterm=NONE
hi SignColumn ctermfg=cyan ctermbg=NONE cterm=NONE
@@ -265,6 +271,8 @@ if s:t_Co >= 8
hi PmenuSbar ctermfg=NONE ctermbg=grey cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkcyan cterm=NONE
+ hi PmenuMatch ctermfg=grey ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi Question ctermfg=darkblue ctermbg=NONE cterm=bold
hi Search ctermfg=grey ctermbg=darkred cterm=NONE
hi SignColumn ctermfg=darkcyan ctermbg=NONE cterm=NONE
diff --git a/runtime/colors/lunaperche.vim b/runtime/colors/lunaperche.vim
index 3546710..5ccba2d 100644
--- a/runtime/colors/lunaperche.vim
+++ b/runtime/colors/lunaperche.vim
@@ -4,7 +4,7 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://www.github.com/vim/colorschemes
" License: Vim License (see `:help license`)
-" Last Updated: Mon 08 Jan 2024 09:41:03 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -120,6 +120,8 @@ if &background ==# 'dark'
hi PmenuKindSel guifg=#ff5f5f guibg=#4e4e4e gui=NONE cterm=NONE
hi PmenuExtra guifg=#767676 guibg=#303030 gui=NONE cterm=NONE
hi PmenuExtraSel guifg=#767676 guibg=#4e4e4e gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#d787d7 guibg=#303030 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#d787d7 guibg=#4e4e4e gui=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error guifg=#ffffff guibg=#ff5f5f gui=NONE cterm=NONE
hi ErrorMsg guifg=#ffffff guibg=#ff5f5f gui=NONE cterm=NONE
@@ -158,7 +160,7 @@ if &background ==# 'dark'
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#5fafff guibg=NONE gui=bold cterm=bold
- hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd guifg=#c6c6c6 guibg=#875f87 gui=NONE cterm=NONE
hi DiffChange guifg=#c6c6c6 guibg=#5f5f5f gui=NONE cterm=NONE
@@ -211,6 +213,8 @@ else
hi PmenuKindSel guifg=#af0000 guibg=#c6c6c6 gui=NONE cterm=NONE
hi PmenuExtra guifg=#767676 guibg=#e4e4e4 gui=NONE cterm=NONE
hi PmenuExtraSel guifg=#767676 guibg=#c6c6c6 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#af00af guibg=#e4e4e4 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#af00af guibg=#c6c6c6 gui=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error guifg=#ffffff guibg=#d70000 gui=NONE cterm=NONE
hi ErrorMsg guifg=#ffffff guibg=#d70000 gui=NONE cterm=NONE
@@ -249,7 +253,7 @@ else
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#005fd7 guibg=NONE gui=bold cterm=bold
- hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal guifg=#9e9e9e guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd guifg=#000000 guibg=#d7afd7 gui=NONE cterm=NONE
hi DiffChange guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
@@ -381,6 +385,8 @@ if s:t_Co >= 256
hi PmenuKindSel ctermfg=203 ctermbg=239 cterm=NONE
hi PmenuExtra ctermfg=243 ctermbg=236 cterm=NONE
hi PmenuExtraSel ctermfg=243 ctermbg=239 cterm=NONE
+ hi PmenuMatch ctermfg=176 ctermbg=236 cterm=NONE
+ hi PmenuMatchSel ctermfg=176 ctermbg=239 cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=231 ctermbg=203 cterm=NONE
hi ErrorMsg ctermfg=231 ctermbg=203 cterm=NONE
@@ -417,7 +423,7 @@ if s:t_Co >= 256
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=75 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=240 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=251 ctermbg=96 cterm=NONE
hi DiffChange ctermfg=251 ctermbg=59 cterm=NONE
@@ -467,6 +473,8 @@ if s:t_Co >= 256
hi PmenuKindSel ctermfg=124 ctermbg=251 cterm=NONE
hi PmenuExtra ctermfg=243 ctermbg=254 cterm=NONE
hi PmenuExtraSel ctermfg=243 ctermbg=251 cterm=NONE
+ hi PmenuMatch ctermfg=127 ctermbg=254 cterm=NONE
+ hi PmenuMatchSel ctermfg=127 ctermbg=251 cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=231 ctermbg=160 cterm=NONE
hi ErrorMsg ctermfg=231 ctermbg=160 cterm=NONE
@@ -503,7 +511,7 @@ if s:t_Co >= 256
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=26 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=247 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=16 ctermbg=182 cterm=NONE
hi DiffChange ctermfg=16 ctermbg=252 cterm=NONE
@@ -559,6 +567,8 @@ if s:t_Co >= 16
hi PmenuKindSel ctermfg=darkred ctermbg=darkcyan cterm=NONE
hi PmenuExtra ctermfg=black ctermbg=grey cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkcyan cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=white ctermbg=red cterm=NONE
hi ErrorMsg ctermfg=white ctermbg=red cterm=NONE
@@ -594,7 +604,7 @@ if s:t_Co >= 16
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=blue ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=grey ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=white ctermbg=darkmagenta cterm=NONE
hi DiffChange ctermfg=white ctermbg=darkgreen cterm=NONE
@@ -680,7 +690,7 @@ if s:t_Co >= 16
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE
hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE
@@ -736,6 +746,8 @@ if s:t_Co >= 8
hi PmenuKindSel ctermfg=darkred ctermbg=darkcyan cterm=NONE
hi PmenuExtra ctermfg=black ctermbg=grey cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkcyan cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=grey ctermbg=darkred cterm=NONE
hi ErrorMsg ctermfg=grey ctermbg=darkred cterm=NONE
diff --git a/runtime/colors/morning.vim b/runtime/colors/morning.vim
index 1644b04..bd62d0c 100644
--- a/runtime/colors/morning.vim
+++ b/runtime/colors/morning.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Bram Moolenaar <Bram@vim.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:37
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -42,6 +42,8 @@ hi Pmenu guifg=#000000 guibg=#b2b2b2 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#e4e4e4 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#000000 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#a52a2a guibg=#b2b2b2 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#a52a2a guibg=#ffff00 gui=NONE cterm=NONE
hi TabLine guifg=#000000 guibg=#bcbcbc gui=underline cterm=underline
hi TabLineFill guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel guifg=#000000 guibg=#e4e4e4 gui=bold cterm=bold
@@ -82,7 +84,7 @@ hi Type guifg=#2e8b57 guibg=NONE gui=bold cterm=bold
hi Special guifg=#6a5acd guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Directory guifg=#008787 guibg=NONE gui=bold cterm=bold
-hi Conceal guifg=#0000ff guibg=NONE gui=NONE cterm=NONE
+hi Conceal guifg=#878787 guibg=NONE gui=NONE cterm=NONE
hi Title guifg=#a52a2a guibg=NONE gui=bold cterm=bold
hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
hi DiffChange guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
@@ -114,6 +116,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=16 ctermbg=226 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=254 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=16 cterm=NONE
+ hi PmenuMatch ctermfg=124 ctermbg=249 cterm=NONE
+ hi PmenuMatchSel ctermfg=124 ctermbg=226 cterm=NONE
hi TabLine ctermfg=16 ctermbg=250 cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=16 ctermbg=254 cterm=bold
@@ -154,7 +158,7 @@ if s:t_Co >= 256
hi Special ctermfg=62 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Directory ctermfg=30 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=21 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=102 ctermbg=NONE cterm=NONE
hi Title ctermfg=124 ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
hi DiffChange ctermfg=231 ctermbg=67 cterm=NONE
@@ -179,6 +183,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=grey cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=black cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=white cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLine ctermfg=black ctermbg=white cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=black ctermbg=grey cterm=bold
@@ -219,7 +225,7 @@ if s:t_Co >= 16
hi Special ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Directory ctermfg=darkcyan ctermbg=NONE cterm=bold
- hi Conceal ctermfg=blue ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=gray ctermbg=NONE cterm=NONE
hi Title ctermfg=darkred ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=white ctermbg=blue cterm=NONE
@@ -244,6 +250,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=gray ctermbg=black cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=black ctermbg=gray cterm=NONE
diff --git a/runtime/colors/murphy.vim b/runtime/colors/murphy.vim
index a6a08ed..6cdbd6e 100644
--- a/runtime/colors/murphy.vim
+++ b/runtime/colors/murphy.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Ron Aaron <ron@ronware.org>.
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Mon 08 Jan 2024 09:50:15 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -38,6 +38,8 @@ hi Pmenu guifg=#ffffff guibg=#444444 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#303030 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#bcbcbc gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff00ff guibg=#444444 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff00ff guibg=#ffff00 gui=NONE cterm=NONE
hi TabLineFill guifg=NONE guibg=#303030 gui=NONE cterm=NONE
hi TabLine guifg=#87ff87 guibg=#444444 gui=NONE cterm=NONE
hi TabLineSel guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
@@ -111,6 +113,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=16 ctermbg=226 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=236 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=250 cterm=NONE
+ hi PmenuMatch ctermfg=201 ctermbg=238 cterm=NONE
+ hi PmenuMatchSel ctermfg=201 ctermbg=226 cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=236 cterm=NONE
hi TabLine ctermfg=120 ctermbg=238 cterm=NONE
hi TabLineSel ctermfg=231 ctermbg=16 cterm=NONE
@@ -176,6 +180,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=white ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
hi TabLine ctermfg=green ctermbg=darkgrey cterm=NONE
hi TabLineSel ctermfg=white ctermbg=black cterm=NONE
@@ -241,6 +247,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
hi TabLine ctermfg=grey ctermbg=black cterm=reverse
hi TabLineSel ctermfg=grey ctermbg=black cterm=NONE
diff --git a/runtime/colors/pablo.vim b/runtime/colors/pablo.vim
index bd5693e..22bf377 100644
--- a/runtime/colors/pablo.vim
+++ b/runtime/colors/pablo.vim
@@ -3,7 +3,7 @@
" Maintainer: Original maintainerRon Aaron <ron@ronware.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:38
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -37,7 +37,7 @@ hi Underlined guifg=#80a0ff guibg=NONE gui=underline cterm=underline
hi Ignore guifg=#000000 guibg=#000000 gui=NONE cterm=NONE
hi Error guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
hi Todo guifg=#000000 guibg=#c0c000 gui=NONE cterm=NONE
-hi Conceal guifg=#e5e5e5 guibg=#a9a9a9 gui=NONE cterm=NONE
+hi Conceal guifg=#666666 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi lCursor guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi CursorIM guifg=NONE guibg=fg gui=NONE cterm=NONE
@@ -80,6 +80,8 @@ hi TabLineFill guifg=NONE guibg=#000000 gui=reverse cterm=reverse
hi TabLineSel guifg=#ffffff guibg=#000000 gui=bold cterm=bold
hi ToolbarLine guifg=NONE guibg=#000000 gui=NONE cterm=NONE
hi ToolbarButton guifg=#000000 guibg=#e5e5e5 gui=bold cterm=bold
+hi PmenuMatch guifg=#ff00ff guibg=#303030 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff00ff guibg=#e5e5e5 gui=NONE cterm=NONE
hi Pmenu guifg=fg guibg=#303030 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#e5e5e5 gui=NONE cterm=NONE
@@ -110,7 +112,7 @@ if s:t_Co >= 256
hi Ignore ctermfg=16 ctermbg=16 cterm=NONE
hi Error ctermfg=231 ctermbg=196 cterm=NONE
hi Todo ctermfg=16 ctermbg=142 cterm=NONE
- hi Conceal ctermfg=254 ctermbg=248 cterm=NONE
+ hi Conceal ctermfg=241 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=16 ctermbg=231 cterm=NONE
hi lCursor ctermfg=16 ctermbg=231 cterm=NONE
hi CursorIM ctermfg=NONE ctermbg=fg cterm=NONE
@@ -153,6 +155,8 @@ if s:t_Co >= 256
hi TabLineSel ctermfg=231 ctermbg=16 cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=16 cterm=NONE
hi ToolbarButton ctermfg=16 ctermbg=254 cterm=bold
+ hi PmenuMatch ctermfg=201 ctermbg=236 cterm=NONE
+ hi PmenuMatchSel ctermfg=201 ctermbg=254 cterm=NONE
hi Pmenu ctermfg=fg ctermbg=236 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=254 cterm=NONE
@@ -178,7 +182,7 @@ if s:t_Co >= 16
hi Ignore ctermfg=black ctermbg=black cterm=NONE
hi Error ctermfg=white ctermbg=red cterm=NONE
hi Todo ctermfg=black ctermbg=darkyellow cterm=NONE
- hi Conceal ctermfg=grey ctermbg=grey cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Cursor ctermfg=black ctermbg=white cterm=NONE
hi lCursor ctermfg=black ctermbg=white cterm=NONE
hi CursorIM ctermfg=NONE ctermbg=fg cterm=NONE
@@ -221,6 +225,8 @@ if s:t_Co >= 16
hi TabLineSel ctermfg=white ctermbg=black cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=black cterm=NONE
hi ToolbarButton ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatch ctermfg=fg ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=grey cterm=bold
hi Pmenu ctermfg=fg ctermbg=darkgrey cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=grey cterm=NONE
@@ -245,6 +251,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
hi TabLineSel ctermfg=grey ctermbg=black cterm=NONE
diff --git a/runtime/colors/peachpuff.vim b/runtime/colors/peachpuff.vim
index 392945a..bc485c4 100644
--- a/runtime/colors/peachpuff.vim
+++ b/runtime/colors/peachpuff.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:39
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -39,9 +39,11 @@ hi StatusLineTerm guifg=#ffffff guibg=#2e8b57 gui=bold cterm=bold
hi StatusLineTermNC guifg=#ffdab9 guibg=#008b8b gui=bold cterm=bold
hi VertSplit guifg=#ffdab9 guibg=#737373 gui=NONE cterm=NONE
hi Pmenu guifg=#000000 guibg=#ffaf87 gui=NONE cterm=NONE
-hi PmenuSel guifg=#000000 guibg=#f5c195 gui=bold cterm=bold
hi PmenuSbar guifg=NONE guibg=#ffdab9 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#737373 gui=NONE cterm=NONE
+hi PmenuSel guifg=#000000 guibg=#f5c195 gui=bold cterm=bold
+hi PmenuMatch guifg=#a52a2a guibg=#ffaf87 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#a52a2a guibg=#f5c195 gui=bold cterm=bold
hi TabLine guifg=#ffdab9 guibg=#737373 gui=underline cterm=underline
hi TabLineFill guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel guifg=#000000 guibg=#ffdab9 gui=bold cterm=bold
@@ -81,7 +83,7 @@ hi PreProc guifg=#cd00cd guibg=NONE gui=NONE cterm=NONE
hi Type guifg=#2e8b57 guibg=NONE gui=bold cterm=bold
hi Special guifg=#6a5acd guibg=NONE gui=NONE cterm=NONE
hi Directory guifg=#008b8b guibg=NONE gui=bold cterm=bold
-hi Conceal guifg=#406090 guibg=NONE gui=NONE cterm=NONE
+hi Conceal guifg=#737373 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title guifg=#cd00cd guibg=NONE gui=bold cterm=bold
hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
@@ -111,9 +113,11 @@ if s:t_Co >= 256
hi StatusLineTermNC ctermfg=223 ctermbg=30 cterm=bold
hi VertSplit ctermfg=223 ctermbg=243 cterm=NONE
hi Pmenu ctermfg=16 ctermbg=216 cterm=NONE
- hi PmenuSel ctermfg=16 ctermbg=180 cterm=bold
hi PmenuSbar ctermfg=NONE ctermbg=223 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=243 cterm=NONE
+ hi PmenuSel ctermfg=16 ctermbg=180 cterm=bold
+ hi PmenuMatch ctermfg=124 ctermbg=216 cterm=NONE
+ hi PmenuMatchSel ctermfg=124 ctermbg=180 cterm=bold
hi TabLine ctermfg=223 ctermbg=243 cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=16 ctermbg=223 cterm=bold
@@ -153,7 +157,7 @@ if s:t_Co >= 256
hi Type ctermfg=29 ctermbg=NONE cterm=bold
hi Special ctermfg=62 ctermbg=NONE cterm=NONE
hi Directory ctermfg=30 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=25 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=243 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=164 ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
@@ -178,9 +182,11 @@ if s:t_Co >= 16
hi StatusLineTermNC ctermfg=white ctermbg=darkcyan cterm=bold
hi VertSplit ctermfg=white ctermbg=darkgrey cterm=NONE
hi Pmenu ctermfg=black ctermbg=grey cterm=NONE
- hi PmenuSel ctermfg=black ctermbg=yellow cterm=bold
hi PmenuSbar ctermfg=NONE ctermbg=white cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgrey cterm=NONE
+ hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLine ctermfg=white ctermbg=darkgrey cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=black ctermbg=white cterm=bold
@@ -248,6 +254,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=gray ctermbg=black cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=black ctermbg=white cterm=NONE
diff --git a/runtime/colors/quiet.vim b/runtime/colors/quiet.vim
index 1a8603a..83ef067 100644
--- a/runtime/colors/quiet.vim
+++ b/runtime/colors/quiet.vim
@@ -4,7 +4,7 @@
" Maintainer: Maxence Weynans <neutaaaaan@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Vim License (see `:help license`)`
-" Last Updated: Fri 15 Dec 2023 20:05:39
+" Last Change: 2024 Aug 05
" Generated by Colortemplate v2.2.3
@@ -13,6 +13,9 @@ let g:colors_name = 'quiet'
let s:t_Co = has('gui_running') ? -1 : (&t_Co ?? 0)
+hi! link Added Normal
+hi! link Changed Normal
+hi! link Removed Normal
hi! link Terminal Normal
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
@@ -74,10 +77,12 @@ if &background ==# 'dark'
hi MoreMsg guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi NonText guifg=#707070 guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=#000000 guibg=#a8a8a8 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#d7005f guibg=#a8a8a8 gui=NONE cterm=NONE
hi PmenuExtra guifg=#000000 guibg=#a8a8a8 gui=NONE cterm=NONE
hi PmenuKind guifg=#000000 guibg=#a8a8a8 gui=bold cterm=bold
hi PmenuSbar guifg=#707070 guibg=#585858 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#dadada gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#d7005f guibg=#dadada gui=bold cterm=bold
hi PmenuExtraSel guifg=#000000 guibg=#dadada gui=NONE cterm=NONE
hi PmenuKindSel guifg=#000000 guibg=#dadada gui=bold cterm=bold
hi PmenuThumb guifg=#dadada guibg=#dadada gui=NONE cterm=NONE
@@ -144,10 +149,12 @@ else
hi MoreMsg guifg=#000000 guibg=NONE gui=NONE cterm=NONE
hi NonText guifg=#626262 guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=#000000 guibg=#a8a8a8 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#d70000 guibg=#a8a8a8 gui=NONE cterm=NONE
hi PmenuExtra guifg=#000000 guibg=#a8a8a8 gui=NONE cterm=NONE
hi PmenuKind guifg=#000000 guibg=#a8a8a8 gui=bold cterm=bold
hi PmenuSbar guifg=#000000 guibg=#e4e4e4 gui=NONE cterm=NONE
hi PmenuSel guifg=#d7d7d7 guibg=#000000 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#d70000 guibg=#000000 gui=bold cterm=bold
hi PmenuExtraSel guifg=#d7d7d7 guibg=#000000 gui=NONE cterm=NONE
hi PmenuKindSel guifg=#d7d7d7 guibg=#000000 gui=bold cterm=bold
hi PmenuThumb guifg=#000000 guibg=#000000 gui=NONE cterm=NONE
@@ -213,10 +220,12 @@ if s:t_Co >= 256
hi MoreMsg ctermfg=253 ctermbg=NONE cterm=NONE
hi NonText ctermfg=242 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=16 ctermbg=248 cterm=NONE
+ hi PmenuMatch ctermfg=161 ctermbg=248 cterm=NONE
hi PmenuExtra ctermfg=16 ctermbg=248 cterm=NONE
hi PmenuKind ctermfg=16 ctermbg=248 cterm=bold
hi PmenuSbar ctermfg=242 ctermbg=240 cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=253 cterm=NONE
+ hi PmenuMatchSel ctermfg=161 ctermbg=253 cterm=bold
hi PmenuExtraSel ctermfg=16 ctermbg=253 cterm=NONE
hi PmenuKindSel ctermfg=16 ctermbg=253 cterm=bold
hi PmenuThumb ctermfg=253 ctermbg=253 cterm=NONE
@@ -280,10 +289,12 @@ if s:t_Co >= 256
hi MoreMsg ctermfg=16 ctermbg=NONE cterm=NONE
hi NonText ctermfg=241 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=16 ctermbg=248 cterm=NONE
+ hi PmenuMatch ctermfg=160 ctermbg=248 cterm=NONE
hi PmenuExtra ctermfg=16 ctermbg=248 cterm=NONE
hi PmenuKind ctermfg=16 ctermbg=248 cterm=bold
hi PmenuSbar ctermfg=16 ctermbg=254 cterm=NONE
hi PmenuSel ctermfg=188 ctermbg=16 cterm=NONE
+ hi PmenuMatchSel ctermfg=160 ctermbg=16 cterm=bold
hi PmenuExtraSel ctermfg=188 ctermbg=16 cterm=NONE
hi PmenuKindSel ctermfg=188 ctermbg=16 cterm=bold
hi PmenuThumb ctermfg=16 ctermbg=16 cterm=NONE
@@ -359,9 +370,11 @@ if s:t_Co >= 16
hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=NONE ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=NONE cterm=reverse
+ hi PmenuMatch ctermfg=NONE ctermbg=darkred cterm=reverse
hi PmenuExtra ctermfg=NONE ctermbg=NONE cterm=reverse
hi PmenuKind ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi PmenuSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=darkred ctermbg=NONE cterm=bold
hi PmenuExtraSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuKindSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -425,9 +438,11 @@ if s:t_Co >= 16
hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=NONE ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=NONE cterm=reverse
+ hi PmenuMatch ctermfg=NONE ctermbg=darkred cterm=reverse
hi PmenuExtra ctermfg=NONE ctermbg=NONE cterm=reverse
hi PmenuKind ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi PmenuSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=darkred ctermbg=NONE cterm=bold
hi PmenuExtraSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuKindSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -498,9 +513,11 @@ if s:t_Co >= 8
hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=NONE ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=NONE cterm=reverse
+ hi PmenuMatch ctermfg=NONE ctermbg=darkred cterm=reverse
hi PmenuExtra ctermfg=NONE ctermbg=NONE cterm=reverse
hi PmenuKind ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi PmenuSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=darkred ctermbg=NONE cterm=bold
hi PmenuExtraSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuKindSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -564,9 +581,11 @@ if s:t_Co >= 8
hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=NONE ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=NONE cterm=reverse
+ hi PmenuMatch ctermfg=NONE ctermbg=darkred cterm=reverse
hi PmenuExtra ctermfg=NONE ctermbg=NONE cterm=reverse
hi PmenuKind ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi PmenuSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=darkred ctermbg=NONE cterm=bold
hi PmenuExtraSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuKindSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=NONE cterm=NONE
diff --git a/runtime/colors/retrobox.vim b/runtime/colors/retrobox.vim
index 46d269f..fb982c2 100644
--- a/runtime/colors/retrobox.vim
+++ b/runtime/colors/retrobox.vim
@@ -4,7 +4,7 @@
" Maintainer: Maxim Kim <habamax@gmail.com>, ported from gruvbox8 of Lifepillar <lifepillar@lifepillar.me>
" Website: https://www.github.com/vim/colorschemes
" License: Vim License (see `:help license`)
-" Last Updated: Fri 15 Dec 2023 20:05:40
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -21,14 +21,15 @@ hi! link Tag Special
hi! link lCursor Cursor
hi! link MessageWindow PMenu
hi! link PopupNotification Todo
-hi! link CurSearch Search
+hi! link CurSearch IncSearch
+hi! link Terminal Normal
if &background ==# 'dark'
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#1c1c1c', '#cc241d', '#98971a', '#d79921', '#458588', '#b16286', '#689d6a', '#a89984', '#928374', '#fb4934', '#b8bb26', '#fabd2f', '#83a598', '#d3869b', '#8ec07c', '#ebdbb2']
endif
hi Normal guifg=#ebdbb2 guibg=#1c1c1c gui=NONE cterm=NONE
- hi CursorLineNr guifg=#fabd2f guibg=#303030 gui=NONE cterm=NONE
+ hi CursorLineNr guifg=#fabd2f guibg=#1c1c1c gui=bold cterm=bold
hi FoldColumn guifg=#928374 guibg=#1c1c1c gui=NONE cterm=NONE
hi SignColumn guifg=#928374 guibg=#1c1c1c gui=NONE cterm=NONE
hi VertSplit guifg=#303030 guibg=#1c1c1c gui=NONE cterm=NONE
@@ -49,6 +50,8 @@ if &background ==# 'dark'
hi PmenuKindSel guifg=#fb4934 guibg=#83a598 gui=NONE cterm=NONE
hi PmenuExtra guifg=#a89984 guibg=#3c3836 gui=NONE cterm=NONE
hi PmenuExtraSel guifg=#303030 guibg=#83a598 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#b16286 guibg=#3c3836 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#b16286 guibg=#83a598 gui=bold cterm=bold
hi SpecialKey guifg=#928374 guibg=NONE gui=NONE cterm=NONE
hi StatusLine guifg=#504945 guibg=#ebdbb2 gui=bold,reverse cterm=bold,reverse
hi StatusLineNC guifg=#3c3836 guibg=#a89984 gui=reverse cterm=reverse
@@ -60,7 +63,7 @@ if &background ==# 'dark'
hi Visual guifg=#1c1c1c guibg=#83a598 gui=NONE cterm=NONE
hi WildMenu guifg=#83a598 guibg=#504945 gui=bold cterm=bold
hi EndOfBuffer guifg=#504945 guibg=NONE gui=NONE cterm=NONE
- hi Conceal guifg=#83a598 guibg=NONE gui=NONE cterm=NONE
+ hi Conceal guifg=#504945 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#1c1c1c guibg=#fbf1c7 gui=NONE cterm=NONE
hi DiffAdd guifg=#b8bb26 guibg=#1c1c1c gui=reverse cterm=reverse
hi DiffChange guifg=#8ec07c guibg=#1c1c1c gui=reverse cterm=reverse
@@ -119,7 +122,7 @@ else
let g:terminal_ansi_colors = ['#3c3836', '#cc241d', '#98971a', '#d79921', '#458588', '#b16286', '#689d6a', '#7c6f64', '#928374', '#9d0006', '#79740e', '#b57614', '#076678', '#8f3f71', '#427b58', '#fbf1c7']
endif
hi Normal guifg=#3c3836 guibg=#fbf1c7 gui=NONE cterm=NONE
- hi CursorLineNr guifg=#b57614 guibg=#e5d4b1 gui=NONE cterm=NONE
+ hi CursorLineNr guifg=#b57614 guibg=#fbf1c7 gui=bold cterm=bold
hi FoldColumn guifg=#928374 guibg=#fbf1c7 gui=NONE cterm=NONE
hi SignColumn guifg=#3c3836 guibg=#fbf1c7 gui=NONE cterm=NONE
hi VertSplit guifg=#bdae93 guibg=#fbf1c7 gui=NONE cterm=NONE
@@ -140,6 +143,8 @@ else
hi PmenuKindSel guifg=#9d0006 guibg=#076678 gui=NONE cterm=NONE
hi PmenuExtra guifg=#7c6f64 guibg=#e5d4b1 gui=NONE cterm=NONE
hi PmenuExtraSel guifg=#bdae93 guibg=#076678 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#8f3f71 guibg=#e5d4b1 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#d3869b guibg=#076678 gui=bold cterm=bold
hi SpecialKey guifg=#928374 guibg=NONE gui=NONE cterm=NONE
hi StatusLine guifg=#bdae93 guibg=#3c3836 gui=bold,reverse cterm=bold,reverse
hi StatusLineNC guifg=#ebdbb2 guibg=#3c3836 gui=reverse cterm=reverse
@@ -151,7 +156,7 @@ else
hi Visual guifg=#fbf1c7 guibg=#076678 gui=NONE cterm=NONE
hi WildMenu guifg=#076678 guibg=#e5d4b1 gui=bold cterm=bold
hi EndOfBuffer guifg=#e5d4b1 guibg=NONE gui=NONE cterm=NONE
- hi Conceal guifg=#076678 guibg=NONE gui=NONE cterm=NONE
+ hi Conceal guifg=#a89984 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#fbf1c7 guibg=#282828 gui=NONE cterm=NONE
hi DiffAdd guifg=#79740e guibg=#fbf1c7 gui=reverse cterm=reverse
hi DiffChange guifg=#427b58 guibg=#fbf1c7 gui=reverse cterm=reverse
@@ -209,7 +214,7 @@ endif
if s:t_Co >= 256
if &background ==# 'dark'
hi Normal ctermfg=187 ctermbg=234 cterm=NONE
- hi CursorLineNr ctermfg=214 ctermbg=236 cterm=NONE
+ hi CursorLineNr ctermfg=214 ctermbg=234 cterm=bold
hi FoldColumn ctermfg=102 ctermbg=234 cterm=NONE
hi SignColumn ctermfg=102 ctermbg=234 cterm=NONE
hi VertSplit ctermfg=236 ctermbg=234 cterm=NONE
@@ -230,6 +235,8 @@ if s:t_Co >= 256
hi PmenuKindSel ctermfg=203 ctermbg=109 cterm=NONE
hi PmenuExtra ctermfg=102 ctermbg=237 cterm=NONE
hi PmenuExtraSel ctermfg=236 ctermbg=109 cterm=NONE
+ hi PmenuMatch ctermfg=132 ctermbg=237 cterm=NONE
+ hi PmenuMatchSel ctermfg=132 ctermbg=109 cterm=bold
hi SpecialKey ctermfg=102 ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=239 ctermbg=187 cterm=bold,reverse
hi StatusLineNC ctermfg=237 ctermbg=102 cterm=reverse
@@ -241,7 +248,7 @@ if s:t_Co >= 256
hi Visual ctermfg=234 ctermbg=109 cterm=NONE
hi WildMenu ctermfg=109 ctermbg=239 cterm=bold
hi EndOfBuffer ctermfg=239 ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=109 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=239 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=234 ctermbg=230 cterm=NONE
hi DiffAdd ctermfg=142 ctermbg=234 cterm=reverse
hi DiffChange ctermfg=107 ctermbg=234 cterm=reverse
@@ -297,7 +304,7 @@ if s:t_Co >= 256
else
" Light background
hi Normal ctermfg=237 ctermbg=230 cterm=NONE
- hi CursorLineNr ctermfg=172 ctermbg=188 cterm=NONE
+ hi CursorLineNr ctermfg=172 ctermbg=230 cterm=bold
hi FoldColumn ctermfg=102 ctermbg=230 cterm=NONE
hi SignColumn ctermfg=237 ctermbg=230 cterm=NONE
hi VertSplit ctermfg=144 ctermbg=230 cterm=NONE
@@ -318,6 +325,8 @@ if s:t_Co >= 256
hi PmenuKindSel ctermfg=124 ctermbg=23 cterm=NONE
hi PmenuExtra ctermfg=243 ctermbg=188 cterm=NONE
hi PmenuExtraSel ctermfg=144 ctermbg=23 cterm=NONE
+ hi PmenuMatch ctermfg=126 ctermbg=188 cterm=NONE
+ hi PmenuMatchSel ctermfg=175 ctermbg=23 cterm=bold
hi SpecialKey ctermfg=102 ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=144 ctermbg=237 cterm=bold,reverse
hi StatusLineNC ctermfg=187 ctermbg=237 cterm=reverse
@@ -329,7 +338,7 @@ if s:t_Co >= 256
hi Visual ctermfg=230 ctermbg=23 cterm=NONE
hi WildMenu ctermfg=23 ctermbg=188 cterm=bold
hi EndOfBuffer ctermfg=188 ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=23 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=137 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=230 ctermbg=235 cterm=NONE
hi DiffAdd ctermfg=64 ctermbg=230 cterm=reverse
hi DiffChange ctermfg=29 ctermbg=230 cterm=reverse
@@ -409,6 +418,8 @@ if s:t_Co >= 16
hi PmenuKindSel ctermfg=DarkRed ctermbg=Blue cterm=NONE
hi PmenuExtra ctermfg=gray ctermbg=DarkGray cterm=NONE
hi PmenuExtraSel ctermfg=Black ctermbg=Blue cterm=NONE
+ hi PmenuMatch ctermfg=White ctermbg=DarkGray cterm=bold
+ hi PmenuMatchSel ctermfg=Black ctermbg=Blue cterm=bold
hi SignColumn ctermfg=DarkGray ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=DarkGray ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=gray ctermbg=Black cterm=bold,reverse
@@ -422,7 +433,7 @@ if s:t_Co >= 16
hi Visual ctermfg=Black ctermbg=Blue cterm=NONE
hi WildMenu ctermfg=White ctermbg=Black cterm=bold
hi EndOfBuffer ctermfg=DarkGray ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=DarkGray ctermbg=NONE cterm=NONE
hi Cursor ctermfg=Black ctermbg=White cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=Black cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=Black cterm=reverse
@@ -497,6 +508,8 @@ if s:t_Co >= 16
hi PmenuKindSel ctermfg=DarkRed ctermbg=Blue cterm=NONE
hi PmenuExtra ctermfg=DarkGray ctermbg=Grey cterm=NONE
hi PmenuExtraSel ctermfg=White ctermbg=Blue cterm=NONE
+ hi PmenuMatch ctermfg=Black ctermbg=Grey cterm=bold
+ hi PmenuMatchSel ctermfg=White ctermbg=Blue cterm=bold
hi SignColumn ctermfg=Grey ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=Grey ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=DarkGray ctermbg=White cterm=bold,reverse
@@ -510,7 +523,7 @@ if s:t_Co >= 16
hi Visual ctermfg=White ctermbg=Blue cterm=NONE
hi WildMenu ctermfg=Black ctermbg=White cterm=bold
hi EndOfBuffer ctermfg=Grey ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE
hi Cursor ctermfg=White ctermbg=DarkGray cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=White cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=White cterm=reverse
@@ -590,6 +603,8 @@ if s:t_Co >= 8
hi PmenuKindSel ctermfg=Red ctermbg=Blue cterm=NONE
hi PmenuExtra ctermfg=DarkGray ctermbg=White cterm=NONE
hi PmenuExtraSel ctermfg=DarkGray ctermbg=Blue cterm=NONE
+ hi PmenuMatch ctermfg=DarkGray ctermbg=White cterm=bold
+ hi PmenuMatchSel ctermfg=Black ctermbg=Blue cterm=bold
hi SignColumn ctermfg=gray ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=gray ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=gray ctermbg=Black cterm=bold,reverse
@@ -603,7 +618,7 @@ if s:t_Co >= 8
hi Visual ctermfg=Black ctermbg=Blue cterm=NONE
hi WildMenu ctermfg=Blue ctermbg=DarkGray cterm=bold
hi EndOfBuffer ctermfg=NONE ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=DarkGray ctermbg=NONE cterm=NONE
hi Cursor ctermfg=Black ctermbg=White cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=Black cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=Black cterm=reverse
@@ -678,6 +693,8 @@ if s:t_Co >= 8
hi PmenuKindSel ctermfg=Red ctermbg=Blue cterm=NONE
hi PmenuExtra ctermfg=Grey ctermbg=Black cterm=NONE
hi PmenuExtraSel ctermfg=Grey ctermbg=Blue cterm=NONE
+ hi PmenuMatch ctermfg=Grey ctermbg=Black cterm=bold
+ hi PmenuMatchSel ctermfg=White ctermbg=Blue cterm=bold
hi SignColumn ctermfg=Black ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=Black ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=Black ctermbg=White cterm=bold,reverse
@@ -691,7 +708,7 @@ if s:t_Co >= 8
hi Visual ctermfg=White ctermbg=Blue cterm=NONE
hi WildMenu ctermfg=Blue ctermbg=Grey cterm=bold
hi EndOfBuffer ctermfg=NONE ctermbg=NONE cterm=NONE
- hi Conceal ctermfg=Blue ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE
hi Cursor ctermfg=White ctermbg=DarkGray cterm=NONE
hi DiffAdd ctermfg=Green ctermbg=White cterm=reverse
hi DiffChange ctermfg=Cyan ctermbg=White cterm=reverse
@@ -852,7 +869,7 @@ endif
" Color: bg1 #ebdbb2 187 Grey
" Color: bg2 #e5d4b1 188 Grey
" Color: bg3 #bdae93 144
-" Color: bg4 #a89984 137
+" Color: bg4 #a89984 137 Grey
" Color: bg5 #ebe1b7 229 Grey
" Color: bg6 #ffffd7 231 Grey
" Color: fg0 #282828 235 DarkGray
@@ -866,6 +883,7 @@ endif
" Color: yellow #b57614 172 Yellow
" Color: blue #076678 23 Blue
" Color: purple #8f3f71 126 Magenta
+" Color: lightpurple #d3869b 175 Magenta
" Color: aqua #427b58 29 Cyan
" Color: orange #ff5f00 202 Magenta
" Term colors: fg1 neutralred neutralgreen neutralyellow neutralblue neutralpurple neutralaqua fg4
diff --git a/runtime/colors/ron.vim b/runtime/colors/ron.vim
index 684b485..4376418 100644
--- a/runtime/colors/ron.vim
+++ b/runtime/colors/ron.vim
@@ -3,7 +3,7 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:41
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -58,7 +58,7 @@ hi CursorColumn guifg=NONE guibg=#666666 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#666666 gui=NONE cterm=NONE
hi CursorLineNr guifg=#ffff00 guibg=NONE gui=bold cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#00cdcd gui=NONE cterm=NONE
-hi Conceal guifg=#e5e5e5 guibg=#a9a9a9 gui=NONE cterm=NONE
+hi Conceal guifg=#666666 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#ffffff guibg=#60a060 gui=NONE cterm=NONE
hi Directory guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
hi EndOfBuffer guifg=#ffff00 guibg=#303030 gui=NONE cterm=NONE
@@ -75,6 +75,8 @@ hi Pmenu guifg=#ffffff guibg=#444444 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#000000 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#00cdcd gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#e5e5e5 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff00ff guibg=#444444 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff00ff guibg=#00cdcd gui=NONE cterm=NONE
hi Question guifg=#00ff00 guibg=#000000 gui=bold cterm=NONE
hi Search guifg=#000000 guibg=#a9a9a9 gui=bold cterm=NONE
hi SignColumn guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
@@ -123,7 +125,7 @@ if s:t_Co >= 256
hi CursorLine ctermfg=NONE ctermbg=59 cterm=NONE
hi CursorLineNr ctermfg=226 ctermbg=NONE cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=44 cterm=NONE
- hi Conceal ctermfg=254 ctermbg=145 cterm=NONE
+ hi Conceal ctermfg=59 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=231 ctermbg=71 cterm=NONE
hi Directory ctermfg=51 ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=226 ctermbg=236 cterm=NONE
@@ -140,6 +142,8 @@ if s:t_Co >= 256
hi PmenuSbar ctermfg=NONE ctermbg=16 cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=44 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=254 cterm=NONE
+ hi PmenuMatch ctermfg=201 ctermbg=238 cterm=NONE
+ hi PmenuMatchSel ctermfg=201 ctermbg=44 cterm=NONE
hi Question ctermfg=46 ctermbg=16 cterm=NONE
hi Search ctermfg=16 ctermbg=145 cterm=NONE
hi SignColumn ctermfg=51 ctermbg=NONE cterm=NONE
@@ -191,7 +195,7 @@ if s:t_Co >= 16
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorLineNr ctermfg=yellow ctermbg=NONE cterm=underline
hi QuickFixLine ctermfg=black ctermbg=darkcyan cterm=NONE
- hi Conceal ctermfg=grey ctermbg=grey cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Cursor ctermfg=white ctermbg=green cterm=NONE
hi Directory ctermfg=cyan ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=yellow ctermbg=darkgrey cterm=NONE
@@ -208,6 +212,8 @@ if s:t_Co >= 16
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=white ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi Question ctermfg=green ctermbg=black cterm=NONE
hi Search ctermfg=black ctermbg=grey cterm=NONE
hi SignColumn ctermfg=cyan ctermbg=NONE cterm=NONE
@@ -275,6 +281,8 @@ if s:t_Co >= 8
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
+ hi PmenuMatch ctermfg=grey ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkcyan cterm=bold
hi Question ctermfg=darkgreen ctermbg=black cterm=bold
hi Search ctermfg=black ctermbg=grey cterm=NONE
hi SignColumn ctermfg=darkcyan ctermbg=NONE cterm=NONE
diff --git a/runtime/colors/shine.vim b/runtime/colors/shine.vim
index ec7da8c..58e7378 100644
--- a/runtime/colors/shine.vim
+++ b/runtime/colors/shine.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer is Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:41
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -45,6 +45,8 @@ hi Pmenu guifg=#000000 guibg=#a8a8a8 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#ffff60 gui=NONE cterm=NONE
hi PmenuSbar guifg=#ffffff guibg=#ffffff gui=NONE cterm=NONE
hi PmenuThumb guifg=#767676 guibg=#767676 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#ff0000 guibg=#a8a8a8 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff0000 guibg=#ffff60 gui=NONE cterm=NONE
hi TabLine guifg=#000000 guibg=#dadada gui=underline cterm=underline
hi TabLineFill guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel guifg=#000000 guibg=#ffffff gui=bold cterm=bold
@@ -79,7 +81,7 @@ hi Statement guifg=#2e8b57 guibg=NONE gui=bold cterm=bold
hi Type guifg=#2e8b57 guibg=NONE gui=bold cterm=bold
hi Comment guifg=#a8a8a8 guibg=NONE gui=bold cterm=NONE
hi StorageClass guifg=#ff0000 guibg=NONE gui=bold cterm=bold
-hi Conceal guifg=#dadada guibg=#767676 gui=NONE cterm=NONE
+hi Conceal guifg=#add8e6 guibg=NONE gui=NONE cterm=NONE
hi Identifier guifg=#008b8b guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#a07070 guibg=NONE gui=NONE cterm=NONE
hi Number guifg=#a07070 guibg=NONE gui=bold cterm=bold
@@ -123,6 +125,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=16 ctermbg=228 cterm=NONE
hi PmenuSbar ctermfg=231 ctermbg=231 cterm=NONE
hi PmenuThumb ctermfg=243 ctermbg=243 cterm=NONE
+ hi PmenuMatch ctermfg=196 ctermbg=248 cterm=NONE
+ hi PmenuMatchSel ctermfg=196 ctermbg=228 cterm=NONE
hi TabLine ctermfg=16 ctermbg=253 cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=16 ctermbg=231 cterm=bold
@@ -157,7 +161,7 @@ if s:t_Co >= 256
hi Type ctermfg=29 ctermbg=NONE cterm=bold
hi Comment ctermfg=248 ctermbg=NONE cterm=NONE
hi StorageClass ctermfg=196 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=253 ctermbg=243 cterm=NONE
+ hi Conceal ctermfg=153 ctermbg=NONE cterm=NONE
hi Identifier ctermfg=30 ctermbg=NONE cterm=NONE
hi Constant ctermfg=95 ctermbg=NONE cterm=NONE
hi Number ctermfg=95 ctermbg=NONE cterm=bold
@@ -192,6 +196,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
hi PmenuSbar ctermfg=white ctermbg=white cterm=NONE
hi PmenuThumb ctermfg=darkgrey ctermbg=darkgrey cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=black ctermbg=white cterm=bold
@@ -226,7 +232,7 @@ if s:t_Co >= 16
hi Type ctermfg=darkgreen ctermbg=NONE cterm=bold
hi Comment ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi StorageClass ctermfg=red ctermbg=NONE cterm=bold
- hi Conceal ctermfg=grey ctermbg=darkgrey cterm=NONE
+ hi Conceal ctermfg=blue ctermbg=NONE cterm=NONE
hi Identifier ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
hi Number ctermfg=darkred ctermbg=NONE cterm=bold
@@ -261,6 +267,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=grey ctermbg=grey cterm=NONE
hi PmenuThumb ctermfg=black ctermbg=black cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=reverse
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=grey ctermbg=black cterm=reverse
diff --git a/runtime/colors/slate.vim b/runtime/colors/slate.vim
index d58d078..b63a5fb 100644
--- a/runtime/colors/slate.vim
+++ b/runtime/colors/slate.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Ralph Amissah <ralph@amissah.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:41
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -33,10 +33,12 @@ hi StatusLineNC guifg=#666666 guibg=#afaf87 gui=NONE cterm=NONE
hi StatusLineTerm guifg=#000000 guibg=#afaf87 gui=NONE cterm=NONE
hi StatusLineTermNC guifg=#666666 guibg=#afaf87 gui=NONE cterm=NONE
hi VertSplit guifg=#666666 guibg=#afaf87 gui=NONE cterm=NONE
-hi PmenuSel guifg=#262626 guibg=#d7d787 gui=NONE cterm=NONE
hi Pmenu guifg=NONE guibg=#4a4a4a gui=NONE cterm=NONE
+hi PmenuSel guifg=#262626 guibg=#d7d787 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#262626 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#ffd700 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#d7875f guibg=#4a4a4a gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#d7875f guibg=#d7d787 gui=NONE cterm=NONE
hi TabLineSel guifg=#000000 guibg=#afaf87 gui=NONE cterm=NONE
hi TabLine guifg=#666666 guibg=#333333 gui=NONE cterm=NONE
hi TabLineFill guifg=#ff8787 guibg=#333333 gui=NONE cterm=NONE
@@ -110,10 +112,12 @@ if s:t_Co >= 256
hi StatusLineTerm ctermfg=16 ctermbg=144 cterm=NONE
hi StatusLineTermNC ctermfg=241 ctermbg=144 cterm=NONE
hi VertSplit ctermfg=241 ctermbg=144 cterm=NONE
- hi PmenuSel ctermfg=235 ctermbg=186 cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=239 cterm=NONE
+ hi PmenuSel ctermfg=235 ctermbg=186 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=235 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=220 cterm=NONE
+ hi PmenuMatch ctermfg=173 ctermbg=239 cterm=NONE
+ hi PmenuMatchSel ctermfg=173 ctermbg=186 cterm=NONE
hi TabLineSel ctermfg=16 ctermbg=144 cterm=NONE
hi TabLine ctermfg=241 ctermbg=236 cterm=NONE
hi TabLineFill ctermfg=210 ctermbg=236 cterm=NONE
@@ -180,10 +184,12 @@ if s:t_Co >= 16
hi StatusLineTerm ctermfg=white ctermbg=black cterm=bold,reverse
hi StatusLineTermNC ctermfg=black ctermbg=grey cterm=NONE
hi VertSplit ctermfg=darkgrey ctermbg=grey cterm=NONE
- hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=darkgrey cterm=NONE
+ hi PmenuSel ctermfg=black ctermbg=darkmagenta cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=yellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkmagenta cterm=bold
hi TabLineSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi TabLine ctermfg=grey ctermbg=darkgrey cterm=NONE
hi TabLineFill ctermfg=cyan ctermbg=darkgrey cterm=NONE
@@ -250,10 +256,12 @@ if s:t_Co >= 8
hi StatusLineTerm ctermfg=grey ctermbg=black cterm=bold,reverse
hi StatusLineTermNC ctermfg=grey ctermbg=black cterm=reverse
hi VertSplit ctermfg=grey ctermbg=black cterm=reverse
- hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi Pmenu ctermfg=black ctermbg=darkcyan cterm=NONE
+ hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLineSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi TabLine ctermfg=grey ctermbg=black cterm=reverse
hi TabLineFill ctermfg=grey ctermbg=black cterm=reverse
diff --git a/runtime/colors/sorbet.vim b/runtime/colors/sorbet.vim
index a762dfb..eca239e 100644
--- a/runtime/colors/sorbet.vim
+++ b/runtime/colors/sorbet.vim
@@ -4,7 +4,7 @@
" Maintainer: Maxence Weynans <neutaaaaan@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Vim License (see `:help license`)`
-" Last Updated: Fri 15 Dec 2023 20:05:42
+" Last Change: 2024 Aug 05
" Generated by Colortemplate v2.2.3
@@ -51,6 +51,9 @@ if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#d75f5f', '#87d75f', '#d7af5f', '#87afd7', '#af87d7', '#5fafaf', '#dadada', '#707070', '#ff5f5f', '#87ff5f', '#ffd75f', '#87d7ff', '#d787ff', '#5fd7d7', '#ffffff']
endif
hi Normal guifg=#dadada guibg=#161821 gui=NONE cterm=NONE
+hi Added guifg=#87d75f guibg=NONE gui=NONE cterm=NONE
+hi Changed guifg=#87afd7 guibg=NONE gui=NONE cterm=NONE
+hi Removed guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE
hi ColorColumn guifg=NONE guibg=#262831 gui=NONE cterm=NONE
hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi CurSearch guifg=#ff5fff guibg=#000000 gui=reverse cterm=reverse
@@ -73,10 +76,12 @@ hi ModeMsg guifg=#dadada guibg=NONE gui=bold cterm=bold
hi MoreMsg guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi NonText guifg=#707070 guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=#000000 guibg=#a6a8b1 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#d7005f guibg=#a6a8b1 gui=NONE cterm=NONE
hi PmenuExtra guifg=#000000 guibg=#a6a8b1 gui=NONE cterm=NONE
hi PmenuKind guifg=#000000 guibg=#a6a8b1 gui=bold cterm=bold
hi PmenuSbar guifg=#707070 guibg=#5f5f87 gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#d7d7ff gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#d7005f guibg=#d7d7ff gui=bold cterm=bold
hi PmenuExtraSel guifg=#000000 guibg=#d7d7ff gui=NONE cterm=NONE
hi PmenuKindSel guifg=#000000 guibg=#d7d7ff gui=bold cterm=bold
hi PmenuThumb guifg=#dadada guibg=#d7d7ff gui=NONE cterm=NONE
@@ -115,11 +120,13 @@ hi Underlined guifg=#dadada guibg=NONE gui=underline cterm=underline
hi CursorIM guifg=#000000 guibg=#afff00 gui=NONE cterm=NONE
hi ToolbarLine guifg=NONE guibg=#000000 gui=NONE cterm=NONE
hi ToolbarButton guifg=#dadada guibg=#000000 gui=bold cterm=bold
-hi DiffRemoved guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE
hi debugBreakpoint guifg=#8787af guibg=#000000 gui=bold,reverse cterm=bold,reverse
if s:t_Co >= 256
hi Normal ctermfg=253 ctermbg=233 cterm=NONE
+ hi Added ctermfg=113 ctermbg=NONE cterm=NONE
+ hi Changed ctermfg=110 ctermbg=NONE cterm=NONE
+ hi Removed ctermfg=167 ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=235 cterm=NONE
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi CurSearch ctermfg=207 ctermbg=16 cterm=reverse
@@ -142,10 +149,12 @@ if s:t_Co >= 256
hi MoreMsg ctermfg=253 ctermbg=NONE cterm=NONE
hi NonText ctermfg=242 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=16 ctermbg=248 cterm=NONE
+ hi PmenuMatch ctermfg=161 ctermbg=248 cterm=NONE
hi PmenuExtra ctermfg=16 ctermbg=248 cterm=NONE
hi PmenuKind ctermfg=16 ctermbg=248 cterm=bold
hi PmenuSbar ctermfg=242 ctermbg=60 cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=189 cterm=NONE
+ hi PmenuMatchSel ctermfg=161 ctermbg=189 cterm=bold
hi PmenuExtraSel ctermfg=16 ctermbg=189 cterm=NONE
hi PmenuKindSel ctermfg=16 ctermbg=189 cterm=bold
hi PmenuThumb ctermfg=253 ctermbg=189 cterm=NONE
@@ -184,7 +193,6 @@ if s:t_Co >= 256
hi CursorIM ctermfg=16 ctermbg=154 cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=16 cterm=NONE
hi ToolbarButton ctermfg=253 ctermbg=16 cterm=bold
- hi DiffRemoved ctermfg=167 ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=103 ctermbg=16 cterm=bold,reverse
unlet s:t_Co
finish
@@ -204,6 +212,9 @@ if s:t_Co >= 16
hi TabLine ctermfg=darkgrey ctermbg=NONE cterm=reverse
hi VertSplit ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Normal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
+ hi Changed ctermfg=darkblue ctermbg=NONE cterm=NONE
+ hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=NONE cterm=reverse
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
@@ -220,9 +231,11 @@ if s:t_Co >= 16
hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=NONE ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=NONE cterm=reverse
+ hi PmenuMatch ctermfg=NONE ctermbg=darkred cterm=reverse
hi PmenuExtra ctermfg=NONE ctermbg=NONE cterm=reverse
hi PmenuKind ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi PmenuSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=darkred ctermbg=NONE cterm=bold
hi PmenuExtraSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuKindSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -256,7 +269,6 @@ if s:t_Co >= 16
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=reverse
hi ToolbarButton ctermfg=NONE ctermbg=NONE cterm=bold,reverse
- hi DiffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=NONE ctermbg=NONE cterm=bold,reverse
unlet s:t_Co
finish
@@ -276,6 +288,9 @@ if s:t_Co >= 8
hi TabLine ctermfg=NONE ctermbg=NONE cterm=bold,underline
hi VertSplit ctermfg=NONE ctermbg=NONE cterm=NONE
hi Normal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE
+ hi Changed ctermfg=darkblue ctermbg=NONE cterm=NONE
+ hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=NONE cterm=reverse
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Cursor ctermfg=NONE ctermbg=NONE cterm=reverse
@@ -292,9 +307,11 @@ if s:t_Co >= 8
hi ModeMsg ctermfg=NONE ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=NONE ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=NONE cterm=reverse
+ hi PmenuMatch ctermfg=NONE ctermbg=darkred cterm=reverse
hi PmenuExtra ctermfg=NONE ctermbg=NONE cterm=reverse
hi PmenuKind ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi PmenuSel ctermfg=NONE ctermbg=NONE cterm=bold
+ hi PmenuMatchSel ctermfg=darkred ctermbg=NONE cterm=bold
hi PmenuExtraSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuKindSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -328,7 +345,6 @@ if s:t_Co >= 8
hi CursorIM ctermfg=NONE ctermbg=NONE cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=reverse
hi ToolbarButton ctermfg=NONE ctermbg=NONE cterm=bold,reverse
- hi DiffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=NONE ctermbg=NONE cterm=bold,reverse
unlet s:t_Co
finish
diff --git a/runtime/colors/torte.vim b/runtime/colors/torte.vim
index 2ad17b0..516f916 100644
--- a/runtime/colors/torte.vim
+++ b/runtime/colors/torte.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Thorsten Maerz <info@netztorte.de>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:42
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -48,7 +48,7 @@ hi CursorLineNr guifg=#ffff00 guibg=#666666 gui=NONE cterm=NONE
hi SignColumn guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
hi FoldColumn guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
hi ColorColumn guifg=#cccccc guibg=#8b0000 gui=NONE cterm=NONE
-hi Conceal guifg=#e5e5e5 guibg=#a9a9a9 gui=NONE cterm=NONE
+hi Conceal guifg=#666666 guibg=NONE gui=NONE cterm=NONE
hi Cursor guifg=#000000 guibg=#00ff00 gui=bold cterm=NONE
hi lCursor guifg=#000000 guibg=#e5e5e5 gui=NONE cterm=NONE
hi CursorIM guifg=NONE guibg=fg gui=NONE cterm=NONE
@@ -81,6 +81,8 @@ hi TabLineFill guifg=NONE guibg=#000000 gui=reverse cterm=reverse
hi TabLineSel guifg=#cccccc guibg=#000000 gui=bold cterm=bold
hi ToolbarLine guifg=NONE guibg=#000000 gui=NONE cterm=NONE
hi ToolbarButton guifg=#000000 guibg=#e5e5e5 gui=bold cterm=bold
+hi PmenuMatch guifg=#ff00ff guibg=#303030 gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#ff00ff guibg=#ffff00 gui=NONE cterm=NONE
hi Pmenu guifg=fg guibg=#303030 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
@@ -121,7 +123,7 @@ if s:t_Co >= 256
hi SignColumn ctermfg=51 ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=51 ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=251 ctermbg=88 cterm=NONE
- hi Conceal ctermfg=254 ctermbg=248 cterm=NONE
+ hi Conceal ctermfg=242 ctermbg=NONE cterm=NONE
hi Cursor ctermfg=16 ctermbg=46 cterm=NONE
hi lCursor ctermfg=16 ctermbg=254 cterm=NONE
hi CursorIM ctermfg=NONE ctermbg=fg cterm=NONE
@@ -154,6 +156,8 @@ if s:t_Co >= 256
hi TabLineSel ctermfg=251 ctermbg=16 cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=16 cterm=NONE
hi ToolbarButton ctermfg=16 ctermbg=254 cterm=bold
+ hi PmenuMatch ctermfg=201 ctermbg=236 cterm=NONE
+ hi PmenuMatchSel ctermfg=201 ctermbg=226 cterm=NONE
hi Pmenu ctermfg=fg ctermbg=236 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=16 ctermbg=226 cterm=NONE
@@ -187,7 +191,7 @@ if s:t_Co >= 16
hi SignColumn ctermfg=cyan ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=cyan ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=white ctermbg=darkred cterm=NONE
- hi Conceal ctermfg=grey ctermbg=grey cterm=NONE
+ hi Conceal ctermfg=grey ctermbg=NONE cterm=NONE
hi Cursor ctermfg=black ctermbg=green cterm=NONE
hi lCursor ctermfg=black ctermbg=grey cterm=NONE
hi CursorIM ctermfg=NONE ctermbg=fg cterm=NONE
@@ -220,6 +224,8 @@ if s:t_Co >= 16
hi TabLineSel ctermfg=white ctermbg=black cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=black cterm=NONE
hi ToolbarButton ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatch ctermfg=fg ctermbg=darkgrey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi Pmenu ctermfg=fg ctermbg=darkgrey cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
@@ -287,6 +293,8 @@ if s:t_Co >= 8
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkmagenta cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=white ctermbg=darkblue cterm=NONE
hi DiffText ctermfg=black ctermbg=grey cterm=NONE
diff --git a/runtime/colors/wildcharm.vim b/runtime/colors/wildcharm.vim
index ee1f376..15f3eda 100644
--- a/runtime/colors/wildcharm.vim
+++ b/runtime/colors/wildcharm.vim
@@ -4,7 +4,7 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Mon 08 Jan 2024 09:40:36 AM AEDT
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -26,14 +26,14 @@ if &background ==# 'dark'
let g:terminal_ansi_colors = ['#000000', '#d7005f', '#00af5f', '#d78700', '#0087d7', '#d787d7', '#00afaf', '#d0d0d0', '#767676', '#ff5f87', '#00d75f', '#ffaf00', '#00afff', '#ff87ff', '#00d7d7', '#ffffff']
endif
hi Normal guifg=#d0d0d0 guibg=#000000 gui=NONE cterm=NONE
- hi Statusline guifg=#d0d0d0 guibg=#000000 gui=reverse cterm=reverse
+ hi Statusline guifg=#9e9e9e guibg=#000000 gui=bold,reverse cterm=bold,reverse
hi StatuslineNC guifg=#767676 guibg=#000000 gui=reverse cterm=reverse
- hi VertSplit guifg=#767676 guibg=#767676 gui=NONE cterm=NONE
- hi TabLine guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
- hi TabLineFill guifg=NONE guibg=#767676 gui=NONE cterm=NONE
- hi TabLineSel guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
+ hi VertSplit guifg=#767676 guibg=NONE gui=NONE cterm=NONE
+ hi TabLine guifg=#000000 guibg=#767676 gui=NONE cterm=NONE
+ hi TabLineFill guifg=NONE guibg=#000000 gui=NONE cterm=NONE
+ hi TabLineSel guifg=#000000 guibg=#9e9e9e gui=bold cterm=bold
hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
+ hi ToolbarButton guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#ff87ff gui=NONE cterm=NONE
hi CursorLineNr guifg=#ffffff guibg=NONE gui=bold cterm=bold
hi LineNr guifg=#585858 guibg=NONE gui=NONE cterm=NONE
@@ -43,13 +43,15 @@ if &background ==# 'dark'
hi EndOfBuffer guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi EndOfBuffer guifg=#767676 guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=#d0d0d0 guibg=#303030 gui=NONE cterm=NONE
- hi PmenuSel guifg=#000000 guibg=#ffaf00 gui=NONE cterm=NONE
+ hi PmenuSel guifg=#d0d0d0 guibg=#585858 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#d0d0d0 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuKind guifg=#ff5f87 guibg=#303030 gui=NONE cterm=NONE
- hi PmenuKindSel guifg=#d7005f guibg=#ffaf00 gui=NONE cterm=NONE
+ hi PmenuKindSel guifg=#ff5f87 guibg=#585858 gui=NONE cterm=NONE
hi PmenuExtra guifg=#767676 guibg=#303030 gui=NONE cterm=NONE
- hi PmenuExtraSel guifg=#000000 guibg=#ffaf00 gui=NONE cterm=NONE
+ hi PmenuExtraSel guifg=#767676 guibg=#585858 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#d787d7 guibg=#303030 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#d787d7 guibg=#585858 gui=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error guifg=#d7005f guibg=#ffffff gui=reverse cterm=reverse
hi ErrorMsg guifg=#d7005f guibg=#ffffff gui=reverse cterm=reverse
@@ -65,7 +67,7 @@ if &background ==# 'dark'
hi debugBreakpoint guifg=#00afaf guibg=NONE gui=reverse cterm=reverse
hi Cursor guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi lCursor guifg=#000000 guibg=#ff5fff gui=NONE cterm=NONE
- hi Visual guifg=#0087d7 guibg=#000000 gui=reverse cterm=reverse
+ hi Visual guifg=#5fd7ff guibg=#000000 gui=reverse cterm=reverse
hi VisualNOS guifg=#000000 guibg=#00afff gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#262626 gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#262626 gui=NONE cterm=NONE
@@ -87,7 +89,7 @@ if &background ==# 'dark'
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#00afff guibg=NONE gui=bold cterm=bold
- hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd guifg=#afffaf guibg=#5f875f gui=NONE cterm=NONE
hi DiffChange guifg=#d0d0d0 guibg=#5f5f5f gui=NONE cterm=NONE
@@ -102,14 +104,14 @@ else
let g:terminal_ansi_colors = ['#000000', '#af0000', '#008700', '#af5f00', '#005faf', '#870087', '#008787', '#8a8a8a', '#808080', '#d70000', '#5faf5f', '#d78700', '#0087d7', '#af00af', '#00afaf', '#ffffff']
endif
hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
- hi Statusline guifg=#ffffff guibg=#5f5f5f gui=NONE cterm=NONE
+ hi Statusline guifg=#ffffff guibg=#5f5f5f gui=bold cterm=bold
hi StatuslineNC guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
- hi VertSplit guifg=#d0d0d0 guibg=#d0d0d0 gui=NONE cterm=NONE
+ hi VertSplit guifg=#5f5f5f guibg=NONE gui=NONE cterm=NONE
hi TabLine guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE
- hi TabLineFill guifg=NONE guibg=#808080 gui=NONE cterm=NONE
- hi TabLineSel guifg=#ffffff guibg=#000000 gui=reverse cterm=reverse
+ hi TabLineFill guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi TabLineSel guifg=#5f5f5f guibg=#ffffff gui=bold,reverse cterm=bold,reverse
hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
+ hi ToolbarButton guifg=#ffffff guibg=#5f5f5f gui=NONE cterm=NONE
hi QuickFixLine guifg=#ffffff guibg=#870087 gui=NONE cterm=NONE
hi CursorLineNr guifg=#000000 guibg=NONE gui=bold cterm=bold
hi LineNr guifg=#b2b2b2 guibg=NONE gui=NONE cterm=NONE
@@ -118,13 +120,15 @@ else
hi EndOfBuffer guifg=#b2b2b2 guibg=NONE gui=NONE cterm=NONE
hi SpecialKey guifg=#b2b2b2 guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=#000000 guibg=#e4e4e4 gui=NONE cterm=NONE
- hi PmenuSel guifg=#ffffff guibg=#d78700 gui=NONE cterm=NONE
+ hi PmenuSel guifg=#000000 guibg=#b2b2b2 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#808080 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuKind guifg=#d70000 guibg=#e4e4e4 gui=NONE cterm=NONE
- hi PmenuKindSel guifg=#af0000 guibg=#d78700 gui=NONE cterm=NONE
+ hi PmenuKindSel guifg=#d70000 guibg=#b2b2b2 gui=NONE cterm=NONE
hi PmenuExtra guifg=#808080 guibg=#e4e4e4 gui=NONE cterm=NONE
- hi PmenuExtraSel guifg=#ffffff guibg=#d78700 gui=NONE cterm=NONE
+ hi PmenuExtraSel guifg=#808080 guibg=#b2b2b2 gui=NONE cterm=NONE
+ hi PmenuMatch guifg=#870087 guibg=#e4e4e4 gui=NONE cterm=NONE
+ hi PmenuMatchSel guifg=#870087 guibg=#b2b2b2 gui=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error guifg=#d70000 guibg=#ffffff gui=reverse cterm=reverse
hi ErrorMsg guifg=#d70000 guibg=#ffffff gui=reverse cterm=reverse
@@ -132,7 +136,7 @@ else
hi MoreMsg guifg=#008700 guibg=NONE gui=NONE cterm=NONE
hi Question guifg=#870087 guibg=NONE gui=NONE cterm=NONE
hi WarningMsg guifg=#af5f00 guibg=NONE gui=NONE cterm=NONE
- hi Todo guifg=#8700ff guibg=#ffffff gui=reverse cterm=reverse
+ hi Todo guifg=#5f00d7 guibg=#ffffff gui=reverse cterm=reverse
hi Search guifg=#ffffff guibg=#008700 gui=NONE cterm=NONE
hi IncSearch guifg=#ffffff guibg=#d78700 gui=NONE cterm=NONE
hi WildMenu guifg=#ffffff guibg=#d78700 gui=NONE cterm=NONE
@@ -158,11 +162,11 @@ else
hi Statement guifg=#005faf guibg=NONE gui=NONE cterm=NONE
hi Type guifg=#af5f00 guibg=NONE gui=NONE cterm=NONE
hi PreProc guifg=#008787 guibg=NONE gui=NONE cterm=NONE
- hi Special guifg=#8700ff guibg=NONE gui=NONE cterm=NONE
+ hi Special guifg=#5f00d7 guibg=NONE gui=NONE cterm=NONE
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#005faf guibg=NONE gui=bold cterm=bold
- hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal guifg=#b2b2b2 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd guifg=#005f00 guibg=#afd7af gui=NONE cterm=NONE
hi DiffChange guifg=#262626 guibg=#dadada gui=NONE cterm=NONE
@@ -184,14 +188,14 @@ if s:t_Co >= 256
hi! link CurSearch IncSearch
if &background ==# 'dark'
hi Normal ctermfg=252 ctermbg=16 cterm=NONE
- hi Statusline ctermfg=252 ctermbg=16 cterm=reverse
+ hi Statusline ctermfg=247 ctermbg=16 cterm=bold,reverse
hi StatuslineNC ctermfg=243 ctermbg=16 cterm=reverse
- hi VertSplit ctermfg=243 ctermbg=243 cterm=NONE
- hi TabLine ctermfg=16 ctermbg=252 cterm=NONE
- hi TabLineFill ctermfg=NONE ctermbg=243 cterm=NONE
- hi TabLineSel ctermfg=231 ctermbg=16 cterm=NONE
+ hi VertSplit ctermfg=243 ctermbg=NONE cterm=NONE
+ hi TabLine ctermfg=16 ctermbg=243 cterm=NONE
+ hi TabLineFill ctermfg=NONE ctermbg=16 cterm=NONE
+ hi TabLineSel ctermfg=16 ctermbg=247 cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=16 ctermbg=231 cterm=NONE
+ hi ToolbarButton ctermfg=16 ctermbg=252 cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=213 cterm=NONE
hi CursorLineNr ctermfg=231 ctermbg=NONE cterm=bold
hi LineNr ctermfg=240 ctermbg=NONE cterm=NONE
@@ -201,13 +205,15 @@ if s:t_Co >= 256
hi EndOfBuffer ctermfg=240 ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=243 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=252 ctermbg=236 cterm=NONE
- hi PmenuSel ctermfg=16 ctermbg=214 cterm=NONE
+ hi PmenuSel ctermfg=252 ctermbg=240 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=252 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuKind ctermfg=204 ctermbg=236 cterm=NONE
- hi PmenuKindSel ctermfg=161 ctermbg=214 cterm=NONE
+ hi PmenuKindSel ctermfg=204 ctermbg=240 cterm=NONE
hi PmenuExtra ctermfg=243 ctermbg=236 cterm=NONE
- hi PmenuExtraSel ctermfg=16 ctermbg=214 cterm=NONE
+ hi PmenuExtraSel ctermfg=243 ctermbg=240 cterm=NONE
+ hi PmenuMatch ctermfg=176 ctermbg=236 cterm=NONE
+ hi PmenuMatchSel ctermfg=176 ctermbg=240 cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=161 ctermbg=231 cterm=reverse
hi ErrorMsg ctermfg=161 ctermbg=231 cterm=reverse
@@ -221,17 +227,17 @@ if s:t_Co >= 256
hi WildMenu ctermfg=16 ctermbg=214 cterm=NONE
hi debugPC ctermfg=32 ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=37 ctermbg=NONE cterm=reverse
- hi Visual ctermfg=32 ctermbg=16 cterm=reverse
+ hi Visual ctermfg=81 ctermbg=16 cterm=reverse
hi VisualNOS ctermfg=16 ctermbg=39 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=235 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=235 cterm=NONE
hi Folded ctermfg=243 ctermbg=236 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=236 cterm=NONE
hi MatchParen ctermfg=199 ctermbg=NONE cterm=bold
- hi SpellBad ctermfg=161 ctermbg=231 cterm=reverse
- hi SpellCap ctermfg=37 ctermbg=16 cterm=reverse
- hi SpellLocal ctermfg=41 ctermbg=16 cterm=reverse
- hi SpellRare ctermfg=213 ctermbg=16 cterm=reverse
+ hi SpellBad ctermfg=161 ctermbg=NONE cterm=underline
+ hi SpellCap ctermfg=37 ctermbg=NONE cterm=underline
+ hi SpellLocal ctermfg=41 ctermbg=NONE cterm=underline
+ hi SpellRare ctermfg=213 ctermbg=NONE cterm=underline
hi Comment ctermfg=243 ctermbg=NONE cterm=NONE
hi Constant ctermfg=204 ctermbg=NONE cterm=NONE
hi String ctermfg=41 ctermbg=NONE cterm=NONE
@@ -243,7 +249,7 @@ if s:t_Co >= 256
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=39 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=240 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=157 ctermbg=65 cterm=NONE
hi DiffChange ctermfg=252 ctermbg=59 cterm=NONE
@@ -255,14 +261,14 @@ if s:t_Co >= 256
else
" Light background
hi Normal ctermfg=16 ctermbg=231 cterm=NONE
- hi Statusline ctermfg=231 ctermbg=59 cterm=NONE
+ hi Statusline ctermfg=231 ctermbg=59 cterm=bold
hi StatuslineNC ctermfg=16 ctermbg=252 cterm=NONE
- hi VertSplit ctermfg=252 ctermbg=252 cterm=NONE
+ hi VertSplit ctermfg=59 ctermbg=NONE cterm=NONE
hi TabLine ctermfg=16 ctermbg=252 cterm=NONE
- hi TabLineFill ctermfg=NONE ctermbg=240 cterm=NONE
- hi TabLineSel ctermfg=231 ctermbg=16 cterm=reverse
+ hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi TabLineSel ctermfg=59 ctermbg=231 cterm=bold,reverse
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=231 ctermbg=16 cterm=NONE
+ hi ToolbarButton ctermfg=231 ctermbg=59 cterm=NONE
hi QuickFixLine ctermfg=231 ctermbg=90 cterm=NONE
hi CursorLineNr ctermfg=16 ctermbg=NONE cterm=bold
hi LineNr ctermfg=249 ctermbg=NONE cterm=NONE
@@ -271,13 +277,15 @@ if s:t_Co >= 256
hi EndOfBuffer ctermfg=249 ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=249 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=16 ctermbg=254 cterm=NONE
- hi PmenuSel ctermfg=231 ctermbg=172 cterm=NONE
+ hi PmenuSel ctermfg=16 ctermbg=249 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=240 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuKind ctermfg=160 ctermbg=254 cterm=NONE
- hi PmenuKindSel ctermfg=124 ctermbg=172 cterm=NONE
+ hi PmenuKindSel ctermfg=160 ctermbg=249 cterm=NONE
hi PmenuExtra ctermfg=240 ctermbg=254 cterm=NONE
- hi PmenuExtraSel ctermfg=231 ctermbg=172 cterm=NONE
+ hi PmenuExtraSel ctermfg=240 ctermbg=249 cterm=NONE
+ hi PmenuMatch ctermfg=90 ctermbg=254 cterm=NONE
+ hi PmenuMatchSel ctermfg=90 ctermbg=249 cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=160 ctermbg=231 cterm=reverse
hi ErrorMsg ctermfg=160 ctermbg=231 cterm=reverse
@@ -285,7 +293,7 @@ if s:t_Co >= 256
hi MoreMsg ctermfg=28 ctermbg=NONE cterm=NONE
hi Question ctermfg=90 ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=130 ctermbg=NONE cterm=NONE
- hi Todo ctermfg=93 ctermbg=231 cterm=reverse
+ hi Todo ctermfg=56 ctermbg=231 cterm=reverse
hi Search ctermfg=231 ctermbg=28 cterm=NONE
hi IncSearch ctermfg=231 ctermbg=172 cterm=NONE
hi WildMenu ctermfg=231 ctermbg=172 cterm=NONE
@@ -298,10 +306,10 @@ if s:t_Co >= 256
hi Folded ctermfg=240 ctermbg=254 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=254 cterm=NONE
hi MatchParen ctermfg=199 ctermbg=NONE cterm=bold
- hi SpellBad ctermfg=160 ctermbg=231 cterm=reverse
- hi SpellCap ctermfg=30 ctermbg=231 cterm=reverse
- hi SpellLocal ctermfg=28 ctermbg=231 cterm=reverse
- hi SpellRare ctermfg=127 ctermbg=231 cterm=reverse
+ hi SpellBad ctermfg=160 ctermbg=NONE cterm=underline
+ hi SpellCap ctermfg=30 ctermbg=NONE cterm=underline
+ hi SpellLocal ctermfg=28 ctermbg=NONE cterm=underline
+ hi SpellRare ctermfg=127 ctermbg=NONE cterm=underline
hi Comment ctermfg=245 ctermbg=NONE cterm=NONE
hi Constant ctermfg=124 ctermbg=NONE cterm=NONE
hi String ctermfg=28 ctermbg=NONE cterm=NONE
@@ -309,11 +317,11 @@ if s:t_Co >= 256
hi Statement ctermfg=25 ctermbg=NONE cterm=NONE
hi Type ctermfg=130 ctermbg=NONE cterm=NONE
hi PreProc ctermfg=30 ctermbg=NONE cterm=NONE
- hi Special ctermfg=93 ctermbg=NONE cterm=NONE
+ hi Special ctermfg=56 ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=25 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=249 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=22 ctermbg=151 cterm=NONE
hi DiffChange ctermfg=235 ctermbg=253 cterm=NONE
@@ -330,14 +338,14 @@ endif
if s:t_Co >= 16
if &background ==# 'dark'
hi Normal ctermfg=grey ctermbg=black cterm=NONE
- hi Statusline ctermfg=grey ctermbg=black cterm=reverse
+ hi Statusline ctermfg=grey ctermbg=black cterm=bold,reverse
hi StatuslineNC ctermfg=darkgrey ctermbg=black cterm=reverse
- hi VertSplit ctermfg=darkgrey ctermbg=darkgrey cterm=NONE
- hi TabLine ctermfg=black ctermbg=grey cterm=NONE
- hi TabLineFill ctermfg=NONE ctermbg=darkgrey cterm=NONE
- hi TabLineSel ctermfg=white ctermbg=black cterm=NONE
+ hi VertSplit ctermfg=darkgrey ctermbg=NONE cterm=NONE
+ hi TabLine ctermfg=black ctermbg=darkgrey cterm=NONE
+ hi TabLineFill ctermfg=NONE ctermbg=black cterm=NONE
+ hi TabLineSel ctermfg=black ctermbg=grey cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=black ctermbg=white cterm=NONE
+ hi ToolbarButton ctermfg=black ctermbg=grey cterm=NONE
hi QuickFixLine ctermfg=black ctermbg=magenta cterm=NONE
hi CursorLineNr ctermfg=white ctermbg=NONE cterm=bold
hi LineNr ctermfg=grey ctermbg=NONE cterm=NONE
@@ -353,6 +361,8 @@ if s:t_Co >= 16
hi PmenuKindSel ctermfg=darkred ctermbg=darkyellow cterm=NONE
hi PmenuExtra ctermfg=darkgrey ctermbg=grey cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=darkred ctermbg=white cterm=reverse
hi ErrorMsg ctermfg=darkred ctermbg=white cterm=reverse
@@ -366,17 +376,17 @@ if s:t_Co >= 16
hi WildMenu ctermfg=black ctermbg=yellow cterm=NONE
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
- hi Visual ctermfg=darkblue ctermbg=black cterm=reverse
+ hi Visual ctermfg=cyan ctermbg=black cterm=reverse
hi VisualNOS ctermfg=black ctermbg=blue cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=black ctermbg=yellow cterm=NONE
hi Folded ctermfg=black ctermbg=NONE cterm=bold
hi ColorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
hi MatchParen ctermfg=NONE ctermbg=NONE cterm=bold,underline
- hi SpellBad ctermfg=darkred ctermbg=white cterm=reverse
- hi SpellCap ctermfg=darkcyan ctermbg=black cterm=reverse
- hi SpellLocal ctermfg=green ctermbg=black cterm=reverse
- hi SpellRare ctermfg=magenta ctermbg=black cterm=reverse
+ hi SpellBad ctermfg=darkred ctermbg=NONE cterm=underline
+ hi SpellCap ctermfg=darkcyan ctermbg=NONE cterm=underline
+ hi SpellLocal ctermfg=green ctermbg=NONE cterm=underline
+ hi SpellRare ctermfg=magenta ctermbg=NONE cterm=underline
hi Comment ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Constant ctermfg=red ctermbg=NONE cterm=NONE
hi String ctermfg=green ctermbg=NONE cterm=NONE
@@ -388,7 +398,7 @@ if s:t_Co >= 16
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=blue ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=grey ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=black ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE
@@ -400,14 +410,14 @@ if s:t_Co >= 16
else
" Light background
hi Normal ctermfg=black ctermbg=white cterm=NONE
- hi Statusline ctermfg=white ctermbg=darkgrey cterm=NONE
+ hi Statusline ctermfg=white ctermbg=darkgrey cterm=bold
hi StatuslineNC ctermfg=black ctermbg=lightgrey cterm=NONE
- hi VertSplit ctermfg=lightgrey ctermbg=lightgrey cterm=NONE
+ hi VertSplit ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi TabLine ctermfg=black ctermbg=lightgrey cterm=NONE
- hi TabLineFill ctermfg=NONE ctermbg=darkgrey cterm=NONE
- hi TabLineSel ctermfg=white ctermbg=black cterm=reverse
+ hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi TabLineSel ctermfg=darkgrey ctermbg=white cterm=bold,reverse
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
- hi ToolbarButton ctermfg=white ctermbg=black cterm=NONE
+ hi ToolbarButton ctermfg=white ctermbg=darkgrey cterm=NONE
hi QuickFixLine ctermfg=white ctermbg=darkmagenta cterm=NONE
hi CursorLineNr ctermfg=black ctermbg=NONE cterm=bold
hi LineNr ctermfg=darkgrey ctermbg=NONE cterm=NONE
@@ -423,6 +433,8 @@ if s:t_Co >= 16
hi PmenuKindSel ctermfg=darkred ctermbg=darkyellow cterm=NONE
hi PmenuExtra ctermfg=darkgrey ctermbg=grey cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=red ctermbg=white cterm=reverse
hi ErrorMsg ctermfg=red ctermbg=white cterm=reverse
@@ -430,7 +442,7 @@ if s:t_Co >= 16
hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Question ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=darkyellow ctermbg=NONE cterm=NONE
- hi Todo ctermfg=darkred ctermbg=white cterm=reverse
+ hi Todo ctermfg=blue ctermbg=white cterm=reverse
hi Search ctermfg=white ctermbg=darkgreen cterm=NONE
hi IncSearch ctermfg=white ctermbg=yellow cterm=NONE
hi WildMenu ctermfg=white ctermbg=yellow cterm=NONE
@@ -443,10 +455,10 @@ if s:t_Co >= 16
hi Folded ctermfg=black ctermbg=NONE cterm=bold
hi ColorColumn ctermfg=black ctermbg=darkyellow cterm=NONE
hi MatchParen ctermfg=NONE ctermbg=NONE cterm=bold,underline
- hi SpellBad ctermfg=red ctermbg=white cterm=reverse
- hi SpellCap ctermfg=darkcyan ctermbg=white cterm=reverse
- hi SpellLocal ctermfg=darkgreen ctermbg=white cterm=reverse
- hi SpellRare ctermfg=magenta ctermbg=white cterm=reverse
+ hi SpellBad ctermfg=red ctermbg=NONE cterm=underline
+ hi SpellCap ctermfg=darkcyan ctermbg=NONE cterm=underline
+ hi SpellLocal ctermfg=darkgreen ctermbg=NONE cterm=underline
+ hi SpellRare ctermfg=magenta ctermbg=NONE cterm=underline
hi Comment ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
hi String ctermfg=darkgreen ctermbg=NONE cterm=NONE
@@ -454,11 +466,11 @@ if s:t_Co >= 16
hi Statement ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Type ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi PreProc ctermfg=darkcyan ctermbg=NONE cterm=NONE
- hi Special ctermfg=darkred ctermbg=NONE cterm=NONE
+ hi Special ctermfg=blue ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold
- hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=black ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE
@@ -477,10 +489,10 @@ if s:t_Co >= 8
hi Normal ctermfg=grey ctermbg=black cterm=NONE
hi Statusline ctermfg=grey ctermbg=black cterm=bold,reverse
hi StatuslineNC ctermfg=black ctermbg=grey cterm=NONE
- hi VertSplit ctermfg=grey ctermbg=grey cterm=NONE
- hi TabLine ctermfg=grey ctermbg=black cterm=reverse
- hi TabLineFill ctermfg=NONE ctermbg=grey cterm=NONE
- hi TabLineSel ctermfg=grey ctermbg=black cterm=NONE
+ hi VertSplit ctermfg=grey ctermbg=NONE cterm=NONE
+ hi TabLine ctermfg=grey ctermbg=black cterm=NONE
+ hi TabLineFill ctermfg=grey ctermbg=NONE cterm=NONE
+ hi TabLineSel ctermfg=grey ctermbg=black cterm=bold,reverse
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi ToolbarButton ctermfg=grey ctermbg=black cterm=bold,reverse
hi QuickFixLine ctermfg=black ctermbg=darkmagenta cterm=NONE
@@ -498,6 +510,8 @@ if s:t_Co >= 8
hi PmenuKindSel ctermfg=darkred ctermbg=darkyellow cterm=NONE
hi PmenuExtra ctermfg=black ctermbg=grey cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=grey ctermbg=darkred cterm=NONE
hi ErrorMsg ctermfg=grey ctermbg=darkred cterm=NONE
@@ -544,10 +558,10 @@ if s:t_Co >= 8
hi Normal ctermfg=black ctermbg=grey cterm=NONE
hi Statusline ctermfg=grey ctermbg=black cterm=bold
hi StatuslineNC ctermfg=grey ctermbg=darkgrey cterm=NONE
- hi VertSplit ctermfg=black ctermbg=black cterm=NONE
- hi TabLine ctermfg=black ctermbg=grey cterm=reverse
- hi TabLineFill ctermfg=NONE ctermbg=darkgrey cterm=NONE
- hi TabLineSel ctermfg=black ctermbg=grey cterm=NONE
+ hi VertSplit ctermfg=black ctermbg=NONE cterm=NONE
+ hi TabLine ctermfg=black ctermbg=grey cterm=NONE
+ hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi TabLineSel ctermfg=grey ctermbg=black cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi ToolbarButton ctermfg=grey ctermbg=black cterm=bold
hi QuickFixLine ctermfg=black ctermbg=darkmagenta cterm=NONE
@@ -565,6 +579,8 @@ if s:t_Co >= 8
hi PmenuKindSel ctermfg=darkred ctermbg=darkyellow cterm=NONE
hi PmenuExtra ctermfg=grey ctermbg=black cterm=NONE
hi PmenuExtraSel ctermfg=black ctermbg=darkyellow cterm=NONE
+ hi PmenuMatch ctermfg=grey ctermbg=black cterm=bold
+ hi PmenuMatchSel ctermfg=NONE ctermbg=darkyellow cterm=bold
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=white ctermbg=darkred cterm=NONE
hi ErrorMsg ctermfg=white ctermbg=darkred cterm=NONE
@@ -572,7 +588,7 @@ if s:t_Co >= 8
hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Question ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=darkyellow ctermbg=NONE cterm=NONE
- hi Todo ctermfg=darkred ctermbg=black cterm=reverse
+ hi Todo ctermfg=blue ctermbg=black cterm=reverse
hi Search ctermfg=darkgreen ctermbg=black cterm=reverse
hi IncSearch ctermfg=darkyellow ctermbg=black cterm=reverse
hi WildMenu ctermfg=black ctermbg=darkyellow cterm=NONE
@@ -706,6 +722,8 @@ endif
" Color: colorlC #ff5fff 207 magenta
" Color: colorDim #878787 102 grey
" Color: colorMP #ff00af 199 magenta
+" Color: colorV #5fd7ff 81 cyan
+" Color: colorSt #9e9e9e 247 grey
" Color: diffAdd #5f875f 65 darkgreen
" Color: diffAddFg #afffaf 157 black
" Color: diffDelete #875f5f 95 darkred
@@ -733,7 +751,7 @@ endif
" Color: color14 #00afaf 37 cyan
" Color: color07 #8a8a8a 245 grey
" Color: color15 #ffffff 231 white
-" Color: color16 #8700ff 93 darkred
+" Color: color16 #5f00d7 56 blue
" Color: colorCm #8a8a8a 245 darkgrey
" Color: colorLine #EEEEEE 255 grey
" Color: colorB #E4E4E4 254 grey
@@ -741,7 +759,7 @@ endif
" Color: colorTab #d0d0d0 252 lightgrey
" Color: colorC #000000 16 black
" Color: colorlC #FF00FF 201 magenta
-" Color: colorV #5F87AF 67 darkblue
+" Color: colorV #0087af 31 darkcyan
" Color: colorDim #626262 241 darkgrey
" Color: colorSt #5f5f5f 59 darkgrey
" Color: colorMP #ff00af 199 magenta
diff --git a/runtime/colors/zaibatsu.vim b/runtime/colors/zaibatsu.vim
index dba8603..02997c8 100644
--- a/runtime/colors/zaibatsu.vim
+++ b/runtime/colors/zaibatsu.vim
@@ -4,7 +4,7 @@
" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:43
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -35,6 +35,8 @@ hi PmenuExtra guifg=#878092 guibg=#ffffff gui=NONE cterm=NONE
hi! link PmenuExtraSel PmenuSel
hi PmenuKind guifg=#878092 guibg=#ffffff gui=NONE cterm=NONE
hi! link PmenuKindSel PmenuSel
+hi PmenuMatch guifg=#d700ff guibg=#ffffff gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#d700ff guibg=#afafff gui=NONE cterm=NONE
hi ColorColumn guifg=NONE guibg=#510039 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#362b49 gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#362b49 gui=NONE cterm=NONE
@@ -138,6 +140,8 @@ if s:t_Co >= 256
hi! link PmenuExtraSel PmenuSel
hi PmenuKind ctermfg=103 ctermbg=231 cterm=NONE
hi! link PmenuKindSel PmenuSel
+ hi PmenuMatch ctermfg=165 ctermbg=231 cterm=NONE
+ hi PmenuMatchSel ctermfg=165 ctermbg=147 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=52 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=237 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=237 cterm=NONE
@@ -244,6 +248,8 @@ if s:t_Co >= 16
hi! link PmenuExtraSel PmenuSel
hi PmenuKind ctermfg=darkgray ctermbg=white cterm=NONE
hi! link PmenuKindSel PmenuSel
+ hi PmenuMatch ctermfg=black ctermbg=white cterm=bold
+ hi PmenuMatchSel ctermfg=white ctermbg=blue cterm=bold
hi ColorColumn ctermfg=white ctermbg=darkred cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=NONE ctermbg=blue cterm=NONE
@@ -350,6 +356,8 @@ if s:t_Co >= 8
hi! link PmenuExtraSel PmenuSel
hi! link PmenuKind Pmenu
hi! link PmenuKindSel PmenuSel
+ hi PmenuMatch ctermfg=black ctermbg=white cterm=bold
+ hi PmenuMatchSel ctermfg=white ctermbg=blue cterm=bold
hi ColorColumn ctermfg=white ctermbg=darkred cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorColumn ctermfg=NONE ctermbg=blue cterm=NONE
diff --git a/runtime/colors/zellner.vim b/runtime/colors/zellner.vim
index 8a15004..7f11fbb 100644
--- a/runtime/colors/zellner.vim
+++ b/runtime/colors/zellner.vim
@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Ron Aaron <ron@ronware.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
-" Last Updated: Fri 15 Dec 2023 20:05:44
+" Last Change: 2024 Aug 15
" Generated by Colortemplate v2.2.3
@@ -42,6 +42,8 @@ hi Pmenu guifg=#000000 guibg=#dadada gui=NONE cterm=NONE
hi PmenuSel guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=#ffffff gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#a9a9a9 gui=NONE cterm=NONE
+hi PmenuMatch guifg=#a52a2a guibg=#dadada gui=NONE cterm=NONE
+hi PmenuMatchSel guifg=#a52a2a guibg=#ffff00 gui=NONE cterm=NONE
hi TabLine guifg=#000000 guibg=#a9a9a9 gui=underline cterm=underline
hi TabLineFill guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel guifg=#000000 guibg=#ffffff gui=bold cterm=bold
@@ -82,7 +84,7 @@ hi Type guifg=#0000ff guibg=NONE gui=NONE cterm=NONE
hi Special guifg=#ff00ff guibg=NONE gui=NONE cterm=NONE
hi Tag guifg=#006400 guibg=NONE gui=NONE cterm=NONE
hi Directory guifg=#0000ff guibg=NONE gui=bold cterm=bold
-hi Conceal guifg=#ff0000 guibg=NONE gui=NONE cterm=NONE
+hi Conceal guifg=#a9a9a9 guibg=NONE gui=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title guifg=#a020f0 guibg=NONE gui=bold cterm=bold
hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
@@ -115,6 +117,8 @@ if s:t_Co >= 256
hi PmenuSel ctermfg=16 ctermbg=226 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=231 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=248 cterm=NONE
+ hi PmenuMatch ctermfg=124 ctermbg=253 cterm=NONE
+ hi PmenuMatchSel ctermfg=124 ctermbg=226 cterm=NONE
hi TabLine ctermfg=16 ctermbg=248 cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=16 ctermbg=231 cterm=bold
@@ -155,7 +159,7 @@ if s:t_Co >= 256
hi Special ctermfg=201 ctermbg=NONE cterm=NONE
hi Tag ctermfg=22 ctermbg=NONE cterm=NONE
hi Directory ctermfg=21 ctermbg=NONE cterm=bold
- hi Conceal ctermfg=196 ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=248 ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=129 ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
@@ -183,6 +187,8 @@ if s:t_Co >= 16
hi PmenuSel ctermfg=black ctermbg=yellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=white cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgrey cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=grey cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=yellow cterm=bold
hi TabLine ctermfg=black ctermbg=grey cterm=underline
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=black ctermbg=white cterm=bold
@@ -223,7 +229,7 @@ if s:t_Co >= 16
hi Special ctermfg=magenta ctermbg=NONE cterm=NONE
hi Tag ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Directory ctermfg=blue ctermbg=NONE cterm=bold
- hi Conceal ctermfg=red ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=grey ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=darkmagenta ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
@@ -251,6 +257,8 @@ if s:t_Co >= 8
hi PmenuSel ctermfg=black ctermbg=darkyellow cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkmagenta cterm=NONE
+ hi PmenuMatch ctermfg=black ctermbg=darkcyan cterm=bold
+ hi PmenuMatchSel ctermfg=black ctermbg=darkyellow cterm=bold
hi TabLine ctermfg=black ctermbg=gray cterm=reverse
hi TabLineFill ctermfg=NONE ctermbg=NONE cterm=reverse
hi TabLineSel ctermfg=gray ctermbg=black cterm=bold,reverse
@@ -288,7 +296,7 @@ if s:t_Co >= 8
hi Type ctermfg=darkblue ctermbg=NONE cterm=bold
hi Special ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold
- hi Conceal ctermfg=darkred ctermbg=NONE cterm=NONE
+ hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi Title ctermfg=darkmagenta ctermbg=NONE cterm=bold
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
diff --git a/runtime/compiler/pandoc.vim b/runtime/compiler/pandoc.vim
index 6c15193..ecc935a 100644
--- a/runtime/compiler/pandoc.vim
+++ b/runtime/compiler/pandoc.vim
@@ -1,6 +1,7 @@
" Vim compiler file
" Compiler: Pandoc
" Maintainer: Konfekt
+" Last Change: 2024 Aug 20
"
" Expects output file extension, say `:make html` or `:make pdf`.
" Passes additional arguments to pandoc, say `:make html --self-contained`.
@@ -25,31 +26,33 @@ let s:supported_filetypes =
silent! function s:PandocFiletype(filetype) abort
let ft = a:filetype
- if ft ==# 'pandoc'
- return 'markdown'
- elseif ft ==# 'tex'
- return 'latex'
- elseif ft ==# 'xml'
- " Pandoc does not support XML as a generic input format, but it does support
- " EndNote XML and Jats XML out of which the latter seems more universal.
- return 'jats'
- elseif ft ==# 'text' || empty(ft)
- return 'markdown'
- elseif index(s:supported_filetypes, &ft) >= 0
- return ft
+
+ if ft ==# 'pandoc' | return 'markdown'
+ elseif ft ==# 'tex' | return 'latex'
+ " Pandoc does not support XML as a generic input format, but it does support
+ " EndNote XML and Jats XML out of which the latter seems more universal.
+ elseif ft ==# 'xml' | return 'jats'
+ elseif ft ==# 'text' || empty(ft) | return 'markdown'
+ elseif index(s:supported_filetypes, &ft) >= 0 | return ft
else
- echomsg 'Unsupported filetype: ' . ft . ', falling back to Markdown as input format!'
+ echomsg 'Unsupported filetype: '..ft..', falling back to Markdown as input format!'
return 'markdown'
endif
endfunction
-execute 'CompilerSet makeprg=pandoc\ --standalone' .
- \ '\ --metadata\ title=%:t:r:S' .
- \ '\ --metadata\ lang=' . matchstr(&spelllang, '^\a\a') .
- \ '\ --from=' . s:PandocFiletype(&filetype) .
- \ '\ ' . escape(get(b:, 'pandoc_compiler_args', get(g:, 'pandoc_compiler_args', '')), ' ') .
- \ '\ --output\ %:r:S.$*\ %:S'
-
-CompilerSet errorformat="%f",\ line\ %l:\ %m
+
+let b:pandoc_compiler_from = get(b:, 'pandoc_compiler_from', s:PandocFiletype(&filetype))
+let b:pandoc_compiler_lang = get(b:, 'pandoc_compiler_lang', &spell ? matchstr(&spelllang, '^\a\a') : '')
+
+execute 'CompilerSet makeprg=pandoc'..escape(
+ \ ' --standalone' .
+ \ (b:pandoc_compiler_from ==# 'markdown' && (getline(1) =~# '^%\s\+\S\+' || (search('^title:\s+\S+', 'cnw') > 0)) ?
+ \ '' : ' --metadata title=%:t:r:S') .
+ \ (empty(b:pandoc_compiler_lang) ?
+ \ '' : ' --metadata lang='..b:pandoc_compiler_lang) .
+ \ ' --from='..b:pandoc_compiler_from .
+ \ ' '..get(b:, 'pandoc_compiler_args', get(g:, 'pandoc_compiler_args', '')) .
+ \ ' --output %:r:S.$* -- %:S', ' ')
+CompilerSet errorformat=\"%f\",\ line\ %l:\ %m
let &cpo = s:keepcpo
unlet s:keepcpo
diff --git a/runtime/compiler/typst.vim b/runtime/compiler/typst.vim
new file mode 100644
index 0000000..33e5581
--- /dev/null
+++ b/runtime/compiler/typst.vim
@@ -0,0 +1,15 @@
+" Vim compiler file
+" Language: Typst
+" Maintainer: Gregory Anders
+" Last Change: 2024-07-14
+" Based on: https://github.com/kaarmu/typst.vim
+
+if exists('current_compiler')
+ finish
+endif
+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']
+
+execute 'CompilerSet makeprg=' . join(s:makeprg, '\ ')
diff --git a/runtime/doc/Make_mvc.mak b/runtime/doc/Make_mvc.mak
index f2fbc52..c387ef8 100644
--- a/runtime/doc/Make_mvc.mak
+++ b/runtime/doc/Make_mvc.mak
@@ -12,7 +12,7 @@
# Correct the following line for the where executeable file vim is installed.
# Please do not put the path in quotes.
-VIMEXE = D:\Programs\Vim\vim90\vim.exe
+VIMPROG = D:\Programs\Vim\vim90\vim.exe
# Correct the following line for the directory where iconv installed.
# Please do not put the path in quotes.
@@ -63,7 +63,7 @@ doctags : doctags.c
# Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages.
vimtags : $(DOCS)
- @"$(VIMEXE)" --clean -esX -V1 -u doctags.vim
+ @"$(VIMPROG)" --clean -esX -V1 -u doctags.vim
uganda.nsis.txt : uganda.???
@@ -105,7 +105,7 @@ perlhtml : tags $(DOCS)
# Check URLs in the help with "curl" or "powershell".
test_urls :
- "$(VIMEXE)" --clean -S test_urls.vim
+ "$(VIMPROG)" --clean -S test_urls.vim
clean :
$(RM) doctags.exe doctags.obj
diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile
index 30a4f08..785128e 100644
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -6,8 +6,7 @@
AWK = awk
-# Set to $(VIMTARGET) when executed from src/Makefile.
-VIMEXE = vim
+VIMPROG = ../../src/vim
# include the config.mk from the source directory. It's only needed to set
# AWK, used for "make html". Comment this out if the include gives problems.
@@ -23,9 +22,9 @@ include Make_all.mak
all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED)
# Use Vim to generate the tags file. Can only be used when Vim has been
-# compiled and installed. Supports multiple languages.
+# compiled. Supports multiple languages.
vimtags: $(DOCS)
- @$(VIMEXE) --clean -esX -V1 -u doctags.vim
+ @$(VIMPROG) --clean -esX -V1 -u doctags.vim
# Use "doctags" to generate the tags file. Only works for English!
tags: doctags $(DOCS)
@@ -36,19 +35,19 @@ doctags: doctags.c
$(CC) doctags.c -o doctags
vim.man: vim.1
- nroff -man $< | sed -e s/.//g > $@
+ nroff -man $? | sed -e s/.//g > $@
evim.man: evim.1
- nroff -man $< | sed -e s/.//g > $@
+ nroff -man $? | sed -e s/.//g > $@
vimdiff.man: vimdiff.1
- nroff -man $< | sed -e s/.//g > $@
+ nroff -man $? | sed -e s/.//g > $@
vimtutor.man: vimtutor.1
- nroff -man $< | sed -e s/.//g > $@
+ nroff -man $? | sed -e s/.//g > $@
xxd.man: xxd.1
- nroff -man $< | sed -e s/.//g > $@
+ nroff -man $? | sed -e s/.//g > $@
uganda.nsis.txt : uganda.???
for dpn in $?; do \
@@ -57,7 +56,7 @@ uganda.nsis.txt : uganda.???
$${dpn} | uniq > $${trg%txt}$${dpn##*.}; \
done
# This files needs to be in dos fileformat for NSIS.
- $(VIMEXE) -e -X -u NONE --cmd "set notitle noicon nocp noml viminfo=" \
+ $(VIMPROG) -e -X -u NONE --cmd "set notitle noicon nocp noml viminfo=" \
-c "argdo write ++ff=dos" -c "qa" uganda.nsis.???
# Awk version of .txt to .html conversion.
@@ -75,10 +74,10 @@ $(HTMLS): tags.ref
# index.html is the starting point for HTML, but for the help files it is
# help.txt. Therefore use vimindex.html for index.txt.
index.html: help.txt
- $(AWK) -f makehtml.awk $< >$@
+ $(AWK) -f makehtml.awk $? >$@
vimindex.html: index.txt
- $(AWK) -f makehtml.awk $< >$@
+ $(AWK) -f makehtml.awk $? >$@
tags.ref tags.html: tags
$(AWK) -f maketags.awk tags >tags.html
@@ -91,7 +90,7 @@ perlhtml: tags $(DOCS)
# Check URLs in the help with "curl".
test_urls:
- $(VIMEXE) --clean -S test_urls.vim
+ $(VIMPROG) --clean -S test_urls.vim
clean:
-rm -f doctags *.html tags.ref
@@ -152,88 +151,91 @@ os_risc.txt:
os_win32.txt:
touch $@
-# Note that $< works with GNU make while $> works for BSD make.
-# Is there a solution that works for both??
+# In *BSD, the variable '$<' is used in suffix-transformation rules (in GNU this
+# is called "implicit rules", and in MS Windows it is called "inference rules").
+# For code portability, it is better to use the '$?' variable for explicit rules.
+# Especially since there is only one dependency and it should presumably always
+# be newer than the target file.
vim-da.UTF-8.1: vim-da.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vimdiff-da.UTF-8.1: vimdiff-da.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vimtutor-da.UTF-8.1: vimtutor-da.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vim-de.UTF-8.1: vim-de.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vim-fr.UTF-8.1: vim-fr.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
evim-fr.UTF-8.1: evim-fr.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vimdiff-fr.UTF-8.1: vimdiff-fr.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vimtutor-fr.UTF-8.1: vimtutor-fr.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
xxd-fr.UTF-8.1: xxd-fr.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vim-it.UTF-8.1: vim-it.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
evim-it.UTF-8.1: evim-it.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vimdiff-it.UTF-8.1: vimdiff-it.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vimtutor-it.UTF-8.1: vimtutor-it.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
xxd-it.UTF-8.1: xxd-it.1
- iconv -f latin1 -t utf-8 $< >$@
+ iconv -f latin1 -t UTF-8 $? >$@
vim-pl.UTF-8.1: vim-pl.1
- iconv -f latin2 -t utf-8 $< >$@
+ iconv -f latin2 -t UTF-8 $? >$@
evim-pl.UTF-8.1: evim-pl.1
- iconv -f latin2 -t utf-8 $< >$@
+ iconv -f latin2 -t UTF-8 $? >$@
vimdiff-pl.UTF-8.1: vimdiff-pl.1
- iconv -f latin2 -t utf-8 $< >$@
+ iconv -f latin2 -t UTF-8 $? >$@
vimtutor-pl.UTF-8.1: vimtutor-pl.1
- iconv -f latin2 -t utf-8 $< >$@
+ iconv -f latin2 -t UTF-8 $? >$@
xxd-pl.UTF-8.1: xxd-pl.1
- iconv -f latin2 -t utf-8 $< >$@
+ iconv -f latin2 -t UTF-8 $? >$@
vim-ru.UTF-8.1: vim-ru.1
- iconv -f KOI8-R -t utf-8 $< >$@
+ iconv -f KOI8-R -t UTF-8 $? >$@
evim-ru.UTF-8.1: evim-ru.1
- iconv -f KOI8-R -t utf-8 $< >$@
+ iconv -f KOI8-R -t UTF-8 $? >$@
vimdiff-ru.UTF-8.1: vimdiff-ru.1
- iconv -f KOI8-R -t utf-8 $< >$@
+ iconv -f KOI8-R -t UTF-8 $? >$@
vimtutor-ru.UTF-8.1: vimtutor-ru.1
- iconv -f KOI8-R -t utf-8 $< >$@
+ iconv -f KOI8-R -t UTF-8 $? >$@
xxd-ru.UTF-8.1: xxd-ru.1
- iconv -f KOI8-R -t utf-8 $< >$@
+ iconv -f KOI8-R -t UTF-8 $? >$@
vim-tr.UTF-8.1: vim-tr.1
- iconv -f latin5 -t utf-8 $< >$@
+ iconv -f latin5 -t UTF-8 $? >$@
evim-tr.UTF-8.1: evim-tr.1
- iconv -f latin5 -t utf-8 $< >$@
+ iconv -f latin5 -t UTF-8 $? >$@
vimdiff-tr.UTF-8.1: vimdiff-tr.1
- iconv -f latin5 -t utf-8 $< >$@
+ iconv -f latin5 -t UTF-8 $? >$@
vimtutor-tr.UTF-8.1: vimtutor-tr.1
- iconv -f latin5 -t utf-8 $< >$@
+ iconv -f latin5 -t UTF-8 $? >$@
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 037f89c..f200a30 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt* For Vim version 9.1. Last change: 2024 May 05
+*autocmd.txt* For Vim version 9.1. Last change: 2024 Aug 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -54,20 +54,20 @@ Recommended use:
without the autocommand being repeated.
Example in Vim9 script: >
- autocmd_add({replace: true,
+ autocmd_add([{replace: true,
group: 'DemoGroup',
event: 'BufEnter',
pattern: '*.txt',
cmd: 'call DemoBufEnter()'
- })
+ }])
In legacy script: >
- call autocmd_add(#{replace: v:true,
+ call autocmd_add([#{replace: v:true,
\ group: 'DemoGroup',
\ event: 'BufEnter',
\ pattern: '*.txt',
\ cmd: 'call DemoBufEnter()'
- \ })
+ \ }])
==============================================================================
2. Defining autocommands *autocmd-define*
@@ -379,6 +379,7 @@ Name triggered by ~
|CursorHold| the user doesn't press a key for a while
|CursorHoldI| the user doesn't press a key for a while in Insert mode
|CursorMoved| the cursor was moved in Normal mode
+|CursorMovedC| the cursor was moved in the |Command-line|
|CursorMovedI| the cursor was moved in Insert mode
|WinNewPre| before creating a new window
@@ -438,6 +439,8 @@ Name triggered by ~
|CompleteDone| after Insert mode completion is done, after clearing
info
+|KeyInputPre| just before a key is processed
+
|User| to be used in combination with ":doautocmd"
|SigUSR1| after the SIGUSR1 signal has been detected
@@ -748,6 +751,13 @@ CursorMoved After the cursor was moved in Normal or Visual
Careful: This is triggered very often, don't
do anything that the user does not expect or
that is slow.
+ *CursorMovedC*
+CursorMovedC After the cursor was moved in the command
+ line. Be careful not to mess up the command
+ line, it may cause Vim to lock up.
+ <afile> is set to a single character,
+ indicating the type of command-line.
+ |cmdwin-char|
*CursorMovedI*
CursorMovedI After the cursor was moved in Insert mode.
Not triggered when the popup menu is visible.
@@ -906,12 +916,12 @@ FilterWritePre Before writing a file for a filter command or
*FocusGained*
FocusGained When Vim got input focus. Only for the GUI
version and a few console versions where this
- can be detected.
+ can be detected. |xterm-focus-event|
*FocusLost*
FocusLost When Vim lost input focus. Only for the GUI
version and a few console versions where this
- can be detected. May also happen when a
- dialog pops up.
+ can be detected. |xterm-focus-event|
+ May also happen when a dialog pops up.
*FuncUndefined*
FuncUndefined When a user function is used but it isn't
defined. Useful for defining a function only
@@ -969,6 +979,26 @@ InsertLeavePre Just before leaving Insert mode. Also when
*InsertLeave*
InsertLeave Just after leaving Insert mode. Also when
using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
+ *KeyInputPre*
+KeyInputPre Just before a key is processed after mappings
+ have been applied. The pattern is matched
+ against a string that indicates the current
+ mode, which is the same as what is returned by
+ `mode(1)`.
+ The |v:char| variable indicates the key typed
+ and can be changed during the event to process
+ a different key. When |v:char| is not a
+ single character or a special key, the first
+ character is used.
+ The following values of |v:event| are set:
+ typed The key is typed or not.
+ typedchar The (actual) typed key since
+ the last |KeyInputPre| call.
+ Note: "typedchar" may be empty if successive
+ |KeyInputPre| autocmds are processed.
+ It is not allowed to change the text
+ |textlock| or the current mode.
+ {only with the +eval feature}
*MenuPopup*
MenuPopup Just before showing the popup menu (under the
right mouse button). Useful for adjusting the
@@ -1400,8 +1430,10 @@ WinLeave Before leaving a window. If the window to be
*WinNewPre*
WinNewPre Before creating a new window. Triggered
before commands that modify window layout by
- creating a split or new tab page. Not done for
- the first window, when Vim has just started.
+ creating a split.
+ Not done when creating tab pages and for the
+ first window, as the window structure is not
+ initialized yet and so is generally not safe.
It is not allowed to modify window layout
while executing commands for the WinNewPre
event.
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index a824531..4192b81 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt* For Vim version 9.1. Last change: 2024 Jun 17
+*builtin.txt* For Vim version 9.1. Last change: 2024 Aug 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -28,9 +28,9 @@ acos({expr}) Float arc cosine of {expr}
add({object}, {item}) List/Blob append {item} to {object}
and({expr}, {expr}) Number bitwise AND
append({lnum}, {text}) Number append {text} below line {lnum}
-appendbufline({expr}, {lnum}, {text})
+appendbufline({buf}, {lnum}, {text})
Number append {text} below line {lnum}
- in buffer {expr}
+ in buffer {buf}
argc([{winid}]) Number number of files in the argument list
argidx() Number current index in the argument list
arglistid([{winnr} [, {tabnr}]]) Number argument list id
@@ -67,6 +67,8 @@ autocmd_get([{opts}]) List return a list of autocmds
balloon_gettext() String current text in the balloon
balloon_show({expr}) none show {expr} inside the balloon
balloon_split({msg}) List split {msg} as used for a balloon
+bindtextdomain({package}, {path})
+ Bool bind text domain to specified path
blob2list({blob}) List convert {blob} into a list of numbers
browse({save}, {title}, {initdir}, {default})
String put up a file requester
@@ -153,8 +155,8 @@ diff_filler({lnum}) Number diff filler lines about {lnum}
diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col}
digraph_get({chars}) String get the |digraph| of {chars}
digraph_getlist([{listall}]) List get all |digraph|s
-digraph_set({chars}, {digraph}) Boolean register |digraph|
-digraph_setlist({digraphlist}) Boolean register multiple |digraph|s
+digraph_set({chars}, {digraph}) Bool register |digraph|
+digraph_setlist({digraphlist}) Bool register multiple |digraph|s
echoraw({expr}) none output {expr} as-is
empty({expr}) Number |TRUE| if {expr} is empty
environ() Dict return environment variables
@@ -277,7 +279,7 @@ gettabvar({nr}, {varname} [, {def}])
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr}
gettagstack([{nr}]) Dict get the tag stack of window {nr}
-gettext({text}) String lookup translation of {text}
+gettext({text} [, {package}]) String lookup translation of {text}
getwininfo([{winid}]) List list of info about each window
getwinpos([{timeout}]) List X and Y coord in pixels of Vim window
getwinposx() Number X coord in pixels of the Vim window
@@ -306,6 +308,7 @@ hlget([{name} [, {resolve}]]) List get highlight group attributes
hlset({list}) Number set highlight group attributes
hostname() String name of the machine Vim is running on
iconv({expr}, {from}, {to}) String convert encoding of {expr}
+id({item}) String get unique identity string of item
indent({lnum}) Number indent of line {lnum}
index({object}, {expr} [, {start} [, {ic}]])
Number index in {object} where {expr} appears
@@ -429,6 +432,7 @@ popup_menu({what}, {options}) Number create a popup window used as a menu
popup_move({id}, {options}) none set position of popup window {id}
popup_notification({what}, {options})
Number create a notification popup window
+popup_setbuf({id}, {buf}) Bool set the buffer for the popup window {id}
popup_setoptions({id}, {options})
none set options for popup window {id}
popup_settext({id}, {text}) none set the text of popup window {id}
@@ -525,9 +529,9 @@ searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
server2client({clientid}, {string})
Number send reply string
serverlist() String get a list of available servers
-setbufline({expr}, {lnum}, {text})
+setbufline({buf}, {lnum}, {text})
Number set line {lnum} to {text} in buffer
- {expr}
+ {buf}
setbufvar({buf}, {varname}, {val})
none set {varname} in buffer {buf} to {val}
setcellwidths({list}) none set character cell width overrides
@@ -1217,6 +1221,16 @@ balloon_split({msg}) *balloon_split()*
Return type: list<any> or list<string>
+bindtextdomain({package}, {path}) *bindtextdomain()*
+ Bind a specific {package} to a {path} so that the
+ |gettext()| function can be used to get language-specific
+ translations for a package. {path} is the directory name
+ for the translations. See |package-translation|.
+
+ Returns v:true on success and v:false on failure (out of
+ memory).
+
+ Return type: |vim9-boolean|
blob2list({blob}) *blob2list()*
Return a List containing the number value of each byte in Blob
@@ -2518,8 +2532,10 @@ executable({expr}) *executable()*
This function checks if an executable with the name {expr}
exists. {expr} must be the name of the program without any
arguments.
+
executable() uses the value of $PATH and/or the normal
- searchpath for programs. *PATHEXT*
+ searchpath for programs.
+ *PATHEXT*
On MS-Windows the ".exe", ".bat", etc. can optionally be
included. Then the extensions in $PATHEXT are tried. Thus if
"foo.exe" does not exist, "foo.exe.bat" can be found. If
@@ -2529,11 +2545,14 @@ executable({expr}) *executable()*
then the name is also tried without adding an extension.
On MS-Windows it only checks if the file exists and is not a
directory, not if it's really executable.
- On MS-Windows an executable in the same directory as Vim is
- normally found. Since this directory is added to $PATH it
- should also work to execute it |win32-PATH|. This can be
- disabled by setting the $NoDefaultCurrentDirectoryInExePath
- environment variable. *NoDefaultCurrentDirectoryInExePath*
+ On MS-Windows an executable in the same directory as the Vim
+ executable is always found. Since this directory is added to
+ $PATH it should also work to execute it |win32-PATH|.
+ *NoDefaultCurrentDirectoryInExePath*
+ On MS-Windows an executable in Vim's current working directory
+ is also normally found, but this can be disabled by setting
+ the $NoDefaultCurrentDirectoryInExePath environment variable.
+
The result is a Number:
1 exists
0 does not exist
@@ -2579,7 +2598,7 @@ execute({command} [, {silent}]) *execute()*
Can also be used as a |method|: >
GetCommand()->execute()
<
- Return type: |Number|
+ Return type: |String|
exepath({expr}) *exepath()*
@@ -3563,7 +3582,7 @@ garbagecollect([{atexit}]) *garbagecollect()*
Return type: |String|
-get({list}, {idx} [, {default}]) *get()*
+get({list}, {idx} [, {default}]) *get()* *get()-list*
Get item {idx} from |List| {list}. When this item is not
available return {default}. Return zero when {default} is
omitted.
@@ -3572,7 +3591,7 @@ get({list}, {idx} [, {default}]) *get()*
<
Return type: any, depending on {list}
-get({blob}, {idx} [, {default}])
+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
omitted.
@@ -3581,7 +3600,7 @@ get({blob}, {idx} [, {default}])
<
Return type: |Number|
-get({dict}, {key} [, {default}])
+get({dict}, {key} [, {default}]) *get()-dict*
Get item with key {key} from |Dictionary| {dict}. When this
item is not available return {default}. Return zero when
{default} is omitted. Useful example: >
@@ -3593,18 +3612,32 @@ get({dict}, {key} [, {default}])
<
Return type: any, depending on {dict}
-get({func}, {what})
- Get item {what} from Funcref {func}. Possible values for
+get({func}, {what}) *get()-func*
+ Get item {what} from |Funcref| {func}. Possible values for
{what} are:
- "name" The function name
- "func" The function
- "dict" The dictionary
- "args" The list with arguments
+ "name" The function name
+ "func" The function
+ "dict" The dictionary
+ "args" The list with arguments
+ "arity" A dictionary with information about the number of
+ arguments accepted by the function (minus the
+ {arglist}) with the following fields:
+ required the number of positional arguments
+ optional the number of optional arguments,
+ in addition to the required ones
+ varargs |TRUE| if the function accepts a
+ variable number of arguments |...|
+
+ Note: There is no error, if the {arglist} of
+ the Funcref contains more arguments than the
+ Funcref expects, it's not validated.
+
Returns zero on error.
+
Preferably used as a |method|: >
myfunc->get(what)
<
- Return type: any, depending on {func}
+ Return type: any, depending on {func} and {what}
*getbufinfo()*
getbufinfo([{buf}])
@@ -4036,6 +4069,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
customlist,{func} custom completion, defined via {func}
diff_buffer |:diffget| and |:diffput| completion
dir directory names
+ dir_in_path directory names in |'cdpath'|
environment environment variable names
event autocommand events
expression Vim expression
@@ -4774,6 +4808,8 @@ getregion({pos1}, {pos2} [, {opts}]) *getregion()*
<
Can also be used as a |method|: >
getpos('.')->getregion(getpos("'a"))
+<
+ Return type: list<string>
<
getregionpos({pos1}, {pos2} [, {opts}]) *getregionpos()*
@@ -4811,7 +4847,7 @@ getregionpos({pos1}, {pos2} [, {opts}]) *getregionpos()*
Can also be used as a |method|: >
getpos('.')->getregionpos(getpos("'a"))
<
- Return type: list<string>
+ Return type: list<list<list<number>>>
getregtype([{regname}]) *getregtype()*
@@ -4977,16 +5013,20 @@ gettagstack([{winnr}]) *gettagstack()*
Return type: dict<any>
-gettext({text}) *gettext()*
+gettext({text} [, {package}]) *gettext()*
Translate String {text} if possible.
- This is mainly for use in the distributed Vim scripts. When
- generating message translations the {text} is extracted by
- xgettext, the translator can add the translated message in the
- .po file and Vim will lookup the translation when gettext() is
- called.
+ This is intended for use in Vim scripts. When generating
+ message translations the {text} is extracted by `xgettext`,
+ the translator can add translated messages into the .po file
+ and Vim will lookup the translation when gettext() is called.
For {text} double quoted strings are preferred, because
- xgettext does not understand escaping in single quoted
- strings.
+ `xgettext` does not support single quoted escaped text.
+
+ When the {package} is specified, the translation is looked up
+ for that specific package. This is mainly required for
+ third-party Vim scripts. You need to specify a path to the
+ translations with the |bindtextdomain()| function before
+ using the gettext() function.
Return type: |String|
@@ -5590,6 +5630,34 @@ iconv({string}, {from}, {to}) *iconv()*
Return type: |String|
+id({item}) *id()*
+ The result is a unique String associated with the {item} and
+ not with the {item}'s contents. It is only valid while the
+ {item} exists and is referenced. It is valid only in the
+ instance of vim that produces the result. The whole idea is
+ that `id({item})` does not change if the contents of {item}
+ changes. This is useful as a `key` for creating an identity
+ dictionary, rather than one based on equals.
+
+ This operation does not reference {item} and there is no
+ function to convert the `id` to the {item}. It may be useful to
+ have a map of `id` to {item}. The following >
+ var referenceMap: dict<any>
+ var id = item->id()
+ referenceMap[id] = item
+< 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
+ value, then an empty String is returned.
+
+ Can also be used as a |method|: >
+ GetItem()->id()
+<
+ Return type: |String|
+
+
indent({lnum}) *indent()*
The result is a Number, which is indent of line {lnum} in the
current buffer. The indent is counted in spaces, the value
@@ -6883,10 +6951,10 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
Same as |matchadd()|, but requires a list of positions {pos}
instead of a pattern. This command is faster than |matchadd()|
- because it does not require to handle regular expressions and
- sets buffer line boundaries to redraw screen. It is supposed
- to be used when fast match additions and deletions are
- required, for example to highlight matching parentheses.
+ because it does not handle regular expressions and it sets
+ buffer line boundaries to redraw screen. It is supposed to be
+ used when fast match additions and deletions are required, for
+ example to highlight matching parentheses.
{pos} is a list of positions. Each position can be one of
these:
@@ -8078,7 +8146,7 @@ pyxeval({expr}) *pyxeval()*
See also: |pyeval()|, |py3eval()|
Can also be used as a |method|: >
- < GetExpr()->pyxeval()
+ GetExpr()->pyxeval()
<
Return type: any, depending on {expr}
@@ -9486,7 +9554,8 @@ setline({lnum}, {text}) *setline()*
Set line {lnum} of the current buffer to {text}. To insert
lines use |append()|. To set lines in another buffer use
|setbufline()|.
- Any text properties in {lnum} are cleared |text-prop-cleared|.
+ Any text properties in {lnum} are cleared. See
+ |text-prop-cleared|
{lnum} is used like with |getline()|.
When {lnum} is just below the last line the {text} will be
@@ -10270,8 +10339,8 @@ spellsuggest({word} [, {max} [, {capital}]]) *spellsuggest()*
split({string} [, {pattern} [, {keepempty}]]) *split()*
Make a |List| out of {string}. When {pattern} is omitted or
- empty each white-separated sequence of characters becomes an
- item.
+ empty each white space separated sequence of characters
+ becomes an item.
Otherwise the string is split where {pattern} matches,
removing the matched characters. 'ignorecase' is not used
here, add \c to ignore case. |/\c|
@@ -11039,7 +11108,7 @@ synconcealed({lnum}, {col}) *synconcealed()*
Note: Doesn't consider |matchadd()| highlighting items,
since syntax and matching highlighting are two different
mechanisms |syntax-vs-match|.
-<
+
Return type: list<any>
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 50ff4ec..2304712 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 May 18
+*change.txt* For Vim version 9.1. Last change: 2024 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -95,13 +95,14 @@ For inserting text see |insert.txt|.
These commands delete text. You can repeat them with the `.` command
(except `:d`) and undo them. Use Visual mode to delete blocks of text. See
|registers| for an explanation of registers.
-
+ *d-special*
An exception for the d{motion} command: If the motion is not linewise, the
start and end of the motion are not in the same line, and there are only
blanks before the start and there are no non-blanks after the end of the
motion, the delete becomes linewise. This means that the delete also removes
the line of blanks that you might expect to remain. Use the |o_v| operator to
-force the motion to be characterwise.
+force the motion to be characterwise or remove the "z" flag from 'cpoptions'
+(see |cpo-z|) to disable this peculiarity.
Trying to delete an empty region of text (e.g., "d0" in the first column)
is an error when 'cpoptions' includes the 'E' flag.
@@ -251,7 +252,7 @@ blank; this is probably a bug, because "dw" deletes all the blanks; use the
If you prefer "cw" to include the space after a word, use this mapping: >
:map cw dwi
-Or use "caw" (see |aw|).
+Alternatively use "caw" (see also |aw| and |cpo-z|).
*:c* *:ch* *:change*
:{range}c[hange][!] Replace lines of text with some different text.
@@ -1272,13 +1273,13 @@ Vim fills these registers with text from yank and delete commands.
Numbered register 0 contains the text from the most recent yank command,
unless the command specified another register with ["x].
Numbered register 1 contains the text deleted by the most recent delete or
-change command, unless the command specified another register or the text is
-less than one line (the small delete register is used then). An exception is
-made for the delete operator with these movement commands: |%|, |(|, |)|, |`|,
-|/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi
-compatible). The "- register is used as well if the delete is within a line.
-Note that these characters may be mapped. E.g. |%| is mapped by the matchit
-plugin.
+change command (even when the command specified another register), unless the
+text is less than one line (the small delete register is used then). An
+exception is made for the delete operator with these movement commands: |%|,
+|(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|.
+Register "1 is always used then (this is Vi compatible). The "- register is
+used as well if the delete is within a line. Note that these characters may be
+mapped. E.g. |%| is mapped by the matchit plugin.
With each successive deletion or change, Vim shifts the previous contents
of register 1 into register 2, 2 into 3, and so forth, losing the previous
contents of register 9.
@@ -1413,7 +1414,7 @@ The next three commands always work on whole lines.
:[range]m[ove] {address} *:m* *:mo* *:move* *E134*
Move the lines given by [range] to below the line
given by {address}.
- Any text properties in [range] are cleared
+ Any text properties in [range] are cleared. See
|text-prop-cleared|.
==============================================================================
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index f294679..c1fae51 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -1,4 +1,4 @@
-*channel.txt* For Vim version 9.1. Last change: 2024 Jun 13
+*channel.txt* For Vim version 9.1. Last change: 2024 Jul 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -981,8 +981,9 @@ job_start({command} [, {options}]) *job_start()*
invoked.
{command} can be a String. This works best on MS-Windows. On
- Unix it is split up in white-separated parts to be passed to
- execvp(). Arguments in double quotes can contain white space.
+ Unix it is split up in white space separated parts to be
+ passed to execvp(). Arguments in double quotes can contain
+ white space.
{command} can be a List, where the first item is the executable
and further items are the arguments. All items are converted
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 214571f..d1ef7ba 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 Apr 27
+*cmdline.txt* For Vim version 9.1. Last change: 2024 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -379,7 +379,8 @@ terminals)
:keepp[atterns] {command} *:keepp* *:keeppatterns*
Execute {command}, without adding anything to the search
- history
+ history and, in case of |:s| or |:&|, without modifying the
+ last substitute pattern or substitute string.
==============================================================================
2. Command-line completion *cmdline-completion*
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index ca8f0ae..4d477cf 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt* For Vim version 9.1. Last change: 2024 Apr 12
+*editing.txt* For Vim version 9.1. Last change: 2024 Jul 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1804,7 +1804,7 @@ There are three different types of searching:
stop-directories are appended to the path (for the 'path' option) or to
the filename (for the 'tags' option) with a ';'. If you want several
stop-directories separate them with ';'. If you want no stop-directory
- ("search upward till the root directory) just use ';'. >
+ ("search upward till the root directory") just use ';'. >
/usr/include/sys;/usr
< will search in: >
/usr/include/sys
@@ -1817,7 +1817,7 @@ There are three different types of searching:
If Vim's current path is /u/user_x/work/release and you do >
:set path=include;/u/user_x
-< and then search for a file with |gf| the file is searched in: >
+< and then search for a file with |gf| the file is searched in: >
/u/user_x/work/release/include
/u/user_x/work/include
/u/user_x/include
@@ -1829,7 +1829,7 @@ There are three different types of searching:
3) Combined up/downward search:
If Vim's current path is /u/user_x/work/release and you do >
set path=**;/u/user_x
-< and then search for a file with |gf| the file is searched in: >
+< and then search for a file with |gf| the file is searched in: >
/u/user_x/work/release/**
/u/user_x/work/**
/u/user_x/**
@@ -1841,10 +1841,10 @@ There are three different types of searching:
In the above example you might want to set path to: >
:set path=**,/u/user_x/**
-< This searches:
- /u/user_x/work/release/** ~
- /u/user_x/** ~
- This searches the same directories, but in a different order.
+< This searches: >
+ /u/user_x/work/release/**
+ /u/user_x/**
+< This searches the same directories, but in a different order.
Note that completion for ":find", ":sfind", and ":tabfind" commands do not
currently work with 'path' items that contain a URL or use the double star
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 18cd2c1..e2c6967 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 9.1. Last change: 2024 Jun 01
+*eval.txt* For Vim version 9.1. Last change: 2024 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1995,7 +1995,8 @@ v:beval_winid The |window-ID| of the window, over which the mouse pointer
*v:char* *char-variable*
v:char Argument for evaluating 'formatexpr' and used for the typed
character when using <expr> in an abbreviation |:map-<expr>|.
- It is also used by the |InsertCharPre| and |InsertEnter| events.
+ It is also used by the |InsertCharPre|, |InsertEnter| and
+ |KeyInputPre| events.
*v:charconvert_from* *charconvert_from-variable*
v:charconvert_from
@@ -3123,9 +3124,10 @@ text...
let lconst[0] = 2 " Error!
let lconst[1][0] = 'b' " OK
< *E995*
- |:const| does not allow to for changing a variable: >
+ It is an error to specify an existing variable with
+ |:const|. >
:let x = 1
- :const x = 2 " Error!
+ :const x = 1 " Error!
< *E996*
Note that environment variables, option values and
register values cannot be used here, since they cannot
diff --git a/runtime/doc/evim-it.1 b/runtime/doc/evim-it.1
index 75be4e8..778b54d 100644
--- a/runtime/doc/evim-it.1
+++ b/runtime/doc/evim-it.1
@@ -1,4 +1,4 @@
-.TH EVIM 1 "16 febbraio 2002 "
+.TH EVIM 1 "12 agosto 2024"
.SH NOME
evim \- Vim "facile", impostato in modo da poter essere usato come editore non-modale
.SH SINTASSI
@@ -34,8 +34,12 @@ Occorre usare CTRL-Q per ottenere il comportamenti di CTRL-V in Vim nativo.
Vedere vim(1).
.SH FILE
.TP 15
-/usr/local/lib/vim/evim.vim
+/usr/local/share/vim??/evim.vim
Lo script caricato per inizializzare eVim.
+.br
+.I vim??
+è il numero breve di versione, p.es. vim91 per
+.B Vim 9.1
.SH AKA
[Also Known As] noto anche come "Vim per semplici".
Quando is usa evim si suppone che si prenda un fazzoletto,
diff --git a/runtime/doc/evim-it.UTF-8.1 b/runtime/doc/evim-it.UTF-8.1
index 04bec41..914bec5 100644
--- a/runtime/doc/evim-it.UTF-8.1
+++ b/runtime/doc/evim-it.UTF-8.1
@@ -1,4 +1,4 @@
-.TH EVIM 1 "16 febbraio 2002 "
+.TH EVIM 1 "12 agosto 2024"
.SH NOME
evim \- Vim "facile", impostato in modo da poter essere usato come editore non-modale
.SH SINTASSI
@@ -34,8 +34,12 @@ Occorre usare CTRL-Q per ottenere il comportamenti di CTRL-V in Vim nativo.
Vedere vim(1).
.SH FILE
.TP 15
-/usr/local/lib/vim/evim.vim
+/usr/local/share/vim??/evim.vim
Lo script caricato per inizializzare eVim.
+.br
+.I vim??
+è il numero breve di versione, p.es. vim91 per
+.B Vim 9.1
.SH AKA
[Also Known As] noto anche come "Vim per semplici".
Quando is usa evim si suppone che si prenda un fazzoletto,
diff --git a/runtime/doc/evim-ru.1 b/runtime/doc/evim-ru.1
index 6d6f5de..dab75ce 100644
--- a/runtime/doc/evim-ru.1
+++ b/runtime/doc/evim-ru.1
@@ -1,59 +1,69 @@
-.TH EVIM 1 "2002 February 16"
-.SH éíñ
-evim \- ÐÒÏÓÔÏÊ Vim, ÐÏÚ×ÏÌÑÅÔ ÒÅÄÁËÔÉÒÏ×ÁÔØ ÆÁÊÌ Ó ÐÏÍÏÝØÀ Vim × ÂÅÚÒÅÖÉÍÎÏÍ ÒÅÖÉÍÅ
-.SH ëïíáîäîáñ óôòïëá
+.TH EVIM 1 "12 Á×ÇÕÓÔÁ 2024"
+.SH îáúîáþåîéå
+ðÒÏÇÒÁÍÍÁ evim \[em] ÜÔÏ ÕÐÒÏÝ£ÎÎÙÊ Vim, ËÏÔÏÒÁÑ ÐÒÏÉÚ×ÏÄÉÔ ÚÁÐÕÓË ÒÅÄÁËÔÏÒÁ Vim
+× ÂÅÚÒÅÖÉÍÎÏÍ ×ÁÒÉÁÎÔÅ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×.
+.SH ëòáôëéê ïâúïò
.br
.B evim
-[ËÌÀÞÉ] [ÆÁÊÌ ..]
+[ÁÒÇÕÍÅÎÔÙ] [ÆÁÊÌ ...]
.br
.B eview
.SH ïðéóáîéå
-ëÏÍÁÎÄÁ
+ðÏ ËÏÍÁÎÄÅ
.B evim
-ÚÁÐÕÓËÁÅÔ
+ÚÁÐÕÓËÁÅÔÓÑ ÒÅÄÁËÔÏÒ
.B Vim
-É ÎÁÓÔÒÁÉ×ÁÅÔ ÒÑÄ ÏÐÃÉÊ ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÞÔÏ ÏÎ ÎÁÞÉÎÁÅÔ ×ÅÓÔÉ ÓÅÂÑ
-ËÁË ÏÂÙÞÎÙÊ ÂÅÚÒÅÖÉÍÎÙÊ ÒÅÄÁËÔÏÒ. ÷ ÜÔÏÍ ÒÅÖÉÍÅ Vim ÎÁÐÏÍÉÎÁÅÔ
-Notepad ÉÚ MS-Windows.
+É ×ÙÐÏÌÎÑÅÔÓÑ ÎÁÓÔÒÏÊËÁ ÒÑÄÁ ÐÁÒÁÍÅÔÒÏ× ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÞÔÏÂÙ ÅÇÏ ÒÁÂÏÔÁ ÂÙÌÁ ËÁË
+Õ ÐÒÏÓÔÙÈ ÂÅÚÒÅÖÉÍÎÙÈ ÒÅÄÁËÔÏÒÏ×. ÷ ÜÔÏÍ ÒÅÖÉÍÅ ÒÅÄÁËÔÏÒ Vim ÎÁÐÏÍÉÎÁÅÔ
+ÒÅÄÁËÔÏÒ Notepad ÉÚ MS Windows.
+÷ÁÒÉÁÎÔ ÒÅÄÁËÔÏÒÁ
.B eVim
-×ÓÅÇÄÁ ÚÁÐÕÓËÁÅÔÓÑ Ó ÐÏÄÄÅÒÖËÏÊ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, ÞÔÏÂÙ ÏÂÅÓÐÅÞÉÔØ
-ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÅÎÀ É ÉÎÓÔÒÕÍÅÎÔÁÌØÎÏÊ ÐÁÎÅÌÉ.
+×ÓÅÇÄÁ ÚÁÐÕÓËÁÅÔÓÑ Ó ÐÏÄÄÅÒÖËÏÊ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, ÞÔÏÂÙ ÂÙÌÁ ×ÏÚÍÏÖÎÏÓÔØ
+×ÚÁÉÍÏÄÅÊÓÔ×ÉÑ Ó ÐÒÏÇÒÁÍÍÏÊ ÞÅÒÅÚ ÍÅÎÀ É ÐÁÎÅÌØ ÉÎÓÔÒÕÍÅÎÔÏ×.
.PP
-üÔÁ ËÏÍÁÎÄÁ ÓÏÚÄÁÎÁ ÄÌÑ ÔÅÈ, ËÔÏ ÐÏ ËÁËÉÍ-ÔÏ ÐÒÉÞÉÎÁÍ ÎÅ × ÓÏÓÔÏÑÎÉÉ
-ÒÁÂÏÔÁÔØ Ó Vim × ÏÂÙÞÎÏÍ ÒÅÖÉÍÅ. òÅÄÁËÔÉÒÏ×ÁÎÉÅ ÆÁÊÌÏ× ÐÒÉ ÜÔÏÍ ÐÒÏÉÓÈÏÄÉÔ
-ÇÏÒÁÚÄÏ ÍÅÎÅÅ ÜÆÆÅËÔÉ×ÎÏ, ÞÅÍ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÏÂÙÞÎÏÇÏ Vim.
+üÔÏÔ ×ÁÒÉÁÎÔ ÒÅÄÁËÔÏÒÁ ÓÄÅÌÁÎ ÄÌÑ ÔÅÈ, ËÔÏ ÐÏ ËÁËÉÍ-ÔÏ ÐÒÉÞÉÎÁÍ ÎÅ × ÓÏÓÔÏÑÎÉÉ
+ÒÁÂÏÔÁÔØ Ó ÏÂÙÞÎÙÍ ÒÅÄÁËÔÏÒÏÍ Vim. òÅÄÁËÔÉÒÏ×ÁÎÉÅ ÆÁÊÌÏ× ÐÒÉ ÜÔÏÍ ÐÒÏÉÓÈÏÄÉÔ
+ÇÏÒÁÚÄÏ ÍÅÎÅÅ ÜÆÆÅËÔÉ×ÎÏ, ÞÅÍ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÓÔÁÎÄÁÒÔÎÏÇÏ ×ÁÒÉÁÎÔÁ ÒÅÄÁËÔÏÒÁ.
.PP
-ëÏÍÁÎÄÁ
+ðÏ ËÏÍÁÎÄÅ
.B eview
-×ÙÐÏÌÎÑÅÔ ÐÏÞÔÉ ÔÕ ÖÅ ÓÁÍÕÀ ÚÁÄÁÞÕ, ÎÏ ÆÁÊÌ ÏÔËÒÙ×ÁÅÔÓÑ × ÒÅÖÉÍÅ "ÔÏÌØËÏ
-ÄÌÑ ÞÔÅÎÉÑ". éÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÊ ËÏÍÁÎÄÙ ÐÏÌÎÏÓÔØÀ ÉÄÅÎÔÉÞÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÀ
-evim \-R.
+×ÙÐÏÌÎÑÀÔÓÑ ÐÏÞÔÉ ÔÅ ÖÅ ÓÁÍÙÅ ÄÅÊÓÔ×ÉÑ, ÎÏ ÆÁÊÌ ÂÕÄÅÔ ÏÔËÒÙÔ "ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ".
+éÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÊ ËÏÍÁÎÄÙ ÐÏÌÎÏÓÔØÀ ÉÄÅÎÔÉÞÎÏ ËÏÍÁÎÄÅ evim \-R.
.PP
-ðÏÄÒÏÂÎÅÅ Ï Vim, ËÌÀÞÁÈ ÚÁÐÕÓËÁ É Ô.Ð. ÓÍÏÔÒÉÔÅ ÎÁ ÓÔÒÁÎÉÃÅ ÓÐÒÁ×ÏÞÎÉËÁ
+ðÏÄÒÏÂÎÅÅ Ï ÒÅÄÁËÔÏÒÅ Vim, ÁÒÇÕÍÅÎÔÁÈ ÚÁÐÕÓËÁ É Ô. Ð. ÓÍÏÔÒÉÔÅ × ÓÐÒÁ×ÏÞÎÉËÅ
vim(1).
.PP
-ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ
+ðÏ ËÏÍÁÎÄÅ
.B evim
-×ËÌÀÞÁÅÔÓÑ ÏÐÃÉÑ 'insertmode', ÞÔÏ ÐÏÚ×ÏÌÑÅÔ ××ÏÄÉÔØ ÔÅËÓÔ ÎÁÐÒÑÍÕÀ.
+ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ ÐÁÒÁÍÅÔÒ 'insertmode', ÞÔÏ ÏÂÅÓÐÅÞÉ×ÁÅÔ ××ÏÄ ÔÅËÓÔÁ ÎÁÐÒÑÍÕÀ ×
+ÂÕÆÅÒ.
.br
-ëÒÏÍÅ ÔÏÇÏ, ÎÁÓÔÒÁÉ×ÁÀÔÓÑ ÐÒÉ×ÑÚËÉ, ÐÏÚ×ÏÌÑÀÝÉÅ ÉÓÐÏÌØÚÏ×ÁÔØ ËÎÏÐËÉ MS-Windows
-ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄ ËÏÐÉÒÏ×ÁÎÉÑ É ×ËÌÅÊËÉ. CTRL-X ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ×ÙÒÅÚÁÎÉÑ
-ÔÅËÓÔÁ, CTRL-C ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ É CTRL-V ÄÌÑ ×ËÌÅÊËÉ. þÔÏÂÙ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ
-ÉÚÎÁÞÁÌØÎÙÍ ÚÎÁÞÅÎÉÅÍ ËÎÏÐËÉ CTRL-V, ÉÓÐÏÌØÚÕÊÔÅ CTRL-Q.
-.SH ðáòáíåôòù úáðõóëá
-óÍ. vim(1).
+ëÒÏÍÅ ÔÏÇÏ, ÎÁÓÔÒÁÉ×ÁÀÔÓÑ ËÌÁ×ÉÁÔÕÒÎÙÅ ËÏÍÁÎÄÙ, ÐÏÚ×ÏÌÑÀÝÉÅ ×ÙÐÏÌÎÑÔØ
+ËÏÐÉÒÏ×ÁÎÉÅ É ×ÓÔÁ×ËÕ ÔÅËÓÔÁ, ÉÓÐÏÌØÚÕÑ ÔÁËÉÅ ÖÅ ËÏÍÂÉÎÁÃÉÉ ËÌÁ×ÉÛ,
+ËÁË × MS Windows.
+ëÌÁ×ÉÛÉ CTRL+X ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ×ÙÒÅÚÁÎÉÑ ÔÅËÓÔÁ, CTRL+C ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ
+É CTRL+V ÄÌÑ ×ÓÔÁ×ËÉ.
+þÔÏÂÙ ×ÙÐÏÌÎÉÔØ ÔÕ ÖÅ ËÏÍÁÎÄÕ, ËÏÔÏÒÁÑ ÒÁÎØÛÅ ÂÙÌÁ ÎÁÚÎÁÞÅÎÁ ÎÁ ËÌÁ×ÉÛÉ CTRL+V,
+ÉÓÐÏÌØÚÕÊÔÅ ËÌÁ×ÉÛÉ CTRL+Q.
+.SH áòçõíåîôù ëïíáîäîïê óôòïëé
+óÍ. ÓÐÒÁ×ÏÞÎÉË vim(1).
.SH æáêìù
.TP 15
-/usr/local/lib/vim/evim.vim
+/usr/local/share/vim/vim??/evim.vim
óÃÅÎÁÒÉÊ, ËÏÔÏÒÙÊ ÚÁÇÒÕÖÁÅÔÓÑ ÄÌÑ ÉÎÉÃÉÁÌÉÚÁÃÉÉ eVim.
-.SH AKA
-eVim ÔÁËÖÅ ÉÚ×ÅÓÔÅÎ ËÁË "Vim ÄÌÑ ÞÁÊÎÉËÏ×".
+.br
+úÄÅÓØ
+.I "vim??"
+ÏÚÎÁÞÁÅÔ ÓÏËÒÁÝ£ÎÎÕÀ ÚÁÐÉÓØ ÎÏÍÅÒÁ ×ÅÒÓÉÉ, ÎÁÐÒÉÍÅÒ, vim91 ÄÌÑ ×ÅÒÓÉÉ ÒÅÄÁËÔÏÒÁ
+.B Vim 9.1
+.SH äòõçéíé óìï÷áíé
+÷ÁÒÉÁÎÔ eVim ÔÁËÖÅ ÉÚ×ÅÓÔÅÎ ËÁË "Vim ÄÌÑ ÞÁÊÎÉËÏ×".
äÌÑ ÎÁÉÌÕÞÛÅÇÏ ÜÆÆÅËÔÁ ÒÅËÏÍÅÎÄÕÅÔÓÑ ×Ï ×ÒÅÍÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÐÏ×ÑÚÁÔØ
ÎÁ ÇÏÌÏ×Å ÐÌÁÔÏË, ÐÒÅÄ×ÁÒÉÔÅÌØÎÏ ÚÁ×ÑÚÁ× ÎÁ ËÁÖÄÏÍ ËÏÎÃÅ ÐÏ ÕÚÅÌËÕ.
-.SH óíïôòé ôáëöå
+.SH óíïôòéôå ôáëöå
vim(1)
.SH á÷ôïòù
-âÏÌØÛÁÑ ÞÁÓÔØ
+âÏÌØÛÁÑ ÞÁÓÔØ ÒÅÄÁËÔÏÒÁ
.B Vim
-ÓÏÚÄÁÎÁ âÒÁÍÏÍ íÏÏÌÅÎÁÁÒÏÍ (Bram Moolenaar), ËÏÔÏÒÏÍÕ ÐÏÍÏÇÁÅÔ ÏÇÒÏÍÎÏÅ
-ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ. óÍ. ÍÅÎÀ óÐÒÁ×ËÁ/âÌÁÇÏÄÁÒÎÏÓÔÉ.
+ÂÙÌÁ ÓÏÚÄÁÎÁ âÒÁÍÏÍ íÏÌÅÎÁÒÏÍ (Bram Moolenaar), ËÏÔÏÒÏÍÕ ÐÏÍÏÇÁÌÏ ÏÇÒÏÍÎÏÅ
+ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ. óÍ. ÍÅÎÀ óÐÒÁ×ËÁ ÐÕÎËÔ óÏÁ×ÔÏÒÙ.
diff --git a/runtime/doc/evim-ru.UTF-8.1 b/runtime/doc/evim-ru.UTF-8.1
index 581c364..8ac2669 100644
--- a/runtime/doc/evim-ru.UTF-8.1
+++ b/runtime/doc/evim-ru.UTF-8.1
@@ -1,59 +1,69 @@
-.TH EVIM 1 "2002 February 16"
-.SH ИМЯ
-evim \- проÑтой Vim, позволÑет редактировать файл Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Vim в безрежимном режиме
-.SH КОМÐÐДÐÐЯ СТРОКÐ
+.TH EVIM 1 "12 авгуÑта 2024"
+.SH ÐÐЗÐÐЧЕÐИЕ
+Программа evim \[em] Ñто упрощённый Vim, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ запуÑк редактора Vim
+в безрежимном варианте Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².
+.SH КРÐТКИЙ ОБЗОР
.br
.B evim
-[ключи] [файл ..]
+[аргументы] [файл ...]
.br
.B eview
.SH ОПИСÐÐИЕ
-Команда
+По команде
.B evim
-запуÑкает
+запуÑкаетÑÑ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€
.B Vim
-и наÑтраивает Ñ€Ñд опций таким образом, что он начинает веÑти ÑебÑ
-как обычный безрежимный редактор. Ð’ Ñтом режиме Vim напоминает
-Notepad из MS-Windows.
+и выполнÑетÑÑ Ð½Ð°Ñтройка Ñ€Ñда параметров таким образом, чтобы его работа была как
+у проÑÑ‚Ñ‹Ñ… безрежимных редакторов. Ð’ Ñтом режиме редактор Vim напоминает
+редактор Notepad из MS Windows.
+Вариант редактора
.B eVim
-вÑегда запуÑкаетÑÑ Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ графичеÑкого интерфейÑа, чтобы обеÑпечить
-иÑпользование меню и инÑтрументальной панели.
+вÑегда запуÑкаетÑÑ Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ графичеÑкого интерфейÑа, чтобы была возможноÑÑ‚ÑŒ
+взаимодейÑÑ‚Ð²Ð¸Ñ Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¾Ð¹ через меню и панель инÑтрументов.
.PP
-Эта команда Ñоздана Ð´Ð»Ñ Ñ‚ÐµÑ…, кто по каким-то причинам не в ÑоÑтоÑнии
-работать Ñ Vim в обычном режиме. Редактирование файлов при Ñтом проиÑходит
-гораздо менее Ñффективно, чем при иÑпользовании обычного Vim.
+Этот вариант редактора Ñделан Ð´Ð»Ñ Ñ‚ÐµÑ…, кто по каким-то причинам не в ÑоÑтоÑнии
+работать Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ редактором Vim. Редактирование файлов при Ñтом проиÑходит
+гораздо менее Ñффективно, чем при иÑпользовании Ñтандартного варианта редактора.
.PP
-Команда
+По команде
.B eview
-выполнÑет почти ту же Ñамую задачу, но файл открываетÑÑ Ð² режиме "только
-Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ". ИÑпользование Ñтой команды полноÑтью идентично иÑпользованию
-evim \-R.
+выполнÑÑŽÑ‚ÑÑ Ð¿Ð¾Ñ‡Ñ‚Ð¸ те же Ñамые дейÑтвиÑ, но файл будет открыт "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ".
+ИÑпользование Ñтой команды полноÑтью идентично команде evim \-R.
.PP
-Подробнее о Vim, ключах запуÑка и Ñ‚.п. Ñмотрите на Ñтранице Ñправочника
+Подробнее о редакторе Vim, аргументах запуÑка и Ñ‚. п. Ñмотрите в Ñправочнике
vim(1).
.PP
-При иÑпользовании
+По команде
.B evim
-включаетÑÑ Ð¾Ð¿Ñ†Ð¸Ñ 'insertmode', что позволÑет вводить текÑÑ‚ напрÑмую.
+будет уÑтановлен параметр 'insertmode', что обеÑпечивает ввод текÑта напрÑмую в
+буфер.
.br
-Кроме того, наÑтраиваютÑÑ Ð¿Ñ€Ð¸Ð²Ñзки, позволÑющие иÑпользовать кнопки MS-Windows
-Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ вклейки. CTRL-X иÑпользуетÑÑ Ð´Ð»Ñ Ð²Ñ‹Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ
-текÑта, CTRL-C Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ CTRL-V Ð´Ð»Ñ Ð²ÐºÐ»ÐµÐ¹ÐºÐ¸. Чтобы воÑпользоватьÑÑ
-изначальным значением кнопки CTRL-V, иÑпользуйте CTRL-Q.
-.SH ПÐРÐМЕТРЫ ЗÐПУСКÐ
-См. vim(1).
+Кроме того, наÑтраиваютÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð½Ñ‹Ðµ команды, позволÑющие выполнÑÑ‚ÑŒ
+копирование и вÑтавку текÑта, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñ‚Ð°ÐºÐ¸Ðµ же комбинации клавиш,
+как в MS Windows.
+Клавиши CTRL+X иÑпользуютÑÑ Ð´Ð»Ñ Ð²Ñ‹Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта, CTRL+C Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
+и CTRL+V Ð´Ð»Ñ Ð²Ñтавки.
+Чтобы выполнить ту же команду, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñ€Ð°Ð½ÑŒÑˆÐµ была назначена на клавиши CTRL+V,
+иÑпользуйте клавиши CTRL+Q.
+.SH ÐРГУМЕÐТЫ КОМÐÐДÐОЙ СТРОКИ
+См. Ñправочник vim(1).
.SH ФÐЙЛЫ
.TP 15
-/usr/local/lib/vim/evim.vim
+/usr/local/share/vim/vim??/evim.vim
Сценарий, который загружаетÑÑ Ð´Ð»Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ eVim.
-.SH AKA
-eVim также извеÑтен как "Vim Ð´Ð»Ñ Ñ‡Ð°Ð¹Ð½Ð¸ÐºÐ¾Ð²".
+.br
+ЗдеÑÑŒ
+.I "vim??"
+означает Ñокращённую запиÑÑŒ номера верÑии, например, vim91 Ð´Ð»Ñ Ð²ÐµÑ€Ñии редактора
+.B Vim 9.1
+.SH ДРУГИМИ СЛОВÐМИ
+Вариант eVim также извеÑтен как "Vim Ð´Ð»Ñ Ñ‡Ð°Ð¹Ð½Ð¸ÐºÐ¾Ð²".
Ð”Ð»Ñ Ð½Ð°Ð¸Ð»ÑƒÑ‡ÑˆÐµÐ³Ð¾ Ñффекта рекомендуетÑÑ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²Ñзать
на голове платок, предварительно завÑзав на каждом конце по узелку.
-.SH СМОТРИ ТÐКЖЕ
+.SH СМОТРИТЕ ТÐКЖЕ
vim(1)
.SH ÐВТОРЫ
-Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ
+Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ редактора
.B Vim
-Ñоздана Брамом Мооленааром (Bram Moolenaar), которому помогает огромное
-количеÑтво людей. См. меню Справка/БлагодарноÑти.
+была Ñоздана Брамом Моленаром (Bram Moolenaar), которому помогало огромное
+количеÑтво людей. См. меню Справка пункт Соавторы.
diff --git a/runtime/doc/evim.1 b/runtime/doc/evim.1
index bb859ce..a67bda3 100644
--- a/runtime/doc/evim.1
+++ b/runtime/doc/evim.1
@@ -1,4 +1,4 @@
-.TH EVIM 1 "2002 February 16"
+.TH EVIM 1 "2024 August 12"
.SH NAME
evim \- easy Vim, edit a file with Vim and setup for modeless editing
.SH SYNOPSIS
@@ -34,8 +34,12 @@ Use CTRL-Q to obtain the original meaning of CTRL-V.
See vim(1).
.SH FILES
.TP 15
-/usr/local/lib/vim/evim.vim
+/usr/local/share/vim/vim??/evim.vim
The script loaded to initialize eVim.
+.br
+.I vim??
+is short version number, like vim91 for
+.B Vim 9.1
.SH AKA
Also Known As "Vim for gumbies".
When using evim you are expected to take a handkerchief,
diff --git a/runtime/doc/evim.man b/runtime/doc/evim.man
index 8b8db81..f966f82 100644
--- a/runtime/doc/evim.man
+++ b/runtime/doc/evim.man
@@ -1,4 +1,4 @@
-EVIM(1) EVIM(1)
+EVIM(1) General Commands Manual EVIM(1)
@@ -10,7 +10,7 @@ SYNOPSIS
eview
DESCRIPTION
- eVim starts Vim and sets options to make it behave like a modeless edi-
+ eVim starts Vim and sets options to make it behave like a modeless ediâ€
tor. This is still Vim but used as a point-and-click editor. This
feels a lot like using Notepad on MS-Windows. eVim will always run in
the GUI, to enable the use of menus and toolbar.
@@ -32,8 +32,9 @@ OPTIONS
See vim(1).
FILES
- /usr/local/lib/vim/evim.vim
+ /usr/local/share/vim/vim??/evim.vim
The script loaded to initialize eVim.
+ vim?? is short version number, like vim91 for Vim 9.1
AKA
Also Known As "Vim for gumbies". When using evim you are expected to
@@ -49,4 +50,4 @@ AUTHOR
- 2002 February 16 EVIM(1)
+ 2024 August 12 EVIM(1)
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 927b75c..a7ed928 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt* For Vim version 9.1. Last change: 2024 May 23
+*filetype.txt* For Vim version 9.1. Last change: 2024 Aug 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -149,6 +149,7 @@ variables can be used to overrule the filetype used for certain extensions:
*.csh g:filetype_csh |ft-csh-syntax|
*.dat g:filetype_dat
*.def g:filetype_def
+ *.dsp g:filetype_dsp
*.f g:filetype_f |ft-forth-syntax|
*.frm g:filetype_frm |ft-form-syntax|
*.fs g:filetype_fs |ft-forth-syntax|
@@ -622,6 +623,17 @@ any #lang directive overrides, use the following command: >
let g:freebasic_lang = "fblite"
+GDSCRIPT *ft-gdscript-plugin*
+
+By default the following options are set, based on Godot official docs: >
+
+ setlocal noexpandtab softtabstop=0 shiftwidth=0
+
+To disable this behavior, set the following variable in your vimrc: >
+
+ let g:gdscript_recommended_style = 0
+
+
GIT COMMIT *ft-gitcommit-plugin*
One command, :DiffGitCached, is provided to show a diff of the current commit
@@ -629,6 +641,17 @@ in the preview window. It is equivalent to calling "git diff --cached" plus
any arguments given to the command.
+GO *ft-go-plugin*
+
+By default the following options are set, based on Golang official docs: >
+
+ setlocal noexpandtab softtabstop=0 shiftwidth=0
+
+To disable this behavior, set the following variable in your vimrc: >
+
+ let g:go_recommended_style = 0
+
+
GPROF *ft-gprof-plugin*
The gprof filetype plugin defines a mapping <C-]> to jump from a function
@@ -730,9 +753,13 @@ Global mapping:
nmap <F1> <Plug>ManPreGetPage
Local mappings:
+<Plug>ManBS
+<LocalLeader>h Clear backspace <BS> characters from the buffer
CTRL-] Jump to the manual page for the word under the cursor.
CTRL-T Jump back to the previous manual page.
-q Same as the |:quit| command.
+
+The mappings can be disabled with: >
+ let g:no_man_maps = 1
To use a vertical split instead of horizontal: >
let g:ft_man_open_mode = 'vert'
@@ -741,8 +768,8 @@ To use a new tab: >
To enable |folding|, use this: >
let g:ft_man_folding_enable = 1
-If you do not like the default folding, use an |autocommand| to add your desired
-folding style instead. For example: >
+If you do not like the default folding, use an |autocommand| to add your
+desired folding style instead. For example: >
autocmd FileType man setlocal foldmethod=indent foldenable
If you would like :Man {number} {name} to behave like man {number} {name} by
@@ -885,6 +912,10 @@ You can change the default by defining the variable g:tex_flavor to the format
let g:tex_flavor = "latex"
Currently no other formats are recognized.
+TYPST *ft-typst-plugin*
+
+ *g:typst_conceal*
+When |TRUE| the Typst filetype plugin will set the 'conceallevel' option to 2.
VIM *ft-vim-plugin*
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index 3b55919..071de9c 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt* For Vim version 9.1. Last change: 2024 May 11
+*gui.txt* For Vim version 9.1. Last change: 2024 Jul 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -970,7 +970,7 @@ name and all existing submenus below it are affected.
5.7 Examples for Menus *menu-examples*
-Here is an example on how to add menu items with menu's! You can add a menu
+Here is an example on how to add menu items with menus. You can add a menu
item for the keyword under the cursor. The register "z" is used. >
:nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR>
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index d26592a..c595d9d 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt* For Vim version 9.1. Last change: 2023 Jan 09
+*index.txt* For Vim version 9.1. Last change: 2023 Jul 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -213,10 +213,12 @@ tag char note action in Normal mode ~
|<Tab>| <Tab> 1 go to N newer entry in jump list
|CTRL-I| CTRL-I 1 same as <Tab>
|<NL>| <NL> 1 same as "j"
+|<S-NL>| <S-NL> 1 same as CTRL-F
|CTRL-J| CTRL-J 1 same as "j"
CTRL-K not used
|CTRL-L| CTRL-L redraw screen
|<CR>| <CR> 1 cursor to the first CHAR N lines lower
+|<S-CR>| <S-CR> 1 same as CTRL-F
|CTRL-M| CTRL-M 1 same as <CR>
|CTRL-N| CTRL-N 1 same as "j"
|CTRL-O| CTRL-O 1 go to N older entry in jump list
@@ -287,9 +289,11 @@ tag char note action in Normal mode ~
|star| * 1 search forward for the Nth occurrence of
the ident under the cursor
|+| + 1 same as <CR>
+|<S-Plus>| <S-+> 1 same as CTRL-F
|,| , 1 repeat latest f, t, F or T in opposite
direction N times
|-| - 1 cursor to the first CHAR N lines higher
+|<S-Minus>| <S--> 1 same as CTRL-B
|.| . 2 repeat last change with count replaced with
N
|/| /{pattern}<CR> 1 search forward for the Nth occurrence of
@@ -753,7 +757,7 @@ tag char note action in Normal mode ~
search pattern and Visually select it
|gP| ["x]gP 2 put the text [from register x] before the
cursor N times, leave the cursor after it
-|gQ| gQ switch to "Ex" mode with Vim editing
+|gQ| gQ switch to "Ex" mode with Vim editing
|gR| gR 2 enter Virtual Replace mode
|gT| gT go to the previous tab page
|gU| gU{motion} 2 make Nmove text uppercase
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 6ebd83e..3894e5c 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 9.1. Last change: 2024 Jan 04
+*insert.txt* For Vim version 9.1. Last change: 2024 Aug 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1183,6 +1183,18 @@ items:
user_data custom data which is associated with the item and
available in |v:completed_item|; it can be any type;
defaults to an empty string
+ hl_group an additional highlight group whose attributes are
+ combined with |hl-PmenuSel| and |hl-Pmenu| or
+ |hl-PmenuMatchSel| and |hl-PmenuMatch| highlight
+ attributes in the popup menu to apply cterm and gui
+ properties (with higher priority) like strikethrough
+ to the completion items
+ kind_hlgroup an additional highlight group specifically for setting
+ the highlight attributes of the completion kind. When
+ this field is present, it will override the
+ |hl-PmenuKind| highlight group, allowing for the
+ customization of ctermfg and guifg properties for the
+ completion kind
All of these except "icase", "equal", "dup" and "empty" must be a string. If
an item does not meet these requirements then an error message is given and
@@ -1995,13 +2007,25 @@ These two commands will keep on asking for lines, until you type a line
containing only a ".". Watch out for lines starting with a backslash, see
|line-continuation|.
-When in Ex mode (see |-e|) a backslash at the end of the line can be used to
-insert a NUL character. To be able to have a line ending in a backslash use
-two backslashes. This means that the number of backslashes is halved, but
-only at the end of the line.
-
-NOTE: These commands cannot be used with |:global| or |:vglobal|.
-":append" and ":insert" don't work properly in between ":if" and
+Text typed after a "|" command separator is used first. So the following
+command in ex mode: >
+ :a|one
+ two
+ .
+ :visual
+appends the following text, after the cursor line: >
+ one
+ two
+<
+In |Ex-mode|, when these commands are used with |:global| or |:vglobal| then
+the lines are obtained from the text following the command. Separate lines
+with a NL escaped with a backslash: >
+ :global/abc/insert\
+ one line\
+ another line
+The final "." is not needed then.
+
+NOTE: ":append" and ":insert" don't work properly in between ":if" and
":endif", ":for" and ":endfor", ":while" and ":endwhile".
*:start* *:startinsert*
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 365f49a..432a986 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt* For Vim version 9.1. Last change: 2024 May 05
+*map.txt* For Vim version 9.1. Last change: 2024 Jul 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1631,6 +1631,7 @@ completion can be enabled:
-complete=compiler compilers
-complete=cscope |:cscope| suboptions
-complete=dir directory names
+ -complete=dir_in_path directory names in |'cdpath'|
-complete=environment environment variable names
-complete=event autocommand events
-complete=expression Vim expression
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 3bb2bfb..f02092b 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt* For Vim version 9.1. Last change: 2024 Jun 09
+*mbyte.txt* For Vim version 9.1. Last change: 2024 Jul 17
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -493,7 +493,7 @@ The GUI fully supports multibyte characters. It is also possible in a
terminal, if the terminal supports the same encoding that Vim uses. Thus this
is less flexible.
-For example, you can run Vim in a xterm with added multibyte support and/or
+For example, you can run Vim in an xterm with added multibyte support and/or
|XIM|. Examples are kterm (Kanji term) and hanterm (for Korean), Eterm
(Enlightened terminal) and rxvt.
@@ -1379,7 +1379,7 @@ Motif. Use the ":hi Menu font={fontname}" command for this. |:highlight|
TYPING UTF-8 *utf-8-typing*
If you are using X-Windows, you should find an input method that supports
-UTF-8.
+the UTF-8 encoding.
If your system does not provide support for typing UTF-8, you can use the
'keymap' feature. This allows writing a keymap file, which defines a UTF-8
diff --git a/runtime/doc/mlang.txt b/runtime/doc/mlang.txt
index 82c9772..9a15bdf 100644
--- a/runtime/doc/mlang.txt
+++ b/runtime/doc/mlang.txt
@@ -1,4 +1,4 @@
-*mlang.txt* For Vim version 9.1. Last change: 2022 Sep 17
+*mlang.txt* For Vim version 9.1. Last change: 2024 Jul 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -59,7 +59,9 @@ use of "-" and "_".
:lan[guage] tim[e] {name}
:lan[guage] col[late] {name}
Set the current language (aka locale) to {name}.
- The locale {name} must be a valid locale on your
+ The POSIX format of {name} is: >
+ language[_territory][.encoding]
+< The locale {name} must be a valid locale on your
system. Some systems accept aliases like "en" or
"en_US", but some only accept the full specification
like "en_US.ISO_8859-1". On Unix systems you can use
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 8c07fbf..3e45884 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt* For Vim version 9.1. Last change: 2023 Dec 27
+*motion.txt* For Vim version 9.1. Last change: 2024 Jul 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -351,6 +351,7 @@ gg Goto line [count], default first line, on the first
*:[range]*
:[range] Set the cursor on the last line number in [range].
+ In Ex mode, print the lines in [range].
[range] can also be just one line number, e.g., ":1"
or ":'m".
In contrast with |G| this command does not modify the
@@ -433,7 +434,7 @@ WORD before the fold.
Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is
on a non-blank. This is because "cw" is interpreted as change-word, and a
-word does not include the following white space.
+word does not include the following white space (see also |cw|).
Another special case: When using the "w" motion in combination with an
operator and the last word moved over is at the end of a line, the end of
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 6ec4031..3ec8a3a 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 9.1. Last change: 2024 Jun 17
+*options.txt* For Vim version 9.1. Last change: 2024 Aug 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -76,7 +76,8 @@ achieve special effects. These options come in three forms:
:se[t] {option}:{value}
Set string or number option to {value}.
For numeric options the value can be given in decimal,
- hex (preceded with 0x) or octal (preceded with '0').
+ hex (preceded with 0x) or octal (preceded with '0' or
+ '0o').
The old value can be inserted by typing 'wildchar' (by
default this is a <Tab> or CTRL-E if 'compatible' is
set). Many string options with fixed syntax and names
@@ -1476,7 +1477,7 @@ A jump table for the options with a short description can be found at |Q_op|.
applying 'breakindent', even if the resulting
text should normally be narrower. This prevents
text indented almost to the right window border
- occupying lot of vertical space when broken.
+ occupying lots of vertical space when broken.
(default: 20)
shift:{n} After applying 'breakindent', the wrapped line's
beginning will be shifted by the given number of
@@ -2257,8 +2258,9 @@ A jump table for the options with a short description can be found at |Q_op|.
Also see 'preserveindent'.
*'cpoptions'* *'cpo'* *cpo*
-'cpoptions' 'cpo' string (Vim default: "aABceFs",
- Vi default: all flags)
+'cpoptions' 'cpo' string (Vim default: "aABceFsz",
+ Vi default: all flags, except "#{|&/\."
+ |$VIM_POSIX|: all flags)
global
A sequence of single character flags. When a character is present
this indicates Vi-compatible behavior. This is used for things where
@@ -2486,6 +2488,9 @@ A jump table for the options with a short description can be found at |Q_op|.
*cpo-Z*
Z When using "w!" while the 'readonly' option is set,
don't reset 'readonly'.
+ *cpo-z*
+ z Special casing the "cw" and "d" command (see |cw| and
+ |d-special|).
*cpo-!*
! When redoing a filter command, use the last used
external command, whatever it was. Otherwise the last
@@ -4727,7 +4732,7 @@ A jump table for the options with a short description can be found at |Q_op|.
in Insert mode as specified with the 'indentkeys' option.
When this option is not empty, it overrules the 'cindent' and
'smartindent' indenting. When 'lisp' is set, this option is
- is only used when 'lispoptions' contains "expr:1".
+ only used when 'lispoptions' contains "expr:1".
When 'paste' is set this option is not used for indenting.
The expression is evaluated with |v:lnum| set to the line number for
which the indent is to be computed. The cursor is also in this line
@@ -5090,7 +5095,7 @@ A jump table for the options with a short description can be found at |Q_op|.
part can be in one of two forms:
1. A list of pairs. Each pair is a "from" character immediately
followed by the "to" character. Examples: "aA", "aAbBcC".
- 2. A list of "from" characters, a semi-colon and a list of "to"
+ 2. A list of "from" characters, a semicolon and a list of "to"
characters. Example: "abc;ABC"
Example: "aA,fgh;FGH,cCdDeE"
Special characters need to be preceded with a backslash. These are
@@ -5172,7 +5177,7 @@ A jump table for the options with a short description can be found at |Q_op|.
update use |:redraw|.
This may occasionally cause display errors. It is only meant to be set
temporarily when performing an operation where redrawing may cause
- flickering or cause a slow down.
+ flickering or cause a slowdown.
*'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
'linebreak' 'lbr' boolean (default off)
@@ -5913,6 +5918,20 @@ A jump table for the options with a short description can be found at |Q_op|.
(without "unsigned" it would become "9-2019").
Using CTRL-X on "0" or CTRL-A on "18446744073709551615"
(2^64 - 1) has no effect, overflow is prevented.
+ blank If included, treat numbers as signed or unsigned based on
+ preceding whitespace. If a number with a leading dash has its
+ dash immediately preceded by a non-whitespace character (i.e.,
+ not a tab or a " "), the negative sign won't be considered as
+ part of the number. For example:
+ Using CTRL-A on "14" in "Carbon-14" results in "Carbon-15"
+ (without "blank" it would become "Carbon-13").
+ Using CTRL-X on "8" in "Carbon -8" results in "Carbon -9"
+ (because -8 is preceded by whitespace. If "unsigned" was
+ set, it would result in "Carbon -7").
+ If this format is included, overflow is prevented as if
+ "unsigned" were set. If both this format and "unsigned" are
+ included, "unsigned" will take precedence.
+
Numbers which simply begin with a digit in the range 1-9 are always
considered decimal. This also happens for numbers that are not
recognized as octal or hex.
@@ -6160,7 +6179,7 @@ A jump table for the options with a short description can be found at |Q_op|.
:set path+=
< To use an environment variable, you probably need to replace the
separator. Here is an example to append $INCL, in which directory
- names are separated with a semi-colon: >
+ names are separated with a semicolon: >
:let &path = &path .. "," .. substitute($INCL, ';', ',', 'g')
< Replace the ';' with a ':' or whatever separator is used. Note that
this doesn't work when $INCL contains a comma or white space.
@@ -6739,7 +6758,7 @@ A jump table for the options with a short description can be found at |Q_op|.
import/ files that are found by `:import`
indent/ indent scripts |indent-expression|
keymap/ key mapping files |mbyte-keymap|
- lang/ menu translations |:menutrans|
+ lang/ message translations |:menutrans| and |multi-lang|
menu.vim GUI menus |menu.vim|
pack/ packages |:packadd|
plugin/ plugin scripts |write-plugin|
@@ -7227,7 +7246,7 @@ A jump table for the options with a short description can be found at |Q_op|.
POSIX default: "AS")
global *E1336*
This option helps to avoid all the |hit-enter| prompts caused by file
- messages, for example with CTRL-G, and to avoid some other messages.
+ messages, for example with CTRL-G, and to avoid some other messages.
It is a list of flags:
flag meaning when present ~
f use "(3 of 5)" instead of "(file 3 of 5)" *shm-f*
@@ -7684,7 +7703,7 @@ A jump table for the options with a short description can be found at |Q_op|.
minus two.
timeout:{millisec} Limit the time searching for suggestions to
- {millisec} milli seconds. Applies to the following
+ {millisec} milliseconds. Applies to the following
methods. When omitted the limit is 5000. When
negative there is no limit. {only works when built
with the |+reltime| feature}
@@ -8086,6 +8105,19 @@ A jump table for the options with a short description can be found at |Q_op|.
'S' flag in 'cpoptions'.
Only normal file name characters can be used, "/\*?[|<>" are illegal.
+ *'tabclose'* *'tcl'*
+'tabclose' 'tcl' string (default "")
+ global
+ This option controls the behavior when closing tab pages (e.g., using
+ |:tabclose|). When empty Vim goes to the next (right) tab page.
+
+ Possible values (comma-separated list):
+ left If included, go to the previous tab page instead of
+ the next one.
+ uselast If included, go to the previously used tab page if
+ possible. This option takes precedence over the
+ others.
+
*'tabline'* *'tal'*
'tabline' 'tal' string (default empty)
global
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 183806a..4351944 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 Jun 03
+*pattern.txt* For Vim version 9.1. Last change: 2024 Jun 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -151,13 +151,17 @@ CTRL-C Interrupt current (search) command. Use CTRL-Break on
executing autocommands |autocmd-searchpat|.
Same thing for when invoking a user function.
+
While typing the search pattern the current match will be shown if the
'incsearch' option is on. Remember that you still have to finish the search
command with <CR> to actually position the cursor at the displayed match. Or
use <Esc> to abandon the search.
+ *nohlsearch-auto*
All matches for the last used search pattern will be highlighted if you set
-the 'hlsearch' option. This can be suspended with the |:nohlsearch| command.
+the 'hlsearch' option. This can be suspended with the |:nohlsearch| command
+or auto suspended with nohlsearch plugin. See |nohlsearch-install|.
+
When 'shortmess' does not include the "S" flag, Vim will automatically show an
index, on which the cursor is. This can look like this: >
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index aeaca0b..a4dee26 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt* For Vim version 9.1. Last change: 2024 May 11
+*pi_netrw.txt* For Vim version 9.1. Last change: 2024 Jul 13
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@@ -15,7 +15,7 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
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!
+ software. Use at your own risk! For bug reports, see |bugs|.
*netrw*
*dav* *ftp* *netrw-file* *rcp* *scp*
@@ -3859,12 +3859,7 @@ netrw:
thereby making it easier to associate which part of the
debugging trace is due to which command.
- Please send that information to <netrw.vim>'s maintainer along
- with the o/s you're using and the vim version that you're using
- (see |:version|) (remove the embedded NOSPAM first) >
-
- NcampObell@SdrPchip.AorgM-NOSPAM
-<
+ For bug reports, please see |bugs|.
==============================================================================
12. History *netrw-history* {{{1
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 1ad4fb9..b9e992b 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt* For Vim version 9.1. Last change: 2024 Jun 08
+*popup.txt* For Vim version 9.1. Last change: 2024 Jun 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -186,6 +186,7 @@ Manipulating a popup window:
|popup_move()| change the position and size of a popup
|popup_setoptions()| override options of a popup
|popup_settext()| replace the popup buffer contents
+ |popup_setbuf()| set the buffer for the popup window
Closing popup windows:
|popup_close()| close one popup
@@ -574,6 +575,18 @@ popup_notification({what}, {options}) *popup_notification()*
Return type: |Number|
+popup_setbuf({id}, {buf}) *popup_setbuf()*
+ Set buffer {buf} to be displayed in popup win {id}. For the
+ use of {buf}, see |bufname()| function.
+ May change window size or position to adjust for the size
+ of the buffer text.
+
+ Can also be used as a |method|: >
+ GetPopup()->popup_setbuf(bufnr('foobar'))
+<
+ Return type: |vim9-boolean|
+
+
popup_setoptions({id}, {options}) *popup_setoptions()*
Override options in popup {id} with entries in {options}.
These options can be set:
@@ -613,9 +626,8 @@ popup_setoptions({id}, {options}) *popup_setoptions()*
popup_settext({id}, {text}) *popup_settext()*
- Set the text of the buffer in popup win {id}. {text} is the
- same as supplied to |popup_create()|, except that a buffer
- number is not allowed.
+ Set the text of the buffer in popup win {id}. {text} is
+ a string or a list of strings to be displayed in the popup.
Does not change the window size or position, other than caused
by the different text.
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index e2aef24..e44c5d5 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt* For Vim version 9.1. Last change: 2024 Jun 16
+*quickfix.txt* For Vim version 9.1. Last change: 2024 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1006,7 +1006,7 @@ Another option is using 'makeencoding'.
==============================================================================
5. Using :vimgrep and :grep *grep* *lid*
-Vim has two ways to find matches for a pattern: Internal and external. The
+Vim has two ways to find matches for a pattern: internal and external. The
advantage of the internal grep is that it works on all systems and uses the
powerful Vim search patterns. An external grep program can be used when the
Vim grep does not do what you want.
@@ -1035,7 +1035,7 @@ commands can be combined to create a NewGrep command: >
command! -nargs=+ NewGrep execute 'silent grep! <args>' | copen 42
-5.1 using Vim's internal grep
+5.1 Using Vim's internal grep
*:vim* *:vimgrep* *E682* *E683*
:vim[grep][!] /{pattern}/[g][j][f] {file} ...
@@ -1092,8 +1092,8 @@ commands can be combined to create a NewGrep command: >
:vim[grep][!] {pattern} {file} ...
Like above, but instead of enclosing the pattern in a
- non-ID character use a white-separated pattern. The
- pattern must start with an ID character.
+ non-ID character use a white space separated pattern.
+ The pattern must start with an ID character.
Example: >
:vimgrep Error *.c
<
@@ -1345,6 +1345,13 @@ Additional arguments can be passed to pandoc:
- either by appending them to make, say `:make html --self-contained` .
- or setting them in `b:pandoc_compiler_args` or `g:pandoc_compiler_args`.
+The `--from` argument is an educated guess using the buffer file type;
+it can be overridden by setting `b:pandoc_compiler_from`.
+Likewise the `--metadata lang` argument is set using `&spelllang`;
+it can be overridden by setting `b:pandoc_compiler_lang`.
+If `--from=markdown` is assumed and no title set in a title header or
+YAML block, then the filename (without extension) is used as the title.
+
PERL *quickfix-perl* *compiler-perl*
The Perl compiler plugin doesn't actually compile, but invokes Perl's internal
@@ -1414,6 +1421,17 @@ 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.
+TYPST COMPILER *compiler-typst*
+
+Vim includes a compiler plugin for Typst files. This compiler is enabled
+automatically in Typst buffers by the Typst filetype plugin |ft-typst-plugin|.
+Run |:make| to compile the current Typst file.
+
+ *g:typst_cmd*
+By default Vim will use "typst" as the command to run the Typst compiler. This
+can be changed by setting the |g:typst_cmd| variable: >
+ let g:typst_cmd = "/path/to/other/command"
+
=============================================================================
7. The error format *error-file-format*
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index 517fa30..42b5228 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -935,6 +935,7 @@ Short explanation of each option: *option-list*
'switchbuf' 'swb' sets behavior when switching to another buffer
'synmaxcol' 'smc' maximum column to find syntax items
'syntax' 'syn' syntax to be loaded for current buffer
+'tabclose' 'tcl' which tab page to focus when closing a tab
'tabline' 'tal' custom format for the console tab pages line
'tabpagemax' 'tpm' maximum number of tab pages for |-p| and "tab all"
'tabstop' 'ts' number of spaces that <Tab> in file uses
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index e95b6a1..726aec3 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt* For Vim version 9.1. Last change: 2023 May 26
+*repeat.txt* For Vim version 9.1. Last change: 2024 Aug 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -735,6 +735,10 @@ Your directory layout would be like this:
start/foobar/autoload/foo.vim " loaded when foo command used
start/foobar/doc/foo.txt " help for foo.vim
start/foobar/doc/tags " help tags
+ start/foobar/lang/<lang_id>/LC_MESSAGES/foobar.mo
+ " messages for the plugin in the
+ " <lang_id> language. These files are
+ " optional.
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt " help for extra.vim
@@ -744,24 +748,346 @@ This allows for the user to do: >
mkdir ~/.vim/pack
cd ~/.vim/pack
git clone https://github.com/you/foobar.git myfoobar
-
+<
Here "myfoobar" is a name that the user can choose, the only condition is that
it differs from other packages.
In your documentation you explain what the plugins do, and tell the user how
to load the optional plugin: >
:packadd! fooextra
-
+<
You could add this packadd command in one of your plugins, to be executed when
the optional plugin is needed.
+ *package-doc* *package-documentation*
Run the `:helptags` command to generate the doc/tags file. Including this
generated file in the package means that the user can drop the package in the
pack directory and the help command works right away. Don't forget to re-run
the command after changing the plugin help: >
:helptags path/start/foobar/doc
:helptags path/opt/fooextra/doc
-
+<
+ *package-translation*
+In order for a plugin to display translated messages, a few steps are
+required.
+The author of the plugin who likes to translate messages must define the name
+of the package and the location of the directory where the translations can be
+found using the |bindtextdomain()| function: >
+ :call bindtextdomain("foobar",
+ \ fnamemodify(expand("<script>"), ':p:h') .. '/../lang/')
+<
+Where:
+ "foobar" is the unique package identifier by which the |gettext()|
+ function will later search for translation strings for this
+ plugin.
+ "lang/" is the relative or absolute path to the directory structure
+ where the translation file is located.
+
+The directory structure where the message translation files should be placed
+is (from the top-level directory of the package):
+"lang/<lang_id>/LC_MESSAGES". For the format of <lang_id> see |multi-lang|.
+This function needs to be called only once during the initialization of the
+plugin.
+Once this is done, the |gettext()| function can be used to retrieve translated
+messages: >
+ :echo gettext("Hello", "foobar")
+<
+Where:
+ "Hello" the message "Hello" to be translated into the user's language
+ |:lang|
+ "foobar" the package identifier, which was previously defined using the
+ |bindtextdomain()| function.
+
+After that you need to create a template file for translation - POT-file.
+To do this, execute the following commands (using the Vim repository): >
+ cd ~/forkvim/src/po
+ make -f Makefile "PLUGPACKAGE={package}" \
+ "PO_PLUG_INPUTLIST={path/to/scripts-that-need-translations.vim}" \
+ ["POT_PLUGPACKAGE_PATH={path/where/to/write/{package}.pot}" \]
+ ["VIMPROG={path/to/vim} \]
+ {package}.pot
+<
+Where:
+PLUGPACKAGE A variable containing the name of the package that we
+ specified in the |bindtextdomain()| and
+ |gettext()| functions, for example, "foobar".
+PO_PLUG_INPUTLIST A variable containing scripts that have strings
+ to translate, i.e. where we specified the |gettext()|
+ function. Scripts are specified with an absolute
+ or relative path. Example: start/foobar/plugin/bar.vim
+ use blanks to separate scripts.
+POT_PLUGPACKAGE_PATH A variable containing the directory where the prepared
+ POT file will be saved. This is not a required variable,
+ if no directory is specified, then the POT file will
+ be placed in the "src/po" directory.
+VIMPROG A variable containing a directory with a working Vim.
+ If the Vim editor is already built and installed, and
+ is contained in the $PATH environment variable,
+ then you can specify just the name of the vim
+ executable.
+{package}.pot This is the Target. It is specified as the name of
+ the package, for example, "foobar" with the addition
+ of the .pot extension.
+Once a POT file is created, its contents are copied into separate PO files for
+each language for which the translation will be prepared.
+
+When the translation is finished, it is necessary to convert the PO files into
+binary MO-files format and place these MO-files into the "lang/" directory, the
+structure of which we created earlier.
+To do this, run the following commands:
+>
+ cd ~/forkvim/src/po
+ make -f Makefile "PLUGPACKAGE={package}" \
+ "PO_PLUGPACKAGE={path/to/{lang}.po}" \
+ ["MO_PLUGPACKAGE_PATH={path/to/lang/<lang_id>/LC_MESSAGES}" \]
+ {package}.mo
+<
+Where:
+PLUGPACKAGE A variable containing the name of the package that we
+ specified in the |bindtextdomain()| and |gettext()|
+ functions, for example, "foobar".
+PO_PLUGPACKAGE A variable containing a PO file. The file is specified
+ with an absolute or relative path. For example,
+ "~/myproject/translate/en.po"
+MO_PLUGPACKAGE_PATH A variable containing the structure of the "lang/"
+ directory, where the file with translations will be
+ placed, for example, "foobar.mo". This is not
+ a required variable, if the directory is not specified,
+ the MO file will be saved in the "src/po" directory.
+{package}.mo This is the Target. It is specified as the name of
+ the package, for example, "foobar" with the addition
+ of the .mo extension.
+
+ *package-translate_example*
+Let's show it all on some concrete example and translate the
+"ftplugin/aap.vim" file into Russian and German.
+
+First, let's prepare the "aap.vim" file, specifying |bindtextdomain()| and
+|gettext()| function calls in it.
+>
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+ finish
+ endif
+
+ " Don't load another plugin for this buffer
+ let b:did_ftplugin = 1
+ call bindtextdomain("aap", fnamemodify(expand("<script>"), ':p:h') .. '/../lang/')
+
+ " Reset 'formatoptions', 'comments', 'commentstring' and 'expandtab' to undo
+ " this plugin.
+ let b:undo_ftplugin = "setl fo< com< cms< et<"
+
+ " Set 'formatoptions' to break comment lines but not other lines,
+ " and insert the comment leader when hitting <CR> or using "o".
+ setlocal fo-=t fo+=croql
+
+ " Set 'comments' to format dashed lists in comments.
+ setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:-
+ setlocal commentstring=#\ %s
+
+ " Expand tabs to spaces to avoid trouble.
+ setlocal expandtab
+
+ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = gettext("Aap Recipe Files (*.aap)\t*.aap\n", "aap")
+ if has("win32")
+ let b:browsefilter ..= gettext("All Files (*.*)\t*\n", "aap")
+ else
+ let b:browsefilter ..= gettext("All Files (*)\t*\n", "aap")
+ endif
+ let b:undo_ftplugin ..= " | unlet! b:browsefilter"
+ endif
+<
+Now let's create a POT file for it (example uses Windows paths):
+>
+ cd /d f:\forkvim\src\po
+ (the following command must be entered in one line, here it is separated for example)
+ nmake.exe -f Make_mvc.mak "PLUGPACKAGE=aap"
+ "PO_PLUG_INPUTLIST=d:\Programs\vim\vim91\ftplugin\aap.vim"
+ "POT_PLUGPACKAGE_PATH=e:\project\translate\plugins"
+ "VIMPROG=d:\Programs\vim\vim91\vim.exe"
+ aap.pot
+<
+After the POT file of our package is created, go to the directory where we
+saved it and perform the translation.
+>
+ cd /d e:\project\translate\plugins
+ copy aap.pot ru.po
+ copy aap.pot de.po
+<
+We have prepared a PO file with a translation into Russian:
+ # Test plugins translate ~
+ # ~
+ msgid "" ~
+ msgstr "" ~
+ "Project-Id-Version: aap\n" ~
+ "Report-Msgid-Bugs-To: \n" ~
+ "POT-Creation-Date: 2024-06-23 14:58+0300\n" ~
+ "PO-Revision-Date: 2024-06-23 14:58+0300\n" ~
+ "Last-Translator: Restorer\n" ~
+ "Language-Team: RuVim\n" ~
+ "Language: ru\n" ~
+ "MIME-Version: 1.0\n" ~
+ "Content-Type: text/plain; charset=UTF-8\n" ~
+ "Content-Transfer-Encoding: 8bit\n" ~
+
+ #: ../../runtime/ftplugin/aap.vim:32 ~
+ msgid "Aap Recipe Files (*.aap)\t*.aap\n" ~
+ msgstr "Файлы инÑтрукций Aap (*.aap)\t*.aap\n" ~
+
+ #: ../../runtime/ftplugin/aap.vim:34 ~
+ msgid "All Files (*.*)\t*\n" ~
+ msgstr "Ð’Ñе файлы (*.*)\t*\n" ~
+
+ #: ../../runtime/ftplugin/aap.vim:36 ~
+ msgid "All Files (*)\t*\n" ~
+ msgstr "Ð’Ñе файлы (*)\t*\n" ~
+
+And the PO file in German:
+ # Test plugins translate~
+ #~
+ msgid ""~
+ msgstr ""~
+ "Project-Id-Version: aap\n"~
+ "Report-Msgid-Bugs-To: \n"~
+ "POT-Creation-Date: 2024-06-23 14:58+0300\n"~
+ "PO-Revision-Date: 2024-06-24 13:11+0300\n"~
+ "Last-Translator: Restorer\n"~
+ "Language-Team: German\n"~
+ "Language: de\n"~
+ "MIME-Version: 1.0\n"~
+ "Content-Type: text/plain; charset=UTF-8\n"~
+ "Content-Transfer-Encoding: 8bit\n"~
+
+ #: ../../runtime/ftplugin/aap.vim:32~
+ msgid "Aap Recipe Files (*.aap)\t*.aap\n"~
+ msgstr "Aap-Rezeptdateien (*.aap)\t*.aap\n"~
+
+ #: ../../runtime/ftplugin/aap.vim:34~
+ msgid "All Files (*.*)\t*\n"~
+ msgstr "Alle Dateien (*.*)\t*.*\n"~
+
+ #: ../../runtime/ftplugin/aap.vim:36~
+ msgid "All Files (*)\t*\n"~
+ msgstr "Alle Dateien (*)\t*\n"~
+
+Now convert these files into MO files so that |gettext()| can display message
+translations. Note that since this is not a specialized plugin package, we
+will put the MO files in the "lang/" directory of the Vim editor.
+Type the following commands:
+>
+ cd /d f:\forkvim\src\po
+ (the following command must be entered in one line, here it is separated for example)
+ For Russian:
+ nmake.exe -f Make_mvc.mak "PLUGPACKAGE=aap"
+ "PO_PLUGPACKAGE=e:\project\translate\plugins\ru.po"
+ "MO_PLUGPACKAGE_PATH=d:\Programs\vim\vim91\lang\ru\LC_MESSAGES"
+ aap.mo
+ For German:
+ nmake.exe -f Make_mvc.mak "PLUGPACKAGE=aap"
+ "PO_PLUGPACKAGE=e:\project\translate\plugins\de.po"
+ "MO_PLUGPACKAGE_PATH=d:\Programs\vim\vim91\lang\de\LC_MESSAGES"
+ aap.mo
+<
+That's it, the translations are ready and you can see the plugin's messages
+in your native language.
+
+Let's also try to translate a plugin package. For example, when a package
+contains several scripts containing strings that need to be translated.
+For example, let's translate the "netrw" package into Japanese.
+For this example, we will translate only a few lines from this package.
+Let's prepare the scripts where we need to translate the message strings.
+
+The file "autoload\netrw.vim":
+>
+ " Load Once:
+ if &cp || exists("g:loaded_netrw")
+ finish
+ endif
+ call bindtextdomain("netrw", fnamemodify(expand("<script>"), ':p:h') .. '/../lang/')
+
+ " Check that vim has patches that netrw requires.
+ " Patches needed for v7.4: 1557, and 213.
+ " (netrw will benefit from vim's having patch#656, too)
+ let s:needspatches=[1557,213]
+ if exists("s:needspatches")
+ for ptch in s:needspatches
+ if v:version < 704 || (v:version == 704 && !has("patch".ptch))
+ if !exists("s:needpatch{ptch}")
+ unsilent echomsg gettext("***sorry*** this version of netrw requires vim v7.4 with patch#", "netrw") .. ptch
+ endif
+ let s:needpatch{ptch}= 1
+ finish
+ endif
+ endfor
+ endif
+<
+The file "autoload\netrwSettings.vim":
+>
+ " Load Once:
+ if exists("g:loaded_netrwSettings") || &cp
+ finish
+ endif
+ call bindtextdomain("netrw", fnamemodify(expand("<script>"), ':p:h') .. '/../lang/')
+ let g:loaded_netrwSettings = "v18"
+ if v:version < 700
+ echohl WarningMsg
+ echo gettext("***warning*** this version of netrwSettings needs vim 7.0", "netrw")
+ echohl Normal
+ finish
+ endif
+<
+Now we will prepare a POT file for further translation of messages.
+Execute the following commands:
+>
+ cd ~/forkvim/src/po
+ make -f Makefile "VIMPROG=/usr/local/bin/vim" "PLUGPACKAGE=netrw" \
+ "POT_PLUGPACKAGE_PATH=~/project/translate/plugins" \
+ "PO_PLUG_INPUTLIST=../../runtime/autoload/netrw.vim
+ ../../runtime/autoload/netrwSettings.vim" \
+ netrw.pot
+<
+Go to the directory with the POT file and make the translation:
+>
+ cd ~/project/translate/plugins
+ cp ./netrw.pot ja.po
+<
+When we have the translation ready in the "ja.po" file:
+ # Test plugins translate ~
+ # ~
+ msgid "" ~
+ msgstr "" ~
+ "Project-Id-Version: netrw\n" ~
+ "Report-Msgid-Bugs-To: \n" ~
+ "POT-Creation-Date: 2024-06-23 17:14+0300\n" ~
+ "PO-Revision-Date: 2024-06-23 17:14+0300\n" ~
+ "Last-Translator: Restorer\n" ~
+ "Language-Team: Japanese\n" ~
+ "Language: ja\n" ~
+ "MIME-Version: 1.0\n" ~
+ "Content-Type: text/plain; charset=UTF-8\n" ~
+ "Content-Transfer-Encoding: 8bit\n" ~
+
+ #: ../../runtime/autoload/netrw.vim:51 ~
+ msgid "***sorry*** this version of netrw requires vim v7.4 with patch#" ~
+ msgstr "" ~
+ "***申ã—訳ã‚ã‚Šã¾ã›ã‚“***ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®netrwã«ã¯ã€ãƒ‘ッãƒä»˜ãã®vim v7.4ãŒå¿…è¦ã§ã™#" ~
+
+ #: ../../runtime/autoload/netrwSettings.vim:28 ~
+ msgid "***warning*** this version of netrwSettings needs vim 7.0" ~
+ msgstr "***警告***ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®netrwSettingsã«ã¯vim7.0ãŒå¿…è¦ã§ã™" ~
+
+Convert ja.po to a MO file:
+>
+ cd ~/forkvim/src/po
+ make -f Makefile "PLUGPACKAGE=netrw" \
+ "PO_PLUGPACKAGE=~/project/translate/plugins/ja.po" \
+ "MO_PLUGPACKAGE_PATH=/usr/local/share/vim/vim91/lang/ja/LC_MESSAGES" \
+ netrw.mo
+<
+Executing those steps will allow you to get translation of any third-party
+plug-in packages.
Dependencies between plugins ~
*packload-two-steps*
diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt
index cf79353..f0ec16b 100644
--- a/runtime/doc/scroll.txt
+++ b/runtime/doc/scroll.txt
@@ -1,4 +1,4 @@
-*scroll.txt* For Vim version 9.1. Last change: 2022 Oct 17
+*scroll.txt* For Vim version 9.1. Last change: 2024 Jul 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -48,6 +48,8 @@ CTRL-D Scroll window Downwards in the buffer. The number of
<S-Down> or *<S-Down>* *<kPageDown>*
<PageDown> or *<PageDown>* *CTRL-F*
+<S-CR> or *<S-CR>* *<S-NL>*
+<S-+> or *SHIFT-+* *<S-Plus>*
CTRL-F Scroll window [count] pages Forwards (downwards) in
the buffer. See also 'startofline' option.
When there is only one window the 'window' option
@@ -85,6 +87,7 @@ CTRL-U Scroll window Upwards in the buffer. The number of
<S-Up> or *<S-Up>* *<kPageUp>*
<PageUp> or *<PageUp>* *CTRL-B*
+<S--> or *<S-Minus>* *SHIFT-MINUS*
CTRL-B Scroll window [count] pages Backwards (upwards) in the
buffer. See also 'startofline' option.
When there is only one window the 'window' option
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
index dac3a57..679099c 100644
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -1,4 +1,4 @@
-*sign.txt* For Vim version 9.1. Last change: 2024 Jun 08
+*sign.txt* For Vim version 9.1. Last change: 2024 Jul 07
VIM REFERENCE MANUAL by Gordon Prieur
@@ -80,8 +80,9 @@ used by popup windows where 'cursorline' is set.
*sign-priority*
Each placed sign is assigned a priority value. When multiple signs are placed
on the same line, the attributes of the sign with the highest priority is used
-independently of the sign group. The default priority for a sign is 10. The
-priority is assigned at the time of placing a sign.
+independently of the sign group. The default priority for a sign is 10, this
+value can be changed for different signs by specifying a different value at
+definition time. The priority is assigned at the time of placing a sign.
When two signs with the same priority are present, and one has an icon or text
in the signcolumn while the other has line highlighting, then both are
@@ -135,6 +136,8 @@ See |sign_define()| for the equivalent Vim script function.
Motif pixmap (.xpm)
Win32 .bmp, .ico, .cur
pixmap (.xpm) |+xpm_w32|
+ priority={prio}
+ Default priority for the sign, see |sign-priority|.
linehl={group}
Highlighting group used for the whole line the sign is placed
@@ -209,11 +212,11 @@ See |sign_place()| for the equivalent Vim script function.
By default, the sign is placed in the global sign group.
- By default, the sign is assigned a default priority of 10. To
- assign a different priority value, use "priority={prio}" to
- specify a value. The priority is used to determine the sign
- that is displayed when multiple signs are placed on the same
- line.
+ By default, the sign is assigned a default priority of 10,
+ unless specified otherwise by the sign definition. To assign a
+ different priority value, use "priority={prio}" to specify a
+ value. The priority is used to determine the sign that is
+ displayed when multiple signs are placed on the same line.
Examples: >
:sign place 5 line=3 name=sign1 file=a.py
@@ -401,6 +404,7 @@ sign_define({list})
icon full path to the bitmap file for the sign.
linehl highlight group used for the whole line the
sign is placed in.
+ priority default priority value of the sign
numhl highlight group used for the line number where
the sign is placed.
text text that is displayed when there is no icon
@@ -453,6 +457,7 @@ sign_getdefined([{name}]) *sign_getdefined()*
linehl highlight group used for the whole line the
sign is placed in; not present if not set
name name of the sign
+ priority default priority value of the sign
numhl highlight group used for the line number where
the sign is placed; not present if not set
text text that is displayed when there is no icon
@@ -646,7 +651,8 @@ sign_placelist({list}) *sign_placelist()*
priority Priority of the sign. When multiple signs are
placed on a line, the sign with the highest
priority is used. If not specified, the
- default value of 10 is used. See
+ default value of 10 is used, unless specified
+ otherwise by the sign definition. See
|sign-priority| for more information.
If {id} refers to an existing sign, then the existing sign is
diff --git a/runtime/doc/sponsor.txt b/runtime/doc/sponsor.txt
index 1698168..6df14eb 100644
--- a/runtime/doc/sponsor.txt
+++ b/runtime/doc/sponsor.txt
@@ -1,4 +1,4 @@
-*sponsor.txt* For Vim version 9.1. Last change: 2024 Apr 22
+*sponsor.txt* For Vim version 9.1. Last change: 2024 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -76,16 +76,14 @@ How much money should I send?
That is up to you. The more you give, the more children will be helped.
An indication for individuals that use Vim at home: 10 Euro per year. For
-professional use: 30 Euro per year per person. Send at least 10 euro to be
-able to vote for features.
+professional use: 30 Euro per year per person.
How do I become a Vim sponsor or registered Vim user?
Send money, as explained above |send-money| and include your e-mail address.
When the money has been received you will receive a unique registration key.
-This key can be used on the Vim website to activate voting on your Vim
-account. You will then get an extra page where you can vote for features and
+This key can be used on the Vim website to get an extra page where you can
choose whether others will be able to see that you donated. There is a link
to this page on your "My Account" page.
@@ -127,8 +125,7 @@ the developer |maillist|, for reporting bugs see |bugs|.
How about Charityware?
Currently the Vim donations go to |uganda| anyway. Thus it doesn't matter if
-you sponsor Vim or ICCF. Except that Vim sponsoring will allow you to vote
-for features.
+you sponsor Vim or ICCF.
I donated $$$, now please add feature XYZ!
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 30e85ed..cdc0f16 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 Jun 04
+*starting.txt* For Vim version 9.1. Last change: 2024 Aug 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -540,6 +540,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
not needed when reading a file, because there is a check if
the file that is being read has been encrypted, and Vim asks
for a key automatically. |encryption|
+ {only available when compiled with the |+cryptv| feature}
*-X*
-X Do not try connecting to the X server to get the current
@@ -854,16 +855,16 @@ accordingly. Vim proceeds in this order:
I The environment variable VIMINIT (see also |compatible-default|) (*)
The value of $VIMINIT is used as an Ex command line.
II The user vimrc file(s):
- "$HOME/.vimrc" (for Unix) (*)
- "$HOME/.vim/vimrc" (for Unix) (*)
- "$HOME/.config/vim/vimrc" (for Unix) (*)
- "s:.vimrc" (for Amiga) (*)
- "home:.vimrc" (for Amiga) (*)
- "home:vimfiles:vimrc" (for Amiga) (*)
- "$VIM/.vimrc" (for Amiga) (*)
- "$HOME/_vimrc" (for Win32) (*)
- "$HOME/vimfiles/vimrc" (for Win32) (*)
- "$VIM/_vimrc" (for Win32) (*)
+ "$HOME/.vimrc" (for Unix) (*)
+ "$HOME/.vim/vimrc" (for Unix) (*)
+ "$XDG_CONFIG_HOME/vim/vimrc" (for Unix) (*)
+ "s:.vimrc" (for Amiga) (*)
+ "home:.vimrc" (for Amiga) (*)
+ "home:vimfiles:vimrc" (for Amiga) (*)
+ "$VIM/.vimrc" (for Amiga) (*)
+ "$HOME/_vimrc" (for Win32) (*)
+ "$HOME/vimfiles/vimrc" (for Win32) (*)
+ "$VIM/_vimrc" (for Win32) (*)
"$HOME/config/settings/vim/vimrc" (for Haiku) (*)
Note: For Unix and Amiga, when ".vimrc" does not exist,
@@ -1257,7 +1258,7 @@ To change it later, use a ":let" command like this: >
In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that
greps in the help files) you might be able to use this: >
- VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' `
+ VIMRUNTIME=$(vim -es '+put=$VIMRUNTIME|print|quit!')
Don't set $VIMRUNTIME to an empty value, some things may stop working.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index c07c3a4..736e664 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt* For Vim version 9.1. Last change: 2024 Jun 17
+*syntax.txt* For Vim version 9.1. Last change: 2024 Aug 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -958,6 +958,25 @@ For Visual Basic use: >
:let g:filetype_asa = "aspvbs"
:let g:filetype_asp = "aspvbs"
+ASYMPTOTE *asy.vim* *ft-asy-syntax*
+
+By default, only basic Asymptote keywords are highlighted. To highlight
+extended geometry keywords: >
+
+ :let g:asy_syn_plain = 1
+
+and for highlighting keywords related to 3D constructions: >
+
+ :let g:asy_syn_three = 1
+
+By default, Asymptote-defined colors (e.g: lightblue) are highlighted. To
+highlight TeX-defined colors (e.g: BlueViolet) use: >
+
+ :let g:asy_syn_texcolors = 1
+
+or for Xorg colors (e.g: AliceBlue): >
+
+ :let g:asy_syn_x11colors = 1
BAAN *baan.vim* *baan-syntax*
@@ -1221,6 +1240,21 @@ will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the
"filetype_csh" variable exists, the filetype will be set to the value of the
variable.
+CSV *ft-csv-syntax*
+
+If you change the delimiter of a CSV file, its syntax highlighting will no
+longer match the changed file content. You will need to unlet the following
+variable: >
+
+ :unlet b:csv_delimiter
+
+And afterwards save and reload the file: >
+
+ :w
+ :e
+
+Now the syntax engine should determine the newly changed CSV delimiter.
+
CYNLIB *cynlib.vim* *ft-cynlib-syntax*
@@ -1874,6 +1908,10 @@ You can also disable this rendering by adding the following line to your
vimrc file: >
:let html_no_rendering=1
+By default Vim synchronises the syntax to 250 lines before the first displayed
+line. This can be configured using: >
+ :let html_minlines = 500
+<
HTML comments are rather special (see an HTML reference document for the
details), and the syntax coloring scheme will highlight all errors.
However, if you prefer to use the wrong style (starts with <!-- and
@@ -1993,102 +2031,142 @@ idlsyntax_showerror_soft Use softer colours by default for errors
JAVA *java.vim* *ft-java-syntax*
-The java.vim syntax highlighting file offers several options:
+The java.vim syntax highlighting file offers several options.
-In Java 1.0.2 it was never possible to have braces inside parens, so this was
-flagged as an error. Since Java 1.1 this is possible (with anonymous
-classes), and therefore is no longer marked as an error. If you prefer the
-old way, put the following line into your vim startup file: >
- :let java_mark_braces_in_parens_as_errors=1
+In Java 1.0.2, it was never possible to have braces inside parens, so this was
+flagged as an error. Since Java 1.1, this is possible (with anonymous
+classes); and, therefore, is no longer marked as an error. If you prefer the
+old way, put the following line into your Vim startup file: >
+ :let g:java_mark_braces_in_parens_as_errors = 1
-All identifiers in java.lang.* are always visible in all classes. To
-highlight them use: >
- :let java_highlight_java_lang_ids=1
+All (exported) public types declared in `java.lang` are always automatically
+imported and available as simple names. To highlight them, use: >
+ :let g:java_highlight_java_lang_ids = 1
-You can also highlight identifiers of most standard Java packages if you
-download the javaid.vim script at http://www.fleiner.com/vim/download.html.
-If you prefer to only highlight identifiers of a certain package, say java.io
-use the following: >
- :let java_highlight_java_io=1
+You can also highlight types of most standard Java packages if you download
+the javaid.vim script at http://www.fleiner.com/vim/download.html. If you
+prefer to only highlight types of a certain package, say `java.io`, use the
+following: >
+ :let g:java_highlight_java_io = 1
Check the javaid.vim file for a list of all the packages that are supported.
-Function names are not highlighted, as the way to find functions depends on
-how you write Java code. The syntax file knows two possible ways to highlight
-functions:
-
-If you write function declarations that are consistently indented by either
-a tab, or a space . . . or eight space character(s), you may want to set >
- :let java_highlight_functions="indent"
- :let java_highlight_functions="indent1"
- :let java_highlight_functions="indent2"
- :let java_highlight_functions="indent3"
- :let java_highlight_functions="indent4"
- :let java_highlight_functions="indent5"
- :let java_highlight_functions="indent6"
- :let java_highlight_functions="indent7"
- :let java_highlight_functions="indent8"
+Headers of indented function declarations can be highlighted (along with parts
+of lambda expressions and method reference expressions), but it depends on how
+you write Java code. Two formats are recognized:
+
+1) If you write function declarations that are consistently indented by either
+a tab, or a space . . . or eight space character(s), you may want to set one
+of >
+ :let g:java_highlight_functions = "indent"
+ :let g:java_highlight_functions = "indent1"
+ :let g:java_highlight_functions = "indent2"
+ :let g:java_highlight_functions = "indent3"
+ :let g:java_highlight_functions = "indent4"
+ :let g:java_highlight_functions = "indent5"
+ :let g:java_highlight_functions = "indent6"
+ :let g:java_highlight_functions = "indent7"
+ :let g:java_highlight_functions = "indent8"
Note that in terms of 'shiftwidth', this is the leftmost step of indentation.
-However, if you follow the Java guidelines about how functions and classes are
-supposed to be named (with respect to upper- and lowercase) and there is any
-amount of indentation, you may want to set >
- :let java_highlight_functions="style"
-If neither setting does work for you, but you would still want function
-declarations to be highlighted, create your own definitions by changing the
-definitions in java.vim or by creating your own java.vim that includes the
-original one and then adds the code to highlight functions.
-
-In Java 1.1 the functions System.out.println() and System.err.println() should
-only be used for debugging. Therefore it is possible to highlight debugging
-statements differently. To do this you must add the following definition in
-your startup file: >
- :let java_highlight_debug=1
-The result will be that those statements are highlighted as 'Special'
-characters. If you prefer to have them highlighted differently you must define
-new highlightings for the following groups.:
- Debug, DebugSpecial, DebugString, DebugBoolean, DebugType
-which are used for the statement itself, special characters used in debug
-strings, strings, boolean constants and types (this, super) respectively. I
-have opted to choose another background for those statements.
+
+2) However, if you follow the Java guidelines about how functions and types
+are supposed to be named (with respect to upper- and lowercase) and there is
+any amount of indentation, you may want to set >
+ :let g:java_highlight_functions = "style"
+
+In addition, you can combine any value of "g:java_highlight_functions" with >
+ :let g:java_highlight_signature = 1
+to have the name of a function with its parameter list parens distinctly
+highlighted from its type parameters, return type, and formal parameters; and
+to have the parameter list parens of a lambda expression with its arrow
+distinctly highlighted from its formal parameters or identifiers.
+
+If neither setting does work for you, but you would still want headers of
+function declarations to be highlighted, modify the current syntax definitions
+or compose new ones.
+
+Higher-order function types can be hard to parse by eye, so uniformly toning
+down some of their components may be of value. Provided that such type names
+conform to the Java naming guidelines, you may arrange it with >
+ :let g:java_highlight_generics = 1
+
+In Java 1.1, the functions `System.out.println()` and `System.err.println()`
+should only be used for debugging. Consider adding the following definition
+in your startup file: >
+ :let g:java_highlight_debug = 1
+to have the bulk of those statements colored as
+ *Debug debugging statements,
+and to make some of their own items further grouped and linked:
+ *Special as DebugSpecial,
+ *String as DebugString,
+ *Boolean as DebugBoolean,
+ *Type as DebugType,
+which are used for special characters appearing in strings, strings proper,
+boolean literals, and special instance references (`super`, `this`, `null`),
+respectively.
Javadoc is a program that takes special comments out of Java program files and
creates HTML pages. The standard configuration will highlight this HTML code
-similarly to HTML files (see |html.vim|). You can even add Javascript
-and CSS inside this code (see below). There are four differences however:
- 1. The title (all characters up to the first '.' which is followed by
- some white space or up to the first '@') is colored differently (to change
- the color change the group CommentTitle).
- 2. The text is colored as 'Comment'.
- 3. HTML comments are colored as 'Special'
- 4. The special Javadoc tags (@see, @param, ...) are highlighted as specials
- and the argument (for @see, @param, @exception) as Function.
-To turn this feature off add the following line to your startup file: >
- :let java_ignore_javadoc=1
-
-If you use the special Javadoc comment highlighting described above you
-can also turn on special highlighting for Javascript, visual basic
-scripts and embedded CSS (stylesheets). This makes only sense if you
-actually have Javadoc comments that include either Javascript or embedded
-CSS. The options to use are >
- :let java_javascript=1
- :let java_css=1
- :let java_vb=1
-
-In order to highlight nested parens with different colors define colors
-for javaParen, javaParen1 and javaParen2, for example with >
+similarly to HTML files (see |html.vim|). You can even add JavaScript and CSS
+inside this code (see below). The HTML rendering diverges as follows:
+ 1. The first sentence (all characters up to the first period `.`, which is
+ followed by a whitespace character or a line terminator, or up to the
+ first block tag, e.g. `@param`, `@return`) is colored as
+ *SpecialComment special comments.
+ 2. The text is colored as
+ *Comment comments.
+ 3. HTML comments are colored as
+ *Special special symbols.
+ 4. The standard Javadoc tags (`@code`, `@see`, etc.) are colored as
+ *Special special symbols
+ and some of their arguments are colored as
+ *Function function names.
+To turn this feature off, add the following line to your startup file: >
+ :let g:java_ignore_javadoc = 1
+
+If you use the special Javadoc comment highlighting described above, you can
+also turn on special highlighting for JavaScript, Visual Basic scripts, and
+embedded CSS (stylesheets). This only makes sense if any of these languages
+actually appear in Javadoc comments. The variables to use are >
+ :let g:java_javascript = 1
+ :let g:java_css = 1
+ :let g:java_vb = 1
+Note that these three variables are maintained in the HTML syntax file.
+
+Numbers and strings can be recognized in non-Javadoc comments with >
+ :let g:java_comment_strings = 1
+
+When 'foldmethod' is set to "syntax", blocks of code and multi-line comments
+will be folded. No text is usually written in the first line of a multi-line
+comment, making folded contents of Javadoc comments less informative with the
+default 'foldtext' value; you may opt for showing the contents of a second
+line for any comments written in this way, and showing the contents of a first
+line otherwise, with >
+ :let g:java_foldtext_show_first_or_second_line = 1
+
+Trailing whitespace characters or a run of space characters before a tab
+character can be marked as an error with >
+ :let g:java_space_errors = 1
+but either kind of an error can be suppressed by also defining one of >
+ :let g:java_no_trail_space_error = 1
+ :let g:java_no_tab_space_error = 1
+
+In order to highlight nested parens with different colors, define colors for
+`javaParen`, `javaParen1`, and `javaParen2`. For example, >
:hi link javaParen Comment
or >
:hi javaParen ctermfg=blue guifg=#0000ff
If you notice highlighting errors while scrolling backwards, which are fixed
-when redrawing with CTRL-L, try setting the "java_minlines" internal variable
-to a larger number: >
- :let java_minlines = 50
+when redrawing with CTRL-L, try setting the "g:java_minlines" variable to
+a larger number: >
+ :let g:java_minlines = 50
This will make the syntax synchronization start 50 lines before the first
displayed line. The default value is 10. The disadvantage of using a larger
number is that redrawing can become slow.
-JSON *json.vim* *ft-json-syntax*
+JSON *json.vim* *ft-json-syntax* *g:vim_json_conceal*
+ *g:vim_json_warnings*
The json syntax file provides syntax highlighting with conceal support by
default. To disable concealment: >
@@ -2231,7 +2309,7 @@ By default mail.vim synchronises syntax to 100 lines before the first
displayed line. If you have a slow machine, and generally deal with emails
with short headers, you can change this to a smaller value: >
- :let mail_minlines = 30
+ :let mail_minlines = 30
MAKE *make.vim* *ft-make-syntax*
@@ -2242,6 +2320,16 @@ feature off by using: >
:let make_no_commands = 1
+Comments are also highlighted by default. You can turn this off by using: >
+
+ :let make_no_comments = 1
+
+Microsoft Makefile handles variable expansion and comments differently
+(backslashes are not used for escape). If you see any wrong highlights
+because of this, you can try this: >
+
+ :let make_microsoft = 1
+
MAPLE *maple.vim* *ft-maple-syntax*
@@ -2268,7 +2356,8 @@ $VIMRUNTIME/syntax/syntax.vim).
mv_finance mv_logic mv_powseries
-MARKDOWN *ft-markdown-syntax*
+MARKDOWN *ft-markdown-syntax* *g:markdown_minlines*
+ *g:markdown_fenced_languages* *g:markdown_syntax_conceal*
If you have long regions there might be wrong highlighting. At the cost of
slowing down displaying, you can have the engine look further back to sync on
@@ -2293,6 +2382,17 @@ have the following in your .vimrc: >
let filetype_m = "mma"
+MEDIAWIKI *ft-mediawiki-syntax*
+
+By default, syntax highlighting includes basic HTML tags like style and
+headers |html.vim|. For strict Mediawiki syntax highlighting: >
+
+ let g:html_no_rendering = 1
+
+If HTML highlighting is desired, terminal-based text formatting such as bold
+and italic is possible by: >
+
+ let g:html_style_rendering = 1
MODULA2 *modula2.vim* *ft-modula2-syntax*
@@ -2507,9 +2607,9 @@ PANDOC *ft-pandoc-syntax*
By default, markdown files will be detected as filetype "markdown".
Alternatively, you may want them to be detected as filetype "pandoc" instead.
-To do so, set the following: >
+To do so, set the *g:filetype_md* var: >
- :let g:markdown_md = 'pandoc'
+ :let g:filetype_md = 'pandoc'
The pandoc syntax plugin uses |conceal| for pretty highlighting. Default is 1 >
@@ -3784,6 +3884,15 @@ are highlighted. To disable set it to zero in your .vimrc: >
<
The default value is 1.
+TYPST *ft-typst-syntax*
+
+ *g:typst_embedded_languages*
+Typst files can embed syntax highlighting for other languages by setting the
+|g:typst_embedded_languages| variable. This variable is a list of language
+names whose syntax definitions will be included in Typst files. Example: >
+
+ let g:typst_embedded_languages = ['python', 'r']
+
VIM *vim.vim* *ft-vim-syntax*
*g:vimsyn_minlines* *g:vimsyn_maxlines*
There is a trade-off between more accurate syntax highlighting versus screen
@@ -5044,7 +5153,7 @@ matches, nextgroup, etc. But there are a few differences:
line (or group of continued lines).
- When a match with a sync pattern is found, the rest of the line (or group of
continued lines) is searched for another match. The last match is used.
- This is used when a line can contain both the start end the end of a region
+ This is used when a line can contain both the start and the end of a region
(e.g., in a C-comment like /* this */, the last "*/" is used).
There are two ways how a match with a sync pattern can be used:
diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index abbc778..afc2512 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt* For Vim version 9.1. Last change: 2024 May 15
+*tabpage.txt* For Vim version 9.1. Last change: 2024 Jul 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -142,7 +142,8 @@ something else.
:tabclose $ " close the last tab page
:tabclose # " close the last accessed tab page
-When a tab is closed the next tab page will become the current one.
+When a tab is closed the next tab page will become the current one. This
+behaviour can be customized using the 'tabclose' option.
*:tabo* *:tabonly*
:tabo[nly][!] Close all other tab pages.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 794fa0c..9cd6702 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1161,6 +1161,7 @@ $quote eval.txt /*$quote*
't_xo' term.txt /*'t_xo'*
't_xs' term.txt /*'t_xs'*
'ta' options.txt /*'ta'*
+'tabclose' options.txt /*'tabclose'*
'tabline' options.txt /*'tabline'*
'tabpagemax' options.txt /*'tabpagemax'*
'tabstop' options.txt /*'tabstop'*
@@ -1179,6 +1180,7 @@ $quote eval.txt /*$quote*
'tbis' options.txt /*'tbis'*
'tbs' options.txt /*'tbs'*
'tc' options.txt /*'tc'*
+'tcl' options.txt /*'tcl'*
'tcldll' options.txt /*'tcldll'*
'tenc' options.txt /*'tenc'*
'term' options.txt /*'term'*
@@ -3742,6 +3744,7 @@ $quote eval.txt /*$quote*
<RightMouse> visual.txt /*<RightMouse>*
<RightRelease> term.txt /*<RightRelease>*
<S- intro.txt /*<S-*
+<S-CR> scroll.txt /*<S-CR>*
<S-Del> os_dos.txt /*<S-Del>*
<S-Down> scroll.txt /*<S-Down>*
<S-End> term.txt /*<S-End>*
@@ -3761,6 +3764,9 @@ $quote eval.txt /*$quote*
<S-Insert> os_dos.txt /*<S-Insert>*
<S-Left> motion.txt /*<S-Left>*
<S-LeftMouse> term.txt /*<S-LeftMouse>*
+<S-Minus> scroll.txt /*<S-Minus>*
+<S-NL> scroll.txt /*<S-NL>*
+<S-Plus> scroll.txt /*<S-Plus>*
<S-Right> motion.txt /*<S-Right>*
<S-RightMouse> term.txt /*<S-RightMouse>*
<S-ScrollWheelDown> scroll.txt /*<S-ScrollWheelDown>*
@@ -4063,6 +4069,7 @@ CursorHold-example windows.txt /*CursorHold-example*
CursorHoldI autocmd.txt /*CursorHoldI*
CursorIM mbyte.txt /*CursorIM*
CursorMoved autocmd.txt /*CursorMoved*
+CursorMovedC autocmd.txt /*CursorMovedC*
CursorMovedI autocmd.txt /*CursorMovedI*
D change.txt /*D*
DOS os_dos.txt /*DOS*
@@ -5549,6 +5556,7 @@ Jobs eval.txt /*Jobs*
K various.txt /*K*
KDE gui_x11.txt /*KDE*
KVim gui_x11.txt /*KVim*
+KeyInputPre autocmd.txt /*KeyInputPre*
Kibaale uganda.txt /*Kibaale*
Korean mbyte.txt /*Korean*
L motion.txt /*L*
@@ -5689,6 +5697,8 @@ Ruby if_ruby.txt /*Ruby*
Russian russian.txt /*Russian*
S change.txt /*S*
SHELL starting.txt /*SHELL*
+SHIFT-+ scroll.txt /*SHIFT-+*
+SHIFT-MINUS scroll.txt /*SHIFT-MINUS*
SQLGetType ft_sql.txt /*SQLGetType*
SQLSetType ft_sql.txt /*SQLSetType*
SafeState autocmd.txt /*SafeState*
@@ -6055,6 +6065,7 @@ assert_notmatch() testing.txt /*assert_notmatch()*
assert_report() testing.txt /*assert_report()*
assert_true() testing.txt /*assert_true()*
astro.vim syntax.txt /*astro.vim*
+asy.vim syntax.txt /*asy.vim*
at motion.txt /*at*
atan() builtin.txt /*atan()*
atan2() builtin.txt /*atan2()*
@@ -6147,6 +6158,7 @@ beval_text-variable eval.txt /*beval_text-variable*
beval_winid-variable eval.txt /*beval_winid-variable*
beval_winnr-variable eval.txt /*beval_winnr-variable*
binary-number eval.txt /*binary-number*
+bindtextdomain() builtin.txt /*bindtextdomain()*
bitwise-function usr_41.txt /*bitwise-function*
bitwise-shift eval.txt /*bitwise-shift*
blob eval.txt /*blob*
@@ -6539,6 +6551,7 @@ compiler-perl quickfix.txt /*compiler-perl*
compiler-pyunit quickfix.txt /*compiler-pyunit*
compiler-select quickfix.txt /*compiler-select*
compiler-tex quickfix.txt /*compiler-tex*
+compiler-typst quickfix.txt /*compiler-typst*
compiler-vaxada ft_ada.txt /*compiler-vaxada*
compl-current insert.txt /*compl-current*
compl-define insert.txt /*compl-define*
@@ -6660,6 +6673,7 @@ cpo-v options.txt /*cpo-v*
cpo-w options.txt /*cpo-w*
cpo-x options.txt /*cpo-x*
cpo-y options.txt /*cpo-y*
+cpo-z options.txt /*cpo-z*
cpo-{ options.txt /*cpo-{*
cpp.vim syntax.txt /*cpp.vim*
crash-recovery recover.txt /*crash-recovery*
@@ -6722,6 +6736,7 @@ cw change.txt /*cw*
cweb.vim syntax.txt /*cweb.vim*
cynlib.vim syntax.txt /*cynlib.vim*
d change.txt /*d*
+d-special change.txt /*d-special*
daB motion.txt /*daB*
daW motion.txt /*daW*
dab motion.txt /*dab*
@@ -7239,6 +7254,7 @@ ft-asmh8300-syntax syntax.txt /*ft-asmh8300-syntax*
ft-aspperl-syntax syntax.txt /*ft-aspperl-syntax*
ft-aspvbs-syntax syntax.txt /*ft-aspvbs-syntax*
ft-astro-syntax syntax.txt /*ft-astro-syntax*
+ft-asy-syntax syntax.txt /*ft-asy-syntax*
ft-awk-plugin filetype.txt /*ft-awk-plugin*
ft-bash-syntax syntax.txt /*ft-bash-syntax*
ft-basic-syntax syntax.txt /*ft-basic-syntax*
@@ -7260,6 +7276,7 @@ ft-context-settings ft_context.txt /*ft-context-settings*
ft-cpp-syntax syntax.txt /*ft-cpp-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*
ft-cweb-syntax syntax.txt /*ft-cweb-syntax*
ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax*
ft-dart-syntax syntax.txt /*ft-dart-syntax*
@@ -7284,7 +7301,9 @@ ft-fortran-syntax syntax.txt /*ft-fortran-syntax*
ft-freebasic-plugin filetype.txt /*ft-freebasic-plugin*
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-go-plugin filetype.txt /*ft-go-plugin*
ft-gprof-plugin filetype.txt /*ft-gprof-plugin*
ft-groff-syntax syntax.txt /*ft-groff-syntax*
ft-gsp-syntax syntax.txt /*ft-gsp-syntax*
@@ -7320,6 +7339,7 @@ ft-markdown-syntax syntax.txt /*ft-markdown-syntax*
ft-masm-syntax syntax.txt /*ft-masm-syntax*
ft-mathematica-syntax syntax.txt /*ft-mathematica-syntax*
ft-matlab-indent indent.txt /*ft-matlab-indent*
+ft-mediawiki-syntax syntax.txt /*ft-mediawiki-syntax*
ft-metafont ft_mp.txt /*ft-metafont*
ft-metafont-intro ft_mp.txt /*ft-metafont-intro*
ft-metafont-mappings ft_mp.txt /*ft-metafont-mappings*
@@ -7398,6 +7418,8 @@ ft-tex-syntax syntax.txt /*ft-tex-syntax*
ft-tf-syntax syntax.txt /*ft-tf-syntax*
ft-typescript-syntax syntax.txt /*ft-typescript-syntax*
ft-typescriptreact-syntax syntax.txt /*ft-typescriptreact-syntax*
+ft-typst-plugin filetype.txt /*ft-typst-plugin*
+ft-typst-syntax syntax.txt /*ft-typst-syntax*
ft-vb-syntax syntax.txt /*ft-vb-syntax*
ft-verilog-indent indent.txt /*ft-verilog-indent*
ft-vhdl-indent indent.txt /*ft-vhdl-indent*
@@ -7505,6 +7527,7 @@ g:decada.Unit_Name() ft_ada.txt /*g:decada.Unit_Name()*
g:do_no_lazyload_menus gui.txt /*g:do_no_lazyload_menus*
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:ftplugin_rust_source_path ft_rust.txt /*g:ftplugin_rust_source_path*
g:gnat ft_ada.txt /*g:gnat*
@@ -7551,6 +7574,9 @@ g:html_use_encoding syntax.txt /*g:html_use_encoding*
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:markdown_fenced_languages syntax.txt /*g:markdown_fenced_languages*
+g:markdown_minlines syntax.txt /*g:markdown_minlines*
+g:markdown_syntax_conceal syntax.txt /*g:markdown_syntax_conceal*
g:netrw_altfile pi_netrw.txt /*g:netrw_altfile*
g:netrw_alto pi_netrw.txt /*g:netrw_alto*
g:netrw_altv pi_netrw.txt /*g:netrw_altv*
@@ -7705,9 +7731,14 @@ g:tex_subscripts syntax.txt /*g:tex_subscripts*
g:tex_superscripts syntax.txt /*g:tex_superscripts*
g:tex_verbspell syntax.txt /*g:tex_verbspell*
g:typescript_host_keyword syntax.txt /*g:typescript_host_keyword*
+g:typst_cmd quickfix.txt /*g:typst_cmd*
+g:typst_conceal filetype.txt /*g:typst_conceal*
+g:typst_embedded_languages syntax.txt /*g:typst_embedded_languages*
g:var eval.txt /*g:var*
g:vim_indent indent.txt /*g:vim_indent*
g:vim_indent_cont indent.txt /*g:vim_indent_cont*
+g:vim_json_conceal syntax.txt /*g:vim_json_conceal*
+g:vim_json_warnings syntax.txt /*g:vim_json_warnings*
g:vimball_home pi_vimball.txt /*g:vimball_home*
g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir*
g:vimsyn_comment_strings syntax.txt /*g:vimsyn_comment_strings*
@@ -7773,6 +7804,10 @@ gdb-version terminal.txt /*gdb-version*
ge motion.txt /*ge*
gender-neutral helphelp.txt /*gender-neutral*
get() builtin.txt /*get()*
+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-ms-debuggers debug.txt /*get-ms-debuggers*
getbufinfo() builtin.txt /*getbufinfo()*
getbufline() builtin.txt /*getbufline()*
@@ -8288,6 +8323,7 @@ iconise starting.txt /*iconise*
iconize starting.txt /*iconize*
iconv() builtin.txt /*iconv()*
iconv-dynamic mbyte.txt /*iconv-dynamic*
+id() builtin.txt /*id()*
ident-search tips.txt /*ident-search*
idl-syntax syntax.txt /*idl-syntax*
idl.vim syntax.txt /*idl.vim*
@@ -9178,6 +9214,8 @@ no_buffers_menu gui.txt /*no_buffers_menu*
no_mail_maps filetype.txt /*no_mail_maps*
no_plugin_maps filetype.txt /*no_plugin_maps*
nocombine syntax.txt /*nocombine*
+nohlsearch-auto pattern.txt /*nohlsearch-auto*
+nohlsearch-install usr_05.txt /*nohlsearch-install*
non-greedy pattern.txt /*non-greedy*
non-zero-arg eval.txt /*non-zero-arg*
none-function_argument userfunc.txt /*none-function_argument*
@@ -9291,6 +9329,10 @@ out_timeout channel.txt /*out_timeout*
p change.txt /*p*
pack-add repeat.txt /*pack-add*
package-create repeat.txt /*package-create*
+package-doc repeat.txt /*package-doc*
+package-documentation repeat.txt /*package-documentation*
+package-translate_example repeat.txt /*package-translate_example*
+package-translation repeat.txt /*package-translation*
packages repeat.txt /*packages*
packload-two-steps repeat.txt /*packload-two-steps*
page-down intro.txt /*page-down*
@@ -9431,6 +9473,7 @@ popup_menu() popup.txt /*popup_menu()*
popup_menu-shortcut-example popup.txt /*popup_menu-shortcut-example*
popup_move() popup.txt /*popup_move()*
popup_notification() popup.txt /*popup_notification()*
+popup_setbuf() popup.txt /*popup_setbuf()*
popup_setoptions() popup.txt /*popup_setoptions()*
popup_settext() popup.txt /*popup_settext()*
popup_show() popup.txt /*popup_show()*
@@ -10594,6 +10637,7 @@ termdebug-mappings terminal.txt /*termdebug-mappings*
termdebug-prompt terminal.txt /*termdebug-prompt*
termdebug-starting terminal.txt /*termdebug-starting*
termdebug-stepping terminal.txt /*termdebug-stepping*
+termdebug-timeout terminal.txt /*termdebug-timeout*
termdebug-variables terminal.txt /*termdebug-variables*
termdebug_disasm_window terminal.txt /*termdebug_disasm_window*
termdebug_map_K terminal.txt /*termdebug_map_K*
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index 7091f83..858309a 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt* For Vim version 9.1. Last change: 2024 Mar 16
+*tagsrch.txt* For Vim version 9.1. Last change: 2024 Aug 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -588,12 +588,12 @@ ctags).
{term} ;" The two characters semicolon and double quote. This is
interpreted by Vi as the start of a comment, which makes the
following be ignored. This is for backwards compatibility
- with Vi, it ignores the following fields. Example:
+ with Vi, it ignores the following fields. Example: >
APP file /^static int APP;$/;" v
- When {tagaddress} is not a line number or search pattern, then
+< When {tagaddress} is not a line number or search pattern, then
{term} must be |;". Here the bar ends the command (excluding
the bar) and ;" is used to have Vi ignore the rest of the
- line. Example:
+ line. Example: >
APP file.c call cursor(3, 4)|;" v
{field} .. A list of optional fields. Each field has the form:
@@ -611,7 +611,9 @@ ctags).
There is one field that doesn't have a ':'. This is the kind
of the tag. It is handled like it was preceded with "kind:".
- See the documentation of ctags for the kinds it produces.
+ In the above example, this was "kind:v" (typically variable).
+ See the documentation of ctags for the kinds it produces, with
+ ctags you can use `ctags --list-kinds` .
The only other field currently recognized by Vim is "file:"
(with an empty value). It is used for a static tag.
@@ -656,14 +658,14 @@ If the command is a normal search command (it starts and ends with "/" or
The direction of the search is forward for "/", backward for "?".
Note that 'wrapscan' does not matter, the whole file is always searched.
- If the search fails, another try is done ignoring case. If that fails too,
- a search is done for:
+ a search is done for: >
"^tagname[ \t]*("
- (the tag with '^' prepended and "[ \t]*(" appended). When using function
+< (the tag with '^' prepended and "[ \t]*(" appended). When using function
names, this will find the function name when it is in column 0. This will
help when the arguments to the function have changed since the tags file was
- made. If this search also fails another search is done with:
+ made. If this search also fails another search is done with: >
"^[#a-zA-Z_].*\<tagname[ \t]*("
- This means: A line starting with '#' or an identifier and containing the tag
+< This means: A line starting with '#' or an identifier and containing the tag
followed by white space and a '('. This will find macro names and function
names with a type prepended.
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index e918394..5020ed5 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 9.1. Last change: 2024 Jun 17
+*terminal.txt* For Vim version 9.1. Last change: 2024 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1253,6 +1253,8 @@ Starting ~
*termdebug-starting*
Load the plugin with this command: >
packadd termdebug
+When loading the plugin from the |.vimrc| file, add the "!" attribute: >
+ packadd! termdebug
< *:Termdebug*
To start debugging use `:Termdebug` or `:TermdebugCommand` followed by the
command name, for example: >
@@ -1283,6 +1285,15 @@ When the debugger ends, typically by typing "quit" in the gdb window, the two
opened windows are closed.
Only one debugger can be active at a time.
+
+ *termdebug-timeout*
+Depending on how gdb is launched, termdebug startup time may vary.
+To avoid termdebug to get stuck if the startup process of gdb takes too long,
+a configurable timeout is included. Such time out is configurable in terms of
+multiple of 10ms: >
+ let g:termdebug_config['timeout'] = 500 # 500 * 10ms = 5 seconds.
+
+The default timeout is 3000 ms.
*:TermdebugCommand*
If you want to give specific commands to the command being debugged, you can
use the `:TermdebugCommand` command followed by the command name and
@@ -1519,35 +1530,46 @@ in a buffer with 'buftype' set to "prompt". This works slightly differently:
*termdebug_use_prompt*
Prompt mode can be used even when the |+terminal| feature is present with: >
- let g:termdebug_config['use_prompt'] = 1
+ let g:termdebug_config['use_prompt'] = v:true
If there is no g:termdebug_config you can use: >
- let g:termdebug_use_prompt = 1
+ let g:termdebug_use_prompt = v:true
+
<
+However, the latter form will be deprecated in future releases.
+
Mappings ~
+The termdebug plugin enables a few default mappings. All those mappings
+are reset to their original values once the termdebug session concludes.
+
*termdebug_map_K* *termdebug-mappings*
The K key is normally mapped to |:Evaluate| unless a buffer local (|:map-local|)
mapping to K already exists. If you do not want this use: >
- let g:termdebug_config['map_K'] = 0
+ let g:termdebug_config['map_K'] = v:false
If there is no g:termdebug_config you can use: >
- let g:termdebug_map_K = 0
+ let g:termdebug_map_K = v:false
<
+However, the latter form will be deprecated in future releases.
+
*termdebug_map_minus*
The - key is normally mapped to |:Down| unless a buffer local mapping to the -
key already exists. If you do not want this use: >
- let g:termdebug_config['map_minus'] = 0
+ let g:termdebug_config['map_minus'] = v:false
<
*termdebug_map_plus*
The + key is normally mapped to |:Up| unless a buffer local mapping to the +
key already exists. If you do not want this use: >
- let g:termdebug_config['map_plus'] = 0
+ let g:termdebug_config['map_plus'] = v:false
<
*termdebug_disasm_window*
If you want the Asm window shown by default, set the "disasm_window" flag to
1. The "disasm_window_height" entry can be used to set the window height: >
- let g:termdebug_config['disasm_window'] = 1
+ let g:termdebug_config['disasm_window'] = v:true
let g:termdebug_config['disasm_window_height'] = 15
If there is no g:termdebug_config you can use: >
let g:termdebug_disasm_window = 15
+
+However, the latter form will be deprecated in future releases.
+
Any value greater than 1 will set the Asm window height to that value.
If the current window has enough horizontal space, it will be vertically split
and the Asm window will be shown side by side with the source code window (and
@@ -1557,10 +1579,13 @@ the height option won't be used).
If you want the Var window shown by default, set the "variables_window" flag
to 1. The "variables_window_height" entry can be used to set the window
height: >
- let g:termdebug_config['variables_window'] = 1
+ let g:termdebug_config['variables_window'] = v:true
let g:termdebug_config['variables_window_height'] = 15
If there is no g:termdebug_config you can use: >
let g:termdebug_variables_window = 15
+
+However, the latter form will be deprecated in future releases.
+
Any value greater than 1 will set the Var window height to that value.
If the current window has enough horizontal space, it will be vertically split
and the Var window will be shown side by side with the source code window (and
@@ -1589,6 +1614,8 @@ g:termdebug_config or the "g:termdebugger" variable before invoking
If there is no g:termdebug_config you can use: >
let g:termdebugger = "mygdb"
+However, the latter form will be deprecated in future releases.
+
If the command needs an argument use a List: >
let g:termdebug_config['command'] = ['rr', 'replay', '--']
If there is no g:termdebug_config you can use: >
@@ -1646,6 +1673,7 @@ If you don't want this then disable it with: >
If there is no g:termdebug_config you can use: >
let g:termdebug_popup = 0
+However, the latter form will be deprecated in future releases.
Change default signs ~
*termdebug_signs*
@@ -1676,6 +1704,8 @@ split: >
If there is no g:termdebug_config you can use: >
let g:termdebug_wide = 163
+However, the latter form will be deprecated in future releases.
+
This will set 'columns' to 163 when `:Termdebug` is used. The value is
restored when quitting the debugger.
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index ebf562b..7d0402c 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 Jun 17
+*testing.txt* For Vim version 9.1. Last change: 2024 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -506,16 +506,17 @@ assert_equal({expected}, {actual} [, {msg}])
added to |v:errors| and 1 is returned. Otherwise zero is
returned. |assert-return|
The error is in the form "Expected {expected} but got
- {actual}". When {msg} is present it is prefixed to that.
+ {actual}". When {msg} is present it is prefixed to that,
+ along with the location of the assert when run from a script.
There is no automatic conversion, 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
always matters.
Example: >
- assert_equal('foo', 'bar')
-< Will result in a string to be added to |v:errors|:
- test.vim line 12: Expected 'foo' but got 'bar' ~
+ call assert_equal('foo', 'bar', 'baz')
+< Will add the following to |v:errors|:
+ test.vim line 12: baz: Expected 'foo' but got 'bar' ~
Can also be used as a |method|, the base is passed as the
second argument: >
@@ -561,19 +562,19 @@ assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
When {error} is a string it must be found literally in the
first reported error. Most often this will be the error code,
including the colon, e.g. "E123:". >
- assert_fails('bad cmd', 'E987:')
+ call assert_fails('bad cmd', 'E987:')
<
When {error} is a |List| with one or two strings, these are
used as patterns. The first pattern is matched against the
first reported error: >
- assert_fails('cmd', ['E987:.*expected bool'])
+ call assert_fails('cmd', ['E987:.*expected bool'])
< The second pattern, if present, is matched against the last
reported error.
If there is only one error then both patterns must match. This
can be used to check that there is only one error.
To only match the last error use an empty string for the first
error: >
- assert_fails('cmd', ['', 'E987:'])
+ call assert_fails('cmd', ['', 'E987:'])
<
If {msg} is empty then it is not used. Do this to get the
default message when passing the {lnum} argument.
@@ -599,7 +600,8 @@ assert_false({actual} [, {msg}]) *assert_false()*
When {actual} is not false an error message is added to
|v:errors|, like with |assert_equal()|.
The error is in the form "Expected False but got {actual}".
- When {msg} is present it is prepended to that.
+ When {msg} is present it is prefixed to that, along with the
+ location of the assert when run from a script.
Also see |assert-return|.
A value is false when it is zero. When {actual} is not a
@@ -625,7 +627,8 @@ assert_match({pattern}, {actual} [, {msg}])
When {pattern} does not match {actual} an error message is
added to |v:errors|. Also see |assert-return|.
The error is in the form "Pattern {pattern} does not match
- {actual}". When {msg} is present it is prefixed to that.
+ {actual}". When {msg} is present it is prefixed to that,
+ along with the location of the assert when run from a script.
{pattern} is used as with |=~|: The matching is always done
like 'magic' was set and 'cpoptions' is empty, no matter what
@@ -636,9 +639,9 @@ assert_match({pattern}, {actual} [, {msg}])
Use both to match the whole text.
Example: >
- assert_match('^f.*o$', 'foobar')
+ call assert_match('^f.*o$', 'foobar')
< Will result in a string to be added to |v:errors|:
- test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
+ test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
Can also be used as a |method|: >
getFile()->assert_match('foo.*')
@@ -693,7 +696,8 @@ assert_true({actual} [, {msg}]) *assert_true()*
Also see |assert-return|.
A value is TRUE when it is a non-zero number. When {actual}
is not a number the assert fails.
- When {msg} is given it precedes the default message.
+ When {msg} is given it is prefixed to the default message,
+ along with the location of the assert when run from a script.
Can also be used as a |method|: >
GetResult()->assert_true()
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index c37a1d4..e0ebe7e 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 9.1. Last change: 2024 Jun 03
+*todo.txt* For Vim version 9.1. Last change: 2024 Jul 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -512,10 +512,6 @@ Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is
spread out. Make a section with copy/paste examples of script and pointers to
more information.
-Problem that a previous silent ":throw" causes a following try/catch not to
-work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)
-Also see #8487 for an example.
-
Request to use "." for the cursor column in search pattern \%<.c and \%<.v.
(#8179)
@@ -543,7 +539,6 @@ SpellCap doesn't show below a closed fold. #12420
- Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19)
- Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME.
(2006 Jul 26, Gary Johnson)
-- Completion of ":cd" doesn't use 'cdpath'. #374.
Make "g>" and "g<" in Visual mode move the text right or left.
Also for a block selection. #8558
diff --git a/runtime/doc/uganda.rux b/runtime/doc/uganda.rux
index 783c6d5..6f0f205 100644
--- a/runtime/doc/uganda.rux
+++ b/runtime/doc/uganda.rux
@@ -1,4 +1,4 @@
-*uganda.txt* Ð´Ð»Ñ Vim version 9.1 Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð¾Ñ‚ 02 марта 2022 г.
+*uganda.txt* Ð´Ð»Ñ Vim version 9.1 Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð¾Ñ‚ 14 авг 2024 г.
СПРÐВОЧÐИК ПО РЕДÐКТОРУ VIM
@@ -18,10 +18,8 @@
https://www.vim.org/iccf/
https://www.iccf.nl/
-Также возможно оказание финанÑовой помощи Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ программы Vim.
-Люди, пожертвовавшие на развитие программы, получают право голоÑовать за
-внедрение в редактор функциональных возможноÑтей. См. раздел |sponsor|.
-Ð’ любом Ñлучае деньги направлÑÑŽÑ‚ÑÑ Ð² Уганду.
+Также возможно оказание финанÑовой помощи Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ программы Vim,
+Ñм. раздел |sponsor|. Ð’ любом Ñлучае деньги направлÑÑŽÑ‚ÑÑ Ð² Уганду.
ДокументациÑ, поÑтавлÑÐµÐ¼Ð°Ñ Ð² ÑоÑтаве программы Vim, раÑпроÑтранÑетÑÑ Ð½Ð°
уÑловиÑÑ… лицензии на Открытые публикации, Ñм. раздел |manual-copyright|.
@@ -58,7 +56,7 @@ II) Изменённую (или дополненную) верÑию прогр
ÑоглаÑованы. ЕÑли ÑоглаÑование не проводилоÑÑŒ, Ñделанные изменениÑ
будут раÑпроÑтранÑÑ‚ÑŒÑÑ Ð½Ð° уÑловиÑÑ… наÑтоÑщей лицензии или более
поздней её верÑии. Лица, в данное Ð²Ñ€ÐµÐ¼Ñ ÑвлÑющиеÑÑ Ð¾Ñ‚Ð²ÐµÑ‚Ñтвенными
- за рабзработку, указаны в перечне по Ñледующему адреÑу:
+ за разработку, указаны в перечне, размещённом по Ñледующему адреÑу:
https://github.com/orgs/vim/people. Ð’ Ñлучае Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтой
информации, актуальные данные будут опубликованы на
ÑоответÑтвующих реÑурÑах (вероÑтнее вÑего по интернетâ€Ð°Ð´Ñ€ÐµÑам
@@ -288,9 +286,7 @@ KCC предоÑтавлÑет школам помощь по улучшению
помощи детÑм в гор. Кибаале. Команда Kuwasha переводит 100%
ÑредÑтв, поÑтупивших в пользу проекта в Уганде.
Единовременное пожертвование может быть отправлено им
- напрÑмую. При Ñтом прошу отправлÑÑ‚ÑŒ мне Ñообщение, Ð´Ð»Ñ ÑƒÑ‡Ñ‘Ñ‚Ð°
- информации о количеÑтве ÑредÑтв, пожертвованных благодарÑ
- программе Vim.
+ напрÑмую.
Ðа их веб-Ñайте также можно ознакомитьÑÑ Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹ по
оказанию финанÑовой поддержки https://www.kuwasha.net/
При отправке пожертвований через Kuwasha вы получите
@@ -309,7 +305,7 @@ KCC предоÑтавлÑет школам помощь по улучшению
https://iccf-holland.org/germany.html
Европа
- БанковÑкий перевод. См. далее рубрику «Другие варианты»,
+ БанковÑкий перевод. См. далее «Другие варианты»,
где указан код Swift и номер IBAN.
Любые другие платёжные методы также должны работать.
ПроконÑультируйтеÑÑŒ по вопроÑу отправки ÑредÑтв на
@@ -334,7 +330,8 @@ KCC предоÑтавлÑет школам помощь по улучшению
Чеки не принимаютÑÑ.
=============================================================================
+
© Казорин Сергей, перевод на руÑÑкий Ñзык, 2022, <kazorin@basealt.ru>
-© Restorer, редакторÑÐºÐ°Ñ Ð¿Ñ€Ð°Ð²ÐºÐ°, 2022, <restorer@mail2k.ru>
+© Restorer, редакторÑÐºÐ°Ñ Ð¿Ñ€Ð°Ð²ÐºÐ°, 2024, <restorer@mail2k.ru>
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
index 513759f..17590e5 100644
--- a/runtime/doc/uganda.txt
+++ b/runtime/doc/uganda.txt
@@ -1,4 +1,4 @@
-*uganda.txt* For Vim version 9.1. Last change: 2024 Apr 22
+*uganda.txt* For Vim version 9.1. Last change: 2024 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -15,8 +15,8 @@ below or visit the ICCF web site, available at these URLs:
https://www.vim.org/iccf/
https://www.iccf.nl/
-You can also sponsor the development of Vim. Vim sponsors can vote for
-features. See |sponsor|. The money goes to Uganda anyway.
+You can also sponsor the development of Vim, see |sponsor|. The money goes to
+Uganda anyway.
The Open Publication License applies to the Vim documentation, see
|manual-copyright|.
diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt
index a9e8fb9..21629e3 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: 2024 May 17
+*usr_05.txt* For Vim version 9.1. Last change: 2024 Jun 28
VIM USER MANUAL - by Bram Moolenaar
@@ -440,7 +440,7 @@ After restarting your Vim, the plugin is active and you can read about it at: >
Adding comment package *comment-install*
Load the plugin with this command: >
- packadd comment
+ packadd comment
<
This way you can use the plugin with the default key bindings `gc` and similar
for commenting (which is a well-established mapping in the Vim community).
@@ -449,6 +449,22 @@ If you add this line to your vimrc file, then you need to restart Vim to have
the package loaded. Once the package is loaded, read about it at: >
:h comment.txt
+
+Adding nohlsearch package *nohlsearch-install*
+
+Load the plugin with this command: >
+ packadd nohlsearch
+<
+Automatically execute |:nohlsearch| after 'updatetime' or getting into
+|Insert| mode.
+Thus assuming default updatetime, hlsearch would be suspended/turned off after
+4 seconds of idle time.
+
+To disable the effect of the plugin after it has been loaded: >
+ au! nohlsearch
+<
+
+
More information about packages can be found here: |packages|.
==============================================================================
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 60d0d1e..765eab5 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -798,6 +798,7 @@ String manipulation: *string-functions*
execute() execute an Ex command and get the output
win_execute() like execute() but in a specified window
trim() trim characters from a string
+ bindtextdomain() set message lookup translation base path
gettext() lookup message translation
List manipulation: *list-functions*
@@ -1319,6 +1320,7 @@ Popup window: *popup-window-functions*
popup_move() change the position and size of a popup
popup_setoptions() override options of a popup
popup_settext() replace the popup buffer contents
+ popup_setbuf() set the popup buffer
popup_close() close one popup
popup_clear() close all popups
popup_filter_menu() select from a list of items
@@ -1406,6 +1408,8 @@ Various: *various-functions*
wordcount() get byte/word/char count of buffer
+ id() get unique string for item to use as a key
+
luaeval() evaluate |Lua| expression
mzeval() evaluate |MzScheme| expression
perleval() evaluate Perl expression (|+perl|)
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 1ce8927..acd7991 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt* For Vim version 9.1. Last change: 2024 Jun 17
+*various.txt* For Vim version 9.1. Last change: 2024 Jul 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -19,9 +19,8 @@ CTRL-L Clear and redraw the screen. The redraw may happen
*:redr* *:redraw*
:redr[aw][!] Redraw the screen right now. When ! is included it is
cleared first.
- Useful to update the screen halfway executing a script
- or function. Also when halfway a mapping and
- 'lazyredraw' is set.
+ It can be used to redraw the screen in a script
+ or function (or a mapping if |'lazyredraw'| is set).
*:redraws* *:redrawstatus*
:redraws[tatus][!] Redraw the status line of the current window. When !
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 5b5bded..fc07dc4 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt* For Vim version 9.1. Last change: 2024 Jun 17
+*version9.txt* For Vim version 9.1. Last change: 2024 Aug 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41554,7 +41554,7 @@ Enum support for Vim9 script |:enum|
*new-other-9.2*
Other new features ~
------------------
-The comment plugin |comment-install| is included.
+The new plugins |comment-install| and |nohlsearch-install| are included.
Support for Wayland UI.
@@ -41563,6 +41563,12 @@ Support for the XDG Desktop Specification |xdg-base-dir|
Support highlighting the matched text for insert-mode completion and
command-line completion in |ins-completion-menu|.
+Support highlighting the completion kind in |ins-completion-menu|, see
+|complete-items|.
+
+Support for translating messages in Vim script plugins using the |gettext()|
+and |bindtextdomain()| functions.
+
*changed-9.2*
Changed~
-------
@@ -41571,6 +41577,25 @@ Changed~
- the default for 'commentstring' contains whitespace padding to have
automatic comments look nicer |comment-install|
- 'completeopt' is now a |global-local| option.
+- 'nrformat' accepts the new "blank" suboption, to determine a signed or
+ unsigned number based on whitespace in front of a minus sign.
+- 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()|
+- 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|
*added-9.2*
Added ~
@@ -41579,17 +41604,23 @@ Various syntax, indent and other plugins were added.
Functions: ~
+|bindtextdomain()| set message lookup translation base path
|diff()| diff two Lists of strings
|filecopy()| copy a file {from} to {to}
|foreach()| apply function to List items
|getregion()| get a region of text from a buffer
|getregionpos()| get a list of positions for a region
+|id()| get unique identifier for a Dict, List, Object,
+ Channel or Blob variable
|matchbufline()| all the matches of a pattern in a buffer
|matchstrlist()| all the matches of a pattern in a List of strings
+|popup_setbuf()| switch to a different buffer in a popup
Autocommands: ~
+|CursorMovedC| after the cursor was moved in the comamnd-line
+|KeyInputPre| before processing any key event in any mode
|SessionWritePost| after writing the session file |:mksession|
|TermResponseAll| after the terminal response to |t_RV| and others is
received
@@ -41611,6 +41642,7 @@ Commands: ~
Options: ~
'winfixbuf' Keep buffer focused in a window
+'tabclose' Which tab page to focus after closing a tab page
't_xo' Terminal uses XON/XOFF handshaking (e.g. vt420)
't_CF' Support for alternate font highlighting terminal code
@@ -41633,7 +41665,8 @@ Improved visual highlighting.
Python3 support in OpenVMS.
-Support |fuzzy-matching| during |ins-completion| with "fuzzy" item for 'completeopt'
+Support for |fuzzy-matching| during |ins-completion| with the "fuzzy"
+values of the 'completeopt' setting
==============================================================================
COMPILE TIME CHANGES *compile-changes-9.2*
@@ -41642,6 +41675,8 @@ Support for building with Ruby 3.3.
Support for building Vim 9 in z/OS (MVS).
+Clean-up old MS-Windows code.
+
==============================================================================
PATCHES *patches-9.2* *bug-fixes-9.2*
*patches-after-9.1*
diff --git a/runtime/doc/vim-it.1 b/runtime/doc/vim-it.1
index 7ecd9f4..66e17dc 100644
--- a/runtime/doc/vim-it.1
+++ b/runtime/doc/vim-it.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "4 giugno 2024"
+.TH VIM 1 "12 agosto 2024"
.SH NOME
vim \- VI Migliorato, un editor di testi per programmatori
.SH SINTASSI
@@ -31,7 +31,7 @@ vim \- VI Migliorato, un editor di testi per programmatori
.B rgview
.SH DESCRIZIONE
.B Vim
-Un editore di testi, compatibile con, e migliore di, Vi.
+è un editore di testi, compatibile con, e migliore di, Vi.
Può essere usato per editare qualsiasi file di testo.
Particolarmente utile per editare programmi.
.PP
@@ -150,18 +150,6 @@ Esempio: vim "+set si" main.c
.br
Note: Si possono avere fino a 10 comandi "+" o "\-c".
.TP
-\-S {file}
-I comandi contenuti in {file} sono eseguiti dopo la lettura del primo file.
-Equivalente a \-c "source {file}".
-{file} non può avere un nome che inizia per '\-'.
-Se {file} è omesso si usa "Session.vim" (funziona solo se \-S è l'ultimo
-argomento specificato).
-.TP
-\-\-cmd {comando}
-Come "\-c", ma il comando è eseguito PRIMA
-di eseguire qualsiasi file vimrc.
-Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c".
-.TP
\-A
Se
.B Vim
@@ -224,11 +212,6 @@ Opzione da usare quando
sessione di edit (p.es., mail).
Sull'Amiga i comandi ":sh" e ":!" non sono disponibili.
.TP
-\-\-nofork
-Direttamente [Foreground]. Per la versione GUI,
-.B Vim
-non crea [fork] una nuova finestra, indipendente dalla shell di invocazione.
-.TP
\-F
Se
.B Vim
@@ -239,6 +222,8 @@ in Modo Farsi, cioè impostando 'fkmap' e 'rightleft'.
Altrimenti viene dato un messaggio di errore e
.B Vim
termina in modo anormale.
+.br
+Nota: Il supporto Farsi è stato rimosso a partire dalla patch 8.1.0932.
.TP
\-g
Se
@@ -248,19 +233,6 @@ Se Vim è stato compilato senza supporto GUI viene dato un messaggio di errore e
.B Vim
termina in modo anormale.
.TP
-\-\-gui-dialog-file {nome}
-Quando si usa la GUI, invece di visualizzare un dialogo, il titolo e il
-messaggio del dialogo sono scritti sul file {nome}. Il file viene creato o,
-se già esistente, viene esteso. Quest'opzione serve solo in fase di test,
-per evitare di restare bloccati da un dialogo che non si riesce a visualizzare.
-Se si sta lavorando senza la GUI l'argomento viene ignorato.
-.TP
-\-\-help, \-h, \-?
-Un po' di aiuto su opzioni e argomenti che si possono dare invocando Vim.
-Subito dopo
-.B Vim
-esce.
-.TP
\-H
Se
.B Vim
@@ -278,13 +250,13 @@ del file da usare invece di quello predefinito "~/.viminfo".
Si può anche evitare l'uso di un file .viminfo, dando come nome
"NONE".
.TP
-\-L
-Equivalente a \-r.
-.TP
\-l
Modo Lisp.
Imposta le opzioni 'lisp' e 'showmatch'.
.TP
+\-L
+Equivalente a \-r.
+.TP
\-m
Inibisce modifica file.
Inibisce l'opzione 'write'.
@@ -295,6 +267,13 @@ Modifiche non permesse. Le opzioni 'modifiable' e 'write' sono annullate,
in modo da impedire sia modifiche che riscritture. Da notare che queste
opzioni possono essere abilitate in seguito, permettendo così modifiche.
.TP
+\-n
+Inibisce l'uso di un file di swap.
+Il recupero dopo una caduta di macchina sarà impossibile.
+Utile per editare un file su un supporto molto lento (p.es., floppy).
+Il comando ":set uc=0" ha lo stesso effetto.
+Per abilitare il recupero usare ":set uc=200".
+.TP
\-N
Modo "Non-compatibile". Annulla l'opzione 'compatible'.
Così
@@ -302,13 +281,6 @@ Così
si comporta un po' meglio, ma è meno compatibile con Vi, anche in assenza di un
file .vimrc.
.TP
-\-n
-Inibisce l'uso di un file di swap.
-Il recupero dopo una caduta di macchina diventa impossibile.
-Utile per editare un file su un supporto molto lento (p.es., floppy).
-Il comando ":set uc=0" ha lo stesso effetto.
-Per abilitare il recupero usare ":set uc=200".
-.TP
\-nb
Diviene un Editor server per NetBeans. Vedere la documentazione per dettagli.
.TP
@@ -331,6 +303,16 @@ Vim viene eseguito in una finestra MDI (Multiple-Document Interface).
che sia sufficientemente esplicativo. Notare che l'implementazione è ancora
rudimentale. Non funziona per tutte le applicazioni, e il menù non funziona.
.TP
+\-r
+Lista file di swap, e informazioni su come usarli per ripristinare file.
+.TP
+\-r {file}
+Modo Recovery (ripristino).
+Il file di swap è usato per recuperare una sessione di edit finita male.
+Il file di swap è un file con lo stesso nome file del file di testo
+editato, col suffisso ".swp".
+Vedere ":help recovery".
+.TP
\-R
Modo Read-only (Sola Lettura).
Imposta l'opzione 'readonly'.
@@ -342,16 +324,6 @@ L'opzione \-R implica anche l'opzione \-n (vedere sopra).
L'opzione 'readonly' può essere annullata con ":set noro".
Vedere ":help 'readonly'".
.TP
-\-r
-Lista file di swap, e informazioni su come usarli per ripristinare file.
-.TP
-\-r {file}
-Modo Recovery (ripristino).
-Il file di swap è usato per recuperare una sessione di edit finita male.
-Il file di swap è un file con lo stesso nome file del file di testo
-editato, col suffisso ".swp".
-Vedere ":help recovery".
-.TP
\-s
Modo silenzioso. Solo quando invocato come "Ex" o quando l'opzione
"\-e" è stata data prima dell'opzione "\-s".
@@ -363,6 +335,13 @@ Lo stesso risultato si può ottenere col comando ":source! {script_in_input}".
Se la fine del file di input viene raggiunta prima che Vim termini,
l'ulteriore input verrà preso dalla tastiera.
.TP
+\-S {file}
+I comandi contenuti in {file} sono eseguiti dopo la lettura del primo file.
+Equivalente a \-c "source {file}".
+{file} non può avere un nome che inizia per '\-'.
+Se {file} è omesso si usa "Session.vim" (funziona solo se \-S è l'ultimo
+argomento specificato).
+.TP
\-T {terminale}
Dice a
.B Vim
@@ -372,16 +351,6 @@ Dovrebbe essere un terminale noto a
.B Vim
(predefinito) o definito nei file termcap o terminfo.
.TP
-\-\-not-a-term
-Da usare per specifica a
-.B Vim
-che l'utente è consapevole che l'input e l'output non avvengono con un terminale
-vero e proprio. Ciò serve per evitare il messaggio di avvertimento e il ritardo
-di due secondi che avverrebbero in assenza di questo argomento.
-.TP
-\-\-ttyfail
-Quando stdin o stdout non sono un terminale (tty) esci subito da Vim.
-.TP
\-u {vimrc}
Usa i comandi nel file {vimrc} per inizializzazioni.
Tutte le altre inizializzazioni non sono eseguite.
@@ -393,7 +362,13 @@ Vedere ":help initialization" da vim per ulteriori dettagli.
Usa i comandi nel file {gvimrc} per inizializzazioni GUI.
Tutte le altre inizializzazioni GUI non sono eseguite.
Si possono anche omettere tutte le inizializzazioni GUI dando come nome "NONE".
-Vedere ":help gui-init" da vim per ulteriori dettagli.
+Vedere ":help gui\-init" da vim per ulteriori dettagli.
+.TP
+\-v
+Inizia
+.B Vim
+in Modo Vi, come se il programma eseguibile fosse "vi". Questo ha
+effetto solo quando Vim viene invocato con il nome "ex".
.TP
\-V[N]
Verboso. Vim manda messaggi relativi ai file di script che esegue
@@ -401,24 +376,10 @@ e quando legge o scrive un file viminfo. Il numero opzionale N è il valore
dell'opzione 'verbose'. Il valore predefinito è 10.
.TP
\-V[N]{nome_file}
-Comw \-V imposta 'verbosefile' a {nome_file}. Il risultato è che i messaggi
+Come \-V imposta 'verbosefile' a {nome_file}. Il risultato è che i messaggi
non sono visualizzati, ma scritti sul file {nome_file}. Il {nome_file} non
deve iniziare con un numero.
.TP
-\-\-log {nome_file}
-Se
-.B Vim
-è stato compilato con le funzionalità eval e channel, inizia a registrare
-e scrive le registrazioni a {nome_file}. Ciò equivale a chiamare
-.I ch_logfile({nome_file}, 'ao')
-in una fase molto iniziale dell'avvio del programma.
-.TP
-\-v
-Inizia
-.B Vim
-in Modo Vi, come se il programma eseguibile fosse "vi". Questo ha
-effetto solo quando Vim viene invocato con il nome "ex".
-.TP
\-w{numero}
Imposta l'opzione 'window' a {numero}.
.TP
@@ -434,7 +395,10 @@ Se il file {script_file} esiste, il testo immesso viene aggiunto in fondo.
Come \-w, ma uno script file esistente viene sovrascritto.
.TP
\-x
-Uso di cifratura nella scrittura dei file. Verrà chiesta una chiave di cifratura.
+Se
+.B Vim
+è stato compilato con il supporto per la cifratura, usare cifratura
+nella scrittura dei file. Verrà chiesta una chiave di cifratura.
.TP
\-X
Non connettersi al server X. Vim parte più rapidamente,
@@ -460,16 +424,54 @@ Si può usare per editare un file il cui nome inizi per '-'.
Richiede di non usare alcun file di personalizzazione (vimrc, plugin, etc.).
Utile per verificare se un problema persiste invocando Vim "originale".
.TP
+\-\-cmd {comando}
+Come "\-c", ma il comando è eseguito subito PRIMA
+di eseguire qualsiasi file vimrc.
+Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c".
+.TP
\-\-echo\-wid
Solo per GUI GTK: Visualizza ID di Window su stdout.
.TP
+\-\-gui-dialog-file {nome}
+Quando si usa la GUI, invece di visualizzare un dialogo, il titolo e il
+messaggio del dialogo sono scritti sul file {nome}. Il file viene creato o,
+se già esistente, viene esteso. Quest'opzione serve solo in fase di test,
+per evitare di restare bloccati da un dialogo che non si riesce a visualizzare.
+Se si sta lavorando senza la GUI l'argomento viene ignorato.
+.TP
+\-\-help, \-h, \-?
+Un po' di aiuto su opzioni e argomenti che si possono dare invocando Vim.
+Subito dopo
+.B Vim
+esce.
+.TP
\-\-literal
Considera i nomi passati come argomenti letterali, senza espandere metacaratteri.
Non ha effetto in Unix, dove la shell espande comunque i metacaratteri.
.TP
+\-\-log {nome_file}
+Se
+.B Vim
+è stato compilato con le funzionalità eval e channel, inizia a registrare
+e scrive le registrazioni a {nome_file}. Ciò equivale a chiamare
+.I ch_logfile({nome_file}, 'ao')
+in una fase molto iniziale dell'avvio del programma.
+.TP
+\-\-nofork
+Direttamente [Foreground]. Per la versione GUI,
+.B Vim
+non crea [fork] una nuova finestra, indipendente dalla shell di invocazione.
+.TP
\-\-noplugin
Non caricare plugin. Implicito se si specifica \-u NONE.
.TP
+\-\-not\-a\-term
+Da usare per specificare a
+.B Vim
+che l'utente è consapevole che l'input e l'output non avvengono con un terminale
+vero e proprio. Ciò serve per evitare il messaggio di avvertimento e il ritardo
+di due secondi che avverrebbero in assenza di questo argomento.
+.TP
\-\-remote
Connettersi a un server Vim e chiedere di editare i file elencati come altri
argomenti. Se non si trova un server viene dato un messaggio e i file sono
@@ -498,16 +500,19 @@ Usa {nome} come nome server. Usato per il Vim corrente, a meno che sia usato
con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi.
.TP
\-\-socketid {id}
-Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gvim in un'altra finestra.
+Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gVim in un'altra finestra.
.TP
\-\-startuptime {nome_file}
Durante la fase iniziale, scrive messaggi di log al file {nome_file}.
.TP
+\-\-ttyfail
+Quando stdin o stdout non sono un terminale (tty) esce subito da Vim.
+.TP
\-\-version
Stampa la versione di Vim ed esce.
.TP
\-\-windowid {id}
-Solo per GUI Win32: Chiede a gvim di provare a user l'ID di window {id}
+Solo per GUI Win32: Chiede a gVim di provare a user l'ID di window {id}
come padre, in modo da venir eseguito all'interno della finestra specificata.
.SH AIUTO ONLINE
Battere ":help" in
@@ -555,13 +560,17 @@ Inizializzazioni personali di
Inizializzazioni gvim a livello di sistema.
.TP
~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
-Inizializzazioni personali di gvim (viene utilizzata la prima trovata).
+Inizializzazioni personali di
+.B gVim
+(viene utilizzata la prima trovata).
.TP
/usr/local/share/vim/optwin.vim
Script Vim usato dal comando ":options", maniera elegante per visualizzare e impostare opzioni.
.TP
/usr/local/share/vim/vim??/menu.vim
-Inizializzazioni del menù gvim a livello di sistema.
+Inizializzazioni del menù
+.B gVim
+a livello di sistema.
.TP
/usr/local/share/vim/vim??/bugreport.vim
Script Vim per generare una segnalazione di errore. Vedere ":help bugs".
diff --git a/runtime/doc/vim-it.UTF-8.1 b/runtime/doc/vim-it.UTF-8.1
index c9b5835..76e3db2 100644
--- a/runtime/doc/vim-it.UTF-8.1
+++ b/runtime/doc/vim-it.UTF-8.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "4 giugno 2024"
+.TH VIM 1 "12 agosto 2024"
.SH NOME
vim \- VI Migliorato, un editor di testi per programmatori
.SH SINTASSI
@@ -31,7 +31,7 @@ vim \- VI Migliorato, un editor di testi per programmatori
.B rgview
.SH DESCRIZIONE
.B Vim
-Un editore di testi, compatibile con, e migliore di, Vi.
+è un editore di testi, compatibile con, e migliore di, Vi.
Può essere usato per editare qualsiasi file di testo.
Particolarmente utile per editare programmi.
.PP
@@ -150,18 +150,6 @@ Esempio: vim "+set si" main.c
.br
Note: Si possono avere fino a 10 comandi "+" o "\-c".
.TP
-\-S {file}
-I comandi contenuti in {file} sono eseguiti dopo la lettura del primo file.
-Equivalente a \-c "source {file}".
-{file} non può avere un nome che inizia per '\-'.
-Se {file} è omesso si usa "Session.vim" (funziona solo se \-S è l'ultimo
-argomento specificato).
-.TP
-\-\-cmd {comando}
-Come "\-c", ma il comando è eseguito PRIMA
-di eseguire qualsiasi file vimrc.
-Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c".
-.TP
\-A
Se
.B Vim
@@ -224,11 +212,6 @@ Opzione da usare quando
sessione di edit (p.es., mail).
Sull'Amiga i comandi ":sh" e ":!" non sono disponibili.
.TP
-\-\-nofork
-Direttamente [Foreground]. Per la versione GUI,
-.B Vim
-non crea [fork] una nuova finestra, indipendente dalla shell di invocazione.
-.TP
\-F
Se
.B Vim
@@ -239,6 +222,8 @@ in Modo Farsi, cioè impostando 'fkmap' e 'rightleft'.
Altrimenti viene dato un messaggio di errore e
.B Vim
termina in modo anormale.
+.br
+Nota: Il supporto Farsi è stato rimosso a partire dalla patch 8.1.0932.
.TP
\-g
Se
@@ -248,19 +233,6 @@ Se Vim è stato compilato senza supporto GUI viene dato un messaggio di errore e
.B Vim
termina in modo anormale.
.TP
-\-\-gui-dialog-file {nome}
-Quando si usa la GUI, invece di visualizzare un dialogo, il titolo e il
-messaggio del dialogo sono scritti sul file {nome}. Il file viene creato o,
-se già esistente, viene esteso. Quest'opzione serve solo in fase di test,
-per evitare di restare bloccati da un dialogo che non si riesce a visualizzare.
-Se si sta lavorando senza la GUI l'argomento viene ignorato.
-.TP
-\-\-help, \-h, \-?
-Un po' di aiuto su opzioni e argomenti che si possono dare invocando Vim.
-Subito dopo
-.B Vim
-esce.
-.TP
\-H
Se
.B Vim
@@ -278,13 +250,13 @@ del file da usare invece di quello predefinito "~/.viminfo".
Si può anche evitare l'uso di un file .viminfo, dando come nome
"NONE".
.TP
-\-L
-Equivalente a \-r.
-.TP
\-l
Modo Lisp.
Imposta le opzioni 'lisp' e 'showmatch'.
.TP
+\-L
+Equivalente a \-r.
+.TP
\-m
Inibisce modifica file.
Inibisce l'opzione 'write'.
@@ -295,6 +267,13 @@ Modifiche non permesse. Le opzioni 'modifiable' e 'write' sono annullate,
in modo da impedire sia modifiche che riscritture. Da notare che queste
opzioni possono essere abilitate in seguito, permettendo così modifiche.
.TP
+\-n
+Inibisce l'uso di un file di swap.
+Il recupero dopo una caduta di macchina sarà impossibile.
+Utile per editare un file su un supporto molto lento (p.es., floppy).
+Il comando ":set uc=0" ha lo stesso effetto.
+Per abilitare il recupero usare ":set uc=200".
+.TP
\-N
Modo "Non-compatibile". Annulla l'opzione 'compatible'.
Così
@@ -302,13 +281,6 @@ Così
si comporta un po' meglio, ma è meno compatibile con Vi, anche in assenza di un
file .vimrc.
.TP
-\-n
-Inibisce l'uso di un file di swap.
-Il recupero dopo una caduta di macchina diventa impossibile.
-Utile per editare un file su un supporto molto lento (p.es., floppy).
-Il comando ":set uc=0" ha lo stesso effetto.
-Per abilitare il recupero usare ":set uc=200".
-.TP
\-nb
Diviene un Editor server per NetBeans. Vedere la documentazione per dettagli.
.TP
@@ -331,6 +303,16 @@ Vim viene eseguito in una finestra MDI (Multiple-Document Interface).
che sia sufficientemente esplicativo. Notare che l'implementazione è ancora
rudimentale. Non funziona per tutte le applicazioni, e il menù non funziona.
.TP
+\-r
+Lista file di swap, e informazioni su come usarli per ripristinare file.
+.TP
+\-r {file}
+Modo Recovery (ripristino).
+Il file di swap è usato per recuperare una sessione di edit finita male.
+Il file di swap è un file con lo stesso nome file del file di testo
+editato, col suffisso ".swp".
+Vedere ":help recovery".
+.TP
\-R
Modo Read-only (Sola Lettura).
Imposta l'opzione 'readonly'.
@@ -342,16 +324,6 @@ L'opzione \-R implica anche l'opzione \-n (vedere sopra).
L'opzione 'readonly' può essere annullata con ":set noro".
Vedere ":help 'readonly'".
.TP
-\-r
-Lista file di swap, e informazioni su come usarli per ripristinare file.
-.TP
-\-r {file}
-Modo Recovery (ripristino).
-Il file di swap è usato per recuperare una sessione di edit finita male.
-Il file di swap è un file con lo stesso nome file del file di testo
-editato, col suffisso ".swp".
-Vedere ":help recovery".
-.TP
\-s
Modo silenzioso. Solo quando invocato come "Ex" o quando l'opzione
"\-e" è stata data prima dell'opzione "\-s".
@@ -363,6 +335,13 @@ Lo stesso risultato si può ottenere col comando ":source! {script_in_input}".
Se la fine del file di input viene raggiunta prima che Vim termini,
l'ulteriore input verrà preso dalla tastiera.
.TP
+\-S {file}
+I comandi contenuti in {file} sono eseguiti dopo la lettura del primo file.
+Equivalente a \-c "source {file}".
+{file} non può avere un nome che inizia per '\-'.
+Se {file} è omesso si usa "Session.vim" (funziona solo se \-S è l'ultimo
+argomento specificato).
+.TP
\-T {terminale}
Dice a
.B Vim
@@ -372,16 +351,6 @@ Dovrebbe essere un terminale noto a
.B Vim
(predefinito) o definito nei file termcap o terminfo.
.TP
-\-\-not-a-term
-Da usare per specifica a
-.B Vim
-che l'utente è consapevole che l'input e l'output non avvengono con un terminale
-vero e proprio. Ciò serve per evitare il messaggio di avvertimento e il ritardo
-di due secondi che avverrebbero in assenza di questo argomento.
-.TP
-\-\-ttyfail
-Quando stdin o stdout non sono un terminale (tty) esci subito da Vim.
-.TP
\-u {vimrc}
Usa i comandi nel file {vimrc} per inizializzazioni.
Tutte le altre inizializzazioni non sono eseguite.
@@ -393,7 +362,13 @@ Vedere ":help initialization" da vim per ulteriori dettagli.
Usa i comandi nel file {gvimrc} per inizializzazioni GUI.
Tutte le altre inizializzazioni GUI non sono eseguite.
Si possono anche omettere tutte le inizializzazioni GUI dando come nome "NONE".
-Vedere ":help gui-init" da vim per ulteriori dettagli.
+Vedere ":help gui\-init" da vim per ulteriori dettagli.
+.TP
+\-v
+Inizia
+.B Vim
+in Modo Vi, come se il programma eseguibile fosse "vi". Questo ha
+effetto solo quando Vim viene invocato con il nome "ex".
.TP
\-V[N]
Verboso. Vim manda messaggi relativi ai file di script che esegue
@@ -401,24 +376,10 @@ e quando legge o scrive un file viminfo. Il numero opzionale N è il valore
dell'opzione 'verbose'. Il valore predefinito è 10.
.TP
\-V[N]{nome_file}
-Comw \-V imposta 'verbosefile' a {nome_file}. Il risultato è che i messaggi
+Come \-V imposta 'verbosefile' a {nome_file}. Il risultato è che i messaggi
non sono visualizzati, ma scritti sul file {nome_file}. Il {nome_file} non
deve iniziare con un numero.
.TP
-\-\-log {nome_file}
-Se
-.B Vim
-è stato compilato con le funzionalità eval e channel, inizia a registrare
-e scrive le registrazioni a {nome_file}. Ciò equivale a chiamare
-.I ch_logfile({nome_file}, 'ao')
-in una fase molto iniziale dell'avvio del programma.
-.TP
-\-v
-Inizia
-.B Vim
-in Modo Vi, come se il programma eseguibile fosse "vi". Questo ha
-effetto solo quando Vim viene invocato con il nome "ex".
-.TP
\-w{numero}
Imposta l'opzione 'window' a {numero}.
.TP
@@ -434,7 +395,10 @@ Se il file {script_file} esiste, il testo immesso viene aggiunto in fondo.
Come \-w, ma uno script file esistente viene sovrascritto.
.TP
\-x
-Uso di cifratura nella scrittura dei file. Verrà chiesta una chiave di cifratura.
+Se
+.B Vim
+è stato compilato con il supporto per la cifratura, usare cifratura
+nella scrittura dei file. Verrà chiesta una chiave di cifratura.
.TP
\-X
Non connettersi al server X. Vim parte più rapidamente,
@@ -460,16 +424,54 @@ Si può usare per editare un file il cui nome inizi per '-'.
Richiede di non usare alcun file di personalizzazione (vimrc, plugin, etc.).
Utile per verificare se un problema persiste invocando Vim "originale".
.TP
+\-\-cmd {comando}
+Come "\-c", ma il comando è eseguito subito PRIMA
+di eseguire qualsiasi file vimrc.
+Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c".
+.TP
\-\-echo\-wid
Solo per GUI GTK: Visualizza ID di Window su stdout.
.TP
+\-\-gui-dialog-file {nome}
+Quando si usa la GUI, invece di visualizzare un dialogo, il titolo e il
+messaggio del dialogo sono scritti sul file {nome}. Il file viene creato o,
+se già esistente, viene esteso. Quest'opzione serve solo in fase di test,
+per evitare di restare bloccati da un dialogo che non si riesce a visualizzare.
+Se si sta lavorando senza la GUI l'argomento viene ignorato.
+.TP
+\-\-help, \-h, \-?
+Un po' di aiuto su opzioni e argomenti che si possono dare invocando Vim.
+Subito dopo
+.B Vim
+esce.
+.TP
\-\-literal
Considera i nomi passati come argomenti letterali, senza espandere metacaratteri.
Non ha effetto in Unix, dove la shell espande comunque i metacaratteri.
.TP
+\-\-log {nome_file}
+Se
+.B Vim
+è stato compilato con le funzionalità eval e channel, inizia a registrare
+e scrive le registrazioni a {nome_file}. Ciò equivale a chiamare
+.I ch_logfile({nome_file}, 'ao')
+in una fase molto iniziale dell'avvio del programma.
+.TP
+\-\-nofork
+Direttamente [Foreground]. Per la versione GUI,
+.B Vim
+non crea [fork] una nuova finestra, indipendente dalla shell di invocazione.
+.TP
\-\-noplugin
Non caricare plugin. Implicito se si specifica \-u NONE.
.TP
+\-\-not\-a\-term
+Da usare per specificare a
+.B Vim
+che l'utente è consapevole che l'input e l'output non avvengono con un terminale
+vero e proprio. Ciò serve per evitare il messaggio di avvertimento e il ritardo
+di due secondi che avverrebbero in assenza di questo argomento.
+.TP
\-\-remote
Connettersi a un server Vim e chiedere di editare i file elencati come altri
argomenti. Se non si trova un server viene dato un messaggio e i file sono
@@ -498,16 +500,19 @@ Usa {nome} come nome server. Usato per il Vim corrente, a meno che sia usato
con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi.
.TP
\-\-socketid {id}
-Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gvim in un'altra finestra.
+Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gVim in un'altra finestra.
.TP
\-\-startuptime {nome_file}
Durante la fase iniziale, scrive messaggi di log al file {nome_file}.
.TP
+\-\-ttyfail
+Quando stdin o stdout non sono un terminale (tty) esce subito da Vim.
+.TP
\-\-version
Stampa la versione di Vim ed esce.
.TP
\-\-windowid {id}
-Solo per GUI Win32: Chiede a gvim di provare a user l'ID di window {id}
+Solo per GUI Win32: Chiede a gVim di provare a user l'ID di window {id}
come padre, in modo da venir eseguito all'interno della finestra specificata.
.SH AIUTO ONLINE
Battere ":help" in
@@ -555,13 +560,17 @@ Inizializzazioni personali di
Inizializzazioni gvim a livello di sistema.
.TP
~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
-Inizializzazioni personali di gvim (viene utilizzata la prima trovata).
+Inizializzazioni personali di
+.B gVim
+(viene utilizzata la prima trovata).
.TP
/usr/local/share/vim/optwin.vim
Script Vim usato dal comando ":options", maniera elegante per visualizzare e impostare opzioni.
.TP
/usr/local/share/vim/vim??/menu.vim
-Inizializzazioni del menù gvim a livello di sistema.
+Inizializzazioni del menù
+.B gVim
+a livello di sistema.
.TP
/usr/local/share/vim/vim??/bugreport.vim
Script Vim per generare una segnalazione di errore. Vedere ":help bugs".
diff --git a/runtime/doc/vim-ja.UTF-8.1 b/runtime/doc/vim-ja.UTF-8.1
index e18211e..2a6db2f 100644
--- a/runtime/doc/vim-ja.UTF-8.1
+++ b/runtime/doc/vim-ja.UTF-8.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "2021 Jun 13"
+.TH VIM 1 "2024 Aug 03"
.SH åå‰
vim \- Vi IMproved, プログラマã®ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒ‡ã‚£ã‚¿
.SH 書å¼
@@ -170,7 +170,7 @@ Note: "+" 㨠"\-c" ã¯åˆã‚ã›ã¦ 10 個ã¾ã§æŒ‡å®šã§ãã¾ã™ã€‚
指定ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ãŒé–‹ã‹ã‚Œã€ãれらã®ãƒ•ã‚¡ã‚¤ãƒ«ã®å·®åˆ†ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
vimdiff(1) ã¨åŒæ§˜ã®å‹•ä½œã§ã™ã€‚
.TP
-\-d {device}
+\-d {device}, \-dev {device}
{device} を端末ã¨ã—ã¦é–‹ãã¾ã™ã€‚
Amiga ã§ã®ã¿ä½¿ã„ã¾ã™ã€‚
例:
@@ -208,7 +208,13 @@ Amiga ã§ã¯ã€":sh" 㨠"!" コマンドã¯æ©Ÿèƒ½ã—ãªããªã‚Šã¾ã™ã€‚
GUI ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€GUI ã§èµ·å‹•ã—ã¾ã™ã€‚
サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å ´åˆã¯ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚
.TP
-\-h
+\-\-gui-dialog-file {name}
+GUI ã®ä½¿ç”¨æ™‚ã€ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’表示ã™ã‚‹ä»£ã‚ã‚Šã¨ã—ã¦ã€ãƒ•ã‚¡ã‚¤ãƒ« {name} ã¸ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã®ã‚¿ã‚¤ãƒˆãƒ«ã¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ãè¾¼ã¿ã¾ã™ã€‚
+ファイルã¯ä½œæˆã•ã‚Œã‚‹ã‹è¿½è¨˜ã•ã‚Œã¾ã™ã€‚
+テストã«ã¿æœ‰ç”¨ã§ã€è¦‹ã‚‹ã“ã¨ãŒã§ããªã„ダイアログã«ã‚ˆã£ã¦ãƒ†ã‚¹ãƒˆãŒä¸­æ–­ã•ã‚Œã‚‹ã®ã‚’防ãŽã¾ã™ã€‚
+GUI 以外ã§ã¯ã“ã®å¼•æ•°ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚
+.TP
+\-\-help, \-h, \-?
コマンドライン引数やオプションã®ãƒ˜ãƒ«ãƒ—を表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚
.TP
\-H
@@ -266,6 +272,12 @@ N ã‚’çœç•¥ã—ãŸå ´åˆã¯ã€å¼•æ•°ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’個別ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§
N 個ã®ã‚¿ãƒ–ページを開ãã¾ã™ã€‚
N ã‚’çœç•¥ã—ãŸå ´åˆã¯ã€å¼•æ•°ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’個別ã®ã‚¿ãƒ–ページã§é–‹ãã¾ã™ã€‚
.TP
+\-P {parent-title}
+Win32 ã®ã¿ã€‚親ã«ãªã‚‹ã‚¢ãƒ—リケーションã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’指定ã—ã¾ã™ã€‚
+å¯èƒ½ã§ã‚れ㰠Vim ã¯ãã® MDI アプリケーションã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦å†…ã§èµ·å‹•ã—ã¾ã™ã€‚
+{parent-title} ãŒè¦ªã‚¢ãƒ—リケーションã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ã‚¿ã‚¤ãƒˆãƒ«ã«ä½¿ã‚ã‚Œã¦ã„ã¦ã€æ˜Žç¢ºã«åŒºåˆ¥ã§ãã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+Note: ã¾ã ç°¡å˜ã«å®Ÿè£…ã•ã‚Œã¦ã„ã‚‹ã ã‘ã§ã™ã€‚å…¨ã¦ã®ã‚¢ãƒ—リケーションã§å‹•ãã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。メニューã¯æ©Ÿèƒ½ã—ã¾ã›ã‚“。
+.TP
\-R
読ã¿è¾¼ã¿å°‚用モード。
オプション 'readonly' ãŒã‚ªãƒ³ã«ãªã‚Šã¾ã™ã€‚
@@ -301,6 +313,15 @@ N ã‚’çœç•¥ã—ãŸå ´åˆã¯ã€å¼•æ•°ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’個別ã®ã‚¿ãƒ–ページã§
ãŒçµ„ã¿è¾¼ã¿ã§ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹åå‰ã‹ã€
termcap ã¾ãŸã¯ terminfo ファイルã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹åå‰ã‚’指定ã—ã¦ãã ã•ã„。
.TP
+\-\-not-a-term
+入力ã¨å‡ºåŠ›(ã‚‚ã—ãã¯ã©ã¡ã‚‰ã‹ä¸€æ–¹)ãŒç«¯æœ«ã«æŽ¥ç¶šã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŠŠæ¡ã—ã¦ã„ã‚‹ã¨ã„ã†ã“ã¨ã‚’
+.B Vim
+ã«ä¼ãˆã¾ã™ã€‚
+ã“ã‚Œã«ã‚ˆã‚Šè­¦å‘ŠãŒè¡¨ç¤ºã•ã‚Œ 2 秒間ã®é…延ãŒç™ºç”Ÿã™ã‚‹ã®ã‚’é¿ã‘られã¾ã™ã€‚
+.TP
+\-\-ttyfail
+標準入力ã‹æ¨™æº–出力ãŒç«¯æœ« (tty) ã§ãªã„å ´åˆã€ã™ãã«çµ‚了ã—ã¾ã™ã€‚
+.TP
\-u {vimrc}
{vimrc} ファイルを使ã£ã¦åˆæœŸåŒ–ã—ã¾ã™ã€‚
ä»–ã®åˆæœŸåŒ–処ç†ã¯ã‚¹ã‚­ãƒƒãƒ—ã•ã‚Œã¾ã™ã€‚
@@ -320,11 +341,27 @@ termcap ã¾ãŸã¯ terminfo ファイルã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹åå‰ã‚’指定ã
N ã«æŒ‡å®šã—ãŸæ•°å€¤ãŒ 'verbose' ã«è¨­å®šã•ã‚Œã¾ã™ã€‚
çœç•¥ã—ãŸå ´åˆã¯ 10 ã«ãªã‚Šã¾ã™ã€‚
.TP
+\-V[N]{filename}
+-V ã¨åŒæ§˜ã§ã€ã•ã‚‰ã« 'verbosefile' ã‚’ {filename} ã«è¨­å®šã—ã¾ã™ã€‚
+ãã®çµæžœã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯è¡¨ç¤ºã•ã‚Œãšã«ãƒ•ã‚¡ã‚¤ãƒ« {filename} ã«æ›¸ã出ã•ã‚Œã¾ã™ã€‚
+{filename} ã¯æ•°å­—ã§å§‹ã¾ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。
+.TP
+\-\-log {filename}
+ã‚‚ã—
+.B Vim
+ãŒãƒãƒ£ãƒãƒ«æ©Ÿèƒ½ä»˜ãã§ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹å ´åˆã€ãƒ­ã‚°ã®å‡ºåŠ›ã‚’開始ã—ã€ãƒ•ã‚¡ã‚¤ãƒ« {filename} ã«æ›¸ãè¾¼ã¿ã¾ã™ã€‚
+ã“ã‚Œã¯ã€èµ·å‹•æ™‚ã®éžå¸¸ã«æ—©ã„段階ã§
+.I ch_logfile({filename}, 'ao')
+を呼ã³å‡ºã™ã®ã¨åŒæ§˜ãªå‹•ä½œã§ã™ã€‚
+.TP
\-v
Vi モードã§èµ·å‹•ã—ã¾ã™ã€‚
実行ファイルã®åå‰ãŒ "vi" ã®å ´åˆã¨åŒã˜ã§ã™ã€‚
実行ファイルã®åå‰ãŒ "ex" ã®å ´åˆã ã‘効果ãŒã‚ã‚Šã¾ã™ã€‚
.TP
+\-w{number}
+オプション 'window' ã‚’ {number} ã«è¨­å®šã—ã¾ã™ã€‚
+.TP
\-w {scriptout}
入力ã—ãŸæ–‡å­—ã‚’ {scriptout} ã«è¨˜éŒ²ã—ã¾ã™ã€‚
"vim \-s" ã‚„ "source!" ã§å®Ÿè¡Œã™ã‚‹ãŸã‚ã®ã‚¹ã‚¯ãƒªãƒ—トファイルを作æˆã™ã‚‹ã®ã«ä¾¿åˆ©ã§ã™ã€‚
@@ -334,7 +371,9 @@ Vi モードã§èµ·å‹•ã—ã¾ã™ã€‚
\-w ã¨åŒã˜ã§ã™ãŒã€ãƒ•ã‚¡ã‚¤ãƒ«ãŒã™ã§ã«å­˜åœ¨ã—ãŸå ´åˆã¯ä¸Šæ›¸ãã•ã‚Œã¾ã™ã€‚
.TP
\-x
-ファイルを暗å·åŒ–ã—ã¦æ›¸ãè¾¼ã¿ã¾ã™ã€‚æš—å·åŒ–キーã®å…¥åŠ›ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
+.B Vim
+ãŒæš—å·åŒ–機能付ãã§ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹å ´åˆã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æš—å·åŒ–ã—ã¦æ›¸ãè¾¼ã¿ã¾ã™ã€‚
+æš—å·åŒ–キーã®å…¥åŠ›ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
.TP
\-X
X サーãƒãƒ¼ã¨é€šä¿¡ã—ã¾ã›ã‚“。端末ã§ã®èµ·å‹•æ™‚間を短ãã§ãã¾ã™ã€‚
@@ -362,9 +401,6 @@ X サーãƒãƒ¼ã¨é€šä¿¡ã—ã¾ã›ã‚“。端末ã§ã®èµ·å‹•æ™‚間を短ãã§ãã¾
\-\-echo\-wid
GTK GUI ã®ã¿: Window ID を標準出力ã«å‡ºåŠ›ã—ã¾ã™ã€‚
.TP
-\-\-help
-ヘルプを表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚"\-h" ã¨åŒã˜ã§ã™ã€‚
-.TP
\-\-literal
引数ã®ãƒ•ã‚¡ã‚¤ãƒ«åをリテラル文字列ã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ワイルドカードを展開ã—ã¾ã›ã‚“。
Unix ã®ã‚ˆã†ã«ã€ã‚·ã‚§ãƒ«ãŒãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’展開ã™ã‚‹å ´åˆã¯æ©Ÿèƒ½ã—ã¾ã›ã‚“。
@@ -406,6 +442,10 @@ GTK GUI ã®ã¿: GtkPlug メカニズムを使ã£ã¦ gvim を別ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚
.TP
\-\-version
ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚
+.TP
+\-\-windowid {id}
+Win32 GUI ã® Vim ã®ã¿ã€‚ウィンドウ {id} を親ウィンドウã«ã—よã†ã¨è©¦ã¿ã¾ã™ã€‚
+æˆåŠŸã™ã‚‹ã¨ãã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®å†…å´ã§èµ·å‹•ã—ã¾ã™ã€‚
.SH オンラインヘルプ
ヘルプを開ãã«ã¯ã€
.B Vim
@@ -420,53 +460,58 @@ GTK GUI ã®ã¿: GtkPlug メカニズムを使ã£ã¦ gvim を別ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚
例: ":help syntax.txt"。
.SH ファイル
.TP 15
-/usr/local/lib/vim/doc/*.txt
+/usr/local/share/vim/vim??/doc/*.txt
.B Vim
ã®ãƒ˜ãƒ«ãƒ—ファイル。
ファイルã®ä¸€è¦§ã¯ ":help doc\-file\-list" ã«è¨˜è¼‰ã•ã‚Œã¦ã„ã¾ã™ã€‚
+.br
+.I vim??
+ã¯çŸ­ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã§
+.B Vim 9.1
+ã§ã¯ vim91 ã§ã™ã€‚
.TP
-/usr/local/lib/vim/doc/tags
+/usr/local/share/vim/vim??/doc/tags
ヘルプを検索ã™ã‚‹ãŸã‚ã® tags ファイル。
.TP
-/usr/local/lib/vim/syntax/syntax.vim
+/usr/local/share/vim/vim??/syntax/syntax.vim
システムã®æ§‹æ–‡å®šç¾©åˆæœŸåŒ–ファイル。
.TP
-/usr/local/lib/vim/syntax/*.vim
+/usr/local/share/vim/vim??/syntax/*.vim
ã„ã‚ã„ã‚ãªè¨€èªžç”¨ã®æ§‹æ–‡å®šç¾©ãƒ•ã‚¡ã‚¤ãƒ«ã€‚
.TP
-/usr/local/lib/vim/vimrc
+/usr/local/share/vim/vimrc
システムã®
.B Vim
åˆæœŸåŒ–ファイル。
.TP
-~/.vimrc
+~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc
ユーザーã®
.B Vim
-åˆæœŸåŒ–ファイル。
+åˆæœŸåŒ–ファイル。(最åˆã®ã‚‚ã®ãŒä½¿ã‚ã‚Œã¾ã™ã€‚)
.TP
-/usr/local/lib/vim/gvimrc
+/usr/local/share/vim/gvimrc
システム㮠gvim åˆæœŸåŒ–ファイル。
.TP
-~/.gvimrc
-ユーザー㮠gvim åˆæœŸåŒ–ファイル。
+~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
+ユーザー㮠gvim åˆæœŸåŒ–ファイル。(最åˆã®ã‚‚ã®ãŒä½¿ã‚ã‚Œã¾ã™ã€‚)
.TP
-/usr/local/lib/vim/optwin.vim
+/usr/local/share/vim/vim??/optwin.vim
":options" コマンドã§ä½¿ã‚れるファイル。
オプションを表示ã—ãŸã‚Šè¨­å®šã—ãŸã‚Šã§ãã¾ã™ã€‚
.TP
-/usr/local/lib/vim/menu.vim
+/usr/local/share/vim/vim??/menu.vim
システムã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼åˆæœŸåŒ–ファイル。gvim ã§ä½¿ã„ã¾ã™ã€‚
.TP
-/usr/local/lib/vim/bugreport.vim
+/usr/local/share/vim/vim??/bugreport.vim
ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã‚’生æˆã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—ト。":help bugs" å‚照。
.TP
-/usr/local/lib/vim/filetype.vim
+/usr/local/share/vim/vim??/filetype.vim
ファイルåã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—を判定ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—ト。":help 'filetype'" å‚照。
.TP
-/usr/local/lib/vim/scripts.vim
+/usr/local/share/vim/vim??/scripts.vim
ファイルã®å†…容ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—を判定ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—ト。":help 'filetype'" å‚照。
.TP
-/usr/local/lib/vim/print/*.ps
+/usr/local/share/vim/vim??/print/*.ps
PostScript å°åˆ·ã«ä½¿ã‚れるファイル。
.PP
最新ã®æƒ…報㯠VIM ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸ã‚’å‚ç…§ã—ã¦ãã ã•ã„:
diff --git a/runtime/doc/vim-ru.1 b/runtime/doc/vim-ru.1
index dfcb3ec..4aa4887 100644
--- a/runtime/doc/vim-ru.1
+++ b/runtime/doc/vim-ru.1
@@ -1,19 +1,20 @@
-.TH VIM 1 "2002 Feb 22"
-.SH éíñ
-vim \- Vi IMproved (õÌÕÞÛÅÎÎÙÊ Vi), ÔÅËÓÔÏ×ÙÊ ÒÅÄÁËÔÏÒ ÄÌÑ ÐÒÏÇÒÁÍÍÉÓÔÏ×
-.SH ëïíáîäîáñ óôòïëá
+.TH VIM 1 "12 Á×ÇÕÓÔÁ 2024"
+.SH îáúîáþåîéå
+ðÒÏÇÒÁÍÍÁ Vim \[em] ÜÔÏ Vi IMproved (õÌÕÞÛÅÎÎÙÊ Vi), ÔÅËÓÔÏ×ÙÊ ÒÅÄÁËÔÏÒ ÄÌÑ
+ÐÒÏÇÒÁÍÍÉÓÔÏ×.
+.SH ëòáôëéê ïâúïò
.br
.B vim
-[ËÌÀÞÉ] [ÆÁÊÌ ..]
+[ÁÒÇÕÍÅÎÔÙ] [ÆÁÊÌ ...]
.br
.B vim
-[ËÌÀÞÉ] \-
+[ÁÒÇÕÍÅÎÔÙ] \-
.br
.B vim
-[ËÌÀÞÉ] \-t ÍÅÔËÁ
+[ÁÒÇÕÍÅÎÔÙ] \-t ÉÎÄÅËÓ
.br
.B vim
-[ËÌÀÞÉ] \-q [ÆÁÊÌ ÏÛÉÂÏË]
+[ÁÒÇÕÍÅÎÔÙ] \-q [ÆÁÊÌ ÒÅÚÕÌØÔÁÔÏ×]
.PP
.br
.B ex
@@ -22,468 +23,669 @@ vim \- Vi IMproved (õÌÕÞÛÅÎÎÙÊ Vi), ÔÅËÓÔÏ×ÙÊ ÒÅÄÁËÔÏÒ ÄÌÑ ÐÒÏÇÒÁÍÍÉÓÔÏ×
.br
.B gvim
.B gview
+.B evim
+.B eview
.br
.B rvim
.B rview
.B rgvim
.B rgview
.SH ïðéóáîéå
+ðÒÏÇÒÁÍÍÁ
.B Vim
--- ÔÅËÓÔÏ×ÙÊ ÒÅÄÁËÔÏÒ, ÏÂÒÁÔÎÏ-ÓÏ×ÍÅÓÔÉÍÙÊ Ó Vi.
-ïÎ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÄÌÑ ÐÒÁ×ËÉ ×ÓÅÈ ×ÉÄÏ× ÐÒÏÓÔÏÇÏ ÔÅËÓÔÁ.
-ïÓÏÂÅÎÎÏ ÏÎ ÈÏÒÏÛ ÄÌÑ ÐÒÁ×ËÉ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÐÒÏÇÒÁÍÍ.
+\[em] ÜÔÏ ÔÅËÓÔÏ×ÙÊ ÒÅÄÁËÔÏÒ, ÓÏ×ÍÅÓÔÉÍÙÊ Ó ÒÅÄÁËÔÏÒÏÍ Vi.
+ïÎÁ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÄÌÑ ÐÒÁ×ËÉ ×ÓÅÈ ×ÉÄÏ× ÏÂÙÞÎÙÈ ÔÅËÓÔÏ×ÙÈ ÄÏËÕÍÅÎÔÏ×.
+ïÓÏÂÅÎÎÏ ÐÏÌÅÚÎÁ ÏÎÁ ÂÕÄÅÔ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÐÒÏÇÒÁÍÍ.
.PP
-ðÏ ÓÒÁ×ÎÅÎÉÀ Ó Vi,
+ðÏ ÓÒÁ×ÎÅÎÉÀ Ó ÒÅÄÁËÔÏÒÏÍ Vi, × ÒÅÄÁËÔÏÒÅ
.B Vim
-ÉÍÅÅÔ ÍÎÏÇÏ ÕÓÏ×ÅÒÛÅÎÓÔ×Ï×ÁÎÉÊ: ÍÎÏÇÏËÒÁÔÎÁÑ ÏÔÍÅÎÁ ÏÐÅÒÁÃÉÊ,
+ÐÒÅÄÓÔÁ×ÌÅÎÏ ÍÎÏÇÏ ÕÓÏ×ÅÒÛÅÎÓÔ×Ï×ÁÎÉÊ: ÍÎÏÇÏËÒÁÔÎÁÑ ÏÔÍÅÎÁ ÏÐÅÒÁÃÉÊ,
ÍÎÏÖÅÓÔ×ÅÎÎÏÓÔØ ÏËÏÎ É ÂÕÆÅÒÏ×, ÐÏÄÓ×ÅÔËÁ ÓÉÎÔÁËÓÉÓÁ, ÐÒÁ×ËÁ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ,
-Á×ÔÏÄÏÐÏÌÎÅÎÉÅ ÉͣΠÆÁÊÌÏ×, ×ÓÔÒÏÅÎÎÁÑ ÓÐÒÁ×ËÁ, ×ÉÚÕÁÌØÎÏÅ ×ÙÄÅÌÅÎÉÅ É Ô.Ð.
-óÍ. ":help vi_diff.txt" ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÎÏÇÏ ÓÐÉÓËÁ ÒÁÚÌÉÞÉÊ ÍÅÖÄÕ
+ÐÏÄÓÔÁÎÏ×ËÁ ÎÁÉÍÅÎÏ×ÁÎÉÊ ÆÁÊÌÏ×, ×ÓÔÒÏÅÎÎÁÑ ÄÏËÕÍÅÎÔÁÃÉÑ, ×ÉÚÕÁÌØÎÏÅ ×ÙÄÅÌÅÎÉÅ
+É ÐÒÏÞÅÅ.
+óÍ. ":help vi_diff.txt" ÞÔÏÂÙ ÏÚÎÁËÏÍÉÔØÓÑ Ó ÐÏÌÎÙÍ ÐÅÒÅÞÎÅÍ ÒÁÚÌÉÞÉÊ ÍÅÖÄÕ
+ÒÅÄÁËÔÏÒÏÍ
.B Vim
-É Vi.
+É ÒÅÄÁËÔÏÒÏÍ Vi.
.PP
-÷Ï ×ÒÅÍÑ ÒÁÂÏÔÙ ×
-.B Vim
-ÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÐÒÁ×ËÕ Ó ÐÏÍÏÝØÀ ÓÉÓÔÅÍÙ ×ÓÔÒÏÅÎÎÏÊ ÓÐÒÁ×ËÉ (ËÏÍÁÎÄÁ ":help").
-óÍ. ÒÁÚÄÅÌ "÷óôòïåîîáñ óðòá÷ëá" ÎÉÖÅ ÐÏ ÔÅËÓÔÕ.
+þÔÏÂÙ ÐÏÌÕÞÉÔØ ÐÏÌÅÚÎÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÒÁÂÏÔÅ Ó ÒÅÄÁËÔÏÒÏÍ
+.B Vim,
+ÍÏÖÎÏ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ×ÓÔÒÏÅÎÎÏÊ × ÐÒÏÇÒÁÍÍÕ ÄÏËÕÍÅÎÔÁÃÉÅÊ, ÎÁÂÒÁ× × ÒÅÄÁËÔÏÒÅ
+ËÏÍÁÎÄÕ ":help".
+óÍ. ÒÁÚÄÅÌ "÷óôòïåîîáñ äïëõíåîôáãéñ" ÄÁÌÅÅ × ÔÅËÓÔÅ.
.PP
-þÁÝÅ ×ÓÅÇÏ
+þÁÝÅ ×ÓÅÇÏ ÒÅÄÁËÔÏÒ
.B Vim
ÚÁÐÕÓËÁÀÔ ÄÌÑ ÐÒÁ×ËÉ ÏÄÎÏÇÏ ÆÁÊÌÁ ÐÒÉ ÐÏÍÏÝÉ ËÏÍÁÎÄÙ
.PP
vim ÆÁÊÌ
.PP
-÷ ÏÂÝÅÍ ×ÉÄÅ ËÏÍÁÎÄÁ ÚÁÐÕÓËÁ
+÷ ÏÂÝÅÍ ×ÉÄÅ ËÏÍÁÎÄÁ ÚÁÐÕÓËÁ ÒÅÄÁËÔÏÒÁ
.B Vim
×ÙÇÌÑÄÉÔ ÔÁË:
.PP
- vim [ËÌÀÞÉ] [ÓÐÉÓÏË ÆÁÊÌÏ×]
+ vim [ÁÒÇÕÍÅÎÔÙ] [ÆÁÊÌÙ]
.PP
-åÓÌÉ ÓÐÉÓÏË ÆÁÊÌÏ× ÏÔÓÕÔÓÔ×ÕÅÔ, ÒÅÄÁËÔÏÒ ÎÁÞÎ£Ô ÒÁÂÏÔÕ Ó ÐÕÓÔÙÍ ÂÕÆÅÒÏÍ.
-÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÉÍÑ ÆÁÊÌÁ ÄÏÌÖÎÏ ÂÙÔØ ÕËÁÚÁÎÏ ÏÄÎÉÍ ÉÚ ÓÌÅÄÕÀÝÉÈ ÞÅÔÙÒ£È ÓÐÏÓÏÂÏ×:
+åÓÌÉ ÆÁÊÌÙ ÎÅ ÕËÁÚÁÎÙ, ÒÅÄÁËÔÏÒ ÂÕÄÅÔ ÚÁÐÕÝÅÎ Ó ÄÏÓÔÕÐÎÙÍ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
+ÐÕÓÔÙÍ ÂÕÆÅÒÏÍ.
+îÁÉÍÅÎÏ×ÁÎÉÑ ÆÁÊÌÏ× ÍÏÇÕÔ ÂÙÔØ ÕËÁÚÁÎÙ ÏÄÎÉÍ ÉÚ ÓÌÅÄÕÀÝÉÈ ÞÅÔÙÒ£È ÓÐÏÓÏÂÏ×:
.TP 12
-ÆÁÊÌ ..
-óÐÉÓÏË ÉͣΠÆÁÊÌÏ×.
-ðÅÒ×ÙÊ ÆÁÊÌ ÂÕÄÅÔ ÏÂßÑ×ÌÅÎ ÁËÔÉ×ÎÙÍ É ÚÁÇÒÕÖÅÎ × ÂÕÆÅÒ. ëÕÒÓÏÒ ÂÕÄÅÔ ÐÏÍÅÝ£Î
-× ÐÅÒ×ÏÊ ÓÔÒÏËÅ ÂÕÆÅÒÁ. äÏÓÔÕÐ Ë ÄÒÕÇÉÍ ÆÁÊÌÁÍ ÍÏÖÅÔ ÂÙÔØ ÏÓÕÝÅÓÔ×̣ΠÐÒÉ
-ÐÏÍÏÝÉ ËÏÍÁÎÄÙ ":next". þÔÏÂÙ ÐÒÁ×ÉÔØ ÆÁÊÌ, ÉÍÑ ËÏÔÏÒÏÇÏ ÎÁÞÉÎÁÅÔÓÑ Ó ÓÉÍ×ÏÌÁ
-"ÄÅÆÉÓ" (-), ÐÅÒÅÄ ÓÐÉÓËÏÍ ÆÁÊÌÏ× ÎÅÏÂÈÏÄÉÍÏ ÐÏÓÔÁ×ÉÔØ "--".
+ÆÁÊÌ ...
+ðÅÒÅÞÅÎØ ÎÁÉÍÅÎÏ×ÁÎÉÊ ÆÁÊÌÏ×.
+ðÅÒ×ÙÊ ÆÁÊÌ ÉÚ ÐÅÒÅÞÎÑ ÂÕÄÅÔ ÏÂßÑ×ÌÅÎ ÁËÔÉ×ÎÙÍ É ÚÁÇÒÕÖÅÎ × ÂÕÆÅÒ, Á ËÁÒÅÔËÁ
+ÕÓÔÁÎÏ×ÌÅÎÁ ÎÁ ÐÅÒ×ÏÊ ÓÔÒÏËÅ ÜÔÏÇÏ ÂÕÆÅÒÁ. äÏÓÔÕÐ Ë ÄÒÕÇÉÍ ÆÁÊÌÁÍ ÉÚ ÜÔÏÇÏ
+ÐÅÒÅÞÎÑ ÍÏÖÅÔ ÂÙÔØ ÏÓÕÝÅÓÔ×̣ΠÐÒÉ ÐÏÍÏÝÉ ËÏÍÁÎÄÙ ":next". þÔÏÂÙ ÐÒÁ×ÉÔØ ÆÁÊÌ,
+ÎÁÉÍÅÎÏ×ÁÎÉÅ ËÏÔÏÒÏÇÏ ÎÁÞÉÎÁÅÔÓÑ Ó ÓÉÍ×ÏÌÁ "ÄÅÆÉÓ" (\-), ÐÅÒÅÄ ÐÅÒÅÞÎÅÍ ÆÁÊÌÏ×
+ÎÅÏÂÈÏÄÉÍÏ ÕËÁÚÁÔØ ÓÉÍ×ÏÌÙ "\-\-".
.TP
\-
-æÁÊÌ ÂÕÄÅÔ ÐÒÏÞÉÔÁÎ ÉÚ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ. ëÏÍÁÎÄÙ ÂÕÄÕÔ ÓÞÉÔÙ×ÁÔØÓÑ
-ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ÄÉÁÇÎÏÓÔÉËÉ (stderr), ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÂÙÔØ
-ÔÅÒÍÉÎÁÌÏÍ.
-.TP
-\-t {ÍÅÔËÁ}
-éÍÑ ÆÁÊÌÁ É ÎÁÞÁÌØÎÁÑ ÐÏÚÉÃÉÑ ËÕÒÓÏÒÁ ÚÁ×ÉÓÑÔ ÏÔ "ÍÅÔËÉ", ÐÏÈÏÖÅÊ ÎÁ ÍÅÔËÕ goto.
-{ÍÅÔËÁ} ÉÝÅÔÓÑ × ÆÁÊÌÅ ÍÅÔÏË, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÆÁÊÌ ÓÔÁÎÏ×ÉÔÓÑ ÁËÔÉ×ÎÙÍ, Á
-ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÁÑ ËÏÍÁÎÄÁ ÉÓÐÏÌÎÑÅÔÓÑ.
-þÁÝÅ ×ÓÅÇÏ ÉÓÐÏÌØÚÕÅÔÓÑ × ÐÒÏÇÒÁÍÍÁÈ ÎÁ ÑÚÙËÅ óÉ, ÇÄÅ {ÍÅÔËÁ} ÍÏÖÅÔ ÂÙÔØ ÉÍÅÎÅÍ
-ÆÕÎËÃÉÉ.
-æÁÊÌ, ÓÏÄÅÒÖÁÝÉÊ ÆÕÎËÃÉÀ, ÓÔÁÎÏ×ÉÔÓÑ ÁËÔÉ×ÎÙÍ, Á ËÕÒÓÏÒ ÐÏÍÅÝÁÅÔÓÑ × ÎÁÞÁÌÏ ÆÕÎËÃÉÉ.
-óÍ. ":help tag-commands".
-.TP
-\-q [ÆÁÊÌ ÏÛÉÂÏË]
-îÁÞÁÔØ ÒÁÂÏÔÕ × ÒÅÖÉÍÅ ÂÙÓÔÒÏÇÏ ÉÓÐÒÁ×ÌÅÎÉÑ.
-ðÒÉ ÜÔÏÍ ÓÞÉÔÙ×ÁÅÔÓÑ [ÆÁÊÌ ÏÛÉÂÏË] É ÐÅÒ×ÁÑ ÏÛÉÂËÁ ×Ù×ÏÄÉÔÓÑ ÎÁ ÜËÒÁÎ.
-åÓÌÉ [ÆÁÊÌ ÏÛÉÂÏË] ÎÅ ÕËÁÚÁÎ, ÉÍÑ ÆÁÊÌÁ ÂÅÒ£ÔÓÑ ÉÚ ÚÎÁÞÅÎÉÑ ÏÐÃÉÉ 'errorfile'
-(ÐÏ ÕÍÏÌÞÁÎÉÀ: "AztecC.Err" ÄÌÑ Amiga, "errors.err" ÄÌÑ ÄÒÕÇÉÈ ÓÉÓÔÅÍ).
-ë ÓÌÅÄÕÀÝÉÍ ÏÛÉÂËÁÍ ÍÏÖÎÏ ÐÅÒÅÊÔÉ ÐÏ ËÏÍÁÎÄÅ ":cn".
+ôÅËÓÔ ÄÌÑ ÐÒÁ×ËÉ ÂÕÄÅÔ ÓÞÉÔÁÎ ÉÚ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ. ëÏÍÁÎÄÙ ÂÕÄÕÔ
+ÓÞÉÔÙ×ÁÔØÓÑ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ÄÉÁÇÎÏÓÔÉËÉ (stderr), ËÏÔÏÒÙÊ ÄÏÌÖÅÎ
+ÐÒÅÄÏÓÔÁ×ÌÑÔØÓÑ ÔÅÒÍÉÎÁÌÏÍ.
+.TP
+\-t {ÉÎÄÅËÓ}
+æÁÊÌÁ ÄÌÑ ÐÒÁ×ËÉ É ÎÁÞÁÌØÎÁÑ ÐÏÚÉÃÉÑ ËÁÒÅÔËÉ ÚÁ×ÉÓÑÔ ÏÔ ÚÎÁÞÅÎÉÑ "ÉÎÄÅËÓÁ",
+Ñ×ÌÑÀÝÉÊÓÑ Ó×ÏÅÇÏ ÒÏÄÁ ÍÅÔËÏÊ goto. ðÏÉÓË ÓÁÍÏÇÏ {ÉÎÄÅËÓÁ} ×ÙÐÏÌÎÑÅÔÓÑ × ÆÁÊÌÅ
+ÉÎÄÅËÓÏ×, Á ÓÏÐÏÓÔÁ×ÌÅÎÎÙÊ Ó ÎÉÍ ÆÁÊÌ ÂÕÄÅÔ ÏÔËÒÙÔ × ÒÅÄÁËÔÏÒÅ É ×ÙÐÏÌÎÅÎÁ
+Ó×ÑÚÁÎÎÁÑ Ó ÜÔÉÍ {ÉÎÄÅËÓÏÍ} ËÏÍÁÎÄÁ.
+þÁÝÅ ×ÓÅÇÏ ÜÔÏÔ ÓÐÏÓÏÂ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÐÒÏÇÒÁÍÍ ÎÁ ÑÚÙËÅ óÉ, ÇÄÅ {ÉÎÄÅËÓ} ÍÏÖÅÔ
+ÂÙÔØ ÎÁÉÍÅÎÏ×ÁÎÉÅÍ ÆÕÎËÃÉÉ.
+æÁÊÌ, ÓÏÄÅÒÖÁÝÉÊ ÔÁËÕÀ ÆÕÎËÃÉÀ, ÓÔÁÎÏ×ÉÔÓÑ ÁËÔÉ×ÎÙÍ, Á ËÁÒÅÔËÁ ÐÏÍÅÝÁÅÔÓÑ
+× ÎÁÞÁÌÏ ÜÔÏÊ ÆÕÎËÃÉÉ.
+óÍ. ":help tag\-commands".
+.TP
+\-q [ÆÁÊÌ ÒÅÚÕÌØÔÁÔÏ×]
+îÁÞÁÔØ ÒÁÂÏÔÕ ÒÅÄÁËÔÏÒÁ × ÃÉËÌÅ ÂÙÓÔÒÏÇÏ ÉÓÐÒÁ×ÌÅÎÉÑ ÔÅËÓÔÁ ÐÒÏÇÒÁÍÍ.
+âÕÄÅÔ ÓÞÉÔÁÎ [ÆÁÊÌ ÒÅÚÕÌØÔÁÔÏ×] É ÏÔÏÂÒÁÖÅÎÁ ÐÅÒ×ÁÑ ÚÁÐÉÓØ ÉÚ ÜÔÏÇÏ ÆÁÊÌÁ.
+åÓÌÉ [ÆÁÊÌ ÒÅÚÕÌØÔÁÔÏ×] ÎÅ ÕËÁÚÁÎ, ÔÏ ÅÇÏ ÎÁÉÍÅÎÏ×ÁÎÉÅ ÂÅÒ£ÔÓÑ ÉÚ ÚÎÁÞÅÎÉÑ
+ÐÁÒÁÍÅÔÒÁ 'errorfile' (ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ïó Amiga ÜÔÏ "AztecC.Err", Á ÄÌÑ ÄÒÕÇÉÈ
+ÓÉÓÔÅÍ \[em] "errors.err").
+ë ÓÌÅÄÕÀÝÅÊ ÚÁÐÉÓÉ × ÆÁÊÌÅ ÒÅÚÕÌØÔÁÔÏ× ÍÏÖÎÏ ÐÅÒÅÊÔÉ ÐÏ ËÏÍÁÎÄÅ ":cn".
óÍ. ":help quickfix".
.PP
+ðÒÏÇÒÁÍÍÁ
.B Vim
-×ÅÄ£Ô ÓÅÂÑ ÐÏ-ÒÁÚÎÏÍÕ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÉÍÅÎÉ ËÏÍÁÎÄÙ (ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÍÏÖÅÔ
-ÂÙÔØ ÏÄÎÉÍ É ÔÅÍ ÖÅ).
+×ÅÄ£Ô ÓÅÂÑ ÐÏ-ÒÁÚÎÏÍÕ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÕËÁÚÁÎÎÏÊ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ ËÏÍÁÎÄÙ
+×ÙÚÏ×Á ÒÅÄÁËÔÏÒÁ (ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÐÒÉ ÜÔÏÍ ÍÏÖÅÔ ÂÙÔØ ÏÄÎÉÍ É ÔÅÍ ÖÅ).
.TP 10
vim
-"îÏÒÍÁÌØÎÙÊ" ÚÁÐÕÓË, ×Ó£ ÐÏ ÕÍÏÌÞÁÎÉÀ.
+üÔÏ "ÎÏÒÍÁÌØÎÙÊ" ÚÁÐÕÓË ÒÅÄÁËÔÏÒÁ, ×Ó£ ÐÏ ÕÍÏÌÞÁÎÉÀ.
.TP
ex
-úÁÐÕÓË × ÒÅÖÉÍÅ Ex. äÌÑ ÐÅÒÅÈÏÄÁ × ÎÏÒÍÁÌØÎÙÊ ÒÅÖÉÍ
-ÎÅÏÂÈÏÄÉÍÏ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ":vi". òÅÖÉÍ Ex ×ËÌÀÞÁÅÔ
-ÔÁËÖÅ ËÌÀÞ "\-e".
+úÁÐÕÓË ÒÅÄÁËÔÏÒÁ × Ex-ÒÅÖÉÍÅ. äÌÑ ÐÅÒÅËÌÀÞÅÎÉÑ × ÏÂÙÞÎÙÊ ÒÅÖÉÍ, ÎÅÏÂÈÏÄÉÍÏ
+ÎÁÂÒÁÔØ ËÏÍÁÎÄÕ ":vi".
+Ex-ÒÅÖÉÍ ÔÁËÖÅ ÍÏÖÅÔ ÂÙÔØ ÁËÔÉ×ÉÒÏ×ÁÎ ÞÅÒÅÚ ÁÒÇÕÍÅÎÔ "\-e".
.TP
view
-úÁÐÕÓË × ÒÅÖÉÍÅ "ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ". ÷Ù ÂÕÄÅÔÅ ÚÁÝÉÝÅÎÙ ÏÔ ÓÌÕÞÁÊÎÏÊ ÚÁÐÉÓÉ
-ÆÁÊÌÁ. ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ËÌÀÞÏÍ "\-R".
+úÁÐÕÓË ÒÅÄÁËÔÏÒÁ × ÒÅÖÉÍÅ "ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ". ÷ ÜÔÏÍ ÒÅÖÉÍÅ ÅÓÔØ ÎÅËÏÔÏÒÁÑ
+ÚÁÝÉÔÁ ÏÔ ÓÌÕÞÁÊÎÏÊ ÐÅÒÅÚÁÐÉÓÉ ÆÁÊÌÏ×.
+ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÞÅÒÅÚ ÕËÁÚÁÎÉÅ ÁÒÇÕÍÅÎÔÁ "\-R".
.TP
gvim gview
-÷ÅÒÓÉÑ Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ. úÁÐÕÓËÁÅÔÓÑ × ÎÏ×ÏÍ ÏËÎÅ.
-ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÐÒÉ ÚÁÐÕÓËÅ Ó ËÌÀÞÏÍ "\-g".
+úÁÐÕÓË ÒÅÄÁËÔÏÒÁ Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ. äÌÑ ÜÔÏÇÏ ÂÕÄÅÔ ÏÔËÒÙÔÏ ÎÏ×ÏÅ ÏËÎÏ.
+ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÐÒÉ ÚÁÐÕÓËÅ Ó ÁÒÇÕÍÅÎÔÏÍ "\-g".
+.TP
+evim eview
+õÐÒÏÝ£ÎÎÙÊ ×ÁÒÉÁÎÔ ÒÅÄÁËÔÏÒÁ Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ. úÁÐÕÓËÁÅÔÓÑ × ÎÏ×ÏÍ ÏËÎÅ.
+ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÞÅÒÅÚ ÁÒÇÕÍÅÎÔ "\-y".
.TP
rvim rview rgvim rgview
-ëÁË É ÐÒÅÄÙÄÕÝÉÅ ËÏÍÁÎÄÙ, ÎÏ Ó ÏÇÒÁÎÉÞÅÎÉÑÍÉ. îÅÌØÚÑ ÚÁÐÕÓËÁÔØ ËÏÍÁÎÄÙ ÏÂÏÌÏÞËÉ
-ÉÌÉ ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÔØ ÒÁÂÏÔÕ
+ëÁË É ÐÒÅÄÙÄÕÝÉÅ ËÏÍÁÎÄÙ, ÎÏ Ó ÎÅËÏÔÏÒÙÍÉ ÏÇÒÁÎÉÞÅÎÉÑÍÉ × ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ.
+îÅÌØÚÑ ÚÁÐÕÓËÁÔØ ËÏÍÁÎÄÙ ÏÂÏÌÏÞËÉ ÉÌÉ ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÔØ ÒÁÂÏÔÕ ÒÅÄÁËÔÏÒÁ
.B Vim.
-÷ÍÅÓÔÏ ÐÒÉÓÔÁ×ËÉ "r" ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ËÌÀÞ "\-Z".
-.SH ëìàþé
-ëÌÀÞÉ ÍÏÇÕÔ ÂÙÔØ ÕËÁÚÁÎÙ × ÌÀÂÏÍ ÐÏÒÑÄËÅ, ÄÏ ÉÌÉ ÐÏÓÌÅ ÉÍ£Î
-ÆÁÊÌÏ×. ëÌÀÞÉ ÂÅÚ ÁÒÇÕÍÅÎÔÏ× ÍÏÇÕÔ ÂÙÔØ ÏÂßÅÄÉÎÅÎÙ ÐÏÄ ÏÄÎÉÍ
-ÄÅÆÉÓÏÍ.
+÷ÍÅÓÔÏ ÐÒÉÓÔÁ×ËÉ "r" ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ "\-Z".
+.SH áòçõíåîôù ëïíáîäîïê óôòïëé
+áÒÇÕÍÅÎÔÙ ÍÏÇÕÔ ÂÙÔØ ÕËÁÚÁÎÙ × ÌÀÂÏÍ ÐÏÒÑÄËÅ, ÄÏ ÉÌÉ ÐÏÓÌÅ ÎÁÉÍÅÎÏ×ÁÎÉÊ ÆÁÊÌÏ×.
+áÒÇÕÍÅÎÔÙ, ÎÅ ÔÒÅÂÕÀÝÉÅ ÚÎÁÞÅÎÉÊ, ÍÏÇÕÔ ÂÙÔØ ÏÂßÅÄÉÎÅÎÙ Ó ÕËÁÚÁÎÉÅÍ ÔÏÌØËÏ
+ÏÄÎÏÇÏ ÄÅÆÉÓÁ.
.TP 12
+[ÎÏÍÅÒ]
-÷ ÐÅÒ×ÏÍ ÆÁÊÌÅ ËÕÒÓÏÒ ÂÕÄÅÔ ÐÏÍÅݣΠÎÁ ÓÔÒÏËÕ Ó ÕËÁÚÁÎÎÙÍ ÎÏÍÅÒÏÍ.
-åÓÌÉ "ÎÏÍÅÒ" ÎÅ ÕËÁÚÁÎ, ËÕÒÓÏÒ ÂÕÄÅÔ ÐÏÍÅݣΠÎÁ ÐÏÓÌÅÄÎÀÀ ÓÔÒÏËÕ.
+õÓÔÁÎÏ×ËÁ ËÁÒÅÔËÉ ÎÁ [ÎÏÍÅÒ] ÓÔÒÏËÉ.
+÷ ÐÅÒ×ÏÍ ÏÔËÒÙÔÏÍ ÆÁÊÌÅ ËÁÒÅÔËÁ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÁ ÎÁ ÓÔÒÏËÕ Ó ÕËÁÚÁÎÎÙÍ ÎÏÍÅÒÏÍ.
+åÓÌÉ "ÎÏÍÅÒ" ÎÅ ÚÁÄÁÎ, ËÁÒÅÔËÁ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÎÁ ÐÏÓÌÅÄÎÅÊ ÓÔÒÏËÅ ÆÁÊÌÁ.
.TP
+/{ÛÁÂÌÏÎ}
-÷ ÐÅÒ×ÏÍ ÆÁÊÌÅ ËÕÒÓÏÒ ÂÕÄÅÔ ÐÏÍÅݣΠÎÁ ÍÅÓÔÏ ÐÅÒ×ÏÇÏ ÓÏ×ÐÁÄÅÎÉÑ
-Ó ÕËÁÚÁÎÎÙÍ ÛÁÂÌÏÎÏÍ. óÍ. ":help search-pattern" ÄÌÑ ÐÏÌÕÞÅÎÉÑ
-ÓÐÉÓËÁ ÄÏÐÕÓÔÉÍÙÈ ÛÁÂÌÏÎÏ×.
+õÓÔÁÎÏ×ËÁ ËÁÒÅÔËÉ ÎÁ ÎÁÊÄÅÎÎÏÊ ÓÔÒÏËÅ.
+÷ ÏÔËÒÙÔÏÍ ÆÁÊÌÅ ËÁÒÅÔËÁ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÁ × ÓÔÒÏËÅ ÐÅÒ×ÏÇÏ ÓÏ×ÐÁÄÅÎÉÑ
+Ó ÕËÁÚÁÎÎÙÍ ÛÁÂÌÏÎÏÍ. óÍ. ":help search\-pattern" ÄÌÑ ÏÚÎÁËÏÍÌÅÎÉÑ Ó ÄÏÐÕÓÔÉÍÙÍÉ
+ÛÁÂÌÏÎÁÍÉ.
.TP
+{ËÏÍÁÎÄÁ}
.TP
\-c {ËÏÍÁÎÄÁ}
-{ËÏÍÁÎÄÁ} ÉÓÐÏÌÎÑÅÔÓÑ ÐÏÓÌÅ ÚÁÇÒÕÚËÉ ÐÅÒ×ÏÇÏ ÆÁÊÌÁ ËÁË ËÏÍÁÎÄÁ Ex.
-åÓÌÉ {ËÏÍÁÎÄÁ} ÓÏÄÅÒÖÉÔ ÐÒÏÂÅÌÙ, ÔÏ ÏÎÁ ÄÏÌÖÎÁ ÂÙÔØ ÚÁËÌÀÞÅÎÁ ×
-Ä×ÏÊÎÙÅ ËÁ×ÙÞËÉ (× ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÉÓÐÏÌØÚÕÅÍÏÊ ÏÂÏÌÏÞËÉ).
-ðÒÉÍÅÒ: vim "+set si" main.c
+éÓÐÏÌÎÅÎÉÅ ÕËÁÚÁÎÎÏÊ {ËÏÍÁÎÄÙ}.
+ðÏÓÌÅ ÚÁÇÒÕÚËÉ ÐÅÒ×ÏÇÏ ÆÁÊÌÁ ÂÕÄÅÔ ÉÓÐÏÌÎÅÎÁ ÕËÁÚÁÎÎÁÑ {ËÏÍÁÎÄÁ} ËÁË Ex-ËÏÍÁÎÄÁ.
+åÓÌÉ × ÔÅËÓÔÅ {ËÏÍÁÎÄÁ} ÅÓÔØ ÐÒÏÂÅÌÙ, ÔÏ ÏÎÁ ÄÏÌÖÎÁ ÂÙÔØ ÚÁËÌÀÞÅÎÁ ×
+Ä×ÏÊÎÙÅ ËÁ×ÙÞËÉ (× ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÉÓÐÏÌØÚÕÅÍÏÊ ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÉ).
+ðÒÉÍÅÒ:
+vim "+set si" main.c
.br
-ðÒÉÍÅÞÁÎÉÅ: íÏÖÎÏ ÕËÁÚÙ×ÁÔØ ÄÏ ÄÅÓÑÔÉ ËÏÍÁÎÄ "+" ÉÌÉ "\-c".
-.TP
-\-\-cmd {ËÏÍÁÎÄÁ}
-ëÁË "\-c", ÎÏ ËÏÍÁÎÄÁ ÉÓÐÏÌÎÑÅÔÓÑ ÐÅÒÅÄ ÏÂÒÁÂÏÔËÏÊ ÌÀÂÏÇÏ ÆÁÊÌÁ
-ÎÁÓÔÒÏÅË (vimrc).
-íÏÖÎÏ ÕËÁÚÙ×ÁÔØ ÄÏ ÄÅÓÑÔÉ ÔÁËÉÈ ËÏÍÁÎÄ, ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ËÏÌÉÞÅÓÔ×Á
-ËÏÍÁÎÄ "\-c".
+ðÒÉÍÅÞÁÎÉÅ. íÏÖÎÏ ÕËÁÚÙ×ÁÔØ ÄÏ ÄÅÓÑÔÉ ËÏÍÁÎÄ "+" ÉÌÉ "\-c".
.TP
\-A
-åÓÌÉ
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ Ó ÐÏÄÄÅÒÖËÏÊ ÁÒÁÂÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔÉ.
+åÓÌÉ ÐÒÏÇÒÁÍÍÁ
.B Vim
-ÂÙÌ ÓÏÂÒÁÎ Ó ÐÏÄÄÅÒÖËÏÊ ÁÒÁÂÓËÏÇÏ ÑÚÙËÁ ÄÌÑ ÐÒÁ×ËÉ ÆÁÊÌÏ×,
-ÎÁÂÒÁÎÎÙÈ ÓÐÒÁ×Á ÎÁÌÅ×Ï, É Ó ÐÏÄÄÅÒÖËÏÊ ÁÒÁÂÓËÏÊ ËÌÁ×ÉÁÔÕÒÙ,
-ÜÔÏÔ ËÌÀÞ ÚÁÐÕÓËÁÅÔ
+ÂÙÌÁ ÓÏÂÒÁÎÁ Ó ÐÏÄÄÅÒÖËÏÊ ÐÒÁ×ËÉ ÔÅËÓÔÁ Ó ÎÁÐÉÓÁÎÉÅÍ ÓÐÒÁ×Á ÎÁÌÅ×Ï
+É Ó ÐÏÄÄÅÒÖËÏÊ ËÌÁ×ÉÁÔÕÒÙ ÄÌÑ ÁÒÁÂÓËÏÇÏ ÑÚÙËÁ, ÔÏ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÚÁÐÕÓË
+ÒÅÄÁËÔÏÒÁ
.B Vim
-× ÁÒÁÂÓËÏÍ ÒÅÖÉÍÅ, Ó ×ËÌÀÞÅÎÎÏÊ ÏÐÃÉÅÊ 'arabic'. ÷ ÐÒÏÔÉ×ÎÏÍ
-ÓÌÕÞÁÅ
+× ÒÅÖÉÍÅ ÒÁÂÏÔÙ Ó ÁÒÁÂÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔØÀ, Ô. Å. ÕÓÔÁÎÏ×ÌÅÎ ÐÁÒÁÍÅÔÒ 'arabic'.
+÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÒÅÄÁËÔÏÒ
.B Vim
-ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ Ó ÏÛÉÂËÏÊ.
+ÚÁ×ÅÒÛÉÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
.TP
\-b
-ä×ÏÉÞÎÙÊ ÒÅÖÉÍ.
-ðÒÏÉÚ×ÏÄÉÔÓÑ ÎÁÓÔÒÏÊËÁ ÎÅËÏÔÏÒÙÈ ÏÐÃÉÊ, ÄÅÌÁÀÝÉÈ ×ÏÚÍÏÖÎÏÊ ÐÒÁ×ËÕ
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ × ÒÅÖÉÍÅ ÒÁÂÏÔÙ Ó Ä×ÏÉÞÎÙÍÉ ÄÁÎÎÙÍÉ.
+ðÒÏÉÚ×ÏÄÉÔÓÑ ÎÁÓÔÒÏÊËÁ ÎÅËÏÔÏÒÙÈ ÐÁÒÁÍÅÔÒÏ×, ÄÅÌÁÀÝÉÈ ×ÏÚÍÏÖÎÏÊ ÐÒÁ×ËÕ
Ä×ÏÉÞÎÏÇÏ ÉÌÉ ÉÓÐÏÌÎÑÅÍÏÇÏ ÆÁÊÌÁ.
.TP
\-C
-òÅÖÉÍ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ. ÷ËÌÀÞÁÅÔ ÏÐÃÉÀ 'compatible'.
+òÁÂÏÔÁ × ×ÁÒÉÁÎÔÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ÒÅÄÁËÔÏÒÏÍ Vi.
+âÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ ÐÁÒÁÍÅÔÒ 'compatible', É ÒÅÄÁËÔÏÒ
.B Vim
-ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÐÏÞÔÉ ËÁË Vi, ÄÁÖÅ ÅÓÌÉ ÓÕÝÅÓÔ×ÕÅÔ ÆÁÊÌ .vimrc.
+ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÐÏÞÔÉ ËÁË ÒÅÄÁËÔÏÒ Vi, ÄÁÖÅ ÅÓÌÉ ÓÕÝÅÓÔ×ÕÅÔ ÆÁÊÌ ".vimrc".
.TP
\-d
-òÅÖÉÍ ÐÏÉÓËÁ ÒÁÚÌÉÞÉÊ.
-äÏÌÖÎÏ ÂÙÔØ ÕËÁÚÁÎÏ Ä×Á ÉÌÉ ÔÒÉ ÉÍÅÎÉ ÆÁÊÌÁ.
+òÅÖÉÍ ÓÒÁ×ÎÅÎÉÑ ÒÁÚÌÉÞÉÊ.
+íÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎÏ ÏÔ Ä×ÕÈ ÄÏ ×ÏÓØÍÉ ÎÁÉÍÅÎÏ×ÁÎÉÊ ÆÁÊÌÏ×. ÷ ÒÅÄÁËÔÏÒÅ
.B Vim
-ÏÔËÒÏÅÔ ×ÓÅ ÆÁÊÌÙ É ÐÏËÁÖÅÔ ÒÁÚÌÉÞÉÑ ÍÅÖÄÕ ÎÉÍÉ
-(ËÁË vimdiff(1)).
+ÂÕÄÕÔ ÏÔËÒÙÔÙ ×ÓÅ ÆÁÊÌÙ É ÐÏËÁÚÁÎÙ ÒÁÚÌÉÞÉÑ ÍÅÖÄÕ ÎÉÍÉ (ËÁË vimdiff(1)).
.TP
-\-d {ÕÓÔÒÏÊÓÔ×Ï}
-ïÔËÒÙÔØ {ÕÓÔÒÏÊÓÔ×Ï} ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ËÁÞÅÓÔ×Å ÔÅÒÍÉÎÁÌÁ (ÔÏÌØËÏ ÎÁ Amiga).
+\-d {ÕÓÔÒÏÊÓÔ×Ï}, \-dev {ÕÓÔÒÏÊÓÔ×Ï}
+éÓÐÏÌØÚÏ×ÁÔØ {ÕÓÔÒÏÊÓÔ×Ï} ÄÌÑ ÏÐÅÒÁÃÉÊ ××ÏÄÁ-×Ù×ÏÄÁ.
+ïÔËÒÙÔØ {ÕÓÔÒÏÊÓÔ×Ï} ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ËÁÞÅÓÔ×Å ÔÅÒÍÉÎÁÌÁ (ÔÏÌØËÏ × ïó Amiga).
ðÒÉÍÅÒ:
"\-d con:20/30/600/150".
.TP
+\-D
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ × ÒÅÖÉÍÅ ÄÉÁÇÎÏÓÔÉËÉ.
+ðÅÒÅËÌÀÞÅÎÉÅ × ÒÅÖÉÍ ÏÔÌÁÄËÉ ÐÒÉ ÉÓÐÏÌÎÅÎÉÉ ÐÅÒ×ÏÊ ËÏÍÁÎÄÙ ÉÚ ËÏÍÁÎÄÎÏÇÏ ÆÁÊÌÁ.
+.TP
\-e
-úÁÐÕÓÔÉÔØ
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ × Ex-ÒÅÖÉÍÅ.
+òÅÄÁËÔÏÒ
+.B Vim
+ÂÕÄÅÔ ÒÁÂÏÔÏÁÔØ × Ex-ÒÅÖÉÍÅ, ÔÏÖÅ, ÞÔÏ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ ÏÂÏÌÏÞËÉ ÎÁÂÒÁÔØ
+ËÏÍÁÎÄÕ "ex".
+.TP
+\-E
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ × ÕÌÕÞÛÅÎÎÏÍ Ex-ÒÅÖÉÍÅ.
+òÅÄÁËÔÏÒ
.B Vim
-× ÒÅÖÉÍÅ Ex, ËÁË ÂÕÄÔÏ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÉÍÅÅÔ ÉÍÑ "ex".
+ÂÕÄÅÔ ÒÁÂÏÔÁÔØ × ÕÌÕÞÛÅÎÎÏÍ Ex-ÒÅÖÉÍÅ, ÜÔÏ ÁÎÁÌÏÇÉÞÎÏ ÎÁÂÏÒÕ × ËÏÍÁÎÄÎÏÊ
+ÏÂÏÌÏÞËÅ ËÏÍÁÎÄÙ "exim".
.TP
\-f
-òÅÖÉÍ ÁËÔÉ×ÎÏÇÏ ÐÒÉÌÏÖÅÎÉÑ. ÷ÅÒÓÉÑ
+òÅÖÉÍ ÁËÔÉ×ÎÏÇÏ ÐÒÉÌÏÖÅÎÉÑ.
+òÅÄÁËÔÏÒ
.B Vim
-Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ ÎÅ ÂÕÄÅÔ ×ÅÔ×ÉÔØÓÑ É ÏÔËÌÀÞÁÔØÓÑ
-ÏÔ ÚÁÐÕÓÔÉ×ÛÅÊ Å£ ÏÂÏÌÏÞËÉ. îÁ ÐÌÁÔÆÏÒÍÅ Amiga
+Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ ÎÅ ÂÕÄÅÔ ÎÁÓÌÅÄÏ×ÁÔØÓÑ É ÏÔËÌÀÞÁÔØÓÑ ÏÔ ËÏÍÁÎÄÎÏÊ
+ÏÂÏÌÏÞËÉ, × ËÏÔÏÒÏÊ ×ÙÐÏÌÎÅÎÁ ËÏÍÁÎÄÁ ÅÇÏ ÚÁÐÕÓËÁ.
+îÁ ÐÌÁÔÆÏÒÍÅ Amiga ÒÅÄÁËÔÏÒ
.B Vim
-ÎÅ ÂÕÄÅÔ ÓÏÚÄÁ×ÁÔØ ÎÏ×ÏÅ ÏËÎÏ. üÔÏÔ ËÌÀÞ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ,
-ËÏÇÄÁ
+ÎÅ ÂÕÄÅÔ ÐÅÒÅÚÁÐÕÓËÁÔØÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÎÏ×ÏÇÏ ÏËÎÁ. üÔÏÔ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ
+ÓÔÒÏËÉ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ËÏÇÄÁ ÒÅÄÁËÔÏÒ
.B Vim
ÚÁÐÕÓËÁÅÔÓÑ ÐÒÏÇÒÁÍÍÏÊ, ËÏÔÏÒÁÑ ÄÏÌÖÎÁ ÖÄÁÔØ ÚÁ×ÅÒÛÅÎÉÑ
ÓÅÁÎÓÁ ÐÒÁ×ËÉ (ÎÁÐÒÉÍÅÒ, ÐÒÏÇÒÁÍÍÁ ÄÌÑ ÒÁÂÏÔÙ Ó ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÏÊ).
-îÁ ÐÌÁÔÆÏÒÍÅ Amiga ËÏÍÁÎÄÙ ":sh" É ":!" ÎÅ ÂÕÄÕÔ ÒÁÂÏÔÁÔØ.
-.TP
-\-\-nofork
-òÅÖÉÍ ÁËÔÉ×ÎÏÇÏ ÐÒÉÌÏÖÅÎÉÑ. ÷ÅÒÓÉÑ
-.B Vim
-Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ ÎÅ ÂÕÄÅÔ ×ÅÔ×ÉÔØÓÑ É ÏÔËÌÀÞÁÔØÓÑ
-ÏÔ ÚÁÐÕÓÔÉ×ÛÅÊ Å£ ÏÂÏÌÏÞËÉ.
+îÁ ÐÌÁÔÆÏÒÍÅ Amiga × ÜÔÏÍ ÓÌÕÞÁÅ ËÏÍÁÎÄÙ ":sh" É ":!" ÎÅ ÂÕÄÕÔ ÒÁÂÏÔÁÔØ.
.TP
\-F
-åÓÌÉ
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ Ó ÐÏÄÄÅÒÖËÏÊ ÐÅÒÓÉÄÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔÉ.
+åÓÌÉ ÐÒÏÇÒÁÍÍÁ
.B Vim
-ÂÙÌ ÓÏÂÒÁÎ Ó ÐÏÄÄÅÒÖËÏÊ FKMAP ÄÌÑ ÐÒÁ×ËÉ ÔÅËÓÔÁ ÓÐÒÁ×Á ÎÁÌÅ×Ï
-É ÎÁÓÔÒÏÅË ËÌÁ×ÉÁÔÕÒÙ ÄÌÑ ÑÚÙËÁ ÆÁÒÓÉ, ÜÔÏÔ ËÌÀÞ ÚÁÐÕÓËÁÅÔ
+ÂÙÌÁ ÓÏÂÒÁÎÁ Ó ÐÏÄÄÅÒÖËÏÊ ÐÒÁ×ËÉ ÔÅËÓÔÁ Ó ÎÁÐÉÓÁÎÉÅÍ ÓÐÒÁ×Á ÎÁÌÅ×Ï
+É Ó ÐÏÄÄÅÒÖËÏÊ ËÌÁ×ÉÁÔÕÒÙ ÄÌÑ ÐÅÒÓÉÄÓËÏÇÏ ÑÚÙËÁ, ÔÏ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÚÁÐÕÓË
+ÒÅÄÁËÔÏÒÁ
.B Vim
-× ÒÅÖÉÍÅ ÆÁÒÓÉ, ÉÎÁÞÅ ÇÏ×ÏÒÑ, Ó ×ËÌÀÞ£ÎÎÙÍÉ ÏÐÃÉÑÍÉ
-\&'fkmap' É 'rightleft'.
-÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ
+× ÒÅÖÉÍÅ ÒÁÂÏÔÙ Ó ÐÅÒÓÉÄÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔØÀ, Ô. Å. ÕÓÔÁÎÏ×ÌÅÎÙ ÐÁÒÁÍÅÔÒÙ 'fkmap'
+É 'rightleft'.
+÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÒÅÄÁËÔÏÒ
.B Vim
-ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
+ÚÁ×ÅÒÛÉÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
+.br
+ðÒÉÍÅÞÁÎÉÅ. ðÏÄÄÅÒÖËÁ ÐÅÒÓÉÄÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔÉ ÂÙÌÁ ÕÄÁÌÅÎÁ × ×ÅÒÓÉÉ 8.1.0932.
.TP
\-g
-åÓÌÉ
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ.
+åÓÌÉ ÐÒÏÇÒÁÍÍÁ
.B Vim
-ÂÙÌ ÓÏÂÒÁÎ Ó ÐÏÄÄÅÒÖËÏÊ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, ÜÔÏÔ ËÌÀÞ
-×ËÌÀÞÁÅÔ ÇÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ
+ÂÙÌÁ ÓÏÂÒÁÎÁ Ó ÐÏÄÄÅÒÖËÏÊ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, ÔÏ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÚÁÐÕÓË
+ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ÐÏÌØÚÏ×ÁÔÅÌÑ.
+÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÒÅÄÁËÔÏÒ
.B Vim
-ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
-.TP
-\-h
-÷Ù×ÏÄÉÔ ËÒÁÔËÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÁÒÇÕÍÅÎÔÁÈ É ËÌÀÞÁÈ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ.
-ðÏÓÌÅ ÜÔÏÇÏ
-.B Vim
-ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ.
+ÚÁ×ÅÒÛÉÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
.TP
\-H
-åÓÌÉ
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ Ó ÐÏÄÄÅÒÖËÏÊ Å×ÒÅÊÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔÉ.
+åÓÌÉ ÐÒÏÇÒÁÍÍÁ
.B Vim
-ÂÙÌ ÓÏÂÒÁÎ Ó ÐÏÄÄÅÒÖËÏÊ ÐÒÁ×ËÉ ÔÅËÓÔÁ ÓÐÒÁ×Á ÎÁÌÅ×Ï
-É ÎÁÓÔÒÏÅË ËÌÁ×ÉÁÔÕÒÙ ÄÌÑ É×ÒÉÔÁ, ÜÔÏÔ ËÌÀÞ ÚÁÐÕÓËÁÅÔ
+ÂÙÌÁ ÓÏÂÒÁÎÁ Ó ÐÏÄÄÅÒÖËÏÊ ÐÒÁ×ËÉ ÔÅËÓÔÁ Ó ÎÁÐÉÓÁÎÉÅÍ ÓÐÒÁ×Á ÎÁÌÅ×Ï
+É Ó ÐÏÄÄÅÒÖËÏÊ ËÌÁ×ÉÁÔÕÒÙ ÄÌÑ Å×ÒÅÊÓËÏÇÏ ÑÚÙËÁ, ÔÏ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÚÁÐÕÓË
+ÒÅÄÁËÔÏÒÁ
.B Vim
-× ÒÅÖÉÍÅ É×ÒÉÔÁ, ÉÎÁÞÅ ÇÏ×ÏÒÑ, Ó ×ËÌÀÞ£ÎÎÙÍÉ ÏÐÃÉÑÍÉ 'hkmap' É 'rightleft'.
-÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ
+× ÒÅÖÉÍÅ ÒÁÂÏÔÙ Ó Å×ÒÅÊÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔØÀ, Ô. Å. ÕÓÔÁÎÏ×ÌÅÎÙ ÐÁÒÁÍÅÔÒÙ 'hkmap'
+É 'rightleft'.
+÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÒÅÄÁËÔÏÒ
.B Vim
-ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
+ÚÁ×ÅÒÛÉÔ ÒÁÂÏÔÕ Ó ÓÏÏÂÝÅÎÉÅÍ Ï ÏÛÉÂËÅ.
.TP
-\-i {viminfo}
-åÓÌÉ ÉÓÐÏÌØÚÕÅÔÓÑ ÆÁÊÌ viminfo, ÔÏ ÜÔÏÔ ËÌÀÞ ÚÁÄÁ£Ô ÉÍÑ ÔÁËÏÇÏ ÆÁÊÌÁ (×ÍÅÓÔÏ
-"~/.viminfo" ÐÏ ÕÍÏÌÞÁÎÉÀ). íÏÖÎÏ ÔÁËÖÅ ÉÚÂÅÖÁÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÆÁÊÌÁ viminfo
-ÐÕÔ£Í ÕËÁÚÁÎÉÑ ÉÍÅÎÉ "NONE".
-.TP
-\-L
-ôÏ ÖÅ, ÞÔÏ É \-r.
+\-i {ÆÁÊÌ}
+éÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ÆÁÊÌÁ ÐÏÄËÁÞËÉ ÕËÁÚÁÎÎÙÊ {ÆÁÊÌ}.
+þÅÒÅÚ ÜÔÏÔ ÁÒÇÕÍÅÎÔ ÚÁÄÁ£ÔÓÑ ÎÁÉÍÅÎÏ×ÁÎÉÅ viminfo-ÆÁÊÌÁ (×ÍÅÓÔÏ ÐÒÉÎÑÔÏÇÏ
+ÐÏ ÕÍÏÌÞÁÎÉÀ ".viminfo"). úÄÅÓØ ÖÅ ÍÏÖÎÏ ÏÔËÌÀÞÉÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÅ viminfo-ÆÁÊÌÁ
+ÞÅÒÅÚ ÕËÁÚÁÎÉÅ ÓÌÏ×Á "NONE" (ÐÒÏÐÉÓÎÙÍÉ ÂÕË×ÁÍÉ).
.TP
\-l
-òÅÖÉÍ Lisp. ÷ËÌÀÞÁÀÔÓÑ ÏÐÃÉÉ 'lisp' É 'showmatch'.
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ × ÒÅÖÉÍÅ Lisp.
+÷ÙÐÏÌÎÑÅÔÓÑ ÕÓÔÁÎÏ×ËÁ ÐÁÒÁÍÅÔÒÏ× 'lisp' É 'showmatch'.
+.TP
+\-L
+ôÏ ÖÅ, ÞÔÏ É ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ \-r.
.TP
\-m
-éÚÍÅÎÅÎÉÅ ÆÁÊÌÏ× ÚÁÐÒÅÝÅÎÏ. ðÒÉ ÜÔÏÍ ÏÔËÌÀÞÁÅÔÓÑ ÏÐÃÉÑ 'write', ÐÏÜÔÏÍÕ
-ÚÁÐÉÓØ ÆÁÊÌÏ× ÓÔÁÎÏ×ÉÔÓÑ ÎÅ×ÏÚÍÏÖÎÏÊ.
+òÁÂÏÔÁ ÂÅÚ ×ÏÚÍÏÖÎÏÓÔÉ ÓÏÈÒÁÎÅÎÉÑ ÉÚÍÅÎÅÎÉÊ.
+÷ÙÐÏÌÎÑÅÔÓÑ ÓÂÒÏÓ ÐÁÒÁÍÅÔÒÁ 'write', ÐÏÜÔÏÍÕ ÓÔÁÎÏ×ÉÔÓÑ ÎÅ×ÏÚÍÏÖÎÙÍ ÚÁÐÉÓÁÔØ
+× ÆÁÊÌ ÉÚÍÅÎÅÎÉÑ, ×ÎÅÓ£ÎÎÙÅ × ÂÕÆÅÒ.
.TP
-\-N
-òÅÖÉÍ ÎÅÐÏÌÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ. ïÔËÌÀÞÁÅÔÓÑ 'compatible'.
-.B Vim
-ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÌÕÞÛÅ, ÎÏ ÎÅ ÂÕÄÅÔ ÐÏÌÎÏÓÔØÀ ÓÏ×ÍÅÓÔÉÍ Ó Vi, ÄÁÖÅ ÅÓÌÉ
-ÏÔÓÕÔÓÔ×ÕÅÔ ÆÁÊÌ ÓÃÅÎÁÒÉÑ ÎÁÓÔÒÏÅË (.vimrc).
+\-M
+òÁÂÏÔÁ ÂÅÚ ×ÏÚÍÏÖÎÏÓÔÉ ×ÎÅÓÅÎÉÑ ÉÚÍÅÎÅÎÉÊ × ÔÅËÓÔ.
+ðÁÒÁÍÅÔÒÙ 'modifiable' É 'write' ÂÕÄÕÔ ÏÔËÌÀÞÅÎÙ, ÔÁË ÞÔÏ ÉÚÍÅÎÅÎÉÑ ÂÕÄÕÔ
+ÚÁÐÒÅÝÅÎÙ, É ÆÁÊÌÙ ÎÅ ÓÍÏÇÕÔ ÂÙÔØ ÚÁÐÉÓÁÎÙ.
+ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÐÏÓÌÅ ÎÁÞÁÌÁ ÒÁÂÏÔÙ ÒÅÄÁËÔÏÒÁ, ÜÔÉ ÐÁÒÁÍÅÔÒÙ ÍÏÖÎÏ
+×ËÌÀÞÉÔØ, ÞÔÏÂÙ ÒÁÚÒÅÛÉÔØ ×ÎÅÓÅÎÉÅ ÉÚÍÅÎÅÎÉÊ.
.TP
\-n
-îÅ ÉÓÐÏÌØÚÏ×ÁÔØ Ó×ÏÐ-ÆÁÊÌ. ÷ÏÓÓÔÁÎÏ×ÌÅÎÉÅ ÐÒÉ ÓÂÏÅ × ÒÁÂÏÔÅ ÂÕÄÅÔ ÎÅ×ÏÚÍÏÖÎÏ.
+òÁÂÏÔÁ ÂÅÚ ÓÏÚÄÁÎÉÑ ÆÁÊÌÁ ÐÏÄËÁÞËÉ.
+÷ ÜÔÏÍ ÓÌÕÞÁÅ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÅ ÐÒÉ ÓÂÏÅ × ÒÁÂÏÔÅ ÒÅÄÁËÔÏÒÁ ÂÕÄÅÔ ÎÅ×ÏÚÍÏÖÎÏ.
õÄÏÂÎÏ ÄÌÑ ÐÒÁ×ËÉ ÆÁÊÌÁ ÎÁ ÏÞÅÎØ ÍÅÄÌÅÎÎÏÍ ÎÏÓÉÔÅÌÅ (ÎÁÐÒÉÍÅÒ, ÇÉÂËÏÍ ÄÉÓËÅ).
-ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ËÏÍÁÎÄÏÊ ":set uc=0". ïÔÍÅÎÁ -- ":set uc=200".
+ôÏ ÖÅ ÓÁÍÏÅ ÍÏÖÎÏ ÓÄÅÌÁÔØ ËÏÍÁÎÄÏÊ ":set uc=0". ÷ËÌÀÞÅÎÉÅ ÆÁÊÌÁ ÐÏÄËÁÞËÉ \[em]
+":set uc=200".
+.TP
+\-N
+òÁÂÏÔÁ × ×ÁÒÉÁÎÔÅ ÎÅÐÏÌÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ÒÅÄÁËÔÏÒÏÍ Vi.
+âÕÄÅÔ ÓÂÒÏÛÅÎ ÐÁÒÁÍÅÔÒ 'compatible'.
+òÅÄÁËÔÏÒ
+.B Vim
+ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÌÕÞÛÅ, ÎÏ ÎÅ ÂÕÄÅÔ ÐÏÌÎÏÓÔØÀ ÓÏ×ÍÅÓÔÉÍ Ó ÒÅÄÁËÔÏÒÏÍ Vi, ÄÁÖÅ ÅÓÌÉ
+ÏÔÓÕÔÓÔ×ÕÅÔ ÆÁÊÌ ÎÁÞÁÌØÎÙÈ ÎÁÓÔÒÏÅË (".vimrc").
+.TP
+\-nb
+îÁÚÎÁÞÉÔØ ÐÒÏÇÒÁÍÍÕ Vim ÓÅÒ×ÅÒÏÍ ÒÅÄÁËÔÏÒÁ ÄÌÑ éóò NetBeans. ðÏÄÒÏÂÎÏÓÔÉ
+ÓÍÏÔÒÉÔÅ × ÄÏËÕÍÅÎÔÁÃÉÉ.
.TP
\-o[N]
-ïÔËÒÙÔØ N ÏËÏÎ, ÒÁÚÄÅÌ£ÎÎÙÈ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ. åÓÌÉ N ÎÅ ÕËÁÚÁÎÏ, ÔÏ ÏÔËÒÙ×ÁÅÔÓÑ
-ÐÏ ÏÄÎÏÍÕ ÏËÎÕ ÎÁ ËÁÖÄÙÊ ÆÁÊÌ.
+óÏÚÄÁÔØ ÄÌÑ N ÆÁÊÌÏ× ÏÔÄÅÌØÎÙÅ ÏËÎÁ, ÒÁÓÐÏÌÏÖÅÎÎÙÅ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ.
+åÓÌÉ N ÎÅ ÕËÁÚÁÎÏ, ÔÏ ÓÏÚÄÁ£ÔÓÑ ÐÏ ÏÄÎÏÍÕ ÏËÎÕ ÎÁ ËÁÖÄÙÊ ÆÁÊÌ.
.TP
\-O[N]
-ïÔËÒÙÔØ N ÏËÏÎ, ÒÁÚÄÅÌ£ÎÎÙÈ ÐÏ ×ÅÒÔÉËÁÌÉ. åÓÌÉ N ÎÅ ÕËÁÚÁÎÏ, ÔÏ ÏÔËÒÙ×ÁÅÔÓÑ
-ÐÏ ÏÄÎÏÍÕ ÏËÎÕ ÎÁ ËÁÖÄÙÊ ÆÁÊÌ.
-.TP
-\-R
-òÅÖÉÍ "ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ". ÷ËÌÀÞÁÅÔÓÑ ÏÐÃÉÑ 'readonly'.
-æÁÊÌ × ÂÕÆÅÒÅ ÄÏÓÔÕÐÅÎ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ, ÎÏ ÅÇÏ ËÏÐÉÀ ÎÁ ÄÉÓËÅ ÎÅÌØÚÑ
-ÓÌÕÞÁÊÎÏ ÐÅÒÅÚÁÐÉÓÁÔØ. äÌÑ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ ÎÅÏÂÈÏÄÉÍÏ ÄÏÂÁ×ÉÔØ ×ÏÓËÌÉÃÁÔÅÌØÎÙÊ
-ÚÎÁË Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ËÏÍÁÎÄÅ Ex (ÎÁÐÒÉÍÅÒ, ":w!").
-ëÌÀÞ "\-R" ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÔÁËÖÅ, ÞÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ É ËÌÀÞ "\-n" (ÓÍ. ×ÙÛÅ).
-ïÐÃÉÑ 'readonly' ÍÏÖÅÔ ÂÙÔØ ×ÙËÌÀÞÅÎÁ ÐÏ ËÏÍÁÎÄÅ ":set noro".
-óÍ. ":help 'readonly'".
+óÏÚÄÁÔØ ÄÌÑ N ÆÁÊÌÏ× ÏÔÄÅÌØÎÙÅ ÏËÎÁ, ÒÁÓÐÏÌÏÖÅÎÎÙÅ ÐÏ ×ÅÒÔÉËÁÌÉ.
+åÓÌÉ N ÎÅ ÕËÁÚÁÎÏ, ÔÏ ÓÏÚÄÁ£ÔÓÑ ÐÏ ÏÄÎÏÍÕ ÏËÎÕ ÎÁ ËÁÖÄÙÊ ÆÁÊÌ.
+.TP
+\-p[N]
+óÏÚÄÁÔØ ÄÌÑ N ÆÁÊÌÏ× ÏÔÄÅÌØÎÙÅ ×ËÌÁÄËÉ.
+åÓÌÉ N ÎÅ ÕËÁÚÁÎÏ, ÔÏ ÓÏÚÄÁ£ÔÓÑ ÐÏ ÏÄÎÏÊ ×ËÌÁÄËÅ ÎÁ ËÁÖÄÙÊ ÆÁÊÌ.
+.TP
+\-P {ÚÁÇÏÌÏ×ÏË ÏËÎÁ}
+ïÔËÒÙÔØ ÐÒÏÇÒÁÍÍÕ × ÍÎÏÇÏÄÏËÕÍÅÎÔÎÏÍ ÐÒÉÌÏÖÅÎÉÉ.
+ôÏÌØËÏ ÄÌÑ çéð × MS Windows. úÁÄÁ£Ô ÚÁÇÏÌÏ×ÏË ÏËÎÁ ÒÏÄÉÔÅÌØÓËÏÇÏ ÐÒÉÌÏÖÅÎÉÑ.
+åÓÌÉ ×ÏÚÍÏÖÎÏ, ÔÏ ÐÒÏÇÒÁÍÍÁ Vim ÂÕÄÅÔ ÚÁÐÕÝÅÎÁ ×ÎÕÔÒÉ ÏËÎÁ ÍÎÏÇÏÄÏËÕÍÅÎÔÎÏÇÏ
+ÐÒÉÌÏÖÅÎÉÑ. íÎÏÇÏÄÏËÕÍÅÎÔÎÏÅ ÐÒÉÌÏÖÅÎÉÅ ÄÏÌÖÎÏ ÉÍÅÔØ ÕËÁÚÁÎÎÙÊ {ÚÁÇÏÌÏ×ÏË ÏËÎÁ}.
+õÂÅÄÉÔÅÓØ, ÞÔÏ ÜÔÏÔ {ÚÁÇÏÌÏ×ÏË ÏËÎÁ} ÕÎÉËÁÌÅÎ ÄÌÑ ÐÒÉÌÏÖÅÎÉÑ. ïÂÒÁÝÁÅÍ ×ÎÉÍÁÎÉÅ,
+ÞÔÏ ÒÅÁÌÉÚÁÃÉÑ ÄÁÎÎÏÇÏ ÆÕÎËÃÉÏÎÁÌÁ ×Ó£ ÅÝ£ ÎÅ ÄÏ ËÏÎÃÁ ÏÔÒÁÂÏÔÁÎÁ. ÷ÎÅÄÒÅÎÉÅ
+ÐÒÏÇÒÁÍÍÙ ×ÏÚÍÏÖÎÏ ÎÅ ×Ï ×ÓÅ ÐÒÉÌÏÖÅÎÉÑ É ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÍÅÎÀ ÏËÎÁ.
.TP
\-r
-÷Ù×ÅÓÔÉ ÓÐÉÓÏË Ó×ÏÐ-ÆÁÊÌÏ× É ÉÎÆÏÒÍÁÃÉÀ Ï ÉÈ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÄÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÐÏÓÌÅ ÓÂÏÑ.
+÷Ù×ÏÄ ÐÅÒÅÞÎÑ ÆÁÊÌÏ× ÐÏÄËÁÞËÉ É ÚÁ×ÅÒÛÅÎÉÅ ÒÁÂÏÔÙ.
+âÕÄÕÔ ÐÏËÁÚÁÎÙ ÄÏÓÔÕÐÎÙÅ ÆÁÊÌÙ ÐÏÄËÁÞËÉ É ÉÎÆÏÒÍÁÃÉÑ Ï ÉÈ ÉÓÐÏÌØÚÏ×ÁÎÉÉ
+ÄÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ × ÓÌÕÞÁÅ ÓÂÏÑ.
.TP
\-r {ÆÁÊÌ}
-òÅÖÉÍ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ.
-äÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÐÏÓÌÅ ÓÂÏÑ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ Ó×ÏÐ-ÆÁÊÌ.
-ó×ÏÐ-ÆÁÊÌ ÉÍÅÅÔ ÔÏ ÖÅ ÉÍÑ, ÞÔÏ É ÔÅËÓÔÏ×ÙÊ ÆÁÊÌ, ÎÏ Ó ÄÏÂÁ×ÌÅÎÉÅÍ ÒÁÓÛÉÒÅÎÉÑ ".swp".
+÷ÏÓÓÔÁÎÏ×ÌÅÎÉÅ Á×ÁÒÉÊÎÏ ÚÁ×ÅÒÛ£ÎÎÏÇÏ ÓÅÁÎÓÁ.
+äÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÐÏÓÌÅ ÓÂÏÑ × ÒÁÂÏÔÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ ÐÏÄËÁÞËÉ.
+æÁÊÌ ÐÏÄËÁÞËÉ ÉÍÅÅÔ ÔÏ ÖÅ ÎÁÉÍÅÎÏ×ÁÎÉÅ, ÞÔÏ É ÒÅÄÁËÔÉÒÕÅÍÙÊ ÔÅËÓÔÏ×ÙÊ ÆÁÊÌ,
+ÎÏ Ó ÄÏÂÁ×ÌÅÎÉÅÍ ÒÁÓÛÉÒÅÎÉÑ ".swp".
óÍ. ":help recovery".
.TP
+\-R
+òÁÂÏÔÁ × ×ÁÒÉÁÎÔÅ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ.
+âÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ ÐÁÒÁÍÅÔÒ 'readonly'.
+æÁÊÌ × ÂÕÆÅÒÅ ÄÏÓÔÕÐÅÎ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ, ÎÏ ÅÇÏ ËÏÐÉÀ ÎÁ ÄÉÓËÅ ÎÅÌØÚÑ
+ÓÌÕÞÁÊÎÏ ÐÅÒÅÚÁÐÉÓÁÔØ. äÌÑ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ ÎÅÏÂÈÏÄÉÍÏ ÄÏÂÁ×ÉÔØ ×ÏÓËÌÉÃÁÔÅÌØÎÙÊ
+ÚÎÁË Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ Ex-ËÏÍÁÎÄÅ (ÎÁÐÒÉÍÅÒ, ":w!").
+ðÒÉ ÚÁÄÁÎÉÉ ÁÒÇÕÍÅÎÔÁ "\-R" ÔÁËÖÅ ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ, ÞÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ É ÁÒÇÕÍÅÎÔ
+"\-n" (ÓÍ. ×ÙÛÅ).
+ðÁÒÁÍÅÔÒ 'readonly' ÍÏÖÅÔ ÂÙÔØ ÓÂÒÏÛÅÎ ÐÏ ËÏÍÁÎÄÅ ":set noro".
+óÍ. ":help 'readonly'".
+.TP
\-s
-ôÉÈÉÊ ÒÅÖÉÍ. ôÏÌØËÏ ÐÒÉ ÚÁÐÕÓËÅ ËÁË "Ex" ÉÌÉ ÅÓÌÉ ÐÅÒÅÄ "\-s" ÕËÁÚÁÎ ËÌÀÞ "\-e".
+ôÉÈÉÊ ÒÅÖÉÍ.
+ôÏÌØËÏ ÐÒÉ ÚÁÐÕÓËÅ × ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÅ ËÁË ÐÒÏÇÒÁÍÍÙ "ex" ÉÌÉ ÅÓÌÉ ÐÅÒÅÄ
+ÁÒÇÕÍÅÎÔÏÍ "\-s" ÕËÁÚÁÎ ÁÒÇÕÍÅÎÔ "\-e".
+.TP
+\-s {ËÏÍÁÎÄÎÙÊ ÆÁÊÌ}
+óÞÉÔÙ×ÁÎÉÅ ËÏÍÁÎÄ ÒÅÖÉÍÁ ËÏÍÁÎÄ ÉÚ {ËÏÍÁÎÄÎÏÇÏ ÆÁÊÌÁ}.
+óÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ ×ÏÓÐÒÉÎÉÍÁÅÔÓÑ × ×ÉÄÅ ËÏÍÁÎÄ, ËÁË ÅÓÌÉ ÂÙ ÏÎÉ ÂÙÌÉ ÎÁÂÒÁÎÙ
+ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÒÅÄÁËÔÏÒÅ.
+ôÏ ÖÅ ÓÁÍÏÅ ÄÏÓÔÉÇÁÅÔÓÑ ËÏÍÁÎÄÏÊ ":source! {ËÏÍÁÎÄÎÙÊ ÆÁÊÌ}".
+åÓÌÉ ÐÏÓÌÅ ÉÓÐÏÌÎÅÎÉÑ ×ÓÅÈ ËÏÍÁÎÄ ÉÚ {ËÏÍÁÎÄÎÏÇÏ ÆÁÊÌÁ} ÒÁÂÏÔÁ ÒÅÄÁËÔÏÒÁ
+ÐÒÏÄÏÌÖÁÅÔÓÑ, ÔÏ ÄÁÌØÎÅÊÛÉÊ ××ÏÄ ËÏÍÁÎÄ É ÔÅËÓÔÁ ÏÖÉÄÁÅÔÓÑ Ó ËÌÁ×ÉÁÔÕÒÙ.
+.TP
+\-S {ÆÁÊÌ}
+éÓÐÏÌÎÅÎÉÅ ÕËÁÚÁÎÎÏÇÏ {ÆÁÊÌÁ}.
+ðÏÓÌÅ ÚÁÇÒÕÚËÉ × ÂÕÆÅÒ ÐÅÒ×ÏÇÏ ÆÁÊÌÁ, ÂÕÄÅÔ ÉÓÐÏÌÎÅÎ ÕËÁÚÁÎÎÙÊ ËÏÍÁÎÄÎÙÊ {ÆÁÊÌ}.
+üÔÏ ÁÎÁÌÏÇÉÞÎÏ ËÏÍÁÎÄÅ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ \-c "source {ÆÁÊÌ}".
+îÁÉÍÅÎÏ×ÁÎÉÅ {ÆÁÊÌÁ} ÎÅ ÍÏÖÅÔ ÎÁÞÉÎÁÔØÓÑ Ó ÓÉÍ×ÏÌÁ '\-'.
+åÓÌÉ ÎÅ ÕËÁÚÁÎ {ÆÁÊÌ}, ÔÏ ÂÕÄÅÔ ÉÓÐÏÌÎÅÎ ÆÁÊÌ "Session.vim" (ÜÔÏ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ
+ÔÏÌØËÏ ÅÓÌÉ ÁÒÇÕÍÅÎÔ \-S Ñ×ÌÑÅÔÓÑ ÐÏÓÌÅÄÎÉÍ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ).
+.TP
+\-T {ÔÅÒÍÉÎÁÌ}
+îÁÚÎÁÞÉÔØ ÕËÁÚÁÎÎÙÊ ÔÉÐ {ÔÅÒÍÉÎÁÌÁ}.
+òÅÄÁËÔÏÒÕ
+.B Vim
+ÂÕÄÅÔ ÐÅÒÅÄÁÎ ÔÉÐ ÉÓÐÏÌØÚÕÅÍÏÇÏ ÔÅÒÍÉÎÁÌÁ.
+îÅÏÂÈÏÄÉÍÏ ÔÏÌØËÏ × ÔÅÈ ÓÉÔÕÁÃÉÑÈ, ËÏÇÄÁ Á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÔÅÒÍÉÎÁÌÁ
+ÎÅ ÒÁÂÏÔÁÅÔ. îÁÉÍÅÎÏ×ÁÎÉÅ ÔÅÒÍÉÎÁÌÁ ÄÏÌÖÎÏ ÂÙÔØ ÉÚ×ÅÓÔÎÏ ÒÅÄÁËÔÏÒÕ
+.B Vim
+(ÐÒÅÄÏÐÒÅÄÅÌÅÎÏ × ÒÅÄÁËÔÏÒÅ) ÌÉÂÏ ÕËÁÚÁÎÏ × ÂÁÚÅ termcap ÉÌÉ terminfo.
+.TP
+\-u {ÆÁÊÌ}
+éÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÎÁÞÁÌØÎÏÊ ÎÁÓÔÒÏÊËÉ ÕËÁÚÁÎÎÙÊ ËÏÍÁÎÄÎÙÊ {ÆÁÊÌ}.
+÷ÓÅ ÏÓÔÁÌØÎÙÅ ÆÁÊÌÙ ÎÁÓÔÒÏÅË ÉÇÎÏÒÉÒÕÀÔÓÑ.
+õÄÏÂÎÏ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÓÐÅÃÉÁÌØÎÙÈ ÔÉÐÏ× ÆÁÊÌÏ×.
+þÅÒÅÚ ÜÔÏÔ ÁÒÇÕÍÅÎÔ ÍÏÖÎÏ ÔÁËÖÅ ÏÔËÌÀÞÉÔØ ÏÂÒÁÂÏÔËÕ ×ÓÅÈ ÆÁÊÌÏ× ÎÁÞÁÌØÎÏÊ
+ÎÁÓÔÒÏÊËÉ, ÉÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÜÔÏÇÏ ÓÌÏ×Ï "NONE" (ÐÒÏÐÉÓÎÙÍÉ ÂÕË×ÁÍÉ).
+óÍ. ":help initialization".
+.TP
+\-U {ÆÁÊÌ}
+éÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÎÁÞÁÌØÎÏÊ ÎÁÓÔÒÏÊËÉ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ÕËÁÚÁÎÎÙÊ
+ËÏÍÁÎÄÎÙÊ {ÆÁÊÌ}.
+÷ÓÅ ÏÓÔÁÌØÎÙÅ ÆÁÊÌÙ ÎÁÓÔÒÏÅË ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ÉÇÎÏÒÉÒÕÀÔÓÑ.
+þÅÒÅÚ ÜÔÏÔ ÁÒÇÕÍÅÎÔ ÍÏÖÎÏ ÔÁËÖÅ ÏÔËÌÀÞÉÔØ ÏÂÒÁÂÏÔËÕ ×ÓÅÈ ÆÁÊÌÏ× ÎÁÓÔÒÏÊËÉ
+ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, ÉÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÜÔÏÇÏ ÓÌÏ×Ï "NONE" (ÐÒÏÐÉÓÎÙÍÉ ÂÕË×ÁÍÉ).
+óÍ. ":help gui\-init".
.TP
-\-s {scriptin}
-óÞÉÔÙ×ÁÅÔÓÑ ÆÁÊÌ ÓÃÅÎÁÒÉÑ {scriptin}. ðÒÉ ÜÔÏÍ, ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ ×ÏÓÐÒÉÎÉÍÁÅÔÓÑ
-× ×ÉÄÅ ËÏÍÁÎÄ, ËÁË ÅÓÌÉ ÂÙ ÏÎÉ ÂÙÌÉ ÎÁÂÒÁÎÙ ÎÁ ËÏÎÓÏÌÉ.
-ôÏ ÖÅ ÓÁÍÏÅ ÄÏÓÔÉÇÁÅÔÓÑ ËÏÍÁÎÄÏÊ ":source! {scriptin}".
-åÓÌÉ ËÏÎÅà ÆÁÊÌÁ ÓÞÉÔÙ×ÁÅÔÓÑ ÄÏ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ ÒÅÄÁËÔÏÒÁ, ÔÏ × ÄÁÌØÎÅÊÛÅÍ
-××ÏÄ ÏÓÕÝÅÓÔ×ÌÑÅÔÓÑ Ó ËÌÁ×ÉÁÔÕÒÙ.
+\-v
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ × ÒÅÖÉÍÅ Vi.
+òÅÄÁËÔÏÒ
+.B Vim
+ÂÕÄÅÔ ÒÁÂÏÔÁÔØ × ÒÅÖÉÍÅ ÒÅÄÁËÔÏÒÁ Vi, ËÁË ÂÕÄÔÏ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÎÁÚÙ×ÁÅÔÓÑ "vi".
+éÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÅÓÌÉ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÎÁÚÙ×ÁÅÔÓÑ "ex".
+.TP
+\-V[N]
+òÅÖÉÍ ÐÏÄÒÏÂÎÏÇÏ ×Ù×ÏÄÁ.
+âÕÄÕÔ ×Ù×ÏÄÉÔØÓÑ ÓÏÏÂÝÅÎÉÑ Ï ÔÏÍ, ËÁËÉÅ ËÏÍÁÎÄÎÙÅ ÆÁÊÌÙ ÉÓÐÏÌÎÑÀÔÓÑ, É ËÁËÁÑ
+ÉÎÆÏÒÍÁÃÉÑ ÓÞÉÔÙ×ÁÅÔÓÑ É ÚÁÐÉÓÙ×ÁÅÔÓÑ × viminfo-ÆÁÊÌÅ. îÅÏÂÑÚÁÔÅÌØÎÏÅ ÞÉÓÌÏ N
+ÚÁÄÁ£Ô ÕÒÏ×ÅÎØ ÄÅÔÁÌÉÚÁÃÉÉ ÉÎÆÏÒÍÁÃÉÉ. ðÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ ÚÎÁÞÅÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÏ
+ÒÁ×ÎÙÍ 10.
+.TP
+\-V[N]{ÆÁÊÌ}
+áÎÁÌÏÇÉÞÎÏ ÁÒÇÕÍÅÎÔÕ \-V, Á ÔÁËÖÅ ×ÙÐÏÌÎÑÅÔÓÑ ÕÓÔÁÎÏ×ËÁ ÐÁÒÁÍÅÔÒÕ 'verbosefile'
+ÚÎÁÞÅÎÉÅ {ÆÁÊÌ}. ëÁË ÒÅÚÕÌØÔÁÔ, ÓÏÏÂÝÅÎÉÑ ÂÕÄÕÔ ÚÁÐÉÓÙ×ÁÔØÓÑ × {ÆÁÊÌ}, Á ÎÅ
+ÏÔÏÂÒÁÖÁÔØÓÑ ÎÁ ÜËÒÁÎÅ. îÁÉÍÅÎÏ×ÁÎÉÅ {ÆÁÊÌÁ} ÎÅ ÍÏÖÅÔ ÎÁÞÉÎÁÔØÓÑ Ó ËÁËÏÊ-ÌÉÂÏ
+ÃÉÆÒÙ.
+.TP
+\-w{ÞÉÓÌÏ}
+äÌÑ ÐÁÒÁÍÅÔÒÁ 'window' ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÏ ÚÎÁÞÅÎÉÅ, ÒÁ×ÎÏÅ ÕËÁÚÁÎÎÏÍÕ {ÞÉÓÌÕ}.
+.TP
+\-w {ÆÁÊÌ}
+äÏÂÁ×ÌÅÎÉÅ ×ÓÅÈ ××ÅÄ£ÎÎÙÈ ËÏÍÁÎÄ × {ÆÁÊÌ}.
+÷ÓÅ ÓÉÍ×ÏÌÙ, ××ÅÄ£ÎÎÙÅ Ó ËÌÁ×ÉÁÔÕÒÙ ×ÐÌÏÔØ ÄÏ ÍÏÍÅÎÔÁ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ
+ÒÅÄÁËÔÏÒÁ, ÚÁÐÉÓÙ×ÁÀÔÓÑ × {ÆÁÊÌ}.
+õÄÏÂÎÏ × ÔÏÍ ÓÌÕÞÁÅ, ËÏÇÄÁ ×Ù ÈÏÔÉÔÅ ÓÏÚÄÁÔØ ËÏÍÁÎÄÎÙÊ ÆÁÊÌ ÄÌÑ ÐÏÓÌÅÄÕÀÝÅÇÏ
+ÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ "vim \-s" ÉÌÉ × ËÏÍÁÎÄÅ ":source!".
+åÓÌÉ {ÆÁÊÌ} ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ ÎÁÂÒÁÎÎÙÊ ÔÅËÓÔ ÂÕÄÅÔ ÄÏÂÁ×ÌÑÀÔÓÑ × ËÏÎÅà ÆÁÊÌÁ.
+.TP
+\-W {ÆÁÊÌ}
+úÁÐÉÓØ ×ÓÅÈ ××ÅÄ£ÎÎÙÈ ËÏÍÁÎÄ × {ÆÁÊÌ}.
+ëÁË ÁÒÇÕÍÅÎÔ "\-w", ÎÏ ÓÕÝÅÓÔ×ÕÀÝÉÊ {ÆÁÊÌ} ÂÕÄÅÔ ÐÅÒÅÚÁÐÉÓÁÎ.
.TP
-\-T {terminal}
-óÏÏÂÝÁÅÔ
-.B Vim
-ÔÉÐ ÉÓÐÏÌØÚÕÅÍÏÇÏ ÔÅÒÍÉÎÁÌÁ. îÅÏÂÈÏÄÉÍÏ ÔÏÌØËÏ × ÔÅÈ ÓÉÔÕÁÃÉÑÈ, ËÏÇÄÁ
-Á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÔÅÒÍÉÎÁÌÁ ÎÅ ÒÁÂÏÔÁÅÔ. éÍÑ ÔÅÒÍÉÎÁÌÁ ÄÏÌÖÎÏ ÂÙÔØ
-ÉÚ×ÅÓÔÎÏ
+\-x
+òÅÄÁËÔÉÒÏ×ÁÎÉÅ ÛÉÆÒÏ×ÁÎÎÙÈ ÆÁÊÌÏ×.
+åÓÌÉ ÒÅÄÁËÔÏÒ
.B Vim
-(×ÓÔÒÏÅÎÏ × ÎÅÇÏ) ÉÌÉ ÏÐÒÅÄÅÌÅÎÏ × ÆÁÊÌÁÈ termcap ÉÌÉ terminfo.
-.TP
-\-u {vimrc}
-éÓÐÏÌØÚÏ×ÁÔØ ËÏÍÁÎÄÙ ÉÚ ÆÁÊÌÁ ÓÃÅÎÁÒÉÑ {vimrc} ÄÌÑ ÎÁÓÔÒÏÊËÉ.
-÷ÓÅ ÏÓÔÁÌØÎÙÅ ÆÁÊÌÙ ÎÁÓÔÒÏÅË ÐÒÏÐÕÓËÁÀÔÓÑ.
-õÄÏÂÎÏ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÓÐÅÃÉÁÌØÎÙÈ ÔÉÐÏ× ÆÁÊÌÏ×.
-þÔÏÂÙ ÉÚÂÅÖÁÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÃÅÎÁÒÉÅ× ÎÁÓÔÒÏÅË ×ÏÏÂÝÅ, ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ
-ÉÍÑ "NONE". óÍ. ":help initialization".
+ÂÙÌ ÓÏÂÒÁÎ Ó ÐÏÄÄÅÒÖËÏÊ ÛÉÆÒÏ×ÁÎÉÑ, ÔÏ ×ÙÐÏÌÎÑÔØ ÛÉÆÒÏ×ÁÎÉÅ ÐÒÉ ÚÁÐÉÓÉ ÆÁÊÌÏ×.
+âÕÄÅÔ ×ÙÄÁÎÏ ÐÒÉÇÌÁÛÅÎÉÅ ××ÅÓÔÉ ÐÁÒÏÌØ.
.TP
-\-U {gvimrc}
-éÓÐÏÌØÚÏ×ÁÔØ ËÏÍÁÎÄÙ ÉÚ ÆÁÊÌÁ ÓÃÅÎÁÒÉÑ {gvimrc} ÄÌÑ ÎÁÓÔÒÏÊËÉ ÇÒÁÆÉÞÅÓËÏÇÏ
-ÉÎÔÅÒÆÅÊÓÁ.
-÷ÓÅ ÏÓÔÁÌØÎÙÅ ÆÁÊÌÙ ÎÁÓÔÒÏÅË ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ÐÒÏÐÕÓËÁÀÔÓÑ.
-þÔÏÂÙ ÉÚÂÅÖÁÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÃÅÎÁÒÉÅ× ÎÁÓÔÒÏÅË ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ×ÏÏÂÝÅ,
-ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÍÑ "NONE". óÍ. ":help gui-init".
-.TP
-\-V
-"âÏÌÔÌÉ×ÙÊ" ÒÅÖÉÍ. ÷Ù×ÏÄÉÔØ ÓÏÏÂÝÅÎÉÑ Ï ÔÏÍ, ËÁËÉÅ ÆÁÊÌÙ ÞÉÔÁÀÔÓÑ, É Ï
-ÞÔÅÎÉÉ-ÚÁÐÉÓÉ ÆÁÊÌÁ viminfo.
+\-X
+úÁÐÕÓË ÐÒÏÇÒÁÍÍÙ ÂÅÚ ÐÏÄËÌÀÞÅÎÉÑ Ë X-ÓÅÒ×ÅÒÕ.
+õÓËÏÒÑÅÔ ÚÁÇÒÕÚËÕ × ËÏÎÓÏÌÉ, ÎÏ ÄÅÌÁÅÔ ÎÅ×ÏÚÍÏÖÎÙÍ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÚÁÇÏÌÏ×ËÁ ÏËÎÁ
+É ÂÕÆÅÒÁ ÏÂÍÅÎÁ.
.TP
-\-v
-úÁÐÕÓÔÉÔØ
+\-y
+òÁÂÏÔÁ × ÕÐÒÏÝ£ÎÎÏÍ ×ÁÒÉÁÎÔÅ.
+òÅÄÁËÔÏÒ
+.B Vim
+ÂÕÄÅÔ ÒÁÂÏÔÁÔØ × ÕÐÒÏÝ£ÎÎÏÍ ×ÁÒÉÁÎÔÅ, ËÁË ÂÕÄÔÏ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÉÍÅÅÔ ÎÁÚ×ÁÎÉÅ
+"evim" ÉÌÉ "eview".
+ðÏ×ÅÄÅÎÉÅ ÒÅÄÁËÔÏÒÁ
.B Vim
-× ÒÅÖÉÍÅ Vi, ËÁË ÂÕÄÔÏ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÉÍÅÅÔ ÉÍÑ "vi". éÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÅÓÌÉ
-ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÉÍÅÅÔ ÉÍÑ "ex".
+ÂÕÄÅÔ ÐÏÈÏÄÉÔØ ÎÁ ÒÅÄÁËÔÏÒÙ, ÓÏÚÄÁÎÎÙÅ ÐÏ ÂÅÚÒÅÖÉÍÎÏÍÕ ÐÒÉÎÃÉÐÕ ÒÁÂÏÔÙ.
.TP
-\-w {scriptout}
-÷ÓÅ ÓÉÍ×ÏÌÙ, ××ÅÄ£ÎÎÙÅ Ó ËÌÁ×ÉÁÔÕÒÙ ×ÐÌÏÔØ ÄÏ ÍÏÍÅÎÔÁ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ,
-ÚÁÐÉÓÙ×ÁÀÔÓÑ × ÆÁÊÌ {scriptout}.
-õÄÏÂÎÏ × ÔÏÍ ÓÌÕÞÁÅ, ËÏÇÄÁ ×Ù ÈÏÔÉÔÅ ÓÏÚÄÁÔØ ÆÁÊÌ ÓÃÅÎÁÒÉÑ ÄÌÑ ÐÏÓÌÅÄÕÀÝÅÇÏ
-ÉÓÐÏÌØÚÏ×ÁÎÉÑ Ó "vim \-s" ÉÌÉ ":source!". åÓÌÉ ÆÁÊÌ {scriptout} ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ,
-ÔÏ ÎÏ×ÙÅ ÓÉÍ×ÏÌÙ ÂÕÄÕÔ ÄÏÂÁ×ÌÑÀÔÓÑ × ËÏÎÅà ÆÁÊÌÁ.
+\-Z
+òÁÂÏÔÁ Ó ÏÇÒÁÎÉÞÅÎÉÅÍ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ.
+òÁÂÏÔÁÅÔ ÔÁË ÖÅ, ËÁË É ÚÁÐÕÓË ÉÓÐÏÌÎÑÅÍÏÇÏ ÆÁÊÌÁ, ÎÁÉÍÅÎÏ×ÁÎÉÅ ËÏÔÏÒÏÇÏ
+ÎÁÞÉÎÁÅÔÓÑ Ó ÂÕË×Ù "r".
.TP
-\-W {scriptout}
-ëÁË "\-w", ÎÏ ÕÖÅ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÆÁÊÌ ÂÕÄÅÔ ÐÅÒÅÚÁÐÉÓÁÎ.
+\-\-
+ïÚÎÁÞÁÅÔ ÏËÏÎÞÁÎÉÅ ××ÏÄÁ ÁÒÇÕÍÅÎÔÏ×.
+÷ÓÅ ÞÔÏ ÕËÁÚÁÎÏ ÐÏÓÌÅ ÜÔÏÇÏ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, ÓÞÉÔÁÅÔÓÑ ÎÁÉÍÅÎÏ×ÁÎÉÑÍÉ ÆÁÊÌÏ×.
+íÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÏ ÄÌÑ ÐÒÁ×ËÉ ÆÁÊÌÏ×, ÎÁÉÍÅÎÏ×ÁÎÉÑ ËÏÔÏÒÙÈ ÎÁÞÉÎÁÀÔÓÑ Ó
+ÄÅÆÉÓÁ.
.TP
-\-x
-ûÉÆÒÏ×ÁÔØ ÚÁÐÉÓÙ×ÁÅÍÙÅ ÆÁÊÌÙ. âÕÄÅÔ ×ÙÄÁÎÏ ÐÒÉÇÌÁÛÅÎÉÅ ××ÅÓÔÉ ÐÁÒÏÌØ.
+\-\-clean
+ðÒÉ ÒÁÂÏÔÅ ÒÅÄÁËÔÏÒÁ ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÕÀ ËÏÎÆÉÇÕÒÁÃÉÀ (ÆÁÊÌÙ vimrc,
+ÐÏÄËÌÀÞÁÅÍÙÅ ÍÏÄÕÌÉ É Ô. Ð.). ðÏÌÅÚÎÏ ÄÌÑ ÐÒÏ×ÅÒËÉ, ÞÔÏ ÐÒÏÂÌÅÍÁ × ÒÁÂÏÔÅ
+ÒÅÄÁËÔÏÒÁ ÎÅ ×ÏÚÎÉËÎÅÔ Ó ÐÒÅÄÕÓÔÁÎÏ×ÌÅÎÎÙÍÉ ÎÁÓÔÒÏÊËÁÍÉ ÐÒÏÇÒÁÍÍÙ Vim.
.TP
-\-X
-îÅ ÐÏÄËÌÀÞÁÔØÓÑ Ë X-ÓÅÒ×ÅÒÕ. õÓËÏÒÑÅÔ ÚÁÇÒÕÚËÕ ÎÁ ËÏÎÓÏÌÉ, ÎÏ ÄÅÌÁÅÔ ÎÅ×ÏÚÍÏÖÎÙÍ
-ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÚÁÇÏÌÏ×ËÁ ÏËÎÁ É ÂÕÆÅÒÁ ÏÂÍÅÎÁ.
+\-\-cmd {ËÏÍÁÎÄÁ}
+ëÁË ÁÒÇÕÍÅÎÔ "\-c", ÎÏ ËÏÍÁÎÄÁ ÉÓÐÏÌÎÑÅÔÓÑ ÐÅÒÅÄ ÏÂÒÁÂÏÔËÏÊ ÌÀÂÏÇÏ ÆÁÊÌÁ
+ÎÁÓÔÒÏÅË (vimrc).
+íÏÖÎÏ ÕËÁÚÙ×ÁÔØ ÄÏ ÄÅÓÑÔÉ ÔÁËÉÈ ËÏÍÁÎÄ, ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ËÏÌÉÞÅÓÔ×Á ËÏÍÁÎÄ "\-c".
.TP
-\-Z
-ïÇÒÁÎÉÞÅÎÎÙÊ ÒÅÖÉÍ. òÁÂÏÔÁÅÔ ÔÁË ÖÅ, ËÁË É ÐÒÏÇÒÁÍÍÙ, ÎÁÞÉÎÁÀÝÉÅÓÑ Ó "r".
+\-\-echo\-wid
+ôÏÌØËÏ ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ GTK. ïÔÏÂÒÁÚÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÏËÎÁ
+(Window ID) × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ (stdout).
+.TP
+\-\-gui\-dialog\-file {ÆÁÊÌ}
+ðÒÉ ÒÁÂÏÔÅ ÒÅÄÁËÔÏÒÁ × ÇÒÁÆÉÞÅÓËÏÍ ÉÎÔÅÒÆÅÊÓÅ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÚÁÇÏÌÏ×ÏË
+É ÓÏÏÂÝÅÎÉÅ ÄÉÁÌÏÇÏ×ÏÇÏ ÏËÎÁ ÂÕÄÕÔ ÚÁÐÉÓÁÎÙ × {ÆÁÊÌ} ÂÅÚ ÏÔÏÂÒÁÖÅÎÉÑ ÎÁ ÜËÒÁÎÅ.
+åÓÌÉ ÕËÁÚÁÎÎÙÊ {ÆÁÊÌ} ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ ÏÎ ÂÕÄÅÔ ÓÏÚÄÁÎ, Á ÐÒÉ ÅÇÏ ÎÁÌÉÞÉÉ
+ÓÏÏÂÝÅÎÉÑ ÂÕÄÕÔ ÄÏÐÉÓÙ×ÁÔØÓÑ × ÜÔÏÔ {ÆÁÊÌ}. äÁÎÎÙÊ ÁÒÇÕÍÅÎÔ ÐÏÌÅÚÅÎ ÔÏÌØËÏ ÄÌÑ
+ÔÅÓÔÉÒÏ×ÁÎÉÑ ÒÁÂÏÔÙ ÒÅÄÁËÔÏÒÁ, ÞÔÏÂÙ ÉÚÂÅÖÁÔØ ÏÓÔÁÎÏ×ËÉ ÐÒÏÇÒÁÍÍÙ, ÔÁË ËÁË
+ÏÔÏÂÒÁÖÁÅÍÏÅ ÄÉÁÌÏÇÏ×ÏÅ ÏËÎÏ ÍÏÖÅÔ ÂÙÔØ ÓËÒÙÔÏ. åÓÌÉ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ
+ÇÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÔÏ ÜÔÏÔ ÁÒÇÕÍÅÎÔ ÉÇÎÏÒÉÒÕÅÔÓÑ ÐÒÏÇÒÁÍÍÏÊ.
+.TP
+\-\-help, \-h, \-?
+âÕÄÅÔ ÐÏËÁÚÁÎÁ ËÒÁÔËÁÑ ÉÎÆÏÒÍÁÃÉÑ ÏÂ ÁÒÇÕÍÅÎÔÁÈ É ÐÁÒÁÍÅÔÒÁÈ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ.
+ðÏÓÌÅ ÜÔÏÇÏ ÒÅÄÁËÔÏÒ
+.B Vim
+ÚÁ×ÅÒÛÉÔ ÒÁÂÏÔÕ.
+.TP
+\-\-literal
+äÁÎÎÙÊ ÁÒÇÕÍÅÎÔ ÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÔÒÅÂÕÅÔÓÑ ×ÏÓÐÒÉÎÉÍÁÔØ ÎÁÉÍÅÎÏ×ÁÎÉÑ ÆÁÊÌÏ×
+ÂÕË×ÁÌØÎÏ, É ÎÅ ×ÙÐÏÌÎÑÔØ ÒÁÚÂÏÒ ÐÏÄÓÔÁÎÏ×ÏÞÎÙÈ ÓÉÍ×ÏÌÏ×.
+üÔÏÔ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ÎÅÐÒÉÍÅÎÉÍ × Unix-ÐÏÄÏÂÎÙÈ ÓÉÓÔÅÍÁÈ, ÇÄÅ ÒÁÚÂÏÒ
+ÐÏÄÓÔÁÎÏ×ÏÞÎÙÈ ÓÉÍ×ÏÌÏ× ×ÙÐÏÌÎÑÅÔÓÑ ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÏÊ.
+.TP
+\-\-log {ÆÁÊÌ}
+âÕÄÅÔ ×ÙÐÏÌÎÅÎÁ ÚÁÐÉÓØ ÐÒÏÔÏËÏÌÁ ÒÁÂÏÔÙ Ó ÜÔÁÐÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÐÒÏÇÒÁÍÍÙ.
+åÓÌÉ ÐÒÉ ÓÂÏÒËÅ ÐÒÏÇÒÁÍÍÙ
+.B Vim
+ÂÙÌÉ ×ËÌÀÞÅÎÙ ËÏÍÐÏÎÅÎÔÙ "eval" É "channel", ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ ÐÒÏÔÏËÏÌÉÒÏ×ÁÎÉÅ
+ÒÁÂÏÔÙ Ó ÓÁÍÏÊ ÒÁÎÎÅÊ ÓÔÁÄÉÉ ÚÁÐÕÓËÁ ÐÒÏÇÒÁÍÍÙ, Á ÖÕÒÎÁÌ ÚÁÐÉÓÙ×ÁÔØÓÑ × {ÆÁÊÌ}.
+üÔÏ ÒÁÂÏÔÁÅÔ ÁÎÁÌÏÇÉÞÎÏ ×ÙÚÏ×Õ ÆÕÎËÃÉÉ
+.I ch_logfile({filename}, 'ao')
.TP
-\-\-
-ëÏÎÅà ËÌÀÞÅÊ. ÷ÓÅ ÏÓÔÁÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ ËÁË ÉÍÅÎÁ ÆÁÊÌÏ×.
-íÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÏ ÄÌÑ ÐÒÁ×ËÉ ÆÁÊÌÏ×, ÉÍÅÎÁ ËÏÔÏÒÙÈ ÎÁÞÉÎÁÀÔÓÑ Ó ÄÅÆÉÓÁ.
+\-\-nofork
+òÅÖÉÍ ÁËÔÉ×ÎÏÇÏ ÐÒÉÌÏÖÅÎÉÑ.
+òÅÄÁËÔÏÒ
+.B Vim
+Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ ÎÅ ÂÕÄÅÔ ÎÁÓÌÅÄÏ×ÁÔØÓÑ É ÏÔËÌÀÞÁÔØÓÑ
+ÏÔ ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÉ, × ËÏÔÏÒÏÊ ×ÙÐÏÌÎÅÎÁ ËÏÍÁÎÄÁ ÅÇÏ ÚÁÐÕÓËÁ.
.TP
-\-\-help
-÷Ù×ÅÓÔÉ ËÒÁÔËÕÀ ÓÐÒÁ×ËÕ É ÚÁ×ÅÒÛÉÔØ ÒÁÂÏÔÕ. ôÏ ÖÅ, ÞÔÏ É "\-h".
+\-\-noplugin
+âÕÄÅÔ ×ÙÐÏÌÎÅÎ ÚÁÐÕÓË ÐÒÏÇÒÁÍÍÙ ÂÅÚ ÚÁÇÒÕÚËÉ ×ÎÅÛÎÉÈ ÐÏÄËÌÀÞÁÅÍÙÈ ÍÏÄÕÌÅÊ.
+üÔÏ ÖÅ ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÐÒÉ ÕËÁÚÁÎÉÉ ÁÒÇÕÍÅÎÔÁ \-u NONE.
.TP
-\-\-version
-÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ É ÚÁ×ÅÒÛÉÔØ ÒÁÂÏÔÕ.
+\-\-not\-a\-term
+îÅ ÓÏÏÂÝÁÔØ Ï ÏÔÓÕÔÓÔ×ÉÉ ÔÅÒÍÉÎÁÌÁ ÄÌÑ ××ÏÄÁ-×Ù×ÏÄÁ.
+þÅÒÅÚ ÜÔÏÔ ÁÒÇÕÍÅÎÔ ÕËÁÚÙ×ÁÅÔÓÑ, ÞÔÏ ÏÐÅÒÁÃÉÉ ××ÏÄÁ-×Ù×ÏÄÁ ÏÓÕÝÅÓÔ×ÌÑÀÔÓÑ ÎÅ
+ÎÁ ÔÅÒÍÉÎÁÌ. üÔÏ ÐÏÚ×ÏÌÑÅÔ ÉÚÂÅÖÁÔØ ÐÒÅÄÕÐÒÅÖÄÁÀÝÅÇÏ ÓÏÏÂÝÅÎÉÑ É Ä×ÕÈÓÅËÕÎÄÎÏÊ
+ÚÁÄÅÒÖËÉ, ËÏÔÏÒÙÅ ÍÏÇÌÉ ÂÙ ×ÏÚÎÉËÎÕÔØ.
.TP
\-\-remote
-ðÏÄËÌÀÞÉÔØÓÑ Ë ÓÅÒ×ÅÒÕ Vim É ÚÁÓÔÁ×ÉÔØ ÅÇÏ ÐÒÁ×ÉÔØ ÆÁÊÌÙ, ÕËÁÚÁÎÎÙÅ ×
-ÐÏÓÌÅÄÕÀÝÉÈ ÁÒÇÕÍÅÎÔÁÈ. åÓÌÉ ÓÅÒ×ÅÒ ÎÅ ÎÁÊÄÅÎ, ×Ù×ÏÄÉÔÓÑ ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ,
-Á ÆÁÊÌÙ ÐÒÁ×ÑÔÓÑ × ÍÅÓÔÎÏÊ ËÏÐÉÉ Vim.
+âÕÄÅÔ ×ÙÐÏÌÎÅÎÏ ÐÏÄËÌÀÞÅÎÉÅ Ë Vim-ÓÅÒ×ÅÒÕ É ÐÅÒÅÄÁÞÁ ÄÌÑ ÐÒÁ×ËÉ ÆÁÊÌÏ×,
+ÕËÁÚÁÎÎÙÈ × ÐÏÓÌÅÄÕÀÝÉÈ ÁÒÇÕÍÅÎÔÁÈ. åÓÌÉ ÓÅÒ×ÅÒ ÎÅ ÎÁÊÄÅÎ, ×Ù×ÏÄÉÔÓÑ
+ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ, Á ÐÒÁ×ËÁ ÆÁÊÌÏ× ×ÙÐÏÌÎÑÅÔÓÑ × ÔÅËÕÝÅÊ ËÏÐÉÉ ÒÅÄÁËÔÏÒÁ Vim.
.TP
\-\-remote\-expr {×ÙÒÁÖÅÎÉÅ}
-ðÏÄËÌÀÞÉÔØÓÑ Ë ÓÅÒ×ÅÒÕ Vim É ×ÙÞÉÓÌÉÔØ ÎÁ Î£Í ÕËÁÚÁÎÎÏÅ {×ÙÒÁÖÅÎÉÅ}.
+âÕÄÅÔ ×ÙÐÏÌÎÅÎÏ ÐÏÄËÌÀÞÅÎÉÅ Ë Vim-ÓÅÒ×ÅÒÕ É ÐÅÒÅÄÁÞÁ ÕËÁÚÁÎÎÏÇÏ {×ÙÒÁÖÅÎÉÅ} ÄÌÑ
+×ÙÞÉÓÌÅÎÉÑ.
òÅÚÕÌØÔÁÔ ×ÙÞÉÓÌÅÎÉÑ ÂÕÄÅÔ ×Ù×ÅÄÅÎ × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ (stdout).
.TP
-\-\-remote\-send {ËÌÀÞÉ}
-ðÏÄËÌÀÞÉÔØÓÑ Ë ÓÅÒ×ÅÒÕ Vim É ÐÅÒÅÄÁÔØ ÅÍÕ ÕËÁÚÁÎÎÙÅ {ËÌÀÞÉ}.
+\-\-remote\-send {ËÏÄ ËÌÁ×ÉÛÉ}
+âÕÄÅÔ ×ÙÐÏÌÎÅÎÏ ÐÏÄËÌÀÞÅÎÉÅ Ë Vim-ÓÅÒ×ÅÒÕ É ÐÅÒÅÄÁÞÁ ÕËÁÚÁÎÎÙÈ {ËÏÄÏ× ËÌÁ×ÉÛ}.
.TP
\-\-remote\-silent
ëÁË "\-\-remote", ÎÏ ÂÅÚ ×Ù×ÏÄÁ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ, ÅÓÌÉ ÓÅÒ×ÅÒ ÎÅ ÎÁÊÄÅÎ.
.TP
\-\-remote\-wait
-ëÁË "\-\-remote", ÎÏ Vim ÎÅ ÂÕÄÅÔ ÚÁ×ÅÒÛÁÔØ ÒÁÂÏÔÕ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÎÅ ÂÕÄÅÔ
-×ÙÐÏÌÎÅÎÁ ÐÒÁ×ËÁ ×ÓÅÈ ÆÁÊÌÏ×.
+ëÁË "\-\-remote", ÎÏ ÒÅÄÁËÔÏÒ Vim ÎÅ ÂÕÄÅÔ ÚÁ×ÅÒÛÁÔØ ÒÁÂÏÔÕ ÄÏ ÔÅÈ ÐÏÒ,
+ÐÏËÁ ÎÅ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎÁ ÐÒÁ×ËÁ ×ÓÅÈ ÆÁÊÌÏ×.
.TP
\-\-remote\-wait\-silent
ëÁË "\-\-remote\-wait", ÎÏ ÂÅÚ ×Ù×ÏÄÁ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ, ÅÓÌÉ ÓÅÒ×ÅÒ ÎÅ ÎÁÊÄÅÎ.
.TP
\-\-serverlist
-÷Ù×ÅÓÔÉ ÓÐÉÓÏË ×ÓÅÈ ÄÏÓÔÕÐÎÙÈ ÓÅÒ×ÅÒÏ× Vim.
+âÕÄÅÔ ×Ù×ÅÄÅÎ ÐÅÒÅÞÅÎØ ×ÓÅÈ ÄÏÓÔÕÐÎÙÈ Vim-ÓÅÒ×ÅÒÏ×.
.TP
-\-\-servername {ÉÍÑ}
-éÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÏÅ {ÉÍÑ} × ËÁÞÅÓÔ×Å ÉÍÅÎÉ ÓÅÒ×ÅÒÁ. åÓÌÉ ËÌÀÞ
-"\-\-remote" ÎÅ ÕËÁÚÁÎ, ÔÏ {ÉÍÑ} ÐÒÉÓ×ÁÉ×ÁÅÔÓÑ ÄÁÎÎÏÊ ËÏÐÉÉ Vim,
-× ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÕËÁÚÙ×ÁÅÔ ÎÁ ÉÍÑ ÓÅÒ×ÅÒÁ, Ë ËÏÔÏÒÏÍÕ ÓÌÅÄÕÅÔ
-ÐÏÄËÌÀÞÉÔØÓÑ.
+\-\-servername {ÎÁÚ×ÁÎÉÅ}
+éÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÏÅ {ÎÁÚ×ÁÎÉÅ} × ËÁÞÅÓÔ×Å ÎÁÉÍÅÎÏ×ÁÎÉÑ ÓÅÒ×ÅÒÁ. åÓÌÉ ÁÒÇÕÍÅÎÔ
+"\-\-remote" ÎÅ ÕËÁÚÁÎ, ÔÏ {ÎÁÚ×ÁÎÉÅ} ÐÒÉÓ×ÁÉ×ÁÅÔÓÑ ÄÁÎÎÏÊ ËÏÐÉÉ ÒÅÄÁËÔÏÒÁ Vim,
+× ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÕËÁÚÙ×ÁÅÔ ÎÁ ÓÅÒ×ÅÒ, Ë ËÏÔÏÒÏÍÕ ÓÌÅÄÕÅÔ ÐÏÄËÌÀÞÉÔØÓÑ.
.TP
\-\-socketid {id}
-ôÏÌØËÏ ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ GTK: ÉÓÐÏÌØÚÏ×ÁÔØ ÍÅÈÁÎÉÚÍ GtkPlug ÄÌÑ
-ÚÁÐÕÓËÁ gvim × ÏÔÄÅÌØÎÏÍ ÏËÎÅ.
+ôÏÌØËÏ ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ GTK. âÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÍÅÈÁÎÉÚÍ GtkPlug ÄÌÑ
+ÚÁÐÕÓËÁ ÒÅÄÁËÔÏÒÁ gVim × ÏÔÄÅÌØÎÏÍ ÏËÎÅ.
.TP
-\-\-echo\-wid
-ôÏÌØËÏ ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ GTK: ×Ù×ÅÓÔÉ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÏËÎÁ (Window ID)
-× ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ (stdout).
-.SH ÷óôòïåîîáñ óðòá÷ëá
-äÌÑ ÎÁÞÁÌÁ, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ ":help".
-÷×ÅÄÉÔÅ ":help ÔÅÍÁ", ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÓÐÒÁ×ËÕ ÐÏ ËÏÎËÒÅÔÎÏÊ ÔÅÍÅ.
-îÁÐÒÉÍÅÒ, ËÏÍÁÎÄÁ ":help ZZ" ×Ù×ÅÄÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ËÏÍÁÎÄÅ "ZZ".
-éÓÐÏÌØÚÕÊÔÅ <Tab> É CTRL-D ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÄÏÐÏÌÎÅÎÉÑ
-ÎÁÚ×ÁÎÉÊ ÔÅÍ (":help cmdline-completion").
-äÌÑ ÂÙÓÔÒÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ ÐÏ ÓÐÒÁ×ÏÞÎÉËÕ ÉÓÐÏÌØÚÕÀÔÓÑ ÍÅÔËÉ (ÞÔÏ-ÔÏ
+\-\-startuptime {ÆÁÊÌ}
+âÕÄÅÔ ×ÙÐÏÌÎÅÎÁ ÚÁÐÉÓØ ÈÒÏÎÏÍÅÔÒÁÖÁ ÚÁÐÕÓËÁ ÐÒÏÇÒÁÍÍÙ × {ÆÁÊÌ}.
+.TP
+\-\-ttyfail
+âÕÄÔ ÓÒÁÚÕ ÖÅ ÚÁ×ÅÒÛÅÎÁ ÒÁÂÏÔÁ, ÅÓÌÉ ××ÏÄ-×Ù×ÏÄ ÐÏÌÕÞÅÎ ÎÅ Ó ÔÅÒÍÉÎÁÌÁ (tty).
+.TP
+\-\-version
+âÕÄÅÔ ×Ù×ÅÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ É ÚÁ×ÅÒÛÅÎÁ ÒÁÂÏÔÁ.
+.TP
+\-\-windowid {éä}
+ôÏÌØËÏ ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ × MS Windows. òÅÄÁËÔÏÒ gVim ÂÕÄÅÔ
+ÉÓÐÏÌØÚÏ×ÁÔØ ÏËÎÏ Ó ÕËÁÚÁÎÎÙÍ {éä} × ËÁÞÅÓÔ×Å ÒÏÄÉÔÅÌØÓËÏÇÏ, ÞÔÏÂÙ ÐÏÐÙÔÁÔØÓÑ
+×ÙÐÏÌÎÉÔØ ÚÁÐÕÓË ×ÎÕÔÒÉ ÜÔÏÇÏ ÏËÎÁ.
+.SH ÷óôòïåîîáñ äïëõíåîôáãéñ
+äÌÑ ÎÁÞÁÌÁ ÒÁÂÏÔÙ Ó ÄÏËÕÍÅÎÔÁÃÉÅÊ, ÎÁÂÅÒÉÔÅ × ÒÅÄÁËÔÏÒÅ
+.B Vim
+ËÏÍÁÎÄÕ ":help".
+÷×ÅÄÉÔÅ ":help ÔÅÍÁ", ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÓÐÒÁ×ËÕ ÐÏ ÉÎÔÅÒÅÓÕÀÝÅÊ ÔÅÍÅ.
+îÁÐÒÉÍÅÒ, ÐÏ ËÏÍÁÎÄÅ ":help ZZ" ÂÕÄÅÔ ×Ù×ÅÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ËÏÍÁÎÄÅ "ZZ".
+éÓÐÏÌØÚÕÊÔÅ ËÌÁ×ÉÛÉ <TAB> É CTRL+D ÄÌÑ ÐÏÄÓÔÁÎÏ×ËÉ ÎÕÖÎÏÇÏ ÎÁÚ×ÁÎÉÑ ÔÅÍÙ
+(ÓÍ. ":help cmdline\-completion").
+äÌÑ ÂÙÓÔÒÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ ÐÏ ÄÏËÕÍÅÎÔÁÃÉÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÉÎÄÅËÓÙ (ÞÔÏ-ÔÏ
×ÒÏÄÅ ÇÉÐÅÒÔÅËÓÔÏ×ÙÈ ÓÓÙÌÏË, ÓÍ. ":help"). ôÁËÉÍ ÏÂÒÁÚÏÍ ÍÏÖÎÏ
-ÐÒÏÓÍÁÔÒÉ×ÁÔØ ×ÓÅ ÆÁÊÌÙ ÓÐÒÁ×ËÉ, ÎÁÐÒÉÍÅÒ ":help syntax.txt".
+ÐÅÒÅÈÏÄÉÔØ ÏÔ ÏÄÎÏÇÏ ÆÁÊÌÁ ÄÏËÕÍÅÎÔÁÃÉÉ Ë ÄÒÕÇÏÍÕ, ÎÁÐÒÉÍÅÒ, ":help syntax.txt".
.SH æáêìù
.TP 15
-/usr/local/lib/vim/doc/*.txt
-æÁÊÌÙ ÓÐÒÁ×ÏÞÎÉËÁ
+/usr/local/share/vim/vim??/doc/*.txt
+æÁÊÌÙ ÄÏËÕÍÅÎÔÁÃÉÉ ÒÅÄÁËÔÏÒÁ
.B Vim.
-óÍ. ":help doc-file-list" ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÎÏÇÏ ÓÐÉÓËÁ.
+óÍ. ":help doc\-file\-list" ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÎÏÇÏ ÐÅÒÅÞÎÑ ÆÁÊÌÏ×.
+.br
+úÄÅÓØ É ÄÁÌÅÅ
+.I "vim??"
+ÏÚÎÁÞÁÅÔ ÓÏËÒÁÝ£ÎÎÕÀ ÚÁÐÉÓØ ÎÏÍÅÒÁ ×ÅÒÓÉÉ, ÎÁÐÒÉÍÅÒ, vim91 ÄÌÑ ×ÅÒÓÉÉ ÒÅÄÁËÔÏÒÁ
+.B Vim 9.1
.TP
-/usr/local/lib/vim/doc/tags
-æÁÊÌ ÍÅÔÏË, ÉÓÐÏÌØÚÕÅÍÙÊ ÄÌÑ ÐÏÉÓËÁ ÉÎÆÏÒÍÁÃÉÉ × ÆÁÊÌÁÈ ÓÐÒÁ×ËÉ.
+/usr/local/share/vim/vim??/doc/tags
+æÁÊÌ ÉÎÄÅËÓÏ×, ÉÓÐÏÌØÚÕÅÍÙÊ ÄÌÑ ÐÏÉÓËÁ ÉÎÆÏÒÍÁÃÉÉ × ÆÁÊÌÁÈ ÄÏËÕÍÅÎÔÁÃÉÉ.
.TP
-/usr/local/lib/vim/syntax/syntax.vim
-óÉÓÔÅÍÎÙÅ ÎÁÓÔÒÏÊËÉ ÓÉÎÔÁËÓÉÓÁ.
+/usr/local/share/vim/vim??/syntax/syntax.vim
+ïÂÝÅÓÉÓÔÅÍÎÙÅ ÎÁÓÔÒÏÊËÉ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ É ÐÏÄÓ×ÅÔËÉ ÓÉÎÔÁËÓÉÓÁ.
.TP
-/usr/local/lib/vim/syntax/*.vim
-æÁÊÌÙ ÓÉÎÔÁËÓÉÓÁ ÄÌÑ ÒÁÚÎÙÈ ÑÚÙËÏ×.
+/usr/local/share/vim/vim??/syntax/*.vim
+æÁÊÌÙ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ É ÐÏÄÓ×ÅÔËÉ ÓÉÎÔÁËÓÉÓÁ ÄÌÑ ÒÁÚÌÉÞÎÙÈ ÑÚÙËÏ× ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ.
.TP
-/usr/local/lib/vim/vimrc
-óÉÓÔÅÍÎÙÅ ÎÁÓÔÒÏÊËÉ
+/usr/local/share/vim/vimrc
+ïÂÝÅÓÉÓÔÅÍÎÙÊ ÆÁÊÌ ÎÁÞÁÌØÎÏÊ ÎÁÓÔÒÏÊËÉ ÄÌÑ ËÏÎÓÏÌØÎÏÇÏ ÒÅÄÁËÔÏÒÁ
.B Vim.
.TP
-/usr/local/lib/vim/gvimrc
-óÉÓÔÅÍÎÙÊ ÎÁÓÔÒÏÊËÉ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ.
+~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc
+ðÏÌØÚÏ×ÁÔÅÌØÓËÉÅ ÆÁÊÌÙ ÎÁÞÁÌØÎÏÊ ÎÁÓÔÒÏÊËÉ ÄÌÑ ËÏÎÓÏÌØÎÏÇÏ ÒÅÄÁËÔÏÒÁ
+.B Vim
+(ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÐÅÒ×ÙÊ ÎÁÊÄÅÎÎÙÊ ÆÁÊÌ ÉÚ ÕËÁÚÁÎÎÙÈ).
+.TP
+/usr/local/share/vim/gvimrc
+ïÂÝÅÓÉÓÔÅÍÎÙÊ ÆÁÊÌ ÎÁÞÁÌØÎÏÊ ÎÁÓÔÒÏÊËÉ ÄÌÑ ÒÅÄÁËÔÏÒÁ Ó ÇÒÁÆÉÞÅÓËÉÍ ÉÎÔÅÒÆÅÊÓÏÍ
+.B gVim.
+.TP
+~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
+ðÏÌØÚÏ×ÁÔÅÌØÓËÉÅ ÆÁÊÌÙ ÎÁÞÁÌØÎÏÊ ÎÁÓÔÒÏÊËÉ ÄÌÑ ÒÅÄÁËÔÏÒÁ Ó ÇÒÁÆÉÞÅÓËÉÍ
+ÉÎÔÅÒÆÅÊÓÏÍ
+.B gVim
+(ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÐÅÒ×ÙÊ ÎÁÊÄÅÎÎÙÊ ÆÁÊÌ ÉÚ ÕËÁÚÁÎÎÙÈ).
.TP
-/usr/local/lib/vim/optwin.vim
-óÃÅÎÁÒÉÊ, ÉÓÐÏÌØÚÕÅÍÙÊ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ ":options".
-èÏÒÏÛÉÊ ÓÐÏÓÏ ÐÒÏÓÍÁÔÒÉ×ÁÔØ É ÉÚÍÅÎÑÔØ ÎÁÓÔÒÏÊËÉ.
+/usr/local/share/vim/vim??/optwin.vim
+ëÏÍÁÎÄÎÙÊ ÆÁÊÌ, ÉÓÐÏÌØÚÕÅÍÙÊ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ ":options".
+ðÏ ÜÔÏÊ ËÏÍÁÎÄÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ ÕÄÏÂÎÙÊ ÓÐÏÓÏ ÐÒÏÓÍÏÔÒÁ É ÉÚÍÅÎÅÎÉÑ ÎÁÓÔÒÏÅË.
.TP
-/usr/local/lib/vim/menu.vim
-óÉÓÔÅÍÎÙÅ ÎÁÓÔÒÏÊËÉ ÍÅÎÀ ÄÌÑ gvim.
+/usr/local/share/vim/vim??/menu.vim
+óÉÓÔÅÍÎÙÅ ÎÁÓÔÒÏÊËÉ ÍÅÎÀ ÄÌÑ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ ÒÅÄÁËÔÏÒÁ
+.B gVim.
.TP
-/usr/local/lib/vim/bugreport.vim
-óÃÅÎÁÒÉÊ ÄÌÑ ÓÏÚÄÁÎÉÑ ÏÔÞ£ÔÁ ÏÂ ÏÂÎÁÒÕÖÅÎÎÙÈ ÇÌÀËÁÈ. óÍ. ":help bugs".
+/usr/local/share/vim/vim??/bugreport.vim
+ëÏÍÁÎÄÎÙÊ ÆÁÊÌ ÄÌÑ ÓÏÚÄÁÎÉÑ ÏÔÞ£ÔÁ Ï ÏÂÎÁÒÕÖÅÎÎÙÈ ÏÛÉÂËÁÈ. óÍ. ":help bugs".
.TP
-/usr/local/lib/vim/filetype.vim
-óÃÅÎÁÒÉÊ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÉÐÁ ÆÁÊÌÁ ÐÏ ÉÍÅÎÉ. óÍ. ":help 'filetype'".
+/usr/local/share/vim/vim??/filetype.vim
+ëÏÍÁÎÄÎÙÊ ÆÁÊÌ ÄÌÑ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÔÉÐÏ× ÆÁÊÌÏ× ÐÏ ÎÁÉÍÅÎÏ×ÁÎÉÀ.
+óÍ. ":help 'filetype'".
.TP
-/usr/local/lib/vim/scripts.vim
-óÃÅÎÁÒÉÊ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÉÐÁ ÆÁÊÌÁ ÐÏ ÓÏÄÅÒÖÉÍÏÍÕ. óÍ. ":help 'filetype'".
+/usr/local/share/vim/vim??/scripts.vim
+ëÏÍÁÎÄÎÙÊ ÆÁÊÌ ÄÌÑ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÔÉÐÏ× ÆÁÊÌÏ× ÐÏ ÓÏÄÅÒÖÉÍÏÍÕ.
+óÍ. ":help 'filetype'".
.TP
-/usr/local/lib/vim/print/*.ps
-æÁÊÌÙ ÄÌÑ ÐÅÞÁÔÉ PostScript.
+/usr/local/share/vim/vim??/print/*.ps
+æÁÊÌÙ, ÉÓÐÏÌØÚÕÅÍÙÅ ÄÌÑ ÐÅÞÁÔÉ ÞÅÒÅÚ ÉÎÔÅÒÆÅÊÓ PostScript.
.PP
-âÏÌÅÅ Ó×ÅÖÁÑ ÉÎÆÏÒÍÁÃÉÑ -- ÎÁ ÓÁÊÔÅ VIM:
+÷ÓÀ ÐÏÓÌÅÄÎÀÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÒÅÄÁËÔÏÒÅ ÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÎÁ ×ÅÂ-ÓÔÒÁÎÉÃÅ VIM:
.br
<URL:http://www.vim.org/>
-.SH óíïôòé ôáëöå
+.SH óíïôòéôå ôáëöå
vimtutor(1)
.SH á÷ôïòù
-âÏÌØÛÁÑ ÞÁÓÔØ
+âÏÌØÛÁÑ ÞÁÓÔØ ÒÅÄÁËÔÏÒÁ
.B Vim
-ÓÏÚÄÁÎÁ âÒÁÍÏÍ íÏÏÌÅÎÁÁÒÏÍ (Bram Moolenaar), ËÏÔÏÒÏÍÕ ÐÏÍÏÇÁÅÔ ÏÇÒÏÍÎÏÅ
-ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ. óÍ. ":help credits" ×
+ÂÙÌÁ ÓÏÚÄÁÎÁ âÒÁÍÏÍ íÏÌÅÎÁÒÏÍ (Bram Moolenaar), ËÏÔÏÒÏÍÕ ÐÏÍÏÇÁÌÏ ÏÇÒÏÍÎÏÅ
+ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ. óÍ. ":help credits" × ÒÅÄÁËÔÏÒÅ
.B Vim.
.br
+òÅÄÁËÔÏÒ
.B Vim
ÂÁÚÉÒÕÅÔÓÑ ÎÁ ËÏÄÅ ÒÅÄÁËÔÏÒÁ Stevie, ÎÁÐÉÓÁÎÎÏÇÏ ôÉÍÏÍ ôÏÍÐÓÏÎÏÍ (Tim Thompson),
ôÏÎÉ üÎÄÒÀÓÏÍ (Tony Andrews) É ç. ò. (æÒÅÄÏÍ) õÏÌÔÅÒÏÍ (G.R. (Fred) Walter).
-ïÄÎÁËÏ, × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ × Vim ÐÏÞÔÉ ÎÅ ÏÓÔÁÌÏÓØ ÎÉÞÅÇÏ ÏÔ ÉÓÔÏÒÉÞÅÓËÏÇÏ ËÏÄÁ
-ÅÇÏ ÐÒÅÄÛÅÓÔ×ÅÎÎÉËÁ.
+ïÄÎÁËÏ, × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ × ÐÒÏÇÒÁÍÍÅ Vim ÐÏÞÔÉ ÎÉÞÅÇÏ ÎÅ ÏÓÔÁÌÏÓØ
+ÏÔ ÉÓÔÏÒÉÞÅÓËÏÇÏ ËÏÄÁ ÅÇÏ ÐÒÅÄÛÅÓÔ×ÅÎÎÉËÁ.
.br
-òÕÓÓËÁÑ ÌÏËÁÌÉÚÁÃÉÑ
+òÕÓÓËÁÑ ÌÏËÁÌÉÚÁÃÉÑ ÒÅÄÁËÔÏÒÁ
.B Vim
×ÙÐÏÌÎÑÅÔÓÑ × ÒÁÍËÁÈ ÐÒÏÅËÔÁ "òÕ÷ÉÍ",
-ÓÍ. <URL:http://sourceforge.net/projects/ruvim/>.
-.SH çìàëé
+ÓÍ. <URL:https://github.com/restorerz/ruvim/>.
+.SH ïûéâëé
óËÏÒÅÅ ×ÓÅÇÏ ÅÓÔØ.
-óÍ. ":help todo" -- ÓÐÉÓÏË ÉÚ×ÅÓÔÎÙÈ ÐÒÏÂÌÅÍ.
+óÍ. ":help todo" \[em] ÐÅÒÅÞÅÎØ ÉÚ×ÅÓÔÎÙÈ ÏÛÉÂÏË × ÒÁÂÏÔÅ.
.PP
-úÁÍÅÔÉÍ, ÞÔÏ ÍÎÏÇÉÅ ×ÅÝÉ, ËÏÔÏÒÙÅ ÓÞÉÔÁÀÔÓÑ ÇÌÀËÁÍÉ, ÎÁ ÓÁÍÏÍ ÄÅÌÅ
-Ñ×ÌÑÀÔÓÑ ÒÅÚÕÌØÔÁÔÏÍ ÓÌÉÛËÏÍ ÐÏÌÎÏÇÏ ×ÏÓÐÒÏÉÚ×ÅÄÅÎÉÑ ÐÏ×ÅÄÅÎÉÑ Vi.
+úÁÍÅÔÉÍ, ÞÔÏ ÍÎÏÇÉÅ ×ÅÝÉ, ËÏÔÏÒÙÅ ÓÞÉÔÁÀÔÓÑ ÏÛÉÂËÁÍÉ, ÎÁ ÓÁÍÏÍ ÄÅÌÅ
+Ñ×ÌÑÀÔÓÑ ÒÅÚÕÌØÔÁÔÏÍ ÓÌÉÛËÏÍ ÐÏÌÎÏÇÏ ×ÏÓÐÒÏÉÚ×ÅÄÅÎÉÑ ÐÏ×ÅÄÅÎÉÑ ÒÅÄÁËÔÏÒÁ Vi.
åÓÌÉ ×Ù ÄÕÍÁÅÔÅ, ÞÔÏ ÞÔÏ-ÔÏ Ñ×ÌÑÅÔÓÑ ÏÛÉÂËÏÊ ÔÏÌØËÏ ÐÏÔÏÍÕ, ÞÔÏ
"Vi ÄÅÌÁÅÔ ÜÔÏ ÐÏ-ÄÒÕÇÏÍÕ", ×ÎÉÍÁÔÅÌØÎÏ ÐÒÏÞÉÔÁÊÔÅ ÆÁÊÌ vi_diff.txt
-(ÉÌÉ ÎÁÂÅÒÉÔÅ ":help vi_diff.txt" × Vim) É ÉÓÐÏÌØÚÕÊÔÅ ÏÐÃÉÉ 'compatible'
-É 'cpoptions'.
+(ÉÌÉ ÎÁÂÅÒÉÔÅ ":help vi_diff.txt" × ÒÅÄÁËÔÏÒÅ Vim) É ÐÏÓÍÏÔÒÉÔÅ ÐÁÒÁÍÅÔÒÙ
+ 'compatible' É 'cpoptions'.
diff --git a/runtime/doc/vim-ru.UTF-8.1 b/runtime/doc/vim-ru.UTF-8.1
index ef52721..e2308e3 100644
--- a/runtime/doc/vim-ru.UTF-8.1
+++ b/runtime/doc/vim-ru.UTF-8.1
@@ -1,19 +1,20 @@
-.TH VIM 1 "2002 Feb 22"
-.SH ИМЯ
-vim \- Vi IMproved (Улучшенный Vi), текÑтовый редактор Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñтов
-.SH КОМÐÐДÐÐЯ СТРОКÐ
+.TH VIM 1 "12 авгуÑта 2024"
+.SH ÐÐЗÐÐЧЕÐИЕ
+Программа Vim \[em] Ñто Vi IMproved (Улучшенный Vi), текÑтовый редактор длÑ
+программиÑтов.
+.SH КРÐТКИЙ ОБЗОР
.br
.B vim
-[ключи] [файл ..]
+[аргументы] [файл ...]
.br
.B vim
-[ключи] \-
+[аргументы] \-
.br
.B vim
-[ключи] \-t метка
+[аргументы] \-t индекÑ
.br
.B vim
-[ключи] \-q [файл ошибок]
+[аргументы] \-q [файл результатов]
.PP
.br
.B ex
@@ -22,468 +23,669 @@ vim \- Vi IMproved (Улучшенный Vi), текÑтовый редактоÑ
.br
.B gvim
.B gview
+.B evim
+.B eview
.br
.B rvim
.B rview
.B rgvim
.B rgview
.SH ОПИСÐÐИЕ
+Программа
.B Vim
--- текÑтовый редактор, обратно-ÑовмеÑтимый Ñ Vi.
-Он может быть иÑпользован Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ вÑех видов проÑтого текÑта.
-ОÑобенно он хорош Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ иÑходных текÑтов программ.
+\[em] Ñто текÑтовый редактор, ÑовмеÑтимый Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi.
+Она может быть иÑпользована Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ вÑех видов обычных текÑтовых документов.
+ОÑобенно полезна она будет Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ñходных текÑтов программ.
.PP
-По Ñравнению Ñ Vi,
+По Ñравнению Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi, в редакторе
.B Vim
-имеет много уÑовершенÑтвований: Ð¼Ð½Ð¾Ð³Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð° операций,
+предÑтавлено много уÑовершенÑтвований: Ð¼Ð½Ð¾Ð³Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð°Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð° операций,
множеÑтвенноÑÑ‚ÑŒ окон и буферов, подÑветка ÑинтакÑиÑа, правка командной Ñтроки,
-автодополнение имён файлов, вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ñправка, визуальное выделение и Ñ‚.п.
-См. ":help vi_diff.txt" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑпиÑка различий между
+подÑтановка наименований файлов, вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ, визуальное выделение
+и прочее.
+См. ":help vi_diff.txt" чтобы ознакомитьÑÑ Ñ Ð¿Ð¾Ð»Ð½Ñ‹Ð¼ перечнем различий между
+редактором
.B Vim
-и Vi.
+и редактором Vi.
.PP
-Во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ в
-.B Vim
-можно получить Ñправку Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемы вÑтроенной Ñправки (команда ":help").
-См. раздел "ВСТРОЕÐÐÐЯ СПРÐВКÐ" ниже по текÑту.
+Чтобы получить полезную информацию о работе Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼
+.B Vim,
+можно воÑпользоватьÑÑ Ð²Ñтроенной в программу документацией, набрав в редакторе
+команду ":help".
+См. раздел "ВСТРОЕÐÐÐЯ ДОКУМЕÐТÐЦИЯ" далее в текÑте.
.PP
-Чаще вÑего
+Чаще вÑего редактор
.B Vim
запуÑкают Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ одного файла при помощи команды
.PP
vim файл
.PP
-Ð’ общем виде команда запуÑка
+Ð’ общем виде команда запуÑка редактора
.B Vim
выглÑдит так:
.PP
- vim [ключи] [ÑпиÑок файлов]
+ vim [аргументы] [файлы]
.PP
-ЕÑли ÑпиÑок файлов отÑутÑтвует, редактор начнёт работу Ñ Ð¿ÑƒÑтым буфером.
-Ð’ противном Ñлучае Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° должно быть указано одним из Ñледующих четырёх ÑпоÑобов:
+ЕÑли файлы не указаны, редактор будет запущен Ñ Ð´Ð¾Ñтупным Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
+пуÑтым буфером.
+ÐÐ°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² могут быть указаны одним из Ñледующих четырёх ÑпоÑобов:
.TP 12
-файл ..
-СпиÑок имён файлов.
-Первый файл будет объÑвлен активным и загружен в буфер. КурÑор будет помещён
-в первой Ñтроке буфера. ДоÑтуп к другим файлам может быть оÑущеÑтвлён при
-помощи команды ":next". Чтобы править файл, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ начинаетÑÑ Ñ Ñимвола
-"дефиÑ" (-), перед ÑпиÑком файлов необходимо поÑтавить "--".
+файл ...
+Перечень наименований файлов.
+Первый файл из Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ð±ÑƒÐ´ÐµÑ‚ объÑвлен активным и загружен в буфер, а каретка
+уÑтановлена на первой Ñтроке Ñтого буфера. ДоÑтуп к другим файлам из Ñтого
+Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть оÑущеÑтвлён при помощи команды ":next". Чтобы править файл,
+наименование которого начинаетÑÑ Ñ Ñимвола "дефиÑ" (\-), перед перечнем файлов
+необходимо указать Ñимволы "\-\-".
.TP
\-
-Файл будет прочитан из потока Ñтандартного ввода. Команды будут ÑчитыватьÑÑ
-из Ñтандартного потока диагноÑтики (stderr), который должен быть
-терминалом.
-.TP
-\-t {метка}
-Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° и Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÑƒÑ€Ñора завиÑÑÑ‚ от "метки", похожей на метку goto.
-{метка} ищетÑÑ Ð² файле меток, ÑоответÑтвующий файл ÑтановитÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¼, а
-ÑоответÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° иÑполнÑетÑÑ.
-Чаще вÑего иÑпользуетÑÑ Ð² программах на Ñзыке Си, где {метка} может быть именем
-функции.
-Файл, Ñодержащий функцию, ÑтановитÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¼, а курÑор помещаетÑÑ Ð² начало функции.
-См. ":help tag-commands".
-.TP
-\-q [файл ошибок]
-Ðачать работу в режиме быÑтрого иÑправлениÑ.
-При Ñтом ÑчитываетÑÑ [файл ошибок] и Ð¿ÐµÑ€Ð²Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° выводитÑÑ Ð½Ð° Ñкран.
-ЕÑли [файл ошибок] не указан, Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° берётÑÑ Ð¸Ð· Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ 'errorfile'
-(по умолчанию: "AztecC.Err" Ð´Ð»Ñ Amiga, "errors.err" Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… ÑиÑтем).
-К Ñледующим ошибкам можно перейти по команде ":cn".
+ТекÑÑ‚ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ будет Ñчитан из потока Ñтандартного ввода. Команды будут
+ÑчитыватьÑÑ Ð¸Ð· Ñтандартного потока диагноÑтики (stderr), который должен
+предоÑтавлÑÑ‚ÑŒÑÑ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð¾Ð¼.
+.TP
+\-t {индекÑ}
+Файла Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ и Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÐ°Ñ€ÐµÑ‚ÐºÐ¸ завиÑÑÑ‚ от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "индекÑа",
+ÑвлÑющийÑÑ Ñвоего рода меткой goto. ПоиÑк Ñамого {индекÑа} выполнÑетÑÑ Ð² файле
+индекÑов, а ÑопоÑтавленный Ñ Ð½Ð¸Ð¼ файл будет открыт в редакторе и выполнена
+ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ñтим {индекÑом} команда.
+Чаще вÑего Ñтот ÑпоÑоб иÑпользуетÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼ на Ñзыке Си, где {индекÑ} может
+быть наименованием функции.
+Файл, Ñодержащий такую функцию, ÑтановитÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¼, а каретка помещаетÑÑ
+в начало Ñтой функции.
+См. ":help tag\-commands".
+.TP
+\-q [файл результатов]
+Ðачать работу редактора в цикле быÑтрого иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта программ.
+Будет Ñчитан [файл результатов] и отображена Ð¿ÐµÑ€Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ из Ñтого файла.
+ЕÑли [файл результатов] не указан, то его наименование берётÑÑ Ð¸Ð· значениÑ
+параметра 'errorfile' (по умолчанию Ð´Ð»Ñ ÐžÐ¡ Amiga Ñто "AztecC.Err", а Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ…
+ÑиÑтем \[em] "errors.err").
+К Ñледующей запиÑи в файле результатов можно перейти по команде ":cn".
См. ":help quickfix".
.PP
+Программа
.B Vim
-ведёт ÑÐµÐ±Ñ Ð¿Ð¾-разному в завиÑимоÑти от имени команды (иÑполнÑемый файл может
-быть одним и тем же).
+ведёт ÑÐµÐ±Ñ Ð¿Ð¾-разному в завиÑимоÑти от указанной в командной Ñтроке команды
+вызова редактора (иÑполнÑемый файл при Ñтом может быть одним и тем же).
.TP 10
vim
-"Ðормальный" запуÑк, вÑÑ‘ по умолчанию.
+Это "нормальный" запуÑк редактора, вÑÑ‘ по умолчанию.
.TP
ex
-ЗапуÑк в режиме Ex. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° в нормальный режим
-необходимо выполнить команду ":vi". Режим Ex включает
-также ключ "\-e".
+ЗапуÑк редактора в Ex-режиме. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² обычный режим, необходимо
+набрать команду ":vi".
+Ex-режим также может быть активирован через аргумент "\-e".
.TP
view
-ЗапуÑк в режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ". Ð’Ñ‹ будете защищены от Ñлучайной запиÑи
-файла. То же Ñамое можно Ñделать ключом "\-R".
+ЗапуÑк редактора в режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ". Ð’ Ñтом режиме еÑÑ‚ÑŒ некотораÑ
+защита от Ñлучайной перезапиÑи файлов.
+То же Ñамое можно Ñделать через указание аргумента "\-R".
.TP
gvim gview
-ВерÑÐ¸Ñ Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом. ЗапуÑкаетÑÑ Ð² новом окне.
-То же Ñамое можно Ñделать при запуÑке Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ "\-g".
+ЗапуÑк редактора Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом. Ð”Ð»Ñ Ñтого будет открыто новое окно.
+То же Ñамое можно Ñделать при запуÑке Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ "\-g".
+.TP
+evim eview
+Упрощённый вариант редактора Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом. ЗапуÑкаетÑÑ Ð² новом окне.
+То же Ñамое можно Ñделать через аргумент "\-y".
.TP
rvim rview rgvim rgview
-Как и предыдущие команды, но Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми. ÐÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð¿ÑƒÑкать команды оболочки
-или приоÑтанавливать работу
+Как и предыдущие команды, но Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ ограничениÑми в функциональноÑти.
+ÐÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð¿ÑƒÑкать команды оболочки или приоÑтанавливать работу редактора
.B Vim.
-ВмеÑто приÑтавки "r" можно иÑпользовать ключ "\-Z".
-.SH КЛЮЧИ
-Ключи могут быть указаны в любом порÑдке, до или поÑле имён
-файлов. Ключи без аргументов могут быть объединены под одним
-дефиÑом.
+ВмеÑто приÑтавки "r" можно иÑпользовать аргумент командной Ñтроки "\-Z".
+.SH ÐРГУМЕÐТЫ КОМÐÐДÐОЙ СТРОКИ
+Ðргументы могут быть указаны в любом порÑдке, до или поÑле наименований файлов.
+Ðргументы, не требующие значений, могут быть объединены Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ только
+одного дефиÑа.
.TP 12
+[номер]
-Ð’ первом файле курÑор будет помещён на Ñтроку Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером.
-ЕÑли "номер" не указан, курÑор будет помещён на поÑледнюю Ñтроку.
+УÑтановка каретки на [номер] Ñтроки.
+Ð’ первом открытом файле каретка будет уÑтановлена на Ñтроку Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером.
+ЕÑли "номер" не задан, каретка уÑтанавливаетÑÑ Ð½Ð° поÑледней Ñтроке файла.
.TP
+/{шаблон}
-Ð’ первом файле курÑор будет помещён на меÑто первого ÑовпадениÑ
-Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ шаблоном. См. ":help search-pattern" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ
-ÑпиÑка допуÑтимых шаблонов.
+УÑтановка каретки на найденной Ñтроке.
+Ð’ открытом файле каретка будет уÑтановлена в Ñтроке первого ÑовпадениÑ
+Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ шаблоном. См. ":help search\-pattern" Ð´Ð»Ñ Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ Ð´Ð¾Ð¿ÑƒÑтимыми
+шаблонами.
.TP
+{команда}
.TP
\-c {команда}
-{команда} иÑполнÑетÑÑ Ð¿Ð¾Ñле загрузки первого файла как команда Ex.
-ЕÑли {команда} Ñодержит пробелы, то она должна быть заключена в
-двойные кавычки (в завиÑимоÑти от иÑпользуемой оболочки).
-Пример: vim "+set si" main.c
+ИÑполнение указанной {команды}.
+ПоÑле загрузки первого файла будет иÑполнена ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ {команда} как Ex-команда.
+ЕÑли в текÑте {команда} еÑÑ‚ÑŒ пробелы, то она должна быть заключена в
+двойные кавычки (в завиÑимоÑти от иÑпользуемой командной оболочки).
+Пример:
+vim "+set si" main.c
.br
-Примечание: Можно указывать до деÑÑти команд "+" или "\-c".
-.TP
-\-\-cmd {команда}
-Как "\-c", но команда иÑполнÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ обработкой любого файла
-наÑтроек (vimrc).
-Можно указывать до деÑÑти таких команд, незавиÑимо от количеÑтва
-команд "\-c".
+Примечание. Можно указывать до деÑÑти команд "+" или "\-c".
.TP
\-A
-ЕÑли
+ЗапуÑк программы Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ арабÑкой пиÑьменноÑти.
+ЕÑли программа
.B Vim
-был Ñобран Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ арабÑкого Ñзыка Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ файлов,
-набранных Ñправа налево, и Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ арабÑкой клавиатуры,
-Ñтот ключ запуÑкает
+была Ñобрана Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ правки текÑта Ñ Ð½Ð°Ð¿Ð¸Ñанием Ñправа налево
+и Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ клавиатуры Ð´Ð»Ñ Ð°Ñ€Ð°Ð±Ñкого Ñзыка, то будет выполнен запуÑк
+редактора
.B Vim
-в арабÑком режиме, Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ð¾Ð¹ опцией 'arabic'. Ð’ противном
-Ñлучае
+в режиме работы Ñ Ð°Ñ€Ð°Ð±Ñкой пиÑьменноÑтью, Ñ‚. е. уÑтановлен параметр 'arabic'.
+Ð’ противном Ñлучае редактор
.B Vim
-завершает работу Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹.
+завершит работу Ñ Ñообщением об ошибке.
.TP
\-b
-Двоичный режим.
-ПроизводитÑÑ Ð½Ð°Ñтройка некоторых опций, делающих возможной правку
+ЗапуÑк программы в режиме работы Ñ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ данными.
+ПроизводитÑÑ Ð½Ð°Ñтройка некоторых параметров, делающих возможной правку
двоичного или иÑполнÑемого файла.
.TP
\-C
-Режим ÑовмеÑтимоÑти. Включает опцию 'compatible'.
+Работа в варианте ÑовмеÑтимоÑти Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi.
+Будет уÑтановлен параметр 'compatible', и редактор
.B Vim
-будет работать почти как Vi, даже еÑли ÑущеÑтвует файл .vimrc.
+будет работать почти как редактор Vi, даже еÑли ÑущеÑтвует файл ".vimrc".
.TP
\-d
-Режим поиÑка различий.
-Должно быть указано два или три имени файла.
+Режим ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹.
+Может быть указано от двух до воÑьми наименований файлов. Ð’ редакторе
.B Vim
-откроет вÑе файлы и покажет Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ ними
-(как vimdiff(1)).
+будут открыты вÑе файлы и показаны Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ ними (как vimdiff(1)).
.TP
-\-d {уÑтройÑтво}
-Открыть {уÑтройÑтво} Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве терминала (только на Amiga).
+\-d {уÑтройÑтво}, \-dev {уÑтройÑтво}
+ИÑпользовать {уÑтройÑтво} Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ ввода-вывода.
+Открыть {уÑтройÑтво} Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве терминала (только в ОС Amiga).
Пример:
"\-d con:20/30/600/150".
.TP
+\-D
+ЗапуÑк программы в режиме диагноÑтики.
+Переключение в режим отладки при иÑполнении первой команды из командного файла.
+.TP
\-e
-ЗапуÑтить
+ЗапуÑк программы в Ex-режиме.
+Редактор
+.B Vim
+будет работоать в Ex-режиме, тоже, что в командной Ñтроке оболочки набрать
+команду "ex".
+.TP
+\-E
+ЗапуÑк программы в улучшенном Ex-режиме.
+Редактор
.B Vim
-в режиме Ex, как будто иÑполнÑемый файл имеет Ð¸Ð¼Ñ "ex".
+будет работать в улучшенном Ex-режиме, Ñто аналогично набору в командной
+оболочке команды "exim".
.TP
\-f
-Режим активного приложениÑ. ВерÑиÑ
+Режим активного приложениÑ.
+Редактор
.B Vim
-Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом не будет ветвитьÑÑ Ð¸ отключатьÑÑ
-от запуÑтившей её оболочки. Ðа платформе Amiga
+Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом не будет наÑледоватьÑÑ Ð¸ отключатьÑÑ Ð¾Ñ‚ командной
+оболочки, в которой выполнена команда его запуÑка.
+Ðа платформе Amiga редактор
.B Vim
-не будет Ñоздавать новое окно. Этот ключ нужно иÑпользовать,
-когда
+не будет перезапуÑкатьÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ окна. Этот аргумент командной
+Ñтроки нужно иÑпользовать, когда редактор
.B Vim
запуÑкаетÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¾Ð¹, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° ждать завершениÑ
ÑеанÑа правки (например, программа Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ñлектронной почтой).
-Ðа платформе Amiga команды ":sh" и ":!" не будут работать.
-.TP
-\-\-nofork
-Режим активного приложениÑ. ВерÑиÑ
-.B Vim
-Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом не будет ветвитьÑÑ Ð¸ отключатьÑÑ
-от запуÑтившей её оболочки.
+Ðа платформе Amiga в Ñтом Ñлучае команды ":sh" и ":!" не будут работать.
.TP
\-F
-ЕÑли
+ЗапуÑк программы Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ перÑидÑкой пиÑьменноÑти.
+ЕÑли программа
.B Vim
-был Ñобран Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ FKMAP Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ текÑта Ñправа налево
-и наÑтроек клавиатуры Ð´Ð»Ñ Ñзыка фарÑи, Ñтот ключ запуÑкает
+была Ñобрана Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ правки текÑта Ñ Ð½Ð°Ð¿Ð¸Ñанием Ñправа налево
+и Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ клавиатуры Ð´Ð»Ñ Ð¿ÐµÑ€ÑидÑкого Ñзыка, то будет выполнен запуÑк
+редактора
.B Vim
-в режиме фарÑи, иначе говорÑ, Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼Ð¸ опциÑми
-\&'fkmap' и 'rightleft'.
-Ð’ противном Ñлучае
+в режиме работы Ñ Ð¿ÐµÑ€ÑидÑкой пиÑьменноÑтью, Ñ‚. е. уÑтановлены параметры 'fkmap'
+и 'rightleft'.
+Ð’ противном Ñлучае редактор
.B Vim
-завершает работу Ñ Ñообщением об ошибке.
+завершит работу Ñ Ñообщением об ошибке.
+.br
+Примечание. Поддержка перÑидÑкой пиÑьменноÑти была удалена в верÑии 8.1.0932.
.TP
\-g
-ЕÑли
+ЗапуÑк программы Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом.
+ЕÑли программа
.B Vim
-был Ñобран Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ графичеÑкого интерфейÑа, Ñтот ключ
-включает графичеÑкий интерфейÑ. Ð’ противном Ñлучае
+была Ñобрана Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ графичеÑкого интерфейÑа, то будет выполнен запуÑк
+графичеÑкого интерфейÑа пользователÑ.
+Ð’ противном Ñлучае редактор
.B Vim
-завершает работу Ñ Ñообщением об ошибке.
-.TP
-\-h
-Выводит краткую информацию об аргументах и ключах командной Ñтроки.
-ПоÑле Ñтого
-.B Vim
-завершает работу.
+завершит работу Ñ Ñообщением об ошибке.
.TP
\-H
-ЕÑли
+ЗапуÑк программы Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ еврейÑкой пиÑьменноÑти.
+ЕÑли программа
.B Vim
-был Ñобран Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ правки текÑта Ñправа налево
-и наÑтроек клавиатуры Ð´Ð»Ñ Ð¸Ð²Ñ€Ð¸Ñ‚Ð°, Ñтот ключ запуÑкает
+была Ñобрана Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ правки текÑта Ñ Ð½Ð°Ð¿Ð¸Ñанием Ñправа налево
+и Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ клавиатуры Ð´Ð»Ñ ÐµÐ²Ñ€ÐµÐ¹Ñкого Ñзыка, то будет выполнен запуÑк
+редактора
.B Vim
-в режиме иврита, иначе говорÑ, Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼Ð¸ опциÑми 'hkmap' и 'rightleft'.
-Ð’ противном Ñлучае
+в режиме работы Ñ ÐµÐ²Ñ€ÐµÐ¹Ñкой пиÑьменноÑтью, Ñ‚. е. уÑтановлены параметры 'hkmap'
+и 'rightleft'.
+Ð’ противном Ñлучае редактор
.B Vim
-завершает работу Ñ Ñообщением об ошибке.
+завершит работу Ñ Ñообщением об ошибке.
.TP
-\-i {viminfo}
-ЕÑли иÑпользуетÑÑ Ñ„Ð°Ð¹Ð» viminfo, то Ñтот ключ задаёт Ð¸Ð¼Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ файла (вмеÑто
-"~/.viminfo" по умолчанию). Можно также избежать иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° viminfo
-путём ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ "NONE".
-.TP
-\-L
-То же, что и \-r.
+\-i {файл}
+ИÑпользовать в качеÑтве файла подкачки указанный {файл}.
+Через Ñтот аргумент задаётÑÑ Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ðµ viminfo-файла (вмеÑто принÑтого
+по умолчанию ".viminfo"). ЗдеÑÑŒ же можно отключить иÑпользование viminfo-файла
+через указание Ñлова "NONE" (пропиÑными буквами).
.TP
\-l
-Режим Lisp. ВключаютÑÑ Ð¾Ð¿Ñ†Ð¸Ð¸ 'lisp' и 'showmatch'.
+ЗапуÑк программы в режиме Lisp.
+ВыполнÑетÑÑ ÑƒÑтановка параметров 'lisp' и 'showmatch'.
+.TP
+\-L
+То же, что и аргумент командной Ñтроки \-r.
.TP
\-m
-Изменение файлов запрещено. При Ñтом отключаетÑÑ Ð¾Ð¿Ñ†Ð¸Ñ 'write', поÑтому
-запиÑÑŒ файлов ÑтановитÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ð¹.
+Работа без возможноÑти ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.
+ВыполнÑетÑÑ ÑÐ±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° 'write', поÑтому ÑтановитÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ запиÑать
+в файл изменениÑ, внеÑённые в буфер.
.TP
-\-N
-Режим неполной ÑовмеÑтимоÑти. ОтключаетÑÑ 'compatible'.
-.B Vim
-будет работать лучше, но не будет полноÑтью ÑовмеÑтим Ñ Vi, даже еÑли
-отÑутÑтвует файл ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð½Ð°Ñтроек (.vimrc).
+\-M
+Работа без возможноÑти внеÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в текÑÑ‚.
+Параметры 'modifiable' и 'write' будут отключены, так что Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚
+запрещены, и файлы не Ñмогут быть запиÑаны.
+Обратите внимание, что поÑле начала работы редактора, Ñти параметры можно
+включить, чтобы разрешить внеÑение изменений.
.TP
\-n
-Ðе иÑпользовать Ñвоп-файл. ВоÑÑтановление при Ñбое в работе будет невозможно.
+Работа без ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° подкачки.
+Ð’ Ñтом Ñлучае воÑÑтановление при Ñбое в работе редактора будет невозможно.
Удобно Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ файла на очень медленном ноÑителе (например, гибком диÑке).
-То же Ñамое можно Ñделать командой ":set uc=0". Отмена -- ":set uc=200".
+То же Ñамое можно Ñделать командой ":set uc=0". Включение файла подкачки \[em]
+":set uc=200".
+.TP
+\-N
+Работа в варианте неполной ÑовмеÑтимоÑти Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi.
+Будет Ñброшен параметр 'compatible'.
+Редактор
+.B Vim
+будет работать лучше, но не будет полноÑтью ÑовмеÑтим Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi, даже еÑли
+отÑутÑтвует файл начальных наÑтроек (".vimrc").
+.TP
+\-nb
+Ðазначить программу Vim Ñервером редактора Ð´Ð»Ñ Ð˜Ð¡Ð  NetBeans. ПодробноÑти
+Ñмотрите в документации.
.TP
\-o[N]
-Открыть N окон, разделённых по горизонтали. ЕÑли N не указано, то открываетÑÑ
-по одному окну на каждый файл.
+Создать Ð´Ð»Ñ N файлов отдельные окна, раÑположенные по горизонтали.
+ЕÑли N не указано, то ÑоздаётÑÑ Ð¿Ð¾ одному окну на каждый файл.
.TP
\-O[N]
-Открыть N окон, разделённых по вертикали. ЕÑли N не указано, то открываетÑÑ
-по одному окну на каждый файл.
-.TP
-\-R
-Режим "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ". ВключаетÑÑ Ð¾Ð¿Ñ†Ð¸Ñ 'readonly'.
-Файл в буфере доÑтупен Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, но его копию на диÑке нельзÑ
-Ñлучайно перезапиÑать. Ð”Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° необходимо добавить воÑклицательный
-знак к ÑоответÑтвующей команде Ex (например, ":w!").
-Ключ "\-R" подразумевает также, что иÑпользуетÑÑ Ð¸ ключ "\-n" (Ñм. выше).
-ÐžÐ¿Ñ†Ð¸Ñ 'readonly' может быть выключена по команде ":set noro".
-См. ":help 'readonly'".
+Создать Ð´Ð»Ñ N файлов отдельные окна, раÑположенные по вертикали.
+ЕÑли N не указано, то ÑоздаётÑÑ Ð¿Ð¾ одному окну на каждый файл.
+.TP
+\-p[N]
+Создать Ð´Ð»Ñ N файлов отдельные вкладки.
+ЕÑли N не указано, то ÑоздаётÑÑ Ð¿Ð¾ одной вкладке на каждый файл.
+.TP
+\-P {заголовок окна}
+Открыть программу в многодокументном приложении.
+Только Ð´Ð»Ñ Ð“Ð˜ÐŸ в MS Windows. Задаёт заголовок окна родительÑкого приложениÑ.
+ЕÑли возможно, то программа Vim будет запущена внутри окна многодокументного
+приложениÑ. Многодокументное приложение должно иметь указанный {заголовок окна}.
+УбедитеÑÑŒ, что Ñтот {заголовок окна} уникален Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ. Обращаем внимание,
+что Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ функционала вÑÑ‘ ещё не до конца отработана. Внедрение
+программы возможно не во вÑе Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ не поддерживаетÑÑ Ð¼ÐµÐ½ÑŽ окна.
.TP
\-r
-ВывеÑти ÑпиÑок Ñвоп-файлов и информацию об их иÑпользовании Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ.
+Вывод Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² подкачки и завершение работы.
+Будут показаны доÑтупные файлы подкачки и Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± их иÑпользовании
+Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð² Ñлучае ÑбоÑ.
.TP
\-r {файл}
-Режим воÑÑтановлениÑ.
-Ð”Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользован Ñвоп-файл.
-Своп-файл имеет то же имÑ, что и текÑтовый файл, но Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ ".swp".
+ВоÑÑтановление аварийно завершённого ÑеанÑа.
+Ð”Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ Ð² работе будет иÑпользован указанный файл подкачки.
+Файл подкачки имеет то же наименование, что и редактируемый текÑтовый файл,
+но Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ ".swp".
См. ":help recovery".
.TP
+\-R
+Работа в варианте только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.
+Будет уÑтановлен параметр 'readonly'.
+Файл в буфере доÑтупен Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, но его копию на диÑке нельзÑ
+Ñлучайно перезапиÑать. Ð”Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° необходимо добавить воÑклицательный
+знак к ÑоответÑтвующей Ex-команде (например, ":w!").
+При задании аргумента "\-R" также подразумеваетÑÑ, что иÑпользуетÑÑ Ð¸ аргумент
+"\-n" (Ñм. выше).
+Параметр 'readonly' может быть Ñброшен по команде ":set noro".
+См. ":help 'readonly'".
+.TP
\-s
-Тихий режим. Только при запуÑке как "Ex" или еÑли перед "\-s" указан ключ "\-e".
+Тихий режим.
+Только при запуÑке в командной оболочке как программы "ex" или еÑли перед
+аргументом "\-s" указан аргумент "\-e".
+.TP
+\-s {командный файл}
+Считывание команд режима команд из {командного файла}.
+Содержимое файла воÑпринимаетÑÑ Ð² виде команд, как еÑли бы они были набраны
+непоÑредÑтвенно в редакторе.
+То же Ñамое доÑтигаетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ":source! {командный файл}".
+ЕÑли поÑле иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ñех команд из {командного файла} работа редактора
+продолжаетÑÑ, то дальнейший ввод команд и текÑта ожидаетÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹.
+.TP
+\-S {файл}
+ИÑполнение указанного {файла}.
+ПоÑле загрузки в буфер первого файла, будет иÑполнен указанный командный {файл}.
+Это аналогично команде в командной Ñтроке \-c "source {файл}".
+Ðаименование {файла} не может начинатьÑÑ Ñ Ñимвола '\-'.
+ЕÑли не указан {файл}, то будет иÑполнен файл "Session.vim" (Ñто будет работать
+только еÑли аргумент \-S ÑвлÑетÑÑ Ð¿Ð¾Ñледним в командной Ñтроке).
+.TP
+\-T {терминал}
+Ðазначить указанный тип {терминала}.
+Редактору
+.B Vim
+будет передан тип иÑпользуемого терминала.
+Ðеобходимо только в тех ÑитуациÑÑ…, когда автоматичеÑкое определение терминала
+не работает. Ðаименование терминала должно быть извеÑтно редактору
+.B Vim
+(предопределено в редакторе) либо указано в базе termcap или terminfo.
+.TP
+\-u {файл}
+ИÑпользовать Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¹ наÑтройки указанный командный {файл}.
+Ð’Ñе оÑтальные файлы наÑтроек игнорируютÑÑ.
+Удобно Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñпециальных типов файлов.
+Через Ñтот аргумент можно также отключить обработку вÑех файлов начальной
+наÑтройки, иÑпользуйте Ð´Ð»Ñ Ñтого Ñлово "NONE" (пропиÑными буквами).
+См. ":help initialization".
+.TP
+\-U {файл}
+ИÑпользовать Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¹ наÑтройки графичеÑкого интерфейÑа указанный
+командный {файл}.
+Ð’Ñе оÑтальные файлы наÑтроек Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа игнорируютÑÑ.
+Через Ñтот аргумент можно также отключить обработку вÑех файлов наÑтройки
+графичеÑкого интерфейÑа, иÑпользуйте Ð´Ð»Ñ Ñтого Ñлово "NONE" (пропиÑными буквами).
+См. ":help gui\-init".
.TP
-\-s {scriptin}
-СчитываетÑÑ Ñ„Ð°Ð¹Ð» ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ {scriptin}. При Ñтом, Ñодержимое файла воÑпринимаетÑÑ
-в виде команд, как еÑли бы они были набраны на конÑоли.
-То же Ñамое доÑтигаетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ":source! {scriptin}".
-ЕÑли конец файла ÑчитываетÑÑ Ð´Ð¾ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ редактора, то в дальнейшем
-ввод оÑущеÑтвлÑетÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹.
+\-v
+ЗапуÑк программы в режиме Vi.
+Редактор
+.B Vim
+будет работать в режиме редактора Vi, как будто иÑполнÑемый файл называетÑÑ "vi".
+Имеет ÑмыÑл только еÑли иÑполнÑемый файл называетÑÑ "ex".
+.TP
+\-V[N]
+Режим подробного вывода.
+Будут выводитьÑÑ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ том, какие командные файлы иÑполнÑÑŽÑ‚ÑÑ, и какаÑ
+Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑчитываетÑÑ Ð¸ запиÑываетÑÑ Ð² viminfo-файле. ÐеобÑзательное чиÑло N
+задаёт уровень детализации информации. По умолчанию Ñто значение уÑтановлено
+равным 10.
+.TP
+\-V[N]{файл}
+Ðналогично аргументу \-V, а также выполнÑетÑÑ ÑƒÑтановка параметру 'verbosefile'
+значение {файл}. Как результат, ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ запиÑыватьÑÑ Ð² {файл}, а не
+отображатьÑÑ Ð½Ð° Ñкране. Ðаименование {файла} не может начинатьÑÑ Ñ ÐºÐ°ÐºÐ¾Ð¹-либо
+цифры.
+.TP
+\-w{чиÑло}
+Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° 'window' будет уÑтановлено значение, равное указанному {чиÑлу}.
+.TP
+\-w {файл}
+Добавление вÑех введённых команд в {файл}.
+Ð’Ñе Ñимволы, введённые Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹ вплоть до момента Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹
+редактора, запиÑываютÑÑ Ð² {файл}.
+Удобно в том Ñлучае, когда вы хотите Ñоздать командный файл Ð´Ð»Ñ Ð¿Ð¾Ñледующего
+его иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² командной Ñтроке "vim \-s" или в команде ":source!".
+ЕÑли {файл} уже ÑущеÑтвует, то набранный текÑÑ‚ будет добавлÑÑŽÑ‚ÑÑ Ð² конец файла.
+.TP
+\-W {файл}
+ЗапиÑÑŒ вÑех введённых команд в {файл}.
+Как аргумент "\-w", но ÑущеÑтвующий {файл} будет перезапиÑан.
.TP
-\-T {terminal}
-Сообщает
-.B Vim
-тип иÑпользуемого терминала. Ðеобходимо только в тех ÑитуациÑÑ…, когда
-автоматичеÑкое определение терминала не работает. Ð˜Ð¼Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð° должно быть
-извеÑтно
+\-x
+Редактирование шифрованных файлов.
+ЕÑли редактор
.B Vim
-(вÑтроено в него) или определено в файлах termcap или terminfo.
-.TP
-\-u {vimrc}
-ИÑпользовать команды из файла ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ {vimrc} Ð´Ð»Ñ Ð½Ð°Ñтройки.
-Ð’Ñе оÑтальные файлы наÑтроек пропуÑкаютÑÑ.
-Удобно Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñпециальных типов файлов.
-Чтобы избежать иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñценариев наÑтроек вообще, можно иÑпользовать
-Ð¸Ð¼Ñ "NONE". См. ":help initialization".
+был Ñобран Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ шифрованиÑ, то выполнÑÑ‚ÑŒ шифрование при запиÑи файлов.
+Будет выдано приглашение ввеÑти пароль.
.TP
-\-U {gvimrc}
-ИÑпользовать команды из файла ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ {gvimrc} Ð´Ð»Ñ Ð½Ð°Ñтройки графичеÑкого
-интерфейÑа.
-Ð’Ñе оÑтальные файлы наÑтроек Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа пропуÑкаютÑÑ.
-Чтобы избежать иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñценариев наÑтроек графичеÑкого интерфейÑа вообще,
-можно иÑпользовать Ð¸Ð¼Ñ "NONE". См. ":help gui-init".
-.TP
-\-V
-"Болтливый" режим. Выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ том, какие файлы читаютÑÑ, и о
-чтении-запиÑи файла viminfo.
+\-X
+ЗапуÑк программы без Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº X-Ñерверу.
+УÑкорÑет загрузку в конÑоли, но делает невозможным иÑпользование заголовка окна
+и буфера обмена.
.TP
-\-v
-ЗапуÑтить
+\-y
+Работа в упрощённом варианте.
+Редактор
+.B Vim
+будет работать в упрощённом варианте, как будто иÑполнÑемый файл имеет название
+"evim" или "eview".
+Поведение редактора
.B Vim
-в режиме Vi, как будто иÑполнÑемый файл имеет Ð¸Ð¼Ñ "vi". Имеет ÑмыÑл только еÑли
-иÑполнÑемый файл имеет Ð¸Ð¼Ñ "ex".
+будет походить на редакторы, Ñозданные по безрежимному принципу работы.
.TP
-\-w {scriptout}
-Ð’Ñе Ñимволы, введённые Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹ вплоть до момента Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹,
-запиÑываютÑÑ Ð² файл {scriptout}.
-Удобно в том Ñлучае, когда вы хотите Ñоздать файл ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ñледующего
-иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ "vim \-s" или ":source!". ЕÑли файл {scriptout} уже ÑущеÑтвует,
-то новые Ñимволы будут добавлÑÑŽÑ‚ÑÑ Ð² конец файла.
+\-Z
+Работа Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸ÐµÐ¼ функциональноÑти.
+Работает так же, как и запуÑк иÑполнÑемого файла, наименование которого
+начинаетÑÑ Ñ Ð±ÑƒÐºÐ²Ñ‹ "r".
.TP
-\-W {scriptout}
-Как "\-w", но уже ÑущеÑтвующий файл будет перезапиÑан.
+\-\-
+Означает окончание ввода аргументов.
+Ð’Ñе что указано поÑле Ñтого в командной Ñтроке, ÑчитаетÑÑ Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñми файлов.
+Может быть иÑпользовано Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ файлов, Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… начинаютÑÑ Ñ
+дефиÑа.
.TP
-\-x
-Шифровать запиÑываемые файлы. Будет выдано приглашение ввеÑти пароль.
+\-\-clean
+При работе редактора не иÑпользовать пользовательÑкую конфигурацию (файлы vimrc,
+подключаемые модули и Ñ‚. п.). Полезно Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸, что проблема в работе
+редактора не возникнет Ñ Ð¿Ñ€ÐµÐ´ÑƒÑтановленными наÑтройками программы Vim.
.TP
-\-X
-Ðе подключатьÑÑ Ðº X-Ñерверу. УÑкорÑет загрузку на конÑоли, но делает невозможным
-иÑпользование заголовка окна и буфера обмена.
+\-\-cmd {команда}
+Как аргумент "\-c", но команда иÑполнÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ обработкой любого файла
+наÑтроек (vimrc).
+Можно указывать до деÑÑти таких команд, незавиÑимо от количеÑтва команд "\-c".
.TP
-\-Z
-Ограниченный режим. Работает так же, как и программы, начинающиеÑÑ Ñ "r".
+\-\-echo\-wid
+Только Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа GTK. Отобразить идентификатор окна
+(Window ID) в поток Ñтандартного вывода (stdout).
+.TP
+\-\-gui\-dialog\-file {файл}
+При работе редактора в графичеÑком интерфейÑе пользователÑ, заголовок
+и Ñообщение диалогового окна будут запиÑаны в {файл} без Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Ñкране.
+ЕÑли указанный {файл} не ÑущеÑтвует, то он будет Ñоздан, а при его наличии
+ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ допиÑыватьÑÑ Ð² Ñтот {файл}. Данный аргумент полезен только длÑ
+теÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ редактора, чтобы избежать оÑтановки программы, так как
+отображаемое диалоговое окно может быть Ñкрыто. ЕÑли не поддерживаетÑÑ
+графичеÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, то Ñтот аргумент игнорируетÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¾Ð¹.
+.TP
+\-\-help, \-h, \-?
+Будет показана ÐºÑ€Ð°Ñ‚ÐºÐ°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± аргументах и параметрах командной Ñтроки.
+ПоÑле Ñтого редактор
+.B Vim
+завершит работу.
+.TP
+\-\-literal
+Данный аргумент указывает, что требуетÑÑ Ð²Ð¾Ñпринимать Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²
+буквально, и не выполнÑÑ‚ÑŒ разбор подÑтановочных Ñимволов.
+Этот аргумент командной Ñтроки неприменим в Unix-подобных ÑиÑтемах, где разбор
+подÑтановочных Ñимволов выполнÑетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ оболочкой.
+.TP
+\-\-log {файл}
+Будет выполнена запиÑÑŒ протокола работы Ñ Ñтапа инициализации программы.
+ЕÑли при Ñборке программы
+.B Vim
+были включены компоненты "eval" и "channel", будет выполнÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ
+работы Ñ Ñамой ранней Ñтадии запуÑка программы, а журнал запиÑыватьÑÑ Ð² {файл}.
+Это работает аналогично вызову функции
+.I ch_logfile({filename}, 'ao')
.TP
-\-\-
-Конец ключей. Ð’Ñе оÑтальные аргументы раÑÑматриваютÑÑ ÐºÐ°Ðº имена файлов.
-Может быть иÑпользовано Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ файлов, имена которых начинаютÑÑ Ñ Ð´ÐµÑ„Ð¸Ñа.
+\-\-nofork
+Режим активного приложениÑ.
+Редактор
+.B Vim
+Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом не будет наÑледоватьÑÑ Ð¸ отключатьÑÑ
+от командной оболочки, в которой выполнена команда его запуÑка.
.TP
-\-\-help
-ВывеÑти краткую Ñправку и завершить работу. То же, что и "\-h".
+\-\-noplugin
+Будет выполнен запуÑк программы без загрузки внешних подключаемых модулей.
+Это же подразумеваетÑÑ Ð¿Ñ€Ð¸ указании аргумента \-u NONE.
.TP
-\-\-version
-ВывеÑти информацию о верÑии программы и завершить работу.
+\-\-not\-a\-term
+Ðе Ñообщать об отÑутÑтвии терминала Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°-вывода.
+Через Ñтот аргумент указываетÑÑ, что операции ввода-вывода оÑущеÑтвлÑÑŽÑ‚ÑÑ Ð½Ðµ
+на терминал. Это позволÑет избежать предупреждающего ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ двухÑекундной
+задержки, которые могли бы возникнуть.
.TP
\-\-remote
-ПодключитьÑÑ Ðº Ñерверу Vim и заÑтавить его править файлы, указанные в
-поÑледующих аргументах. ЕÑли Ñервер не найден, выводитÑÑ Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ,
-а файлы правÑÑ‚ÑÑ Ð² меÑтной копии Vim.
+Будет выполнено подключение к Vim-Ñерверу и передача Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸ файлов,
+указанных в поÑледующих аргументах. ЕÑли Ñервер не найден, выводитÑÑ
+предупреждение, а правка файлов выполнÑетÑÑ Ð² текущей копии редактора Vim.
.TP
\-\-remote\-expr {выражение}
-ПодключитьÑÑ Ðº Ñерверу Vim и вычиÑлить на нём указанное {выражение}.
+Будет выполнено подключение к Vim-Ñерверу и передача указанного {выражение} длÑ
+вычиÑлениÑ.
Результат вычиÑÐ»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ выведен в поток Ñтандартного вывода (stdout).
.TP
-\-\-remote\-send {ключи}
-ПодключитьÑÑ Ðº Ñерверу Vim и передать ему указанные {ключи}.
+\-\-remote\-send {код клавиши}
+Будет выполнено подключение к Vim-Ñерверу и передача указанных {кодов клавиш}.
.TP
\-\-remote\-silent
Как "\-\-remote", но без вывода предупреждениÑ, еÑли Ñервер не найден.
.TP
\-\-remote\-wait
-Как "\-\-remote", но Vim не будет завершать работу до тех пор, пока не будет
-выполнена правка вÑех файлов.
+Как "\-\-remote", но редактор Vim не будет завершать работу до тех пор,
+пока не будет выполнена правка вÑех файлов.
.TP
\-\-remote\-wait\-silent
Как "\-\-remote\-wait", но без вывода предупреждениÑ, еÑли Ñервер не найден.
.TP
\-\-serverlist
-ВывеÑти ÑпиÑок вÑех доÑтупных Ñерверов Vim.
+Будет выведен перечень вÑех доÑтупных Vim-Ñерверов.
.TP
-\-\-servername {имÑ}
-ИÑпользовать указанное {имÑ} в качеÑтве имени Ñервера. ЕÑли ключ
-"\-\-remote" не указан, то {имÑ} приÑваиваетÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ копии Vim,
-в противном Ñлучае указывает на Ð¸Ð¼Ñ Ñервера, к которому Ñледует
-подключитьÑÑ.
+\-\-servername {название}
+ИÑпользовать указанное {название} в качеÑтве Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñервера. ЕÑли аргумент
+"\-\-remote" не указан, то {название} приÑваиваетÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ копии редактора Vim,
+в противном Ñлучае указывает на Ñервер, к которому Ñледует подключитьÑÑ.
.TP
\-\-socketid {id}
-Только Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа GTK: иÑпользовать механизм GtkPlug длÑ
-запуÑка gvim в отдельном окне.
+Только Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа GTK. Будет иÑпользован механизм GtkPlug длÑ
+запуÑка редактора gVim в отдельном окне.
.TP
-\-\-echo\-wid
-Только Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа GTK: вывеÑти идентификатор окна (Window ID)
-в поток Ñтандартного вывода (stdout).
-.SH ВСТРОЕÐÐÐЯ СПРÐВКÐ
-Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°, наберите команду ":help".
-Введите ":help тема", чтобы получить Ñправку по конкретной теме.
-Ðапример, команда ":help ZZ" выведет информацию о команде "ZZ".
-ИÑпользуйте <Tab> и CTRL-D Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого дополнениÑ
-названий тем (":help cmdline-completion").
-Ð”Ð»Ñ Ð±Ñ‹Ñтрого Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñправочнику иÑпользуютÑÑ Ð¼ÐµÑ‚ÐºÐ¸ (что-то
+\-\-startuptime {файл}
+Будет выполнена запиÑÑŒ хронометража запуÑка программы в {файл}.
+.TP
+\-\-ttyfail
+Будт Ñразу же завершена работа, еÑли ввод-вывод получен не Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð° (tty).
+.TP
+\-\-version
+Будет выведена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ верÑии программы и завершена работа.
+.TP
+\-\-windowid {ИД}
+Только Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа в MS Windows. Редактор gVim будет
+иÑпользовать окно Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ {ИД} в качеÑтве родительÑкого, чтобы попытатьÑÑ
+выполнить запуÑк внутри Ñтого окна.
+.SH ВСТРОЕÐÐÐЯ ДОКУМЕÐТÐЦИЯ
+Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° работы Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸ÐµÐ¹, наберите в редакторе
+.B Vim
+команду ":help".
+Введите ":help тема", чтобы получить Ñправку по интереÑующей теме.
+Ðапример, по команде ":help ZZ" будет выведена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ команде "ZZ".
+ИÑпользуйте клавиши <TAB> и CTRL+D Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки нужного Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ¼Ñ‹
+(Ñм. ":help cmdline\-completion").
+Ð”Ð»Ñ Ð±Ñ‹Ñтрого Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ документации иÑпользуютÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ‹ (что-то
вроде гипертекÑтовых ÑÑылок, Ñм. ":help"). Таким образом можно
-проÑматривать вÑе файлы Ñправки, например ":help syntax.txt".
+переходить от одного файла документации к другому, например, ":help syntax.txt".
.SH ФÐЙЛЫ
.TP 15
-/usr/local/lib/vim/doc/*.txt
-Файлы Ñправочника
+/usr/local/share/vim/vim??/doc/*.txt
+Файлы документации редактора
.B Vim.
-См. ":help doc-file-list" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑпиÑка.
+См. ":help doc\-file\-list" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².
+.br
+ЗдеÑÑŒ и далее
+.I "vim??"
+означает Ñокращённую запиÑÑŒ номера верÑии, например, vim91 Ð´Ð»Ñ Ð²ÐµÑ€Ñии редактора
+.B Vim 9.1
.TP
-/usr/local/lib/vim/doc/tags
-Файл меток, иÑпользуемый Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка информации в файлах Ñправки.
+/usr/local/share/vim/vim??/doc/tags
+Файл индекÑов, иÑпользуемый Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка информации в файлах документации.
.TP
-/usr/local/lib/vim/syntax/syntax.vim
-СиÑтемные наÑтройки ÑинтакÑиÑа.
+/usr/local/share/vim/vim??/syntax/syntax.vim
+ОбщеÑиÑтемные наÑтройки раÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¸ подÑветки ÑинтакÑиÑа.
.TP
-/usr/local/lib/vim/syntax/*.vim
-Файлы ÑинтакÑиÑа Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñзыков.
+/usr/local/share/vim/vim??/syntax/*.vim
+Файлы раÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¸ подÑветки ÑинтакÑиÑа Ð´Ð»Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… Ñзыков программированиÑ.
.TP
-/usr/local/lib/vim/vimrc
-СиÑтемные наÑтройки
+/usr/local/share/vim/vimrc
+ОбщеÑиÑтемный файл начальной наÑтройки Ð´Ð»Ñ ÐºÐ¾Ð½Ñольного редактора
.B Vim.
.TP
-/usr/local/lib/vim/gvimrc
-СиÑтемный наÑтройки графичеÑкого интерфейÑа.
+~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc
+ПользовательÑкие файлы начальной наÑтройки Ð´Ð»Ñ ÐºÐ¾Ð½Ñольного редактора
+.B Vim
+(будет иÑпользован первый найденный файл из указанных).
+.TP
+/usr/local/share/vim/gvimrc
+ОбщеÑиÑтемный файл начальной наÑтройки Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким интерфейÑом
+.B gVim.
+.TP
+~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
+ПользовательÑкие файлы начальной наÑтройки Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑким
+интерфейÑом
+.B gVim
+(будет иÑпользован первый найденный файл из указанных).
.TP
-/usr/local/lib/vim/optwin.vim
-Сценарий, иÑпользуемый при выполнении команды ":options".
-Хороший ÑпоÑоб проÑматривать и изменÑÑ‚ÑŒ наÑтройки.
+/usr/local/share/vim/vim??/optwin.vim
+Командный файл, иÑпользуемый при выполнении команды ":options".
+По Ñтой команде предоÑтавлÑетÑÑ ÑƒÐ´Ð¾Ð±Ð½Ñ‹Ð¹ ÑпоÑоб проÑмотра и Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð°Ñтроек.
.TP
-/usr/local/lib/vim/menu.vim
-СиÑтемные наÑтройки меню Ð´Ð»Ñ gvim.
+/usr/local/share/vim/vim??/menu.vim
+СиÑтемные наÑтройки меню Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа редактора
+.B gVim.
.TP
-/usr/local/lib/vim/bugreport.vim
-Сценарий Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ñ‡Ñ‘Ñ‚Ð° об обнаруженных глюках. См. ":help bugs".
+/usr/local/share/vim/vim??/bugreport.vim
+Командный файл Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ñ‡Ñ‘Ñ‚Ð° об обнаруженных ошибках. См. ":help bugs".
.TP
-/usr/local/lib/vim/filetype.vim
-Сценарий Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° файла по имени. См. ":help 'filetype'".
+/usr/local/share/vim/vim??/filetype.vim
+Командный файл Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð² файлов по наименованию.
+См. ":help 'filetype'".
.TP
-/usr/local/lib/vim/scripts.vim
-Сценарий Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° файла по Ñодержимому. См. ":help 'filetype'".
+/usr/local/share/vim/vim??/scripts.vim
+Командный файл Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð² файлов по Ñодержимому.
+См. ":help 'filetype'".
.TP
-/usr/local/lib/vim/print/*.ps
-Файлы Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ PostScript.
+/usr/local/share/vim/vim??/print/*.ps
+Файлы, иÑпользуемые Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ через Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ PostScript.
.PP
-Более ÑÐ²ÐµÐ¶Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ -- на Ñайте VIM:
+Ð’ÑÑŽ поÑледнюю информацию о редакторе можно получить на веб-Ñтранице VIM:
.br
<URL:http://www.vim.org/>
-.SH СМОТРИ ТÐКЖЕ
+.SH СМОТРИТЕ ТÐКЖЕ
vimtutor(1)
.SH ÐВТОРЫ
-Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ
+Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ редактора
.B Vim
-Ñоздана Брамом Мооленааром (Bram Moolenaar), которому помогает огромное
-количеÑтво людей. См. ":help credits" в
+была Ñоздана Брамом Моленаром (Bram Moolenaar), которому помогало огромное
+количеÑтво людей. См. ":help credits" в редакторе
.B Vim.
.br
+Редактор
.B Vim
базируетÑÑ Ð½Ð° коде редактора Stevie, напиÑанного Тимом ТомпÑоном (Tim Thompson),
Тони ЭндрюÑом (Tony Andrews) и Г. Р. (Фредом) Уолтером (G.R. (Fred) Walter).
-Однако, в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð² Vim почти не оÑталоÑÑŒ ничего от иÑторичеÑкого кода
-его предшеÑтвенника.
+Однако, в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð² программе Vim почти ничего не оÑталоÑÑŒ
+от иÑторичеÑкого кода его предшеÑтвенника.
.br
-РуÑÑÐºÐ°Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ
+РуÑÑÐºÐ°Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð°
.B Vim
выполнÑетÑÑ Ð² рамках проекта "РуВим",
-Ñм. <URL:http://sourceforge.net/projects/ruvim/>.
-.SH ГЛЮКИ
+Ñм. <URL:https://github.com/restorerz/ruvim/>.
+.SH ОШИБКИ
Скорее вÑего еÑÑ‚ÑŒ.
-См. ":help todo" -- ÑпиÑок извеÑтных проблем.
+См. ":help todo" \[em] перечень извеÑтных ошибок в работе.
.PP
-Заметим, что многие вещи, которые ÑчитаютÑÑ Ð³Ð»ÑŽÐºÐ°Ð¼Ð¸, на Ñамом деле
-ÑвлÑÑŽÑ‚ÑÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð¼ Ñлишком полного воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Vi.
+Заметим, что многие вещи, которые ÑчитаютÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸, на Ñамом деле
+ÑвлÑÑŽÑ‚ÑÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð¼ Ñлишком полного воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° Vi.
ЕÑли вы думаете, что что-то ÑвлÑетÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ только потому, что
"Vi делает Ñто по-другому", внимательно прочитайте файл vi_diff.txt
-(или наберите ":help vi_diff.txt" в Vim) и иÑпользуйте опции 'compatible'
-и 'cpoptions'.
+(или наберите ":help vi_diff.txt" в редакторе Vim) и поÑмотрите параметры
+ 'compatible' и 'cpoptions'.
diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1
index a180a62..efef7bb 100644
--- a/runtime/doc/vim.1
+++ b/runtime/doc/vim.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "2024 Jun 04"
+.TH VIM 1 "2024 Aug 12"
.SH NAME
vim \- Vi IMproved, a programmer's text editor
.SH SYNOPSIS
@@ -150,18 +150,6 @@ Example: vim "+set si" main.c
.br
Note: You can use up to 10 "+" or "\-c" commands.
.TP
-\-S {file}
-{file} will be sourced after the first file has been read.
-This is equivalent to \-c "source {file}".
-{file} cannot start with '\-'.
-If {file} is omitted "Session.vim" is used (only works when \-S is the last
-argument).
-.TP
-\-\-cmd {command}
-Like using "\-c", but the command is executed just before
-processing any vimrc file.
-You can use up to 10 of these commands, independently from "\-c" commands.
-.TP
\-A
If
.B Vim
@@ -224,11 +212,6 @@ is executed by a program that will wait for the edit
session to finish (e.g. mail).
On the Amiga the ":sh" and ":!" commands will not work.
.TP
-\-\-nofork
-Foreground. For the GUI version,
-.B Vim
-will not fork and detach from the shell it was started in.
-.TP
\-F
If
.B Vim
@@ -239,6 +222,8 @@ in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
Otherwise an error message is given and
.B Vim
aborts.
+.br
+Note: Farsi support has been removed in patch 8.1.0932.
.TP
\-g
If
@@ -248,18 +233,6 @@ If no GUI support was compiled in, an error message is given and
.B Vim
aborts.
.TP
-\-\-gui-dialog-file {name}
-When using the GUI, instead of showing a dialog, write the title and message of
-the dialog to file {name}. The file is created or appended to. Only useful
-for testing, to avoid that the test gets stuck on a dialog that can't be seen.
-Without the GUI the argument is ignored.
-.TP
-\-\-help, \-h, \-?
-Give a bit of help about the command line arguments and options.
-After this
-.B Vim
-exits.
-.TP
\-H
If
.B Vim
@@ -277,13 +250,13 @@ instead of the default "~/.viminfo".
This can also be used to skip the use of the .viminfo file, by giving the name
"NONE".
.TP
-\-L
-Same as \-r.
-.TP
\-l
Lisp mode.
Sets the 'lisp' and 'showmatch' options on.
.TP
+\-L
+Same as \-r.
+.TP
\-m
Modifying files is disabled.
Resets the 'write' option.
@@ -294,13 +267,6 @@ Modifications not allowed. The 'modifiable' and 'write' options will be unset,
so that changes are not allowed and files can not be written. Note that these
options can be set to enable making modifications.
.TP
-\-N
-No-compatible mode. Resets the 'compatible' option.
-This will make
-.B Vim
-behave a bit better, but less Vi compatible, even though a .vimrc file does
-not exist.
-.TP
\-n
No swap file will be used.
Recovery after a crash will be impossible.
@@ -308,6 +274,13 @@ Handy if you want to edit a file on a very slow medium (e.g. floppy).
Can also be done with ":set uc=0".
Can be undone with ":set uc=200".
.TP
+\-N
+No-compatible mode. Resets the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
\-nb
Become an editor server for NetBeans. See the docs for details.
.TP
@@ -330,6 +303,16 @@ the window title of the parent application. Make sure that it is specific
enough. Note that the implementation is still primitive. It won't work with
all applications and the menu doesn't work.
.TP
+\-r
+List swap files, with information about using them for recovery.
+.TP
+\-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
\-R
Read-only mode.
The 'readonly' option will be set.
@@ -341,16 +324,6 @@ The \-R option also implies the \-n option (see above).
The 'readonly' option can be reset with ":set noro".
See ":help 'readonly'".
.TP
-\-r
-List swap files, with information about using them for recovery.
-.TP
-\-r {file}
-Recovery mode.
-The swap file is used to recover a crashed editing session.
-The swap file is a file with the same filename as the text file with ".swp"
-appended.
-See ":help recovery".
-.TP
\-s
Silent mode. Only when started as "Ex" or when the "\-e" option was given
before the "\-s" option.
@@ -362,6 +335,13 @@ The same can be done with the command ":source! {scriptin}".
If the end of the file is reached before the editor exits, further characters
are read from the keyboard.
.TP
+\-S {file}
+{file} will be sourced after the first file has been read.
+This is equivalent to \-c "source {file}".
+{file} cannot start with '\-'.
+If {file} is omitted "Session.vim" is used (only works when \-S is the last
+argument).
+.TP
\-T {terminal}
Tells
.B Vim
@@ -371,16 +351,6 @@ Should be a terminal known to
.B Vim
(builtin) or defined in the termcap or terminfo file.
.TP
-\-\-not-a-term
-Tells
-.B Vim
-that the user knows that the input and/or output is not connected to a
-terminal. This will avoid the warning and the two second delay that would
-happen.
-.TP
-\-\-ttyfail
-When stdin or stdout is not a a terminal (tty) then exit right away.
-.TP
\-u {vimrc}
Use the commands in the file {vimrc} for initializations.
All the other initializations are skipped.
@@ -394,6 +364,12 @@ All the other GUI initializations are skipped.
It can also be used to skip all GUI initializations by giving the name "NONE".
See ":help gui\-init" within vim for more details.
.TP
+\-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi". This only has effect
+when the executable is called "ex".
+.TP
\-V[N]
Verbose. Give messages about which files are sourced and for reading and
writing a viminfo file. The optional number N is the value for 'verbose'.
@@ -404,20 +380,6 @@ Like \-V and set 'verbosefile' to {filename}. The result is that messages are
not displayed but written to the file {filename}. {filename} must not start
with a digit.
.TP
-\-\-log {filename}
-If
-.B Vim
-has been compiled with eval and channel feature, start logging and write
-entries to {filename}. This works like calling
-.I ch_logfile({filename}, 'ao')
-very early during startup.
-.TP
-\-v
-Start
-.B Vim
-in Vi mode, just like the executable was called "vi". This only has effect
-when the executable is called "ex".
-.TP
\-w{number}
Set the 'window' option to {number}.
.TP
@@ -433,7 +395,10 @@ If the {scriptout} file exists, characters are appended.
Like \-w, but an existing file is overwritten.
.TP
\-x
-Use encryption when writing files. Will prompt for a crypt key.
+If
+.B Vim
+has been compiled with encryption support, use encryption when writing files.
+Will prompt for a crypt key.
.TP
\-X
Don't connect to the X server. Shortens startup time in a terminal, but the
@@ -459,16 +424,53 @@ This can be used to edit a filename that starts with a '\-'.
Do not use any personal configuration (vimrc, plugins, etc.). Useful to see if
a problem reproduces with a clean Vim setup.
.TP
+\-\-cmd {command}
+Like using "\-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "\-c" commands.
+.TP
\-\-echo\-wid
GTK GUI only: Echo the Window ID on stdout.
.TP
+\-\-gui\-dialog\-file {name}
+When using the GUI, instead of showing a dialog, write the title and message of
+the dialog to file {name}. The file is created or appended to. Only useful
+for testing, to avoid that the test gets stuck on a dialog that can't be seen.
+Without the GUI the argument is ignored.
+.TP
+\-\-help, \-h, \-?
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
\-\-literal
Take file name arguments literally, do not expand wildcards. This has no
effect on Unix where the shell expands wildcards.
.TP
+\-\-log {filename}
+If
+.B Vim
+has been compiled with eval and channel feature, start logging and write
+entries to {filename}. This works like calling
+.I ch_logfile({filename}, 'ao')
+very early during startup.
+.TP
+\-\-nofork
+Foreground. For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
\-\-noplugin
Skip loading plugins. Implied by \-u NONE.
.TP
+\-\-not\-a\-term
+Tells
+.B Vim
+that the user knows that the input and/or output is not connected to a
+terminal. This will avoid the warning and the two second delay that would
+happen.
+.TP
\-\-remote
Connect to a Vim server and make it edit the files given in the rest of the
arguments. If no server is found a warning is given and the files are edited
@@ -497,16 +499,19 @@ Use {name} as the server name. Used for the current Vim, unless used with a
\-\-remote argument, then it's the name of the server to connect to.
.TP
\-\-socketid {id}
-GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+GTK GUI only: Use the GtkPlug mechanism to run gVim in another window.
.TP
\-\-startuptime {file}
During startup write timing messages to the file {fname}.
.TP
+\-\-ttyfail
+When stdin or stdout is not a a terminal (tty) then exit right away.
+.TP
\-\-version
Print version information and exit.
.TP
\-\-windowid {id}
-Win32 GUI only: Make gvim try to use the window {id} as a parent, so that it
+Win32 GUI only: Make gVim try to use the window {id} as a parent, so that it
runs inside that window.
.SH ON-LINE HELP
Type ":help" in
@@ -554,13 +559,16 @@ initializations (first one found is used).
System wide gvim initializations.
.TP
~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
-Your personal gvim initializations (first one found is used).
+Your personal
+.B gVim
+initializations (first one found is used).
.TP
/usr/local/share/vim/vim??/optwin.vim
Script used for the ":options" command, a nice way to view and set options.
.TP
/usr/local/share/vim/vim??/menu.vim
-System wide menu initializations for gvim.
+System wide menu initializations for
+.B gVim.
.TP
/usr/local/share/vim/vim??/bugreport.vim
Script to generate a bug report. See ":help bugs".
diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
index 4ce444e..ce1cc63 100644
--- a/runtime/doc/vim.man
+++ b/runtime/doc/vim.man
@@ -1,7 +1,5 @@
VIM(1) General Commands Manual VIM(1)
-
-
NAME
vim - Vi IMproved, a programmer's text editor
@@ -113,202 +111,170 @@ OPTIONS
vim "+set si" main.c
Note: You can use up to 10 "+" or "-c" commands.
- -S {file} {file} will be sourced after the first file has been read.
- This is equivalent to -c "source {file}". {file} cannot
- start with '-'. If {file} is omitted "Session.vim" is used
- (only works when -S is the last argument).
-
- --cmd {command}
- Like using "-c", but the command is executed just before
- processing any vimrc file. You can use up to 10 of these
- commands, independently from "-c" commands.
-
- -A If Vim has been compiled with ARABIC support for editing
- right-to-left oriented files and Arabic keyboard mapping,
- this option starts Vim in Arabic mode, i.e. 'arabic' is
+ -A If Vim has been compiled with ARABIC support for editing
+ right-to-left oriented files and Arabic keyboard mapping,
+ this option starts Vim in Arabic mode, i.e. 'arabic' is
set. Otherwise an error message is given and Vim aborts.
- -b Binary mode. A few options will be set that makes it posâ€
+ -b Binary mode. A few options will be set that makes it posâ€
sible to edit a binary or executable file.
- -C Compatible. Set the 'compatible' option. This will make
- Vim behave mostly like Vi, even though a .vimrc file exâ€
+ -C Compatible. Set the 'compatible' option. This will make
+ Vim behave mostly like Vi, even though a .vimrc file exâ€
ists.
-d Start in diff mode. There should between two to eight file
- name arguments. Vim will open all the files and show difâ€
+ name arguments. Vim will open all the files and show difâ€
ferences between them. Works like vimdiff(1).
-d {device}, -dev {device}
- Open {device} for use as a terminal. Only on the Amiga.
+ Open {device} for use as a terminal. Only on the Amiga.
Example: "-d con:20/30/600/150".
- -D Debugging. Go to debugging mode when executing the first
+ -D Debugging. Go to debugging mode when executing the first
command from a script.
- -e Start Vim in Ex mode, just like the executable was called
+ -e Start Vim in Ex mode, just like the executable was called
"ex".
-E Start Vim in improved Ex mode, just like the executable was
called "exim".
-f Foreground. For the GUI version, Vim will not fork and deâ€
- tach from the shell it was started in. On the Amiga, Vim
- is not restarted to open a new window. This option should
- be used when Vim is executed by a program that will wait
- for the edit session to finish (e.g. mail). On the Amiga
+ tach from the shell it was started in. On the Amiga, Vim
+ is not restarted to open a new window. This option should
+ be used when Vim is executed by a program that will wait
+ for the edit session to finish (e.g. mail). On the Amiga
the ":sh" and ":!" commands will not work.
- --nofork Foreground. For the GUI version, Vim will not fork and deâ€
- tach from the shell it was started in.
-
-F If Vim has been compiled with FKMAP support for editing
right-to-left oriented files and Farsi keyboard mapping,
this option starts Vim in Farsi mode, i.e. 'fkmap' and
'rightleft' are set. Otherwise an error message is given
and Vim aborts.
+ Note: Farsi support has been removed in patch 8.1.0932.
-g If Vim has been compiled with GUI support, this option enâ€
ables the GUI. If no GUI support was compiled in, an error
message is given and Vim aborts.
- --gui-dialog-file {name}
- When using the GUI, instead of showing a dialog, write the
- title and message of the dialog to file {name}. The file
- is created or appended to. Only useful for testing, to
- avoid that the test gets stuck on a dialog that can't be
- seen. Without the GUI the argument is ignored.
-
- --help, -h, -?
- Give a bit of help about the command line arguments and opâ€
- tions. After this Vim exits.
-
-H If Vim has been compiled with RIGHTLEFT support for editing
- right-to-left oriented files and Hebrew keyboard mapping,
- this option starts Vim in Hebrew mode, i.e. 'hkmap' and
- 'rightleft' are set. Otherwise an error message is given
+ right-to-left oriented files and Hebrew keyboard mapping,
+ this option starts Vim in Hebrew mode, i.e. 'hkmap' and
+ 'rightleft' are set. Otherwise an error message is given
and Vim aborts.
-i {viminfo}
- Specifies the filename to use when reading or writing the
- viminfo file, instead of the default "~/.viminfo". This
- can also be used to skip the use of the .viminfo file, by
+ Specifies the filename to use when reading or writing the
+ viminfo file, instead of the default "~/.viminfo". This
+ can also be used to skip the use of the .viminfo file, by
giving the name "NONE".
- -L Same as -r.
-
-l Lisp mode. Sets the 'lisp' and 'showmatch' options on.
- -m Modifying files is disabled. Resets the 'write' option.
- You can still modify the buffer, but writing a file is not
+ -L Same as -r.
+
+ -m Modifying files is disabled. Resets the 'write' option.
+ You can still modify the buffer, but writing a file is not
possible.
- -M Modifications not allowed. The 'modifiable' and 'write'
- options will be unset, so that changes are not allowed and
- files can not be written. Note that these options can be
+ -M Modifications not allowed. The 'modifiable' and 'write'
+ options will be unset, so that changes are not allowed and
+ files can not be written. Note that these options can be
set to enable making modifications.
+ -n No swap file will be used. Recovery after a crash will be
+ impossible. Handy if you want to edit a file on a very
+ slow medium (e.g. floppy). Can also be done with ":set
+ uc=0". Can be undone with ":set uc=200".
+
-N No-compatible mode. Resets the 'compatible' option. This
will make Vim behave a bit better, but less Vi compatible,
even though a .vimrc file does not exist.
- -n No swap file will be used. Recovery after a crash will be
- impossible. Handy if you want to edit a file on a very
- slow medium (e.g. floppy). Can also be done with ":set
- uc=0". Can be undone with ":set uc=200".
-
-nb Become an editor server for NetBeans. See the docs for deâ€
tails.
-o[N] Open N windows stacked. When N is omitted, open one window
for each file.
- -O[N] Open N windows side by side. When N is omitted, open one
+ -O[N] Open N windows side by side. When N is omitted, open one
window for each file.
-p[N] Open N tab pages. When N is omitted, open one tab page for
each file.
-P {parent-title}
- Win32 GUI only: Specify the title of the parent applicaâ€
- tion. When possible, Vim will run in an MDI window inside
- the application. {parent-title} must appear in the window
+ Win32 GUI only: Specify the title of the parent applicaâ€
+ tion. When possible, Vim will run in an MDI window inside
+ the application. {parent-title} must appear in the window
title of the parent application. Make sure that it is speâ€
- cific enough. Note that the implementation is still primiâ€
- tive. It won't work with all applications and the menu
+ cific enough. Note that the implementation is still primiâ€
+ tive. It won't work with all applications and the menu
doesn't work.
- -R Read-only mode. The 'readonly' option will be set. You
- can still edit the buffer, but will be prevented from acciâ€
- dentally overwriting a file. If you do want to overwrite a
- file, add an exclamation mark to the Ex command, as in
- ":w!". The -R option also implies the -n option (see
- above). The 'readonly' option can be reset with ":set
- noro". See ":help 'readonly'".
-
- -r List swap files, with information about using them for reâ€
+ -r List swap files, with information about using them for reâ€
covery.
- -r {file} Recovery mode. The swap file is used to recover a crashed
- editing session. The swap file is a file with the same
+ -r {file} Recovery mode. The swap file is used to recover a crashed
+ editing session. The swap file is a file with the same
filename as the text file with ".swp" appended. See ":help
recovery".
- -s Silent mode. Only when started as "Ex" or when the "-e"
+ -R Read-only mode. The 'readonly' option will be set. You
+ can still edit the buffer, but will be prevented from acciâ€
+ dentally overwriting a file. If you do want to overwrite a
+ file, add an exclamation mark to the Ex command, as in
+ ":w!". The -R option also implies the -n option (see
+ above). The 'readonly' option can be reset with ":set
+ noro". See ":help 'readonly'".
+
+ -s Silent mode. Only when started as "Ex" or when the "-e"
option was given before the "-s" option.
-s {scriptin}
- The script file {scriptin} is read. The characters in the
- file are interpreted as if you had typed them. The same
+ The script file {scriptin} is read. The characters in the
+ file are interpreted as if you had typed them. The same
can be done with the command ":source! {scriptin}". If the
end of the file is reached before the editor exits, further
characters are read from the keyboard.
+ -S {file} {file} will be sourced after the first file has been read.
+ This is equivalent to -c "source {file}". {file} cannot
+ start with '-'. If {file} is omitted "Session.vim" is used
+ (only works when -S is the last argument).
+
-T {terminal}
Tells Vim the name of the terminal you are using. Only reâ€
quired when the automatic way doesn't work. Should be a
terminal known to Vim (builtin) or defined in the termcap
or terminfo file.
- --not-a-term
- Tells Vim that the user knows that the input and/or output
- is not connected to a terminal. This will avoid the warnâ€
- ing and the two second delay that would happen.
-
- --ttyfail When stdin or stdout is not a a terminal (tty) then exit
- right away.
-
- -u {vimrc} Use the commands in the file {vimrc} for initializations.
- All the other initializations are skipped. Use this to
- edit a special kind of files. It can also be used to skip
- all initializations by giving the name "NONE". See ":help
+ -u {vimrc} Use the commands in the file {vimrc} for initializations.
+ All the other initializations are skipped. Use this to
+ edit a special kind of files. It can also be used to skip
+ all initializations by giving the name "NONE". See ":help
initialization" within vim for more details.
- -U {gvimrc} Use the commands in the file {gvimrc} for GUI initializaâ€
- tions. All the other GUI initializations are skipped. It
- can also be used to skip all GUI initializations by giving
- the name "NONE". See ":help gui-init" within vim for more
+ -U {gvimrc} Use the commands in the file {gvimrc} for GUI initializaâ€
+ tions. All the other GUI initializations are skipped. It
+ can also be used to skip all GUI initializations by giving
+ the name "NONE". See ":help gui-init" within vim for more
details.
- -V[N] Verbose. Give messages about which files are sourced and
- for reading and writing a viminfo file. The optional numâ€
+ -v Start Vim in Vi mode, just like the executable was called
+ "vi". This only has effect when the executable is called
+ "ex".
+
+ -V[N] Verbose. Give messages about which files are sourced and
+ for reading and writing a viminfo file. The optional numâ€
ber N is the value for 'verbose'. Default is 10.
-V[N]{filename}
Like -V and set 'verbosefile' to {filename}. The result is
- that messages are not displayed but written to the file
+ that messages are not displayed but written to the file
{filename}. {filename} must not start with a digit.
- --log {filename}
- If Vim has been compiled with eval and channel feature,
- start logging and write entries to {filename}. This works
- like calling ch_logfile({filename}, 'ao') very early during
- startup.
-
- -v Start Vim in Vi mode, just like the executable was called
- "vi". This only has effect when the executable is called
- "ex".
-
-w{number} Set the 'window' option to {number}.
-w {scriptout}
@@ -321,8 +287,8 @@ OPTIONS
-W {scriptout}
Like -w, but an existing file is overwritten.
- -x Use encryption when writing files. Will prompt for a crypt
- key.
+ -x If Vim has been compiled with encryption support, use enâ€
+ cryption when writing files. Will prompt for a crypt key.
-X Don't connect to the X server. Shortens startup time in a
terminal, but the window title and clipboard will not be
@@ -343,31 +309,61 @@ OPTIONS
etc.). Useful to see if a problem reproduces with a clean
Vim setup.
+ --cmd {command}
+ Like using "-c", but the command is executed just before
+ processing any vimrc file. You can use up to 10 of these
+ commands, independently from "-c" commands.
+
--echo-wid GTK GUI only: Echo the Window ID on stdout.
- --literal Take file name arguments literally, do not expand wildâ€
- cards. This has no effect on Unix where the shell expands
+ --gui-dialog-file {name}
+ When using the GUI, instead of showing a dialog, write the
+ title and message of the dialog to file {name}. The file
+ is created or appended to. Only useful for testing, to
+ avoid that the test gets stuck on a dialog that can't be
+ seen. Without the GUI the argument is ignored.
+
+ --help, -h, -?
+ Give a bit of help about the command line arguments and opâ€
+ tions. After this Vim exits.
+
+ --literal Take file name arguments literally, do not expand wildâ€
+ cards. This has no effect on Unix where the shell expands
wildcards.
+ --log {filename}
+ If Vim has been compiled with eval and channel feature,
+ start logging and write entries to {filename}. This works
+ like calling ch_logfile({filename}, 'ao') very early during
+ startup.
+
+ --nofork Foreground. For the GUI version, Vim will not fork and deâ€
+ tach from the shell it was started in.
+
--noplugin Skip loading plugins. Implied by -u NONE.
+ --not-a-term
+ Tells Vim that the user knows that the input and/or output
+ is not connected to a terminal. This will avoid the warnâ€
+ ing and the two second delay that would happen.
+
--remote Connect to a Vim server and make it edit the files given in
the rest of the arguments. If no server is found a warning
is given and the files are edited in the current Vim.
--remote-expr {expr}
- Connect to a Vim server, evaluate {expr} in it and print
+ Connect to a Vim server, evaluate {expr} in it and print
the result on stdout.
--remote-send {keys}
Connect to a Vim server and send {keys} to it.
--remote-silent
- As --remote, but without the warning when no server is
+ As --remote, but without the warning when no server is
found.
--remote-wait
- As --remote, but Vim does not exit until the files have
+ As --remote, but Vim does not exit until the files have
been edited.
--remote-wait-silent
@@ -378,21 +374,24 @@ OPTIONS
List the names of all Vim servers that can be found.
--servername {name}
- Use {name} as the server name. Used for the current Vim,
+ Use {name} as the server name. Used for the current Vim,
unless used with a --remote argument, then it's the name of
the server to connect to.
--socketid {id}
- GTK GUI only: Use the GtkPlug mechanism to run gvim in anâ€
+ GTK GUI only: Use the GtkPlug mechanism to run gVim in anâ€
other window.
--startuptime {file}
During startup write timing messages to the file {fname}.
+ --ttyfail When stdin or stdout is not a a terminal (tty) then exit
+ right away.
+
--version Print version information and exit.
--windowid {id}
- Win32 GUI only: Make gvim try to use the window {id} as a
+ Win32 GUI only: Make gVim try to use the window {id} as a
parent, so that it runs inside that window.
ON-LINE HELP
@@ -430,7 +429,7 @@ FILES
System wide gvim initializations.
~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
- Your personal gvim initializations (first one found is
+ Your personal gVim initializations (first one found is
used).
/usr/local/share/vim/vim??/optwin.vim
@@ -438,7 +437,7 @@ FILES
view and set options.
/usr/local/share/vim/vim??/menu.vim
- System wide menu initializations for gvim.
+ System wide menu initializations for gVim.
/usr/local/share/vim/vim??/bugreport.vim
Script to generate a bug report. See ":help bugs".
@@ -476,6 +475,4 @@ BUGS
vi_diff.txt when in Vim). Also have a look at the 'compatible' and
'cpoptions' options.
-
-
- 2024 Jun 04 VIM(1)
+ 2024 Aug 12 VIM(1)
diff --git a/runtime/doc/vimdiff-it.1 b/runtime/doc/vimdiff-it.1
index 836ccbe..335a799 100644
--- a/runtime/doc/vimdiff-it.1
+++ b/runtime/doc/vimdiff-it.1
@@ -1,4 +1,4 @@
-.TH VIMDIFF 1 "30 marzo 2001"
+.TH VIMDIFF 1 "13 giugno 2021"
.SH NOME
vimdiff \- modifica da due, fino a otto versioni di un file con Vim, visualizzando le differenze
.SH SINTASSI
diff --git a/runtime/doc/vimdiff-it.UTF-8.1 b/runtime/doc/vimdiff-it.UTF-8.1
index ebcf8ac..91e21fe 100644
--- a/runtime/doc/vimdiff-it.UTF-8.1
+++ b/runtime/doc/vimdiff-it.UTF-8.1
@@ -1,4 +1,4 @@
-.TH VIMDIFF 1 "30 marzo 2001"
+.TH VIMDIFF 1 "13 giugno 2021"
.SH NOME
vimdiff \- modifica da due, fino a otto versioni di un file con Vim, visualizzando le differenze
.SH SINTASSI
diff --git a/runtime/doc/vimdiff-ru.1 b/runtime/doc/vimdiff-ru.1
index 3855367..e5121a4 100644
--- a/runtime/doc/vimdiff-ru.1
+++ b/runtime/doc/vimdiff-ru.1
@@ -1,50 +1,51 @@
-.TH VIMDIFF 1 "2001 March 30"
-.SH éíñ
-vimdiff \- ÐÏÚ×ÏÌÑÅÔ ÒÅÄÁËÔÉÒÏ×ÁÔØ Ä×Å ÉÌÉ ÔÒÉ ×ÅÒÓÉÉ ÆÁÊÌÁ Ó ÐÏÍÏÝØÀ Vim
-Ó ÏÔÏÂÒÁÖÅÎÉÅÍ ÒÁÚÌÉÞÉÊ.
-.SH ëïíáîäîáñ óôòïëá
+.TH VIMDIFF 1 "13 ÉÀÎÑ 2021"
+.SH îáúîáþåîéå
+ðÒÏÇÒÁÍÍÁ vimdiff \[em] ÚÁÐÕÓËÁÅÔ ÒÅÄÁËÔÏÒ Vim ÄÌÑ ÓÒÁ×ÎÅÎÉÑ É ÐÒÁ×ËÉ ÏÔ Ä×ÕÈ ÄÏ
+×ÏÓØÍÉ ×ÅÒÓÉÊ ÔÅËÓÔÏ×ÏÇÏ ÆÁÊÌÁ.
+.SH ëáôëéê ïâúïò
.br
.B vimdiff
-[ËÌÀÞÉ] ÆÁÊÌ1 ÆÁÊÌ2 [ÆÁÊÌ3]
+[ÁÒÇÕÍÅÎÔÙ] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]]
.PP
.B gvimdiff
.SH ïðéóáîéå
-ëÏÍÁÎÄÁ
+ðÏ ËÏÍÁÎÄÅ
.B vimdiff
-ÚÁÇÒÕÖÁÅÔ ×
+×ÙÐÏÌÎÑÅÔÓÑ ÚÁÇÒÕÚËÁ × ÒÅÄÁËÔÏÒ
.B Vim
-Ä×Á (ÉÌÉ ÔÒÉ) ÆÁÊÌÁ. ëÁÖÄÙÊ ÆÁÊÌ ÏÔËÒÙ×ÁÅÔÓÑ × ÓÏÂÓÔ×ÅÎÎÏÍ ÏËÎÅ.
-òÁÚÌÉÞÉÑ ÍÅÖÄÕ ÆÁÊÌÁÍÉ ÏÔÏÂÒÁÖÁÀÔÓÑ Ó ÐÏÍÏÝØÀ ÐÏÄÓ×ÅÔËÉ ÓÉÎÔÁËÓÉÓÁ.
-üÔÁ ËÏÍÁÎÄÁ ÐÏÚ×ÏÌÑÅÔ ÎÁÇÌÑÄÎÏ ÏÔÏÂÒÁÖÁÔØ ×ÎÅÓ£ÎÎÙÅ ÉÚÍÅÎÅÎÉÑ É ÐÅÒÅÎÏÓÉÔØ
-ÒÁÚÌÉÞÁÀÝÉÅÓÑ ÆÒÁÇÍÅÎÔÙ ÉÚ ÏÄÎÏÊ ×ÅÒÓÉÉ ÆÁÊÌÁ × ÄÒÕÇÕÀ.
+ÏÔ Ä×ÕÈ ÄÏ ×ÏÓØÍÉ ÆÁÊÌÏ×, É ÄÌÑ ËÁÖÄÏÇÏ ÆÁÊÌÁ ÓÏÚÄÁ£ÔÓÑ ÏÔÄÅÌØÎÏÅ ÏËÎÏ.
+òÁÚÌÉÞÉÑ ÍÅÖÄÕ ÆÁÊÌÁÍÉ ×ÙÄÅÌÑÀÔÓÑ Ó ÐÏÍÏÝØÀ ÐÏÄÓ×ÅÔËÉ.
+üÔÏÔ ÓÐÏÓÏ ÏÞÅÎØ ÕÄÏÂÅÎ ÄÌÑ ÎÁÇÌÑÄÎÏÇÏ ÏÔÏÂÒÁÖÅÎÉÑ ×ÎÅÓ£ÎÎÙÈ ÉÚÍÅÎÅÎÉÊ
+É ÐÅÒÅÎÏÓÁ ÒÁÚÌÉÞÁÀÝÉÈÓÑ ÆÒÁÇÍÅÎÔÏ× ÔÅËÓÔÁ ÉÚ ÏÄÎÏÊ ×ÅÒÓÉÉ ÆÁÊÌÁ × ÄÒÕÇÕÀ.
.PP
-ðÏÄÒÏÂÎÅÅ Ï Vim ÓÍ. ÎÁ ÓÔÒÁÎÉÃÅ ÓÐÒÁ×ÏÞÎÉËÁ vim(1).
+ðÏÄÒÏÂÎÅÅ Ï ÒÅÄÁËÔÏÒÅ Vim ÓÍ. × ÓÐÒÁ×ÏÞÎÉËÅ vim(1).
.PP
-ðÒÉ ÚÁÐÕÓËÅ Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ
+ðÒÉ ÚÁÐÕÓËÅ ÒÅÄÁËÔÏÒÁ Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ
.B gvimdiff
-ÒÅÄÁËÔÏÒ ÚÁÐÕÓËÁÅÔÓÑ × ÒÅÖÉÍÅ ÇÒÁÆÉÞÅÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ, ÅÓÌÉ ÜÔÏ ×ÏÚÍÏÖÎÏ.
+ÂÕÄÔÅ ×ÙÐÏÌÎÅÎÏ ÐÅÒÅËÌÀÞÅÎÉÅ ÎÁ ÇÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÓ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÅÓÌÉ ÜÔÏ
+×ÏÚÍÏÖÎÏ.
.PP
-÷ ËÁÖÄÏÍ ÏËÎÅ ×ËÌÀÞÁÅÔÓÑ ÏÐÃÉÑ 'diff', ÞÔÏ ÐÏÚ×ÏÌÑÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏÄÓ×ÅÔËÕ
-ÓÉÎÔÁËÓÉÓÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÒÁÚÌÉÞÉÊ ÍÅÖÄÕ ÆÁÊÌÁÍÉ.
+äÌÑ ËÁÖÄÏÇÏ ÓÏÚÄÁÎÎÏÇÏ ÏËÎÁ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ ÐÁÒÁÍÅÔÒ 'diff', ÞÔÏ ÐÏÚ×ÏÌÑÅÔ
+ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏÄÓ×ÅÔËÕ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÒÁÚÌÉÞÉÊ ÍÅÖÄÕ ÆÁÊÌÁÍÉ.
.br
-äÌÑ ÕÌÕÞÛÅÎÉÑ ÒÁÂÏÔÙ Ó ÆÁÊÌÁÍÉ × ÒÅÖÉÍÅ ÏÔÏÂÒÁÖÅÎÉÑ ÏÔÌÉÞÉÊ ÔÁËÖÅ ×ËÌÀÞÁÀÔÓÑ
-ÏÐÃÉÉ 'wrap' É 'scrollbind'.
+äÌÑ ÕÌÕÞÛÅÎÉÑ ÒÁÂÏÔÙ Ó ÆÁÊÌÁÍÉ × ÒÅÖÉÍÅ ÓÒÁ×ÎÅÎÉÑ ÒÁÚÌÉÞÉÊ ÔÁËÖÅ ÂÕÄÕÔ
+ÕÓÔÁÎÏ×ÌÅÎÙ ÐÁÒÁÍÅÔÒÙ 'wrap' É 'scrollbind'.
.br
-úÎÁÞÅÎÉÅ ÏÐÃÉÉ 'foldmethod' ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÒÁ×ÎÙÍ "diff", ÞÔÏ ÐÏÚ×ÏÌÑÅÔ
-ÐÒÑÔÁÔØ × ÓËÌÁÄËÕ ÏÂÌÁÓÔÉ ÔÅËÓÔÁ, ËÏÔÏÒÙÅ ÎÅ ÏÔÌÉÞÁÀÔÓÑ × ÒÁÚÌÉÞÎÙÈ ×ÅÒÓÉÑÈ ÆÁÊÌÁ.
-úÎÁÞÅÎÉÅ ÏÐÃÉÉ 'foldcolumn' ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÒÁ×ÎÙÍ 2, ÞÔÏÂÙ ÂÙÌÏ ÐÒÏÝÅ
-ÎÁÈÏÄÉÔØ, ÏÔËÒÙ×ÁÔØ É ÚÁËÒÙ×ÁÔØ ÔÁËÉÅ ÓËÌÁÄËÉ.
-.SH ëìàþé úáðõóëá
-äÌÑ ×ÙÒÁ×ÎÉ×ÁÎÉÑ ÓÔÒÏË ÍÅÖÄÕ ÏËÎÁÍÉ ÉÓÐÏÌØÚÕÅÔÓÑ ×ÅÒÔÉËÁÌØÎÏÅ ÒÁÚÄÅÌÅÎÉÅ ÏËÏÎ,
-ËÁË ÅÓÌÉ ÂÙ ÉÓÐÏÌØÚÏ×ÁÌÓÑ ËÌÀÞ "\-O". äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÒÁÚÄÅÌÅÎÉÅ
-ÏËÏÎ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ, ÓÌÅÄÕÅÔ ÕËÁÚÁÔØ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ ËÌÀÞ "\-o".
+äÌÑ ÐÁÒÁÍÅÔÒÁ 'foldmethod' ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÚÎÁÞÅÎÉÅ "diff", ÞÔÏ ÐÏÚ×ÏÌÑÅÔ
+Ó×ÏÒÁÞÉ×ÁÔØ ÏÂÌÁÓÔÉ ÔÅËÓÔÁ, ËÏÔÏÒÙÅ ÉÄÅÎÔÉÞÎÙ × ÒÁÚÌÉÞÎÙÈ ×ÅÒÓÉÑÈ ÆÁÊÌÁ.
+úÎÁÞÅÎÉÅ ÐÁÒÁÍÅÔÒÁ 'foldcolumn' ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÒÁ×ÎÙÍ 2, ÞÔÏÂÙ ÂÙÌÏ ÐÒÏÝÅ
+ÎÁÈÏÄÉÔØ, ÏÔËÒÙ×ÁÔØ É ÚÁËÒÙ×ÁÔØ ÔÁËÉÅ ÏÂÌÁÓÔÉ Ó×£ÒÎÕÔÏÇÏ ÔÅËÓÔÁ.
+.SH áòçõíåîôù ëïíáîäîïê óôòïëé
+ðÒÉ ÓÏÐÏÓÔÁ×ÌÅÎÉÉ ÆÁÊÌÏ×, ÉÓÐÏÌØÚÕÅÔÓÑ ×ÅÒÔÉËÁÌØÎÏÅ ÒÁÓÐÏÌÏÖÅÎÉÅ ÏËÏÎ, ËÁË ÅÓÌÉ
+ÂÙ ÂÙÌ ÕËÁÚÁÎ ÁÒÇÕÍÅÎÔ "\-O". äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÏËÎÁ ÒÁÓÐÏÌÁÇÁÌÉÓØ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ,
+ÓÌÅÄÕÅÔ ÕËÁÚÁÔØ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ ÁÒÇÕÍÅÎÔ "\-o".
.PP
-ïÓÔÁÌØÎÙÅ ËÌÀÞÉ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ ÎÁ ÓÔÒÁÎÉÃÅ ÓÐÒÁ×ÏÞÎÉËÁ vim(1).
-.SH óíïôòé ôáëöå
+ïÓÔÁÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ÏÐÉÓÁÎÙ × ÓÐÒÁ×ÏÞÎÉËÅ vim(1).
+.SH óíïôòéôå ôáëöå
vim(1)
.SH á÷ôïòù
-âÏÌØÛÁÑ ÞÁÓÔØ
+âÏÌØÛÁÑ ÞÁÓÔØ ÒÅÄÁËÔÏÒÁ
.B Vim
-ÓÏÚÄÁÎÁ âÒÁÍÏÍ íÏÏÌÅÎÁÁÒÏÍ (Bram Moolenaar), ËÏÔÏÒÏÍÕ ÐÏÍÏÇÁÅÔ ÏÇÒÏÍÎÏÅ
-ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ. óÍ. ":help credits" ×
+ÂÙÌÁ ÓÏÚÄÁÎÁ âÒÁÍÏÍ íÏÌÅÎÁÒÏÍ (Bram Moolenaar), ËÏÔÏÒÏÍÕ ÐÏÍÏÇÁÌÏ ÏÇÒÏÍÎÏÅ
+ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ. óÍ. ":help credits" × ÒÅÄÁËÔÏÒÅ
.B Vim.
diff --git a/runtime/doc/vimdiff-ru.UTF-8.1 b/runtime/doc/vimdiff-ru.UTF-8.1
index 2f17e9c..b43c98d 100644
--- a/runtime/doc/vimdiff-ru.UTF-8.1
+++ b/runtime/doc/vimdiff-ru.UTF-8.1
@@ -1,50 +1,51 @@
-.TH VIMDIFF 1 "2001 March 30"
-.SH ИМЯ
-vimdiff \- позволÑет редактировать две или три верÑии файла Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Vim
-Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ различий.
-.SH КОМÐÐДÐÐЯ СТРОКÐ
+.TH VIMDIFF 1 "13 Ð¸ÑŽÐ½Ñ 2021"
+.SH ÐÐЗÐÐЧЕÐИЕ
+Программа vimdiff \[em] запуÑкает редактор Vim Ð´Ð»Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ правки от двух до
+воÑьми верÑий текÑтового файла.
+.SH КÐТКИЙ ОБЗОР
.br
.B vimdiff
-[ключи] файл1 файл2 [файл3]
+[аргументы] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]]
.PP
.B gvimdiff
.SH ОПИСÐÐИЕ
-Команда
+По команде
.B vimdiff
-загружает в
+выполнÑетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° в редактор
.B Vim
-два (или три) файла. Каждый файл открываетÑÑ Ð² ÑобÑтвенном окне.
-Ð Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ файлами отображаютÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ подÑветки ÑинтакÑиÑа.
-Эта команда позволÑет наглÑдно отображать внеÑённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ переноÑить
-различающиеÑÑ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ñ‹ из одной верÑии файла в другую.
+от двух до воÑьми файлов, и Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ файла ÑоздаётÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾Ðµ окно.
+Ð Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ файлами выделÑÑŽÑ‚ÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ подÑветки.
+Этот ÑпоÑоб очень удобен Ð´Ð»Ñ Ð½Ð°Ð³Ð»Ñдного Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑённых изменений
+и переноÑа различающихÑÑ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð² текÑта из одной верÑии файла в другую.
.PP
-Подробнее о Vim Ñм. на Ñтранице Ñправочника vim(1).
+Подробнее о редакторе Vim Ñм. в Ñправочнике vim(1).
.PP
-При запуÑке Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды
+При запуÑке редактора Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды
.B gvimdiff
-редактор запуÑкаетÑÑ Ð² режиме графичеÑкого интерфейÑа, еÑли Ñто возможно.
+будте выполнено переключение на графичеÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, еÑли Ñто
+возможно.
.PP
-Ð’ каждом окне включаетÑÑ Ð¾Ð¿Ñ†Ð¸Ñ 'diff', что позволÑет иÑпользовать подÑветку
-ÑинтакÑиÑа Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹ между файлами.
+Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñозданного окна будет уÑтановлен параметр 'diff', что позволÑет
+иÑпользовать подÑветку Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹ между файлами.
.br
-Ð”Ð»Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ в режиме Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð¸Ð¹ также включаютÑÑ
-опции 'wrap' и 'scrollbind'.
+Ð”Ð»Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ в режиме ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹ также будут
+уÑтановлены параметры 'wrap' и 'scrollbind'.
.br
-Значение опции 'foldmethod' уÑтанавливаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ "diff", что позволÑет
-прÑтать в Ñкладку облаÑти текÑта, которые не отличаютÑÑ Ð² различных верÑиÑÑ… файла.
-Значение опции 'foldcolumn' уÑтанавливаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ 2, чтобы было проще
-находить, открывать и закрывать такие Ñкладки.
-.SH КЛЮЧИ ЗÐПУСКÐ
-Ð”Ð»Ñ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ñтрок между окнами иÑпользуетÑÑ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ разделение окон,
-как еÑли бы иÑпользовалÑÑ ÐºÐ»ÑŽÑ‡ "\-O". Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы иÑпользовать разделение
-окон по горизонтали, Ñледует указать в командной Ñтроке ключ "\-o".
+Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° 'foldmethod' уÑтанавливаетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ "diff", что позволÑет
+Ñворачивать облаÑти текÑта, которые идентичны в различных верÑиÑÑ… файла.
+Значение параметра 'foldcolumn' уÑтанавливаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ 2, чтобы было проще
+находить, открывать и закрывать такие облаÑти Ñвёрнутого текÑта.
+.SH ÐРГУМЕÐТЫ КОМÐÐДÐОЙ СТРОКИ
+При ÑопоÑтавлении файлов, иÑпользуетÑÑ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ раÑположение окон, как еÑли
+бы был указан аргумент "\-O". Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы окна раÑполагалиÑÑŒ по горизонтали,
+Ñледует указать в командной Ñтроке аргумент "\-o".
.PP
-ОÑтальные ключи командной Ñтроки раÑÑматриваютÑÑ Ð½Ð° Ñтранице Ñправочника vim(1).
-.SH СМОТРИ ТÐКЖЕ
+ОÑтальные аргументы командной Ñтроки опиÑаны в Ñправочнике vim(1).
+.SH СМОТРИТЕ ТÐКЖЕ
vim(1)
.SH ÐВТОРЫ
-Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ
+Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ редактора
.B Vim
-Ñоздана Брамом Мооленааром (Bram Moolenaar), которому помогает огромное
-количеÑтво людей. См. ":help credits" в
+была Ñоздана Брамом Моленаром (Bram Moolenaar), которому помогало огромное
+количеÑтво людей. См. ":help credits" в редакторе
.B Vim.
diff --git a/runtime/doc/vimdiff.1 b/runtime/doc/vimdiff.1
index ddcb30f..efbb84a 100644
--- a/runtime/doc/vimdiff.1
+++ b/runtime/doc/vimdiff.1
@@ -1,4 +1,4 @@
-.TH VIMDIFF 1 "2001 March 30"
+.TH VIMDIFF 1 "2021 June 13"
.SH NAME
vimdiff \- edit between two and eight versions of a file with Vim and show differences
.SH SYNOPSIS
diff --git a/runtime/doc/vimdiff.man b/runtime/doc/vimdiff.man
index a053e6a..a1f05bd 100644
--- a/runtime/doc/vimdiff.man
+++ b/runtime/doc/vimdiff.man
@@ -44,4 +44,4 @@ AUTHOR
- 2001 March 30 VIMDIFF(1)
+ 2021 June 13 VIMDIFF(1)
diff --git a/runtime/doc/vimtutor-it.1 b/runtime/doc/vimtutor-it.1
index f521134..36103df 100644
--- a/runtime/doc/vimtutor-it.1
+++ b/runtime/doc/vimtutor-it.1
@@ -1,4 +1,4 @@
-.TH VIMTUTOR 1 "2 aprile 2001"
+.TH VIMTUTOR 1 "12 agosto 2024"
.SH NOME
vimtutor \- Un breve corso introduttivo a Vim
.SH SINTASSI
@@ -19,7 +19,7 @@ Il comando
.
.PP
L'argomento opzionale \-g inizia vimtutor usando gvim invece che vim, se la
-versione GUI di vim è disponibile; altrimenti viene utilizzato Vim.
+versione GUI di vim è disponibile; altrimenti viene utilizzato vim.
.PP
L'argomento opzionale [lingua] è l'abbreviazione di due lettere del nome
di una lingua, per esempio "it" oppure "es".
@@ -32,12 +32,16 @@ verrà usata la versione inglese.
è sempre iniziato in Modo compatibile con Vi.
.SH FILE
.TP 15
-/usr/local/lib/vim/tutor/tutor[.language]
+/usr/local/lib/vim/vim??/tutor/tutor[.lingua]
I file di testo per
.B Vimtutor
.
+.br
+.I vim??
+è il numero di versione corto, p.es., vim91 per indicare
+.B Vim 9.1.
.TP 15
-/usr/local/lib/vim/tutor/tutor.vim
+/usr/local/share/vim/vim??/tutor/tutor.vim
Lo script di Vim usato per copiare il file di testo
.B Vimtutor
.
diff --git a/runtime/doc/vimtutor-it.UTF-8.1 b/runtime/doc/vimtutor-it.UTF-8.1
index 49747d4..ae42b10 100644
--- a/runtime/doc/vimtutor-it.UTF-8.1
+++ b/runtime/doc/vimtutor-it.UTF-8.1
@@ -1,4 +1,4 @@
-.TH VIMTUTOR 1 "2 aprile 2001"
+.TH VIMTUTOR 1 "12 agosto 2024"
.SH NOME
vimtutor \- Un breve corso introduttivo a Vim
.SH SINTASSI
@@ -19,7 +19,7 @@ Il comando
.
.PP
L'argomento opzionale \-g inizia vimtutor usando gvim invece che vim, se la
-versione GUI di vim è disponibile; altrimenti viene utilizzato Vim.
+versione GUI di vim è disponibile; altrimenti viene utilizzato vim.
.PP
L'argomento opzionale [lingua] è l'abbreviazione di due lettere del nome
di una lingua, per esempio "it" oppure "es".
@@ -32,12 +32,16 @@ verrà usata la versione inglese.
è sempre iniziato in Modo compatibile con Vi.
.SH FILE
.TP 15
-/usr/local/lib/vim/tutor/tutor[.language]
+/usr/local/lib/vim/vim??/tutor/tutor[.lingua]
I file di testo per
.B Vimtutor
.
+.br
+.I vim??
+è il numero di versione corto, p.es., vim91 per indicare
+.B Vim 9.1.
.TP 15
-/usr/local/lib/vim/tutor/tutor.vim
+/usr/local/share/vim/vim??/tutor/tutor.vim
Lo script di Vim usato per copiare il file di testo
.B Vimtutor
.
diff --git a/runtime/doc/vimtutor-ru.1 b/runtime/doc/vimtutor-ru.1
index fa3c5d9..ab865f2 100644
--- a/runtime/doc/vimtutor-ru.1
+++ b/runtime/doc/vimtutor-ru.1
@@ -1,51 +1,63 @@
-.TH VIMTUTOR 1 "2001 April 2"
-.SH éíñ
-vimtutor \- ÕÞÅÂÎÉË ÐÏ Vim
-.SH ëïíáîäîáñ óôòïëá
+.TH VIMTUTOR 1 "12 Á×ÇÕÓÔÁ 2024"
+.SH îáúîáþåîéå
+ðÒÏÇÒÁÍÍÁ vimtutor \[em] ×ÙÐÏÌÎÑÅÔ ÚÁÐÕÓË ÕÞÅÂÎÉËÁ ÐÏ ÒÅÄÁËÔÏÒÕ Vim.
+.SH ëòáôëéê ïâúïò
.br
-.B vimtutor [ÑÚÙË]
+.B vimtutor [\-g] [ÑÚÙË]
.SH ïðéóáîéå
-ëÏÍÁÎÄÁ
+ðÏ ËÏÍÁÎÄÅ
.B vimtutor
-ÚÁÐÕÓËÁÅÔ ÕÞÅÂÎÉË ÐÏ
+×ÙÐÏÌÎÑÅÔÓÑ ÚÁÐÕÓË ÒÅÄÁËÔÏÒÁ
.B Vim.
-ðÒÉ ÜÔÏÍ ÓÎÁÞÁÌÁ ÐÒÏÉÓÈÏÄÉÔ ÓÏÚÄÁÎÉÅ ËÏÐÉÉ ÆÁÊÌÁ ÕÞÅÂÎÉËÁ,
-ÞÔÏÂÙ ÅÇÏ ÍÏÖÎÏ ÂÙÌÏ ÒÅÄÁËÔÉÒÏ×ÁÔØ ÂÅÚ ÏÐÁÓÅÎÉÑ ÐÏÔÅÒÑÔØ ÉÓÈÏÄÎÙÊ ÆÁÊÌ.
+Ó ÚÁÇÒÕÖÅÎÎÙÍ ÆÁÊÌÏÍ, ÓÏÄÅÒÖÁÝÅÍ ÔÅËÓÔ ÕÞÅÂÎÉËÁ. îÏ ÐÅÒÅÄ ÜÔÉÍ ÐÒÏÉÓÈÏÄÉÔ
+ÓÏÚÄÁÎÉÅ ËÏÐÉÉ ÆÁÊÌÁ ÕÞÅÂÎÉËÁ, ÞÔÏÂÙ × Î£Í ÍÏÖÎÏ ÂÙÌÏ ×ÙÐÏÌÎÑÔØ ÐÒÁËÔÉÞÅÓËÉÅ
+ÚÁÄÁÎÉÑ ÂÅÚ ÏÐÁÓÅÎÉÑ ÉÓÐÏÒÔÉÔØ ÉÓÈÏÄÎÙÊ ÆÁÊÌ.
.PP
-ðÒÏÇÒÁÍÍÁ
+ðÒÁËÔÉÞÅÓËÉÊ ËÕÒÓ, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÏÔËÒÙÔ ÐÏ ËÏÍÁÎÄÅ
.B vimtutor
-ÐÏÌÅÚÎÁ ÄÌÑ ÎÏ×ÉÞËÏ×, ÖÅÌÁÀÝÉÈ ÎÁÕÞÉÔØÓÑ ÓÁÍÙÍ ÏÓÎÏ×ÎÙÍ ËÏÍÁÎÄÁÍ
+ÐÏÌÅÚÅÎ ÄÌÑ ÎÏ×ÉÞËÏ×, ÖÅÌÁÀÝÉÈ ÎÁÕÞÉÔØÓÑ ÓÁÍÙÍ ÏÓÎÏ×ÎÙÍ ËÏÍÁÎÄÁÍ ÒÅÄÁËÔÏÒÁ
.B Vim.
.PP
-îÅÏÂÑÚÁÔÅÌØÎÙÊ ÐÁÒÁÍÅÔÒ [ÑÚÙË] ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ Ä×ÕÈÓÉÍ×ÏÌØÎÙÊ ËÏÄ ÑÚÙËÁ,
-ÎÁÐÒÉÍÅÒ "ru" ÉÌÉ "it".
-åÓÌÉ ÐÁÒÁÍÅÔÒ [ÑÚÙË] ÎÅ ÕËÁÚÁÎ, ÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ ÑÚÙË ÁËÔÉ×ÎÏÊ × ÎÁÓÔÏÑÝÉÊ
-ÍÏÍÅÎÔ ÌÏËÁÌÉ. åÓÌÉ ÕÞÅÂÎÉË ÎÁ ÜÔÏÍ ÑÚÙËÅ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ ÐÏ ÕÍÏÌÞÁÎÉÀ
-ÉÓÐÏÌØÚÕÅÔÓÑ ÕÞÅÂÎÉË ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ.
+þÅÒÅÚ ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ \-g ÄÁ£ÔÓÑ ÕËÁÚÁÎÉÅ ÎÁ ÚÁÐÕÓË
+ÕÞÅÂÎÉËÁ × ÇÒÁÆÉÞÅÓËÏÍ ÉÎÔÅÒÆÅÊÓÅ ÒÅÄÁËÔÏÒÁ, ÅÓÌÉ ÜÔÏ, ËÏÎÅÞÎÏ, ×ÏÚÍÏÖÎÏ.
+ðÒÉ ÎÅ ×ÏÚÍÏÖÎÏÓÔÉ ×ÙÐÏÌÎÉÔØ ÜÔÏ, ÂÕÄÅÔ ÚÁÐÕÝÅÎ ËÏÎÓÏÌØÎÙÊ ×ÁÒÉÁÎÔ ÒÅÄÁËÔÏÒÁ
+.B Vim.
+.PP
+îÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ [ÑÚÙË] ÚÁÄÁ£ÔÓÑ ËÁË Ä×ÕÈÓÉÍ×ÏÌØÎÙÊ ËÏÄ ÑÚÙËÁ, ÎÁÐÒÉÍÅÒ,
+"ru" ÉÌÉ "it".
+åÓÌÉ ÁÒÇÕÍÅÎÔ [ÑÚÙË] ÎÅ ÕËÁÚÁÎ, ÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ ÑÚÙË, ÚÁÄÁÎÎÙÊ × ÄÅÊÓÔ×ÕÀÝÉÈ
+× ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÒÅÇÉÏÎÁÌØÎÙÈ ÎÁÓÔÒÏÊËÁÈ. åÓÌÉ ÕÞÅÂÎÉËÁ ÎÁ ÜÔÏÍ ÑÚÙËÅ ÎÅ
+ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ, ÐÏ ÕÍÏÌÞÁÎÉÀ, ÉÓÐÏÌØÚÕÅÔÓÑ ÕÞÅÂÎÉË ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ.
.PP
-ðÒÉ ÒÁÂÏÔÅ Ó ÕÞÅÂÎÉËÏÍ
+ðÒÉ ÒÁÂÏÔÅ Ó ÕÞÅÂÎÉËÏÍ, ÒÅÄÁËÔÏÒ
.B Vim
-×ÓÅÇÄÁ ÚÁÐÕÓËÁÅÔÓÑ × ÒÅÖÉÍÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó Vi.
+×ÓÅÇÄÁ ÚÁÐÕÓËÁÅÔÓÑ × ÒÅÖÉÍÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ÒÅÄÁËÔÏÒÏÍ Vi.
.SH æáêìù
+úÄÅÓØ É ÄÁÌÅÅ
+.I "vim??"
+ÏÚÎÁÞÁÅÔ ÓÏËÒÁÝ£ÎÎÕÀ ÚÁÐÉÓØ ÎÏÍÅÒÁ ×ÅÒÓÉÉ, ÎÁÐÒÉÍÅÒ, vim91 ÄÌÑ ×ÅÒÓÉÉ ÒÅÄÁËÔÏÒÁ
+.B Vim 9.1
.TP 15
-/usr/local/lib/vim/tutor/tutor[.ÑÚÙË]
-ôÅËÓÔ ÕÞÅÂÎÉËÁ
-.B vimtutor.
+/usr/local/share/vim/vim??/tutor/tutor[.ÑÚÙË]
+æÁÊÌÙ Ó ÔÅËÓÔÏÍ ÕÞÅÂÎÉËÁ
+.B Vimtutor.
.TP 15
-/usr/local/lib/vim/tutor/tutor.vim
-óÃÅÎÁÒÉÊ Vim, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÒÁÂÏÞÅÊ
-ËÏÐÉÉ ÔÅËÓÔÁ ÕÞÅÂÎÉËÁ
-.B vimtutor.
+/usr/local/share/vim/vim??/tutor/tutor.vim
+ëÏÍÁÎÄÎÙÊ ÆÁÊÌ ÒÅÄÁËÔÏÒÁ
+.B Vim,
+ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÒÁÂÏÞÅÊ ËÏÐÉÉ ÔÅËÓÔÁ ÕÞÅÂÎÉËÁ
+.B Vimtutor.
.SH á÷ôïòù
+õÞÅÂÎÉË
.B Vimtutor
-ÂÙÌ ×ÐÅÒ×ÙÅ ÎÁÐÉÓÁÎ ÄÌÑ Vi íÁÊËÌÏÍ ë. ðÉÒÓÏÍ (Michael C. Pierce) É
-òÏÂÅÒÔÏÍ ë. õÜÁ (Robert K. Ware) ÉÚ Colorado School of Mines ÐÏ
-ÉÄÅÅ þÁÒÌØÚÁ óÍÉÔÁ (Charles Smith) ÉÚ Colorado State University.
-E-mail: bware@mines.colorado.edu.
+ÂÙÌ ×ÐÅÒ×ÙÅ ÎÁÐÉÓÁÎ ÄÌÑ Vi íÁÊËÌÏÍ ë. ðÉÒÓÏÍ (Michael C. Pierce) É òÏÂÅÒÔÏÍ ë.
+õÜÁ (Robert K. Ware) ÉÚ Colorado School of Mines ÐÏ ÉÄÅÅ þÁÒÌØÚÁ óÍÉÔÁ (Charles
+Smith) ÉÚ Colorado State University. E-mail: bware@mines.colorado.edu (ÔÅÐÅÒØ
+ÎÅÄÏÓÔÕÐÅÎ).
.br
-÷ÐÏÓÌÅÄÓÔ×ÉÉ ÕÞÅÂÎÉË ÂÙÌ ÄÏÒÁÂÏÔÁÎ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ×
+÷ÐÏÓÌÅÄÓÔ×ÉÉ ÕÞÅÂÎÉË ÂÙÌ ÄÏÒÁÂÏÔÁÎ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ÒÅÄÁËÔÏÒÅ
.B Vim
-âÒÁÍÏÍ íÏÏÌÅÎÁÁÒÏÍ (Bram Moolenaar).
+âÒÁÍÏÍ íÏÌÅÎÁÒÏÍ (Bram Moolenaar).
éÍÅÎÁ ÐÅÒÅ×ÏÄÞÉËÏ× ÕÞÅÂÎÉËÁ ÕÐÏÍÉÎÁÀÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÆÁÊÌÁÈ.
-.SH óíïôòé ôáëöå
+.SH óíïôòéôå ôáëöå
vim(1)
diff --git a/runtime/doc/vimtutor-ru.UTF-8.1 b/runtime/doc/vimtutor-ru.UTF-8.1
index 6b1ba90..27ec882 100644
--- a/runtime/doc/vimtutor-ru.UTF-8.1
+++ b/runtime/doc/vimtutor-ru.UTF-8.1
@@ -1,51 +1,63 @@
-.TH VIMTUTOR 1 "2001 April 2"
-.SH ИМЯ
-vimtutor \- учебник по Vim
-.SH КОМÐÐДÐÐЯ СТРОКÐ
+.TH VIMTUTOR 1 "12 авгуÑта 2024"
+.SH ÐÐЗÐÐЧЕÐИЕ
+Программа vimtutor \[em] выполнÑет запуÑк учебника по редактору Vim.
+.SH КРÐТКИЙ ОБЗОР
.br
-.B vimtutor [Ñзык]
+.B vimtutor [\-g] [Ñзык]
.SH ОПИСÐÐИЕ
-Команда
+По команде
.B vimtutor
-запуÑкает учебник по
+выполнÑетÑÑ Ð·Ð°Ð¿ÑƒÑк редактора
.B Vim.
-При Ñтом Ñначала проиÑходит Ñоздание копии файла учебника,
-чтобы его можно было редактировать без опаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚ÐµÑ€ÑÑ‚ÑŒ иÑходный файл.
+Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼ файлом, Ñодержащем текÑÑ‚ учебника. Ðо перед Ñтим проиÑходит
+Ñоздание копии файла учебника, чтобы в нём можно было выполнÑÑ‚ÑŒ практичеÑкие
+Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð±ÐµÐ· опаÑÐµÐ½Ð¸Ñ Ð¸Ñпортить иÑходный файл.
.PP
-Программа
+ПрактичеÑкий курÑ, который будет открыт по команде
.B vimtutor
-полезна Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ‡ÐºÐ¾Ð², желающих научитьÑÑ Ñамым оÑновным командам
+полезен Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ‡ÐºÐ¾Ð², желающих научитьÑÑ Ñамым оÑновным командам редактора
.B Vim.
.PP
-ÐеобÑзательный параметр [Ñзык] предÑтавлÑет Ñобой двухÑимвольный код Ñзыка,
-например "ru" или "it".
-ЕÑли параметр [Ñзык] не указан, то иÑпользуетÑÑ Ñзык активной в наÑтоÑщий
-момент локали. ЕÑли учебник на Ñтом Ñзыке не ÑущеÑтвует, то по умолчанию
-иÑпользуетÑÑ ÑƒÑ‡ÐµÐ±Ð½Ð¸Ðº на английÑком Ñзыке.
+Через необÑзательный аргумент командной Ñтроки \-g даётÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ на запуÑк
+учебника в графичеÑком интерфейÑе редактора, еÑли Ñто, конечно, возможно.
+При не возможноÑти выполнить Ñто, будет запущен конÑольный вариант редактора
+.B Vim.
+.PP
+ÐеобÑзательный аргумент [Ñзык] задаётÑÑ ÐºÐ°Ðº двухÑимвольный код Ñзыка, например,
+"ru" или "it".
+ЕÑли аргумент [Ñзык] не указан, то иÑпользуетÑÑ Ñзык, заданный в дейÑтвующих
+в наÑтоÑщий момент региональных наÑтройках. ЕÑли учебника на Ñтом Ñзыке не
+ÑущеÑтвует, то, по умолчанию, иÑпользуетÑÑ ÑƒÑ‡ÐµÐ±Ð½Ð¸Ðº на английÑком Ñзыке.
.PP
-При работе Ñ ÑƒÑ‡ÐµÐ±Ð½Ð¸ÐºÐ¾Ð¼
+При работе Ñ ÑƒÑ‡ÐµÐ±Ð½Ð¸ÐºÐ¾Ð¼, редактор
.B Vim
-вÑегда запуÑкаетÑÑ Ð² режиме ÑовмеÑтимоÑти Ñ Vi.
+вÑегда запуÑкаетÑÑ Ð² режиме ÑовмеÑтимоÑти Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi.
.SH ФÐЙЛЫ
+ЗдеÑÑŒ и далее
+.I "vim??"
+означает Ñокращённую запиÑÑŒ номера верÑии, например, vim91 Ð´Ð»Ñ Ð²ÐµÑ€Ñии редактора
+.B Vim 9.1
.TP 15
-/usr/local/lib/vim/tutor/tutor[.Ñзык]
-ТекÑÑ‚ учебника
-.B vimtutor.
+/usr/local/share/vim/vim??/tutor/tutor[.Ñзык]
+Файлы Ñ Ñ‚ÐµÐºÑтом учебника
+.B Vimtutor.
.TP 15
-/usr/local/lib/vim/tutor/tutor.vim
-Сценарий Vim, который иÑпользуетÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹
-копии текÑта учебника
-.B vimtutor.
+/usr/local/share/vim/vim??/tutor/tutor.vim
+Командный файл редактора
+.B Vim,
+который иÑпользуетÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹ копии текÑта учебника
+.B Vimtutor.
.SH ÐВТОРЫ
+Учебник
.B Vimtutor
-был впервые напиÑан Ð´Ð»Ñ Vi Майклом К. ПирÑом (Michael C. Pierce) и
-Робертом К. УÑа (Robert K. Ware) из Colorado School of Mines по
-идее Чарльза Смита (Charles Smith) из Colorado State University.
-E-mail: bware@mines.colorado.edu.
+был впервые напиÑан Ð´Ð»Ñ Vi Майклом К. ПирÑом (Michael C. Pierce) и Робертом К.
+УÑа (Robert K. Ware) из Colorado School of Mines по идее Чарльза Смита (Charles
+Smith) из Colorado State University. E-mail: bware@mines.colorado.edu (теперь
+недоÑтупен).
.br
-ВпоÑледÑтвии учебник был доработан Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²
+ВпоÑледÑтвии учебник был доработан Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² редакторе
.B Vim
-Брамом Мооленааром (Bram Moolenaar).
+Брамом Моленаром (Bram Moolenaar).
Имена переводчиков учебника упоминаютÑÑ Ð² ÑоответÑтвующих файлах.
-.SH СМОТРИ ТÐКЖЕ
+.SH СМОТРИТЕ ТÐКЖЕ
vim(1)
diff --git a/runtime/doc/vimtutor.1 b/runtime/doc/vimtutor.1
index ec2d85a..a71bc02 100644
--- a/runtime/doc/vimtutor.1
+++ b/runtime/doc/vimtutor.1
@@ -1,4 +1,4 @@
-.TH VIMTUTOR 1 "2001 April 2"
+.TH VIMTUTOR 1 "2024 August 12"
.SH NAME
vimtutor \- the Vim tutor
.SH SYNOPSIS
@@ -19,7 +19,7 @@ is useful for people that want to learn their first
commands.
.PP
The optional argument \-g starts vimtutor with gvim rather than vim, if the
-GUI version of vim is available, or falls back to Vim if gvim is not found.
+GUI version of Vim is available, or falls back to vim if gvim is not found.
.PP
The optional [language] argument is the two-letter name of a language, like
"it" or "es".
@@ -32,12 +32,16 @@ Otherwise the English version will be used.
is always started in Vi compatible mode.
.SH FILES
.TP 15
-/usr/local/lib/vim/tutor/tutor[.language]
+/usr/local/share/vim/vim??/tutor/tutor[.language]
The
.B Vimtutor
text file(s).
+.br
+.I vim??
+is short version number, like vim91 for
+.B Vim 9.1
.TP 15
-/usr/local/lib/vim/tutor/tutor.vim
+/usr/local/share/vim/vim??/tutor/tutor.vim
The Vim script used to copy the
.B Vimtutor
text file.
diff --git a/runtime/doc/vimtutor.man b/runtime/doc/vimtutor.man
index 76f6471..f1e113e 100644
--- a/runtime/doc/vimtutor.man
+++ b/runtime/doc/vimtutor.man
@@ -16,7 +16,7 @@ DESCRIPTION
commands.
The optional argument -g starts vimtutor with gvim rather than vim, if
- the GUI version of vim is available, or falls back to Vim if gvim is
+ the GUI version of Vim is available, or falls back to vim if gvim is
not found.
The optional [language] argument is the two-letter name of a language,
@@ -28,10 +28,11 @@ DESCRIPTION
Vim is always started in Vi compatible mode.
FILES
- /usr/local/lib/vim/tutor/tutor[.language]
+ /usr/local/share/vim/vim??/tutor/tutor[.language]
The Vimtutor text file(s).
+ vim?? is short version number, like vim91 for Vim 9.1
- /usr/local/lib/vim/tutor/tutor.vim
+ /usr/local/share/vim/vim??/tutor/tutor.vim
The Vim script used to copy the Vimtutor text file.
AUTHOR
@@ -47,4 +48,4 @@ SEE ALSO
- 2001 April 2 VIMTUTOR(1)
+ 2024 August 12 VIMTUTOR(1)
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index e264e51..d3e5f67 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 9.1. Last change: 2024 Feb 20
+*windows.txt* For Vim version 9.1. Last change: 2024 Jul 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1223,7 +1223,8 @@ list of buffers. |unlisted-buffer|
:bw[ipeout][!] N1 N2 ...
Like |:bdelete|, but really delete the buffer. Everything
related to the buffer is lost. All marks in this buffer
- become invalid, option settings are lost, etc. Don't use this
+ become invalid, option settings are lost, the jumplist and
+ tagstack data will be purged, etc. Don't use this
unless you know what you are doing. Examples: >
:.+,$bwipeout " wipe out all buffers after the current
" one
diff --git a/runtime/doc/xxd-it.1 b/runtime/doc/xxd-it.1
index a4c1fe4..604d30a 100644
--- a/runtime/doc/xxd-it.1
+++ b/runtime/doc/xxd-it.1
@@ -1,4 +1,4 @@
-.TH XXD 1 "Agosto 1996" "Pagina di manuale per xxd"
+.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd"
.\"
.\" 21 Maggio 1996
.\" Autore della pagina di manuale:
@@ -190,7 +190,10 @@ Nel modificare immagini esadecimali, si tenga conto che
salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali
(vedere opzione \-c). Ciò implica pure che le modifiche alle colonne di caratteri
stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine
-esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è interpretata [e utilizzata].
+esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero
+corretto di colonne.
+In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è
+interpretata [e utilizzata].
.PP
Notare la differenza fra
.br
@@ -221,10 +224,11 @@ si aggiunge a 1k (1024) dove `dd' si era fermato.
.PP
Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti.
.br
-\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file
+\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file\fR
.PP
Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai.
-L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s.
+L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1),
+quando si usa l'opzione \-s.
.SH ESEMPI
.PP
.br
@@ -237,60 +241,63 @@ Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di
Stampa 3 righe (0x30 byte in esadecimale) alla fine di
.BR file .
.br
-\fI% xxd \-s \-0x30 file
+\fI% xxd \-s \-0x30 file\fR
+.PP
+Nota: I risultati degli esempi seguenti sono riferiti alla versione di
+Maggio 2024 della pagina di manuale [quella che state leggendo].
.PP
.br
Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
.br
-\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
-.br
-2e54482058584420312022417567757374203139
+\fI% xxd \-l 120 \-ps \-c 20 xxd-it.UTF-8.1\fR
.br
-39362220224d616e75616c207061676520666f72
+2e544820585844203120224d616767696f203230
.br
-20787864220a2e5c220a2e5c222032317374204d
+3234222022506167696e61206469206d616e7561
.br
-617920313939360a2e5c22204d616e2070616765
+6c652070657220787864220a2e5c220a2e5c2220
.br
-20617574686f723a0a2e5c2220202020546f6e79
+3231204d616767696f20313939360a2e5c222041
.br
-204e7567656e74203c746f6e79407363746e7567
+75746f72652064656c6c6120706167696e612064
.br
+69206d616e75616c653a0a2e5c2220202020546f
+.PP
.br
-Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga.
+Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
.br
-\fI% xxd \-l 120 \-c 12 xxd.1\fR
+\fI% xxd \-l 120 \-c 12 xxd-it.UTF-8.1\fR
.br
-0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
+00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
.br
-000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
+0000000c: 6167 6769 6f20 3230 3234 2220 aggio 2024"
.br
-0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
+00000018: 2250 6167 696e 6120 6469 206d "Pagina di m
.br
-0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\
+00000024: 616e 7561 6c65 2070 6572 2078 anuale per x
.br
-0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M
+00000030: 7864 220a 2e5c 220a 2e5c 2220 xd"..\"..\"
.br
-000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\"
+0000003c: 3231 204d 6167 6769 6f20 3139 21 Maggio 19
.br
-0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
+00000048: 3936 0a2e 5c22 2041 7574 6f72 96..\" Autor
.br
-0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\"
+00000054: 6520 6465 6c6c 6120 7061 6769 e della pagi
.br
-0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
+00000060: 6e61 2064 6920 6d61 6e75 616c na di manual
.br
-000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
+0000006c: 653a 0a2e 5c22 2020 2020 546f e:..\" To
.PP
.br
-Visualizza la data dal file xxd.1
+Visualizza la data dal file xxd-it.UTF-8.1
.br
-\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
+\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
.br
-0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
+0000003c: 3231 204d 6167 6769 6f20 3139 3936 21 Maggio 1996
.PP
.br
-Copiare
+Copia
.B input_file
su
.B output_file
@@ -300,30 +307,30 @@ premettendogli 100 byte a 0x00.
.br
.br
-Modificare (patch) la data nel file xxd.1
+Modifica (patch) la data nel file xxd-it.UTF-8.1
.br
-\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR
+\fI% echo "000003c: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
.br
-\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
+\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
.br
-0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
+0000003c: 3331 204d 6167 6769 6f20 3139 3936 31 Maggio 1996
.PP
.br
-Creare un file di 65537 byte tutto a 0x00,
+Crea un file di 65537 byte tutto a 0x00,
tranne l'ultimo carattere che è una 'A' (esadecimale 0x41).
.br
\fI% echo "010000: 41" | xxd \-r > file\fR
.PP
.br
-Stampa una immagine esadecimale del file di cui sopra con opzione autoskip.
+Stampa un'immagine esadecimale del file di cui sopra con opzione autoskip.
.br
\fI% xxd \-a \-c 12 file\fR
.br
-0000000: 0000 0000 0000 0000 0000 0000 ............
+00000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
-000fffc: 0000 0000 40 ....A
+0000fffc: 0000 0000 41 ....A
.PP
Creare un file di 1 byte che contiene il solo carattere 'A'.
Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file;
@@ -388,7 +395,7 @@ La stranezza dello strumento rispecchia la mente del suo creatore.
Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago.
.br
.SH VERSIONE
-Questa pagina di manuale documenta la versione 1.7 di xxd.
+Questa pagina di manuale documenta la versione 1.7 di xxd del maggio 2024.
.SH AUTORE
.br
(c) 1990-1997 Juergen Weigert
diff --git a/runtime/doc/xxd-it.UTF-8.1 b/runtime/doc/xxd-it.UTF-8.1
index 58b9789..9b67643 100644
--- a/runtime/doc/xxd-it.UTF-8.1
+++ b/runtime/doc/xxd-it.UTF-8.1
@@ -1,4 +1,4 @@
-.TH XXD 1 "Agosto 1996" "Pagina di manuale per xxd"
+.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd"
.\"
.\" 21 Maggio 1996
.\" Autore della pagina di manuale:
@@ -190,7 +190,10 @@ Nel modificare immagini esadecimali, si tenga conto che
salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali
(vedere opzione \-c). Ciò implica pure che le modifiche alle colonne di caratteri
stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine
-esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è interpretata [e utilizzata].
+esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero
+corretto di colonne.
+In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è
+interpretata [e utilizzata].
.PP
Notare la differenza fra
.br
@@ -221,10 +224,11 @@ si aggiunge a 1k (1024) dove `dd' si era fermato.
.PP
Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti.
.br
-\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file
+\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file\fR
.PP
Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai.
-L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s.
+L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1),
+quando si usa l'opzione \-s.
.SH ESEMPI
.PP
.br
@@ -237,60 +241,63 @@ Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di
Stampa 3 righe (0x30 byte in esadecimale) alla fine di
.BR file .
.br
-\fI% xxd \-s \-0x30 file
+\fI% xxd \-s \-0x30 file\fR
+.PP
+Nota: I risultati degli esempi seguenti sono riferiti alla versione di
+Maggio 2024 della pagina di manuale [quella che state leggendo].
.PP
.br
Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
.br
-\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
-.br
-2e54482058584420312022417567757374203139
+\fI% xxd \-l 120 \-ps \-c 20 xxd-it.UTF-8.1\fR
.br
-39362220224d616e75616c207061676520666f72
+2e544820585844203120224d616767696f203230
.br
-20787864220a2e5c220a2e5c222032317374204d
+3234222022506167696e61206469206d616e7561
.br
-617920313939360a2e5c22204d616e2070616765
+6c652070657220787864220a2e5c220a2e5c2220
.br
-20617574686f723a0a2e5c2220202020546f6e79
+3231204d616767696f20313939360a2e5c222041
.br
-204e7567656e74203c746f6e79407363746e7567
+75746f72652064656c6c6120706167696e612064
.br
+69206d616e75616c653a0a2e5c2220202020546f
+.PP
.br
-Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga.
+Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
.br
-\fI% xxd \-l 120 \-c 12 xxd.1\fR
+\fI% xxd \-l 120 \-c 12 xxd-it.UTF-8.1\fR
.br
-0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
+00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
.br
-000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
+0000000c: 6167 6769 6f20 3230 3234 2220 aggio 2024"
.br
-0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
+00000018: 2250 6167 696e 6120 6469 206d "Pagina di m
.br
-0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\
+00000024: 616e 7561 6c65 2070 6572 2078 anuale per x
.br
-0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M
+00000030: 7864 220a 2e5c 220a 2e5c 2220 xd"..\"..\"
.br
-000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\"
+0000003c: 3231 204d 6167 6769 6f20 3139 21 Maggio 19
.br
-0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
+00000048: 3936 0a2e 5c22 2041 7574 6f72 96..\" Autor
.br
-0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\"
+00000054: 6520 6465 6c6c 6120 7061 6769 e della pagi
.br
-0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
+00000060: 6e61 2064 6920 6d61 6e75 616c na di manual
.br
-000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
+0000006c: 653a 0a2e 5c22 2020 2020 546f e:..\" To
.PP
.br
-Visualizza la data dal file xxd.1
+Visualizza la data dal file xxd-it.UTF-8.1
.br
-\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
+\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
.br
-0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
+0000003c: 3231 204d 6167 6769 6f20 3139 3936 21 Maggio 1996
.PP
.br
-Copiare
+Copia
.B input_file
su
.B output_file
@@ -300,30 +307,30 @@ premettendogli 100 byte a 0x00.
.br
.br
-Modificare (patch) la data nel file xxd.1
+Modifica (patch) la data nel file xxd-it.UTF-8.1
.br
-\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR
+\fI% echo "000003c: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
.br
-\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
+\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
.br
-0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
+0000003c: 3331 204d 6167 6769 6f20 3139 3936 31 Maggio 1996
.PP
.br
-Creare un file di 65537 byte tutto a 0x00,
+Crea un file di 65537 byte tutto a 0x00,
tranne l'ultimo carattere che è una 'A' (esadecimale 0x41).
.br
\fI% echo "010000: 41" | xxd \-r > file\fR
.PP
.br
-Stampa una immagine esadecimale del file di cui sopra con opzione autoskip.
+Stampa un'immagine esadecimale del file di cui sopra con opzione autoskip.
.br
\fI% xxd \-a \-c 12 file\fR
.br
-0000000: 0000 0000 0000 0000 0000 0000 ............
+00000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
-000fffc: 0000 0000 40 ....A
+0000fffc: 0000 0000 41 ....A
.PP
Creare un file di 1 byte che contiene il solo carattere 'A'.
Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file;
@@ -388,7 +395,7 @@ La stranezza dello strumento rispecchia la mente del suo creatore.
Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago.
.br
.SH VERSIONE
-Questa pagina di manuale documenta la versione 1.7 di xxd.
+Questa pagina di manuale documenta la versione 1.7 di xxd del maggio 2024.
.SH AUTORE
.br
(c) 1990-1997 Juergen Weigert
diff --git a/runtime/doc/xxd-ja.UTF-8.1 b/runtime/doc/xxd-ja.UTF-8.1
index dabc477..93928fe 100644
--- a/runtime/doc/xxd-ja.UTF-8.1
+++ b/runtime/doc/xxd-ja.UTF-8.1
@@ -79,6 +79,9 @@
.IR \-C " | " \-capitalize
\-i を使用ã—ãŸéš›ã«ã€C インクルードファイル形å¼ã®å¤‰æ•°åを大文字ã«ã™ã‚‹ã€‚
.TP
+.I \-d
+オフセットを 16 進ã®ä»£ã‚ã‚Šã« 10 進ã§è¡¨ç¤ºã™ã‚‹ã€‚
+.TP
.IR \-E " | " \-EBCDIC
å³ç«¯ã«å‡ºåŠ›ã•ã‚Œã‚‹æ–‡å­—ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’ ASCII ã‹ã‚‰ EBCDIC ã«å¤‰æ›´ã™ã‚‹ã€‚
16 進ダンプã®å‡ºåŠ›å½¢å¼ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。
@@ -135,7 +138,7 @@ C インクルードファイル形å¼ã§å‡ºåŠ›ã™ã‚‹ã€‚
ãŸã„ã¦ã„ã¯ã€è¡¨ç¤ºå¯èƒ½æ–‡å­—ã¨éžè¡¨ç¤ºå¯èƒ½æ–‡å­—を区別ã™ã‚‹ã®ã«æœ‰ç”¨ã§ã™ã€‚
.I \fIwhen\fP
ã¯
-.BR never ", " always ", ã‚ã‚‹ã„㯠" auto
+.BR never ", " always ", ã‚ã‚‹ã„㯠" auto " (デフォルト: auto)
ã®ã„ãšã‚Œã‹ã§ã™ã€‚
.BR $NO_COLOR
環境変数ãŒè¨­å®šã•ã‚Œã¦ã„ã‚‹ã¨ãã¯ã€ã‚«ãƒ©ãƒ¼è¡¨ç¤ºã¯ç„¡åŠ¹åŒ–ã•ã‚Œã¾ã™ã€‚
diff --git a/runtime/doc/xxd-ru.1 b/runtime/doc/xxd-ru.1
index 8f32432..99b7461 100644
--- a/runtime/doc/xxd-ru.1
+++ b/runtime/doc/xxd-ru.1
@@ -1,57 +1,60 @@
-.TH XXD 1 "August 1996" "óÔÒÁÎÉÃÁ man ÄÌÑ xxd"
+.TH XXD 1 "May 2024" "óÐÒÁ×ÏÞÎÉË ÐÏ ÐÒÏÇÒÁÍÍÅ xxd"
.\"
.\" 21st May 1996
.\" Man page author:
.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.\" Changes by Bram Moolenaar <Bram@vim.org>
-.SH éíñ
+.SH îáúîáþåîéå
+ðÒÏÇÒÁÍÍÁ
.I xxd
-\- ÓÏÚÄÁ£Ô ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÆÁÊÌÁ × ×ÉÄÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ËÏÄÏ× ÉÌÉ ×ÙÐÏÌÎÑÅÔ
-ÏÂÒÁÔÎÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ.
-.SH ëïíáîäîáñ óôòïëá
+\[em] ×ÙÐÏÌÎÑÅÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÄÁÎÎÙÈ ÉÌÉ × ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÊ ×ÉÄ, ÉÌÉ ×ÙÐÏÌÎÑÅÔ
+ÏÂÒÁÔÎÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ËÏÄÁ × ÉÓÈÏÄÎÙÊ ÆÏÒÍÁÔ
+.SH ëòáôëéê ïâúïò
.B xxd
\-h[elp]
.br
.B xxd
-[ËÌÀÞÉ] [×ÈÏÄÎÏÊ_ÆÁÊÌ [×ÙÈÏÄÎÏÊ_ÆÁÊÌ]]
+[ÁÒÇÕÍÅÎÔÙ] [×ÈÏÄÎÏÊ_ÆÁÊÌ [×ÙÈÏÄÎÏÊ_ÆÁÊÌ]]
.br
.B xxd
-\-r[evert] [ËÌÀÞÉ] [×ÈÏÄÎÏÊ_ÆÁÊÌ [×ÙÈÏÄÎÏÊ_ÆÁÊÌ]]
+\-r[evert] [ÁÒÇÕÍÅÎÔÙ] [×ÈÏÄÎÏÊ_ÆÁÊÌ [×ÙÈÏÄÎÏÊ_ÆÁÊÌ]]
.SH ïðéóáîéå
+ðÒÏÇÒÁÍÍÁ
.I xxd
-ÓÏÚÄÁ£Ô ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÕËÁÚÁÎÎÏÇÏ ÆÁÊÌÁ ÉÌÉ ÄÁÎÎÙÈ, ÐÒÏÞÉÔÁÎÎÙÈ ÉÚ ÐÏÔÏËÁ
-ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ, × ×ÉÄÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ËÏÄÏ×. üÔÁ ËÏÍÁÎÄÁ ÔÁËÖÅ ÍÏÖÅÔ
-×ÙÐÏÌÎÉÔØ ÏÂÒÁÔÎÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÚÁÄÁÎÎÙÈ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÍÉ ËÏÄÁÍÉ ÄÁÎÎÙÈ
-× ÉÓÈÏÄÎÙÊ ÂÉÎÁÒÎÙÊ ÆÏÒÍÁÔ.
-ðÏÄÏÂÎÏ ËÏÍÁÎÄÁÍ
+ÓÏÚÄÁ£Ô ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÕËÁÚÁÎÎÏÇÏ ÆÁÊÌÁ ÉÌÉ ÄÁÎÎÙÈ, ÐÒÏÞÉÔÁÎÎÙÈ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ
+ÐÏÔÏËÁ ××ÏÄÁ, × ×ÉÄÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ËÏÄÏ×. üÔÁ ÐÒÏÇÒÁÍÍÁ ÔÁËÖÅ ÍÏÖÅÔ
+×ÙÐÏÌÎÑÔØ ÏÂÒÁÔÎÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÚÁÄÁÎÎÙÈ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÍÉ ËÏÄÁÍÉ ÄÁÎÎÙÈ
+× ÉÓÈÏÄÎÙÊ Ä×ÏÉÞÎÙÈ ÆÏÒÍÁÔ.
+ðÏÄÏÂÎÏ ÐÒÏÇÒÁÍÍÁÍ
.BR uuencode(1)
É
-.BR uudecode(1),
-ÏÎÁ ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ × ASCII-ËÏÄ,
-ËÏÔÏÒÙÊ ÍÏÖÎÏ ÐÅÒÅÄÁ×ÁÔØ ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ, ÏÄÎÁËÏ, ÐÏÍÉÍÏ ÜÔÏÇÏ, ÐÒÏÇÒÁÍÍÁ
-xxd ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÄÅËÏÄÉÒÏ×ÁÎÉÅ × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ,
-Á ÔÁËÖÅ ÍÏÖÅÔ ÐÒÉÍÅÎÑÔØÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÚÁÐÌÁÔÏË ÄÌÑ ÂÉÎÁÒÎÙÈ ÆÁÊÌÏ×.
-.SH ëìàþé úáðõóëá
+.BR uudecode(1)
+, ÏÎÁ ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ Ä×ÏÉÞÎÙÈ ÄÁÎÎÙÈ × ÓÉÍ×ÏÌÙ ËÏÄÉÒÏ×ËÉ
+ASCII, ËÏÔÏÒÙÅ ÍÏÖÎÏ ÐÅÒÅÄÁ×ÁÔØ ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ, ÏÄÎÁËÏ, ÐÏÍÉÍÏ ÜÔÏÇÏ,
+ÐÒÏÇÒÁÍÍÁ xxd ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÄÅËÏÄÉÒÏ×ÁÎÉÅ × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ,
+Á ÔÁËÖÅ ÍÏÖÅÔ ÐÒÉÍÅÎÑÔØÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÉÓÐÒÁ×ÌÅÎÉÊ ÄÌÑ Ä×ÏÉÞÎÙÈ ÆÁÊÌÏ×.
+.SH áòçõíåîôù ëïíáîäîïê óôòïëé
åÓÌÉ
.I ×ÈÏÄÎÏÊ_ÆÁÊÌ
-ÎÅ ÚÁÄÁÎ, ÔÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÄÁÎÎÙÅ ÞÉÔÁÀÔÓÑ ÉÚ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ.
+ÎÅ ÚÁÄÁÎ, ÔÏ ÔÒÅÂÕÅÍÙÅ ÄÁÎÎÙÅ ÓÞÉÔÙ×ÁÀÔÓÑ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ××ÏÄÁ.
÷ ÓÌÕÞÁÅ, ÅÓÌÉ × ËÁÞÅÓÔ×Å
.I ×ÈÏÄÎÏÇÏ_ÆÁÊÌÁ
ÉÓÐÏÌØÚÕÅÔÓÑ ÓÉÍ×ÏÌ
-.RB \` \- ',
-ÉÓÔÏÞÎÉËÏÍ ÄÁÎÎÙÈ ÔÁËÖÅ ×ÙÓÔÕÐÁÅÔ ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ.
+.RB ' \- ',
+ÉÓÔÏÞÎÉËÏÍ ÄÁÎÎÙÈ ÔÁËÖÅ ×ÙÓÔÕÐÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ÐÏÔÏË ××ÏÄÁ.
÷ ÔÏÍ ÓÌÕÞÁÅ, ÅÓÌÉ ÎÅ ÕËÁÚÁÎ
.I ×ÙÈÏÄÎÏÊ_ÆÁÊÌ
(ÉÌÉ ×ÍÅÓÔÏ ÎÅÇÏ ÉÓÐÏÌØÚÕÅÔÓÑ ÓÉÍ×ÏÌ
-.RB \` \- '
-), ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÎÁÐÒÁ×ÌÑÅÔÓÑ × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ.
-.PP
-ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ "ÌÅÎÉ×ÙÊ" ÁÌÇÏÒÉÔÍ ÒÁÚÂÏÒÁ ËÌÀÞÅÊ, ËÏÔÏÒÙÊ ÎÅ
-ÐÒÏ×ÅÒÑÅÔ ÂÏÌÅÅ ÏÄÎÏÊ ÂÕË×Ù ËÌÀÞÁ, ÅÓÌÉ × ÜÔÏÍ ËÌÀÞÅ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÐÁÒÁÍÅÔÒ.
-ðÒÏÂÅÌÙ ÍÅÖÄÕ ÅÄÉÎÓÔ×ÅÎÎÙÍ ÓÉÍ×ÏÌÏÍ ËÌÀÞÁ É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ÐÁÒÁÍÅÔÒÏÍ ÎÅ Ñ×ÌÑÀÔÓÑ
-ÏÂÑÚÁÔÅÌØÎÙÍÉ. ðÁÒÁÍÅÔÒÙ ËÌÀÞÅÊ ÍÏÇÕÔ ÂÙÔØ ÚÁÄÁÎÙ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÄÅÓÑÔÉÞÎÏÇÏ,
-ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÉÌÉ ×ÏÓØÍÅÒÉÞÎÏÇÏ ÆÏÒÍÁÔÁ.
-ôÁËÉÍ ÏÂÒÁÚÏÍ, ËÌÀÞÉ
+.RB ' \- '
+), ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÎÁÐÒÁ×ÌÑÅÔÓÑ × ÓÔÁÎÄÁÒÔÎÙÊ ÐÏÔÏË ×Ù×ÏÄÁ.
+.PP
+ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÐÒÉÍÅÎÑÅÔÓÑ "ÌÅÎÉ×ÙÊ" ÁÌÇÏÒÉÔÍ ÒÁÚÂÏÒÁ ÁÒÇÕÍÅÎÔÏ×,
+ËÏÔÏÒÙÊ ÐÒÏ×ÅÒÑÅÔ ÔÏÌØËÏ ÐÅÒ×ÕÀ ÂÕË×Õ ÁÒÇÕÍÅÎÔÁ, ÅÓÌÉ, ËÏÎÅÞÎÏ, ÄÌÑ ÜÔÏÇÏ
+ÁÒÇÕÍÅÎÔÁ ÎÅ ÕËÁÚÁÎÏ ËÁËÏÅ-ÔÏ ÚÎÁÞÅÎÉÅ.
+ðÒÏÂÅÌÙ ÍÅÖÄÕ ÏÄÎÏÓÉÍ×ÏÌØÎÙÍ ÁÒÇÕÍÅÎÔÏÍ É ÅÇÏ ÚÎÁÞÅÎÉÅÍ ÎÅ Ñ×ÌÑÀÔÓÑ
+ÏÂÑÚÁÔÅÌØÎÙÍÉ. úÎÁÞÅÎÉÑ ÁÒÇÕÍÅÎÔÏ× ÍÏÇÕÔ ÂÙÔØ ÚÁÄÁÎÙ × ÄÅÓÑÔÉÞÎÏÍ,
+ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÍ ÉÌÉ ×ÏÓØÍÅÒÉÞÎÏÍ ÆÏÒÍÁÔÅ.
+ôÁËÉÍ ÏÂÒÁÚÏÍ, ÁÒÇÕÍÅÎÔÙ
.BR \-c8 ,
.BR "\-c 8" ,
.B \-c 010
@@ -61,118 +64,179 @@ xxd ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÄÅËÏÄÉÒÏ×ÁÎÉÅ × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ,
.PP
.TP
.IR \-a " | " \-autoskip
-÷ËÌÀÞÁÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉÊ ÐÒÏÐÕÓË: ×ÍÅÓÔÏ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ
-ÎÕÌÅ×ÙÈ ÓÔÒÏË ÉÓÐÏÌØÚÕÅÔÓÑ ÏÄÉÎÏÞÎÙÊ ÓÉÍ×ÏÌ '*'. ðÏ ÕÍÏÌÞÁÎÉÀ
-ÎÅ ÐÒÉÍÅÎÑÅÔÓÑ.
+÷ËÌÀÞÉÔØ Á×ÔÏÍÁÔÉÞÅÓËÉÊ ÐÒÏÐÕÓË, Ô. Å., ×ÍÅÓÔÏ ÎÅÓËÏÌØËÉÈ ÉÄÕÝÉÈ ÐÏÄÒÑÄ ÓÔÒÏË
+Ó ÎÕÌÅ×ÙÍ ÚÎÁÞÅÎÉÅÍ, ÉÓÐÏÌØÚÕÅÔÓÑ ÏÄÉÎÏÞÎÙÊ ÓÉÍ×ÏÌ '*'.
+ðÏ ÕÍÏÌÞÁÎÉÀ ÎÅ ÐÒÉÍÅÎÑÅÔÓÑ.
.TP
.IR \-b " | " \-bits
-÷ÍÅÓÔÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ËÏÄÁ ÉÓÐÏÌØÚÕÀÔÓÑ ÂÉÔÙ (Ä×ÏÉÞÎÙÅ ÃÉÆÒÙ).
-ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÜÔÏÇÏ ËÌÀÞÁ ×ÍÅÓÔÏ ÏÂÙÞÎÏÇÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
-ÏËÔÅÔÏ× ÉÓÐÏÌØÚÕÀÔÓÑ ÎÁÂÏÒÙ ÉÚ ×ÏÓØÍÉ ÓÉÍ×ÏÌÏ× "1" É "0". ëÁÖÄÁÑ ÓÔÒÏËÁ
-ÐÒÅÄ×ÁÒÑÅÔÓÑ ÎÏÍÅÒÏÍ ÓÔÒÏËÉ × ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÍ ×ÉÄÅ, Á ÚÁ×ÅÒÛÁÅÔÓÑ ÓÉÍ×ÏÌØÎÙÍ
-ÐÒÅÄÓÔÁ×ÌÅÎÉÅÍ (× ×ÉÄÅ ascii ÉÌÉ ebcdic). ëÌÀÞÉ \-p, \-i × ÜÔÏÍ ÒÅÖÉÍÅ
-ÎÅ ÒÁÂÏÔÁÀÔ.
+éÓÐÏÌØÚÏ×ÁÔØ ÂÉÔÙ (Ä×ÏÉÞÎÙÊ ËÏÄ), Á ÎÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÃÉÆÒÙ.
+ðÒÉ ÕËÁÚÁÎÉÉ ÜÔÏÇÏ ÁÒÇÕÍÅÎÔÁ, ×ÍÅÓÔÏ ÏÂÙÞÎÏÇÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
+ÏËÔÅÔÏ×, ÂÕÄÅÔ ÏÔÏÂÒÁÖÁÅÔÓÑ ÎÁÂÏÒ ÉÚ ×ÏÓØÍÉ ÃÉÆÒ "1" É "0". ëÁÖÄÁÑ ÓÔÒÏËÁ
+ÐÒÅÄ×ÁÒÑÅÔÓÑ Å£ ÎÏÍÅÒÏÍ × ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÍ ×ÉÄÅ, Á ÚÁ×ÅÒÛÁÅÔÓÑ × ×ÉÄÅ ÓÉÍ×ÏÌÏ×
+× ËÏÄÉÒÏ×ËÅ ASCII (ÉÌÉ × ËÏÄÉÒÏ×ËÅ EBCDIC). áÒÇÕÍÅÎÔÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ
+\-p, \-i × ÜÔÏÍ ÒÅÖÉÍÅ ÎÅ ÐÒÉÍÅÎÑÀÔÓÑ.
.TP
.IR "\-c ËÏÌ " | " \-cols ËÏÌ"
úÁÄÁ£Ô ËÏÌÉÞÅÓÔ×Ï ÏËÔÅÔÏ×
.RI < ËÏÌ >,
ËÏÔÏÒÏÅ ×Ù×ÏÄÉÔÓÑ ÎÁ ËÁÖÄÏÊ ÓÔÒÏËÅ. ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ ÚÎÁÞÅÎÉÅ 16
-(\-i: 12, \-ps: 30, \-b: 6).
-íÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ: 256.
+(ÄÌÑ ÁÒÇÕÍÅÎÔÁ \-i ÉÓÐÏÌØÚÕÅÔÓÑ 12, ÄÌÑ \-ps \[em] 30, ÄÌÑ \-b \[em] 6).
+íÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ \[em] 256.
+íÁËÓÉÍÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÎÅ ÐÒÉÍÅÎÑÅÔÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ \-ps. åÓÌÉ Ó ÁÒÇÕÍÅÎÔÏÍ \-ps,
+ÕËÁÚÁÎÏ ÚÎÁÞÅÎÉÅ 0, ÔÏ ÂÕÄÅÔ ×Ù×ÅÄÅÎÁ ÐÒÏÓÔÏ ÏÄÎÁ ÄÌÉÎÎÁÑ ÓÔÒÏËÁ.
+.TP
+.IR \-C " | " \-capitalize
+ðÒÅÏÂÒÁÚÏ×ÁÔØ ÎÁÉÍÅÎÏ×ÁÎÉÑ ÐÅÒÅÍÅÎÎÙÈ × ×ÅÒÈÎÉÊ ÒÅÇÉÓÔÒ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÓÔÉÌÑ
+ÏÔÏÂÒÁÖÅÎÉÑ × ×ÉÄÅ ÐÏÄËÌÀÞÁÅÍÙÈ ÆÁÊÌÏ× ÑÚÙËÁ óÉ,
+ËÏÔÏÒÙÊ ×ËÌÀÞÁÅÔÓÑ ÞÅÒÅÚ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ \-i.
+.TP
+.I \-d
+ïÔÏÂÒÁÖÁÔØ ÓÍÅÝÅÎÉÅ ÎÅ × ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÍ, Á × ÄÅÓÑÔÉÞÎÏÍ ÆÏÒÍÁÔÅ.
.TP
.IR \-E " | " \-EBCDIC
-éÚÍÅÎÑÅÔ ÓÐÏÓÏ ËÏÄÉÒÏ×ÁÎÉÑ ÓÉÍ×ÏÌÏ× × ÐÒÁ×ÏÊ ËÏÌÏÎËÅ Ó ASCII ÎÁ EBCDIC. üÔÏÔ ËÌÀÞ
-ÎÅ ÉÚÍÅÎÑÅÔ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ. äÁÎÎÙÊ ËÌÀÞ ÎÅ ÉÍÅÅÔ ÓÍÙÓÌÁ,
-ÅÓÌÉ ÉÓÐÏÌØÚÕÀÔÓÑ ËÌÀÞÉ \-r, \-p ÉÌÉ \-i.
+ïÔÏÂÒÁÖÁÔØ ÓÉÍ×ÏÌÙ × ËÒÁÊÎÅ ÐÒÁ×ÏÊ ËÏÌÏÎËÅ ÎÅ × ËÏÄÉÒÏ×ËÅ ASCII,
+Á × ËÏÄÉÒÏ×ËÅ EBCDIC. üÔÏÔ ÁÒÇÕÍÅÎÔ ÎÅ ×ÌÉÑÅÔ ÎÁ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ
+ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÄÁÎÎÙÈ. äÁÎÎÙÊ ÁÒÇÕÍÅÎÔ ÎÅ ÉÍÅÅÔ ÓÍÙÓÌÁ, ÅÓÌÉ ÉÓÐÏÌØÚÕÀÔÓÑ
+ÁÒÇÕÍÅÎÔÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ \-r, \-p ÉÌÉ \-i.
+.TP
+.IR \-e
+éÓÐÏÌØÚÏ×ÁÔØ ÏÂÒÁÔÎÙÊ ÐÏÒÑÄÏË ÂÁÊÔ ÐÒÉ ÏÔÏÂÒÁÖÅÎÉÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ
+ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÄÁÎÎÙÈ.
+çÒÕÐÐÁ ÂÁÊÔ ÂÕÄÅÔ ÐÏËÁÚÁÎÁ ËÁË Ä×ÏÉÞÎÏÅ ÓÌÏ×Ï ÏÔ ÍÌÁÄÛÉÈ ÒÁÚÒÑÄÏ× Ë ÓÔÁÒÛÉÍ.
+éÓÐÏÌØÚÕÅÍÏÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÇÒÕÐÐÉÒÏ×ÁÎÉÅ ÐÏ ÞÅÔÙÒÅ ÂÁÊÔÁ ÍÏÖÅÔ ÂÙÔØ ÉÚÍÅÎÅÎÏ
+ÞÅÒÅÚ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ
+.RI "" \-g .
+äÅÊÓÔ×ÉÅ ÜÔÏÇÏ ÁÒÇÕÍÅÎÔÁ ÒÁÓÐÒÏÓÔÒÁÎÑÅÔÓÑ ÔÏÌØËÏ ÎÁ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ
+ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÄÁÎÎÙÈ É ÎÅ ÏËÁÚÙ×ÁÅÔ ×ÌÉÑÎÉÅ ÎÁ ÓÉÍ×ÏÌØÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ
+× ËÏÄÉÒÏ×ËÅ ASCII (ÉÌÉ EBCDIC).
+áÒÇÕÍÅÎÔÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ
+\-r, \-p, \-i ÎÅ ÐÒÉÍÅÎÑÀÔÓÑ × ÜÔÏÍ ÒÅÖÉÍÅ.
.TP
.IR "\-g ÂÁÊÔ " | " \-groupsize ÂÁÊÔ"
-ðÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÇÒÕÐÐÉÒÏ×ËÕ ÕËÁÚÁÎÎÏÇÏ ËÏÌÉÞÅÓÔ×Á
-.RI < ÂÁÊÔÏ× >
-(Ä×Å ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÃÉÆÒÙ ÉÌÉ ×ÏÓÅÍØ ÂÉÔÏ×), ÏÔÄÅÌÑÑ ÇÒÕÐÐÙ ÄÒÕÇ ÏÔ ÄÒÕÇÁ ÐÒÏÂÅÌÁÍÉ.
+÷ÙÐÏÌÎÉÔØ ÇÒÕÐÐÉÒÏ×ÁÎÉÅ ÕËÁÚÁÎÎÏÇÏ ËÏÌÉÞÅÓÔ×Á
+.RI < ÂÁÊÔ >
+(Ä×Å ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÃÉÆÒÙ ÉÌÉ ×ÏÓÅÍØ Ä×ÏÉÞÎÙÈ ÃÉÆÒ), ÏÔÄÅÌÑÑ ÇÒÕÐÐÙ
+ÄÒÕÇ ÏÔ ÄÒÕÇÁ ÐÒÏÂÅÌÁÍÉ.
úÎÁÞÅÎÉÅ
.I \-g 0
-ÐÒÉÍÅÎÑÅÔÓÑ ÄÌÑ ÏÔËÁÚÁ ÏÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÇÒÕÐÐÉÒÏ×ËÉ.
+ÐÒÉÍÅÎÑÅÔÓÑ ÄÌÑ ÏÔËÁÚÁ ÏÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÇÒÕÐÐÉÒÏ×ÁÎÉÑ.
ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ ÚÎÁÞÅÎÉÅ
-.RI < ÂÁÊÔ "> ÒÁ×ÎÏÅ " 2
-× ÏÂÙÞÎÏÍ ÒÅÖÉÍÅ É \fI1\fP × ÂÉÔÏ×ÏÍ ÒÅÖÉÍÅ. çÒÕÐÐÉÒÏ×ËÁ ÎÅ ÐÒÉÍÅÎÑÅÔÓÑ
-× ÒÅÖÉÍÁÈ postscript É include.
+.RI < ÂÁÊÔ ">, ÒÁ×ÎÏÅ " 2
+ÐÒÉ ÏÔÏÂÒÁÖÅÎÉÉ × ÐÒÑÍÏÍ ÐÏÒÑÄËÅ ÂÁÊÔ, \fI4\fP ÐÒÉ ÏÔÏÂÒÁÖÅÎÉÉ × ÏÂÒÁÔÎÏÍ
+ÐÏÒÑÄËÅ ÂÁÊÔ É \fI1\fP × Ä×ÏÉÞÎÏÍ ÒÅÖÉÍÅ. çÒÕÐÐÉÒÏ×ËÁ ÎÅ ÐÒÉÍÅÎÑÅÔÓÑ
+× ÒÅÖÉÍÅ PostScript ÉÌÉ include.
.TP
.IR \-h " | " \-help
-÷Ù×ÏÄÉÔ ÓÐÒÁ×ËÕ ÐÏ ÄÏÓÔÕÐÎÙÍ ËÌÀÞÁÍ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ É ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ ÐÒÏÇÒÁÍÍÙ.
+ðÏËÁÚÁÔØ ËÒÁÔËÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÁÒÇÕÍÅÎÔÁÈ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ É ÚÁ×ÅÒÛÉÔØ ÒÁÂÏÔÕ
+ÐÒÏÇÒÁÍÍÙ.
óÏÚÄÁÎÉÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÎÅ ×ÙÐÏÌÎÑÅÔÓÑ.
.TP
.IR \-i " | " \-include
-ðÏÚ×ÏÌÑÅÔ ÓÏÚÄÁ×ÁÔØ ×Ù×ÏÄ × ÓÔÉÌÅ ÐÏÄËÌÀÞÁÅÍÙÈ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÏ× ÑÚÙËÁ C.
-÷Ù×ÏÄ ÓÏÄÅÒÖÉÔ ÐÏÌÎÏÃÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÔÁÔÉÞÅÓËÏÇÏ ÍÁÓÓÉ×Á ÄÁÎÎÙÈ, ÉÍÑ ËÏÔÏÒÏÇÏ
-ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÉÍÅÎÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ, ÅÓÌÉ xxd ÎÅ ÓÞÉÔÙ×ÁÅÔ ÄÁÎÎÙÅ ÉÚ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ
-××ÏÄÁ.
+óÏÚÄÁ×ÁÔØ ×Ù×ÏÄ × ÓÔÉÌÅ ÐÏÄËÌÀÞÁÅÍÙÈ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÏ× ÑÚÙËÁ óÉ.
+÷Ù×ÏÄ ÓÏÄÅÒÖÉÔ ÐÏÌÎÏÃÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÔÁÔÉÞÅÓËÏÇÏ ÍÁÓÓÉ×Á ÄÁÎÎÙÈ, ÎÁÚ×ÁÎÉÅ
+ËÏÔÏÒÏÇÏ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÎÁÉÍÅÎÏ×ÁÎÉÀ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ, ÅÓÌÉ ÐÒÏÇÒÁÍÍÁ xxd
+ÎÅ ÓÞÉÔÙ×ÁÅÔ ÄÁÎÎÙÅ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ××ÏÄÁ.
.TP
.IR "\-l ÄÌÉÎÁ " | " \-len ÄÌÉÎÁ"
-úÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ ÐÏÓÌÅ ÚÁÐÉÓÉ ÚÁÄÁÎÎÏÇÏ × ÐÁÒÁÍÅÔÒÅ
+õËÁÚÙ×ÁÅÔ, ÞÔÏ ÐÏÓÌÅ ÚÁÐÉÓÉ ÚÁÄÁÎÎÏÇÏ × ÐÁÒÁÍÅÔÒÅ
.RI < ÄÌÉÎÁ >
-ËÏÌÉÞÅÓÔ×Á ÏËÔÅÔÏ×.
+ËÏÌÉÞÅÓÔ×Á ÏËÔÅÔÏ×, ÒÁÂÏÔÁ ÐÒÏÇÒÁÍÍÙ ÂÕÄÅÔ ÚÁ×ÅÒÛÅÎÁ.
+.TP
+.I "\-n ÎÁÚ×ÁÎÉÅ " | " \-name ÎÁÚ×ÁÎÉÅ"
+éÚÍÅÎÉÔØ ×ÏÚ×ÒÁÝÁÅÍÏÅ ÎÁÉÍÅÎÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÏÊ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÁÒÇÕÍÅÎÔÁ \-i.
+ðÒÉÍÅÎÑÅÔÓÑ Ë ÍÁÓÓÉ×Õ ÂÁÊÔ, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÉÍÅÎÏ×ÁÔØÓÑ ËÁË \fIÎÁÚ×ÁÎÉÅ\fP É ÄÌÉÎÁ
+ÆÁÊÌÁ ËÁË \fIÎÁÚ×ÁÎÉÅ\fP_len.
+.TP
+.I \-o ÓÍÅÝÅÎÉÅ
+õËÁÚÙ×ÁÅÔ ÄÏÂÁ×ÉÔØ
+.RI < ÓÍÅÝÅÎÉÅ >
+× ÏÔÏÂÒÁÖÁÅÍÕÀ ÐÏÚÉÃÉÀ ÆÁÊÌÁ.
.TP
.IR \-p " | " \-ps " | " \-postscript " | " \-plain
-éÓÐÏÌØÚÕÅÔ ÎÅÐÒÅÒÙ×ÎÙÊ ÆÏÒÍÁÔ ×Ù×ÏÄÁ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ËÏÄÁ,
-ÉÚ×ÅÓÔÎÙÊ ËÁË "ÐÒÏÓÔÏÊ" ÓÔÉÌØ ÉÌÉ ÓÔÉÌØ "postscript".
+éÓÐÏÌØÚÏ×ÁÔØ ÎÅÐÒÅÒÙ×ÎÙÊ ÆÏÒÍÁÔÁ ×Ù×ÏÄÁ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ËÏÄÁ,
+ÉÚ×ÅÓÔÎÏÇÏ ËÁË "ÐÒÏÓÔÏÊ" ÓÔÉÌØ ÉÌÉ ÓÔÉÌØ "PostScript".
.TP
.IR \-r " | " \-revert
-éÚÍÅÎÑÅÔ ÓÍÙÓÌ ÏÐÅÒÁÃÉÉ ÎÁ ÐÒÏÔÉ×ÏÐÏÌÏÖÎÙÊ: ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÑÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ
-ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ × ÂÉÎÁÒÎÙÊ ËÏÄ (ÉÌÉ ÐÒÉÍÅÎÑÔØ ÒÅÚÕÌØÔÁÔ × ËÁÞÅÓÔ×Å ÚÁÐÌÁÔÙ).
-åÓÌÉ ×Ù×ÏÄ ÐÒÏÉÓÈÏÄÉÔ ÎÅ × ÐÏÔÏË ÓÔÁÎÄÁÒÔÎÏÇÏ ×Ù×ÏÄÁ, ÔÏ xxd ×ÙÐÏÌÎÑÅÔ ÄÏÂÁ×ÌÅÎÉÅ ËÏÄÁ
-Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍÕ ÆÁÊÌÕ. ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ËÏÍÂÉÎÁÃÉÉ ËÌÀÞÅÊ
+÷ÙÐÏÌÎÉÔØ ÏÐÅÒÁÃÉÀ ÏÂÒÁÔÎÏÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ, Ô. Å. ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ
+ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ × Ä×ÏÉÞÎÙÊ ËÏÄ (ÉÌÉ ÐÒÉÍÅÎÉÔØ ÒÅÚÕÌØÔÁÔ
+× ËÁÞÅÓÔ×Å ÉÓÐÒÁ×ÌÅÎÉÑ).
+åÓÌÉ ×Ù×ÏÄ ÐÒÏÉÓÈÏÄÉÔ ÎÅ × ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏË ×Ù×ÏÄÁ, ÔÏ ÐÒÏÇÒÁÍÍÁ xxd ×ÙÐÏÌÎÑÅÔ
+ÄÏÂÁ×ÌÅÎÉÅ ËÏÄÁ Ë ×ÙÈÏÄÎÏÍÕ ÆÁÊÌÕ. ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ËÏÍÂÉÎÁÃÉÉ ÁÒÇÕÍÅÎÔÏ×
.I \-r \-p
ÐÒÏÉÓÈÏÄÉÔ ÞÔÅÎÉÅ "ÐÒÏÓÔÏÇÏ" ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ
-ÉÎÆÏÒÍÁÃÉÉ Ï ÎÏÍÅÒÁÈ ÓÔÒÏË É ËÁËÏÇÏ-ÌÉÂÏ ÓÐÅÃÉÁÌØÎÏÇÏ ÒÁÓËÒÏÑ ËÏÌÏÎÏË. ðÒÏÂÅÌÙ
-É ÓÉÍ×ÏÌÙ ÎÏ×ÏÊ ÓÔÒÏËÉ ÍÏÇÕÔ ×ÓÔÒÅÞÁÔØÓÑ × ÌÀÂÏÍ ÍÅÓÔÅ ÉÓÈÏÄÎÙÈ ÄÁÎÎÙÈ.
+ÉÎÆÏÒÍÁÃÉÉ Ï ÎÏÍÅÒÁÈ ÓÔÒÏË É ËÁËÏÇÏ-ÌÉÂÏ ÓÐÅÃÉÁÌØÎÏÇÏ ÒÁÓÐÒÅÄÅÌÅÎÉÑ ËÏÌÏÎÏË.
+ðÒÏÂÅÌÙ É ÓÉÍ×ÏÌÙ ÎÏ×ÏÊ ÓÔÒÏËÉ ÍÏÇÕÔ ×ÓÔÒÅÞÁÔØÓÑ × ÌÀÂÏÍ ÍÅÓÔÅ ÉÓÈÏÄÎÙÈ ÄÁÎÎÙÈ.
+ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ËÏÍÂÉÎÁÃÉÉ ÁÒÇÕÍÅÎÔÏ×
+.I \-r \-b
+ÂÕÄÅÔ ÐÒÏÉÓÈÏÄÉÔØ ÓÞÉÔÙ×ÁÎÉÅ Ä×ÏÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ×ÍÅÓÔÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ.
+.TP
+.IR \-R " " ËÏÇÄÁ
+÷ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ ÏÄÎÉ É ÔÅ ÖÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÚÎÁÞÅÎÉÑ É ÓÔÒÏËÏ×ÙÅ ÚÎÁÞÅÎÉÑ
+ÂÕÄÕÔ ÐÏÄÓ×ÅÞÉ×ÁÔØÓÑ ÏÄÎÉÍ É ÔÅÍ ÖÅ Ã×ÅÔÏÍ. ÷ ÏÓÎÏ×ÎÏÍ ÜÔÏ ÐÏÍÏÇÁÅÔ ÒÁÚÌÉÞÁÔØ
+ÐÅÞÁÔÁÅÍÙÅ É ÎÅÐÅÞÁÔÁÅÍÙÅ ÓÉÍ×ÏÌÙ.
+çÄÅ
+.I \fIËÏÇÄÁ\fP
+ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÚÎÁÞÅÎÉÅ
+.BR never " (ÎÉËÏÇÄÁ), " always " (×ÓÅÇÄÁ), ÉÌÉ " auto " (Á×ÔÏ×ÙÂÏÒ, ÐÏ ÕÍÏÌÞÁÎÉÀ).
+åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÁ ÐÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ
+.BR $NO_COLOR
+, ÔÏ Ã×ÅÔÏ×ÁÑ ÐÏÄÓ×ÅÔËÁ ÂÕÄÅÔ ÏÔËÌÀÞÅÎÁ.
.TP
.I \-seek ÓÍÅÝÅÎÉÅ
-ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÐÏÓÌÅ ËÌÀÞÁ
+ðÒÉ ÕËÁÚÁÎÉÉ ÐÏÓÌÅ ÁÒÇÕÍÅÎÔÁ
.I \-r
-: ÄÏÂÁ×ÌÑÔØ ÕËÁÚÁÎÎÏÅ
+, ÂÕÄÅÔ ÄÏÂÁ×ÌÑÔØÓÑ ÕËÁÚÁÎÎÏÅ
.RI < ÓÍÅÝÅÎÉÅ >
Ë ÆÁÊÌÏ×ÙÍ ÐÏÚÉÃÉÑÍ, ÏÂÎÁÒÕÖÅÎÎÙÍ × ÉÓÈÏÄÎÙÈ ÄÁÎÎÙÈ.
.TP
-.I \-s [\+][\-]seek
-îÁÞÉÎÁÅÔ ÒÁÂÏÔÕ Ó ÕËÁÚÁÎÎÏÇÏ ÁÂÓÏÌÀÔÎÏÇÏ (ÉÌÉ ÏÔÎÏÓÉÔÅÌØÎÏÇÏ)
+.I \-s [+][\-]seek
+îÁÞÉÎÁÔØ ÏÂÒÁÂÏÔËÕ Ó ÕËÁÚÁÎÎÏÇÏ ÁÂÓÏÌÀÔÎÏÇÏ (ÉÌÉ ÏÔÎÏÓÉÔÅÌØÎÏÇÏ)
.RI < ÓÍÅÝÅÎÉÑ >
× ÂÁÊÔÁÈ ×Ï ×ÈÏÄÎÏÍ_ÆÁÊÌÅ.
-\fI\+ \fRÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÓÍÅÝÅÎÉÅ Ñ×ÌÑÅÔÓÑ ÏÔÎÏÓÉÔÅÌØÎÙÍ ÐÏ ÏÔÎÏÛÅÎÉÀ
-Ë ÔÅËÕÝÅÊ ÆÁÊÌÏ×ÏÊ ÐÏÚÉÃÉÉ × ÐÏÔÏËÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ (ÂÅÓÓÍÙÓÌÅÎÎÏ, ÅÓÌÉ ÞÔÅÎÉÅ
-ÐÒÏÉÓÈÏÄÉÔ ÎÅ ÉÚ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ). \fI\- \fRÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÄÏÌÖÎÏ ÂÙÔØ ÐÒÏÞÉÔÁÎÏ
-ÕËÁÚÁÎÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÉÍ×ÏÌÏ× ÏÔ ËÏÎÃÁ ××ÏÄÁ (ÌÉÂÏ, ÅÓÌÉ ÓÏÞÅÔÁÅÔÓÑ Ó \fI \+ \fR:
-ÐÅÒÅÄ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ ÆÁÊÌÁ × ÐÏÔÏËÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ).
-åÓÌÉ ËÌÀÞ \-s ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ, ÔÏ xxd ÎÁÞÉÎÁÅÔ ÒÁÂÏÔÕ ÏÔ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ.
+çÄÅ \fI+ \fRÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÓÍÅÝÅÎÉÅ Ñ×ÌÑÅÔÓÑ ÏÔÎÏÓÉÔÅÌØÎÙÍ ÐÏ ÏÔÎÏÛÅÎÉÀ
+Ë ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ ÄÁÎÎÙÈ × ÓÔÁÎÄÁÒÔÎÏÍ ÐÏÔÏËÅ ××ÏÄÁ (ÂÅÓÓÍÙÓÌÅÎÎÏ, ÅÓÌÉ ÞÔÅÎÉÅ
+ÐÒÏÉÓÈÏÄÉÔ ÎÅ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ××ÏÄÁ). á ÐÁÒÁÍÅÔÒ \fI\- \fRÕËÁÚÙ×ÁÅÔ,
+ÞÔÏ ÄÏÌÖÎÏ ÂÙÔØ ÐÒÏÞÉÔÁÎÏ ÕËÁÚÁÎÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÉÍ×ÏÌÏ× ÏÔ ËÏÎÃÁ ××ÏÄÁ (ÌÉÂÏ,
+ÅÓÌÉ ÏÄÎÏ×ÒÅÍÅÎÎÏ Ó ÐÁÒÁÍÅÔÒÏÍ \fI+\fR, ÔÏ ÐÅÒÅÄ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÅÊ ÄÁÎÎÙÈ
+× ÓÔÁÎÄÁÒÔÎÏÍ ÐÏÔÏËÅ ××ÏÄÁ).
+åÓÌÉ ÁÒÇÕÍÅÎÔ \-s ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ, ÔÏ ÐÒÏÇÒÁÍÍÁ xxd ÎÁÞÉÎÁÅÔ ÏÂÒÁÂÏÔËÕ
+ÏÔ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ.
.TP
.I \-u
-éÓÐÏÌØÚÕÅÔ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÃÉÆÒÙ × ×ÅÒÈÎÅÍ ÒÅÇÉÓÔÒÅ. ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÀÔÓÑ ÃÉÆÒÙ ×
-ÎÉÖÎÅÍ ÒÅÇÉÓÔÒÅ ÓÉÍ×ÏÌÏ×.
+õËÁÚÙ×ÁÅÔ, ÞÔÏ × ×Ù×ÏÄÅ ÏÔÏÂÒÁÖÁÔØ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÃÉÆÒÙ × ×ÅÒÈÎÅÍ ÒÅÇÉÓÔÒÅ.
+ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÀÔÓÑ ÓÉÍ×ÏÌÙ × ÎÉÖÎÅÍ ÒÅÇÉÓÔÒÅ ÓÉÍ×ÏÌÏ×.
.TP
.IR \-v " | " \-version
-ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ.
-.SH ðïä÷ïäîùå ëáíîé
+ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ É ÚÁ×ÅÒÛÉÔØ ÒÁÂÏÔÕ.
+.SH îåëïôïòùå òáúÿñóîåîéñ
.PP
+ðÒÉ ÕËÁÚÁÎÉÉ ËÏÍÁÎÄÙ
.I xxd \-r
-ÏÂÌÁÄÁÅÔ ×ÓÔÒÏÅÎÎÙÍ ÉÎÔÅÌÌÅËÔÏÍ ÄÌÑ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÉÎÆÏÒÍÁÃÉÉ Ï ÎÏÍÅÒÁÈ ÓÔÒÏË.
+ÐÒÉ ÚÁÐÕÓËÅ ÐÒÏÇÒÁÍÍÙ, ÂÕÄÅÔ ÐÒÉÍÅÎÑÔØÓÑ ÎÅËÉÊ ×ÓÔÒÏÅÎÎÙÊ ÁÌÇÏÒÉÔÍ
+ÄÌÑ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÉÎÆÏÒÍÁÃÉÉ Ï ÎÏÍÅÒÁÈ ÓÔÒÏË.
åÓÌÉ ×ÏÚÍÏÖÅÎ ÐÏÉÓË ÐÏ ×ÈÏÄÎÏÍÕ ÆÁÊÌÕ, ÔÏ ÎÏÍÅÒÁ ÓÔÒÏË × ÎÁÞÁÌÅ ËÁÖÄÏÊ ÓÔÒÏËÉ
-ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÎÅÕÐÏÒÑÄÏÞÅÎÎÙÍÉ, ÎÅËÏÔÏÒÙÅ ÓÔÒÏËÉ ÍÏÇÕÔ
-ÂÙÔØ ÐÒÏÐÕÝÅÎÙ ÉÌÉ ÐÅÒÅÓÅËÁÔØÓÑ ÄÒÕÇ Ó ÄÒÕÇÏÍ. ÷ ÜÔÉÈ ÓÌÕÞÁÑÈ xxd ÉÓÐÏÌØÚÕÅÔ
-lseek(2) ÄÌÑ ÐÅÒÅÈÏÄÁ Ë ÓÌÅÄÕÀÝÅÊ ÐÏÚÉÃÉÉ. åÓÌÉ ÐÏÉÓË ÐÏ ×ÈÏÄÎÏÍÕ ÆÁÊÌÕ
-ÎÅ×ÏÚÍÏÖÅÎ, ÔÏ ÄÏÐÕÓÔÉÍÙ ÔÏÌØËÏ ÐÒÏÐÕÓËÉ ÓÔÒÏË, ËÏÔÏÒÙÅ ÚÁÐÏÌÎÑÀÔÓÑ ÎÕÌÅ×ÙÍÉ
-ÂÁÊÔÁÍÉ.
+ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÎÅÕÐÏÒÑÄÏÞÅÎÎÙÍÉ, ÎÅËÏÔÏÒÙÅ ÓÔÒÏËÉ
+ÍÏÇÕÔ ÂÙÔØ ÐÒÏÐÕÝÅÎÙ ÉÌÉ ÐÅÒÅÓÅËÁÔØÓÑ ÄÒÕÇ Ó ÄÒÕÇÏÍ. ÷ ÜÔÉÈ ÓÌÕÞÁÑÈ ÐÒÏÇÒÁÍÍÁ
+xxd ÉÓÐÏÌØÚÕÅÔ ÆÕÎËÃÉÀ lseek(2) ÄÌÑ ÐÅÒÅÈÏÄÁ Ë ÓÌÅÄÕÀÝÅÊ ÐÏÚÉÃÉÉ. åÓÌÉ ÐÏÉÓË ÐÏ
+×ÈÏÄÎÏÍÕ ÆÁÊÌÕ ÎÅ×ÏÚÍÏÖÅÎ, ÔÏ ÄÏÐÕÓÔÉÍÙ ÔÏÌØËÏ ÐÒÏÐÕÓËÉ ÓÔÒÏË, ËÏÔÏÒÙÅ
+ÚÁÐÏÌÎÑÀÔÓÑ ÎÕÌÅ×ÙÍÉ ÂÁÊÔÁÍÉ.
.PP
+éÓÐÏÌØÚÏ×ÁÎÉÅ ËÏÍÁÎÄÙ
.I xxd \-r
-ÎÉËÏÇÄÁ ÎÅ ×Ù×ÏÄÉÔ ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ. íÕÓÏÒ ÐÒÏÐÕÓËÁÅÔÓÑ ÍÏÌÞÁ.
+ÐÒÉ×ÏÄÉÔ Ë ÔÏÍÕ, ÞÔÏ ÓÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ ÎÅ ÂÕÄÕÔ ÏÔÏÂÒÁÖÁÔØÓÑ.
+ðÏÓÔÏÒÏÎÎÉÅ ÄÁÎÎÙÅ ÐÒÏÓÔÏ ÍÏÌÞÁ ÐÒÏÐÕÓËÁÀÔÓÑ.
.PP
-ðÒÉ ÒÅÄÁËÔÉÒÏ×ÁÎÉÉ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ÐÒÅÄÓÔÁ×ÌÅÎÉÊ ÂÉÎÁÒÎÙÈ ÆÁÊÌÏ× ÏÂÒÁÝÁÊÔÅ
-×ÎÉÍÁÎÉÅ, ÞÔÏ
+ðÒÉ ÒÅÄÁËÔÉÒÏ×ÁÎÉÉ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ Ä×ÏÉÞÎÙÈ ÆÁÊÌÏ×, ÏÂÒÁÝÁÊÔÅ
+×ÎÉÍÁÎÉÅ, ÞÔÏ ÐÏ ËÏÍÁÎÄÅ
.I xxd \-r
-ÐÒÏÐÕÓËÁÅÔ × ÓÔÒÏËÅ ××ÏÄÁ ÌÀÂÙÅ ÄÁÎÎÙÅ ÐÏÓÌÅ ÐÒÏÞÔÅÎÉÑ ÄÏÓÔÁÔÏÞÎÏÇÏ ËÏÌÉÞÅÓÔ×Á
-ËÏÌÏÎÏË ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ÄÁÎÎÙÈ (ÓÍ. ËÌÀÞ \-c). üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÉÚÍÅÎÅÎÉÑ,
-×ÎÅÓÅÎÎÙÅ × ËÏÌÏÎËÉ Ó ÐÅÞÁÔÎÙÍÉ ÓÉÍ×ÏÌÁÍÉ ascii (ÉÌÉ ebcdic), ×ÓÅÇÄÁ ÉÇÎÏÒÉÒÕÀÔÓÑ.
+, ÐÏÓÌÅ ÓÞÉÔÙ×ÁÎÉÑ ÄÏÓÔÁÔÏÞÎÏÇÏ ËÏÌÉÞÅÓÔ×Á ËÏÌÏÎÏË ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ÄÁÎÎÙÈ
+(ÓÍ. ÁÒÇÕÍÅÎÔ \-c), × ÓÔÒÏËÅ ××ÏÄÁ ÎÅ ÂÕÄÕÔ ÏÂÒÁÂÁÔÙ×ÁÔØÓÑ ÏÓÔÁÌØÎÙÅ ÄÁÎÎÙÅ.
+üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÉÚÍÅÎÅÎÉÑ, ×ÎÅÓ£ÎÎÙÅ × ËÏÌÏÎËÅ Ó ÔÅËÓÔÏÍ × ËÏÄÉÒÏ×ËÅ
+ASCII (ÉÌÉ EBCDIC), ×ÓÅÇÄÁ ÉÇÎÏÒÉÒÕÀÔÓÑ.
ðÒÉ ÏÂÒÁÔÎÏÍ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ × ÓÔÉÌÅ
-postscript Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ xxd \-r \-p ËÏÌÉÞÅÓÔ×Ï ËÏÌÏÎÏË ÎÅ ÕÞÉÔÙ×ÁÅÔÓÑ.
-÷ ÜÔÏÍ ÓÌÕÞÁÅ ÒÁÓÐÏÚÎÁÀÔÓÑ ×ÓÅ ÓÉÍ×ÏÌÙ, ËÏÔÏÒÙÅ ÐÏÈÏÖÉ ÎÁ ÐÁÒÙ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ ÃÉÆÒ.
+PostScript Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ xxd \-r \-p ËÏÌÉÞÅÓÔ×Ï ËÏÌÏÎÏË ÎÅ ÕÞÉÔÙ×ÁÅÔÓÑ.
+÷ ÜÔÏÍ ÓÌÕÞÁÅ ÒÁÓÐÏÚÎÁÀÔÓÑ ×ÓÅ ÓÉÍ×ÏÌÙ, ËÏÔÏÒÙÅ ÐÏÈÏÖÉ ÎÁ ÐÁÒÙ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÈ
+ÃÉÆÒ.
.PP
ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÒÁÚÌÉÞÉÅ ÍÅÖÄÕ ËÏÍÁÎÄÁÍÉ
.PP
@@ -186,125 +250,139 @@ postscript Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ xxd \-r \-p ËÏÌÉÞÅÓÔ×Ï ËÏÌÏÎÏË ÎÅ ÕÞÉÔÙ×ÁÅÔÓÑ.
.I xxd \-s \+seek
ÍÏÖÅÔ ÏÔÌÉÞÁÔØÓÑ ÏÔ
.I xxd \-s seek,
-ÐÏÓËÏÌØËÕ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ "ÏÔÍÏÔÁÔØ" ÄÁÎÎÙÅ ÎÁ ×ÈÏÄÅ ÎÁÚÁÄ, ÉÓÐÏÌØÚÕÅÔÓÑ ×ÙÚÏ× lseek(2).
-ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ `+' ÐÏ×ÅÄÅÎÉÅ ÂÕÄÅÔ ÏÔÌÉÞÁÔØÓÑ, ÅÓÌÉ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ
-ÐÏÓÔÕÐÁÀÔ Ó ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ, Á ÐÏÚÉÃÉÑ × ÆÁÊÌÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ ÎÅ ÎÁÈÏÄÉÔÓÑ
-× ÎÁÞÁÌÅ ÆÁÊÌÁ Ë ÔÏÍÕ ÍÏÍÅÎÔÕ, ËÏÇÄÁ ÐÒÏÇÒÁÍÍÁ xxd ÚÁÐÕÝÅÎÁ É ÐÒÉÓÔÕÐÁÅÔ Ë ÞÔÅÎÉÀ ××ÏÄÁ.
+ÐÏÓËÏÌØËÕ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ "ÏÔÍÏÔÁÔØ" ÄÁÎÎÙÅ ÎÁ ×ÈÏÄÅ ÎÁÚÁÄ, ÉÓÐÏÌØÚÕÅÔÓÑ ×ÙÚÏ×
+ÆÕÎËÃÉÉ lseek(2).
+ðÒÉ ÕËÁÚÁÎÉÉ ÐÁÒÁÍÅÔÒÁ '+' ÐÏ×ÅÄÅÎÉÅ ÂÕÄÅÔ ÏÔÌÉÞÁÔØÓÑ, ÅÓÌÉ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ
+ÐÏÓÔÕÐÁÀÔ ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ××ÏÄÁ, Á ÐÏÚÉÃÉÑ × ÆÁÊÌÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ
+ÎÅ ÎÁÈÏÄÉÔÓÑ × ÎÁÞÁÌÅ ÆÁÊÌÁ Ë ÔÏÍÕ ÍÏÍÅÎÔÕ, ËÏÇÄÁ ÐÒÏÇÒÁÍÍÁ xxd ÚÁÐÕÝÅÎÁ
+É ÐÒÉÓÔÕÐÁÅÔ Ë ÞÔÅÎÉÀ ××ÏÄÁ.
îÉÖÅÓÌÅÄÕÀÝÉÅ ÐÒÉÍÅÒÙ ÐÏÍÏÇÕÔ ÐÒÏÑÓÎÉÔØ (ÉÌÉ ÅÝ£ ÂÏÌØÛÅ ÚÁÐÕÔÁÔØ!) ÓÉÔÕÁÃÉÀ...
.PP
-ïÔÍÏÔËÁ ÎÁÚÁÄ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ; ÎÅÏÂÈÏÄÉÍÏ, ÐÏÓËÏÌØËÕ 'cat' ÕÖÅ ×ÙÐÏÌÎÉÌÁ
-ÞÔÅÎÉÅ ÄÏ ËÏÎÃÁ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ:
+ïÔÍÏÔËÁ ÐÏÔÏËÁ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ ÎÁÚÁÄ ÎÅÏÂÈÏÄÉÍÁ, ÐÏÓËÏÌØËÕ ÐÒÏÇÒÁÍÍÁ 'cat'
+ÕÖÅ ×ÙÐÏÌÎÉÌÁ ÞÔÅÎÉÅ ÄÁÎÎÙÈ ÄÏ ËÏÎÃÁ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ××ÏÄÁ:
.PP
-\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
+\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR
.PP
-÷Ù×ÏÄ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÏÔ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ 0x480
-(= 1024+128).
-óÉÍ×ÏÌ `+' ÏÚÎÁÞÁÅÔ "ÏÔÎÏÓÉÔÅÌØÎÏ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ", ÔÁËÉÍ ÏÂÒÁÚÏÍ `128' ÄÏÂÁ×ÌÑÅÔÓÑ
-Ë ÐÅÒ×ÏÍÕ ËÉÌÏÂÁÊÔÕ, ÇÄÅ ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ dd:
+÷Ù×ÏÄ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÏÔ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ 0x480 (=1024+128).
+ðÁÒÁÍÅÔÒ '+' ÏÚÎÁÞÁÅÔ "ÏÔÎÏÓÉÔÅÌØÎÏ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ", ÔÁËÉÍ ÏÂÒÁÚÏÍ '128'
+ÄÏÂÁ×ÌÑÅÔÓÑ Ë ÐÅÒ×ÏÍÕ ËÉÌÏÂÁÊÔÕ, ÇÄÅ ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ ÐÒÏÇÒÁÍÍÁ dd:
.PP
-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
+\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 \> hex_snippet" < file\fR
.PP
-÷Ù×ÏÄ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÏÔ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ 0x100
-(= 1024-768):
+÷Ù×ÏÄ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÏÔ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ 0x100 (=1024\[mi]768):
.PP
-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
+\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 \> hex_snippet" < file\fR
.PP
-÷ ÔÏ ÖÅ ×ÒÅÍÑ, ÓÌÅÄÕÅÔ ÚÁÍÅÔÉÔØ, ÞÔÏ ÐÏÄÏÂÎÙÅ ÓÉÔÕÁÃÉÉ ×ÓÔÒÅÞÁÀÔÓÑ ÄÏ×ÏÌØÎÏ ÒÅÄËÏ,
-ÔÁË ÞÔÏ ÓÉÍ×ÏÌ `+' ÏÂÙÞÎÏ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ. á×ÔÏÒ ÐÒÅÄÐÏÞÉÔÁÅÔ ÎÁÂÌÀÄÁÔØ ÚÁ ÒÁÂÏÔÏÊ
-xxd Ó ÐÏÍÏÝØÀ strace(1) ÉÌÉ truss(1) × ÔÅÈ ÓÌÕÞÁÑÈ, ËÏÇÄÁ ÐÒÉÍÅÎÑÅÔÓÑ ËÌÀÞ
+÷ ÔÏ ÖÅ ×ÒÅÍÑ, ÓÌÅÄÕÅÔ ÚÁÍÅÔÉÔØ, ÞÔÏ ÐÏÄÏÂÎÙÅ ÓÉÔÕÁÃÉÉ ×ÓÔÒÅÞÁÀÔÓÑ ÄÏ×ÏÌØÎÏ
+ÒÅÄËÏ, ÔÁË ÞÔÏ ÐÁÒÁÍÅÔÒ '+' ÏÂÙÞÎÏ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ. á×ÔÏÒ ÐÒÅÄÐÏÞÉÔÁÅÔ ÎÁÂÌÀÄÁÔØ
+ÚÁ ÒÁÂÏÔÏÊ ÐÒÏÇÒÁÍÍÙ xxd Ó ÐÏÍÏÝØÀ ÉÎÓÔÒÕÍÅÎÔÏ× strace(1) ÉÌÉ truss(1) × ÔÅÈ
+ÓÌÕÞÁÑÈ, ËÏÇÄÁ ÐÒÉÍÅÎÑÅÔÓÑ ÁÒÇÕÍÅÎÔ
\-s.
.SH ðòéíåòù
.PP
.br
-÷Ù×ÅÓÔÉ ×Ó£, ËÒÏÍÅ ÐÅÒ×ÙÈ ÔÒ£È ÓÔÒÏË (0x30 ÂÁÊÔÏ×) ÆÁÊÌÁ
-.B file
+÷Ù×ÅÓÔÉ ×Ó£, ËÒÏÍÅ ÐÅÒ×ÙÈ ÔÒ£È ÓÔÒÏË (0x30 ÂÁÊÔ)
+.BR ÆÁÊÌÁ
:
-.PP
-\fI% xxd \-s 0x30 file
+.br
+\fI% xxd \-s 0x30 file\fR
.PP
.br
-÷Ù×ÅÓÔÉ ÔÒÉ ÓÔÒÏËÉ (0x30 ÂÁÊÔÏ×) ÏÔ ËÏÎÃÁ ÆÁÊÌÁ
-.B file
+÷Ù×ÅÓÔÉ ÔÒÉ ÓÔÒÏËÉ (0x30 ÂÁÊÔ) ÏÔ ËÏÎÃÁ
+.BR ÆÁÊÌÁ
:
-.PP
-\fI% xxd \-s \-0x30 file
-.PP
.br
-÷Ù×ÅÓÔÉ 120 ÂÁÊÔÏ× × ×ÉÄÅ ÎÅÐÒÅÒÙ×ÎÏÇÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
-ÐÏ 20 ÏËÔÅÔÏ× × ÓÔÒÏËÅ:
+\fI% xxd \-s \-0x30 file\fR
.PP
+.br
+÷Ù×ÅÓÔÉ 120 ÂÁÊÔ × ×ÉÄÅ ÎÅÐÒÅÒÙ×ÎÏÇÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
+ÐÏ 20 ÏËÔÅÔÏ× × ÓÔÒÏËÅ
+.br
+(ÜÔÏÔ ÐÒÉÍÅÒ ÄÌÑ ÓÐÒÁ×ÏÞÎÉËÁ xxd.1 ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ, ÄÌÑ ÒÕÓÓËÏÇÏ ÑÚÙËÁ ÂÕÄÅÔ
+ÎÅÍÎÏÇÏ ÄÒÕÇÏÊ ÒÅÚÕÌØÔÁÔ):
+.br
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
.br
-2e544820585844203120224d616e75616c207061
+2e544820585844203120224d6179203230323422
.br
-676520666f7220787864220a2e5c220a2e5c2220
+20224d616e75616c207061676520666f72207878
.br
-32317374204d617920313939360a2e5c22204d61
+64220a2e5c220a2e5c222032317374204d617920
.br
-6e207061676520617574686f723a0a2e5c222020
+313939360a2e5c22204d616e2070616765206175
.br
-2020546f6e79204e7567656e74203c746f6e7940
+74686f723a0a2e5c2220202020546f6e79204e75
.br
-7363746e7567656e2e7070702e67752e6564752e
+67656e74203c746f6e79407363746e7567656e2e
.br
-.PP
+
+.br
+÷Ù×ÅÓÔÉ ÐÅÒ×ÙÅ 120 ÂÁÊÔ ÜÔÏÇÏ ÓÐÒÁ×ÏÞÎÉËÁ ÐÏ 12 ÏËÔÅÔÏ× × ÓÔÒÏËÅ
+.br
+(ÜÔÏÔ ÐÒÉÍÅÒ ÄÌÑ ÓÐÒÁ×ÏÞÎÉËÁ xxd.1 ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ, ÄÌÑ ÒÕÓÓËÏÇÏ ÑÚÙËÁ ÂÕÄÅÔ
+ÎÅÍÎÏÇÏ ÄÒÕÇÏÊ ÒÅÚÕÌØÔÁÔ):
.br
-÷Ù×ÅÓÔÉ ÐÅÒ×ÙÅ 120 ÂÁÊÔÏ× ÜÔÏÊ ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÉËÁ ÐÏ 12 ÏËÔÅÔÏ× × ÓÔÒÏËÅ:
-.PP
\fI% xxd \-l 120 \-c 12 xxd.1\fR
.br
-0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
+00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
.br
-000000c: 616e 7561 6c20 7061 6765 2066 anual page f
+0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
.br
-0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\".
+00000018: 6e75 616c 2070 6167 6520 666f nual page fo
.br
-0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May
+00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\\"..
.br
-0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma
+00000030: 5c22 2032 3173 7420 4d61 7920 \\" 21st May
.br
-000003c: 6e20 7061 6765 2061 7574 686f n page autho
+0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\\" Man
.br
-0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To
+00000048: 2070 6167 6520 6175 7468 6f72 page author
.br
-0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent <t
+00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\\" Ton
.br
-0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
+00000060: 7920 4e75 6765 6e74 203c 746f y Nugent <to
.br
-000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu.
+0000006c: 6e79 4073 6374 6e75 6765 6e2e ny@sctnugen.
.PP
.br
-ðÏËÁÚÁÔØ ÄÁÔÕ ÉÚ ÆÁÊÌÁ xxd.1:
+ðÏËÁÚÁÔØ ÄÁÔÕ ÉÚ ÆÁÊÌÁ
+.B xxd.1
+.br
+(ÜÔÏÔ ÐÒÉÍÅÒ ÄÌÑ ÓÐÒÁ×ÏÞÎÉËÁ xxd.1 ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ, ÄÌÑ ÒÕÓÓËÏÇÏ ÑÚÙËÁ ÂÕÄÅÔ
+ÎÅÍÎÏÇÏ ÄÒÕÇÁÑ ËÏÍÁÎÄÁ, ÎÁÐÒÉÍÅÒ, ÄÌÑ UTF-8 \[em] \flxxd \-s 0x50 \-l 13 \-c 13 xxd.1\fR):
.PP
-\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
-0000028: 3231 7374 204d 6179 2031 3939 21st May 199
+00000033: 3231 7374 204d 6179 2031 3939 36 21st May 1996
.PP
.br
óËÏÐÉÒÏ×ÁÔØ
.B ×ÈÏÄÎÏÊ_ÆÁÊÌ
×
.B ×ÙÈÏÄÎÏÊ_ÆÁÊÌ
-Ó ÄÏÂÁ×ÌÅÎÉÅÍ 100 ÂÁÊÔÏ× ÓÏ ÚÎÁÞÅÎÉÅÍ 0x00 × ÎÁÞÁÌÏ ÆÁÊÌÁ:
-.PP
+Ó ÄÏÂÁ×ÌÅÎÉÅÍ 100 ÂÁÊÔ ÓÏ ÚÎÁÞÅÎÉÅÍ 0x00 × ÎÁÞÁÌÏ ÆÁÊÌÁ:
+.br
\fI% xxd ×ÈÏÄÎÏÊ_ÆÁÊÌ | xxd \-r \-s 100 \> ×ÙÈÏÄÎÏÊ_ÆÁÊÌ\fR
.br
-.PP
+
.br
-úÁÍÅÎÉÔØ ÄÁÔÕ × ÆÁÊÌÅ xxd.1:
+úÁÍÅÎÉÔØ ÄÁÔÕ × ÆÁÊÌÅ
+.B xxd.1
+.br
+(ÜÔÏÔ ÐÒÉÍÅÒ ÄÌÑ ÓÐÒÁ×ÏÞÎÉËÁ xxd.1 ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ, ÄÌÑ ÒÕÓÓËÏÇÏ ÑÚÙËÁ ÂÕÄÕÔ
+ÎÅÍÎÏÇÏ ÄÒÕÇÉÅ ËÏÍÁÎÄÙ):
.PP
-\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
+\fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fR
.br
-\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
-0000028: 3235 7468 204d 6179 2031 3939 25th May 199
+00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996
.PP
.br
-óÏÚÄÁÔØ 65537-ÂÁÊÔÎÙÊ ÆÁÊÌ, ×ÓÅ ÂÁÊÔÙ ËÏÔÏÒÏÇÏ ÉÍÅÀÔ ÚÎÁÞÅÎÉÅ
-0x00, ËÒÏÍÅ ÐÏÓÌÅÄÎÅÇÏ ÂÁÊÔÁ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÉÍÅÔØ ÚÎÁÞÅÎÉÅ 'A'
-(0x41):
+óÏÚÄÁÔØ 65537-ÂÁÊÔÎÙÊ ÆÁÊÌ, ×ÓÅ ÂÁÊÔÙ ËÏÔÏÒÏÇÏ ÉÍÅÀÔ ÚÎÁÞÅÎÉÅ 0x00,
+ËÒÏÍÅ ÐÏÓÌÅÄÎÅÇÏ ÂÁÊÔÁ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÉÍÅÔØ ÚÎÁÞÅÎÉÅ 'A' (0x41):
.PP
-\fI% echo '010000: 41' | xxd \-r \> file\fR
+\fI% echo "010000: 41" | xxd \-r > file\fR
.PP
.br
óÏÚÄÁÔØ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÜÔÏÇÏ ÆÁÊÌÁ Ó
@@ -312,97 +390,97 @@ xxd Ó ÐÏÍÏÝØÀ strace(1) ÉÌÉ truss(1) × ÔÅÈ ÓÌÕÞÁÑÈ, ËÏÇÄÁ ÐÒÉÍÅÎÑÅÔÓÑ ËÌÀÞ
.PP
\fI% xxd \-a \-c 12 file\fR
.br
-0000000: 0000 0000 0000 0000 0000 0000 ............
+00000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
-000fffc: 0000 0000 40 ....A
+0000fffc: 0000 0000 41 ....A
.PP
óÏÚÄÁÔØ 1-ÂÁÊÔÎÙÊ ÆÁÊÌ, ÓÏÄÅÒÖÁÝÉÊ ÓÉÍ×ÏÌ 'A'.
-þÉÓÌÏ ÐÏÓÌÅ '\-r \-s' ÄÏÂÁ×ÌÑÅÔÓÑ Ë ÎÏÍÅÒÁÍ ÓÔÒÏË, ÎÁÊÄÅÎÎÙÍ × ÆÁÊÌÅ;
+þÉÓÌÏ ÐÏÓÌÅ ÁÒÇÕÍÅÎÔÏ× '\-r \-s' ÄÏÂÁ×ÌÑÅÔÓÑ Ë ÎÏÍÅÒÁÍ ÓÔÒÏË, ÎÁÊÄÅÎÎÙÍ × ÆÁÊÌÅ,
ÉÎÁÞÅ ÇÏ×ÏÒÑ, ÐÒÅÄÛÅÓÔ×ÕÀÝÉÅ ÂÁÊÔÙ ÐÒÏÐÕÓËÁÀÔÓÑ:
.PP
-\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
-.PP
-xxd ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ÆÉÌØÔÒÁ × ÒÅÄÁËÔÏÒÅ, ÎÁÐÒÉÍÅÒ ×
-.B vim(1),
-ÞÔÏÂÙ ÓÏÚÄÁÔØ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÏÂÌÁÓÔÉ ÍÅÖÄÕ
-ÏÔÍÅÔËÁÍÉ `a' É `z':
+\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 > file\fR
.PP
+ðÒÏÇÒÁÍÍÕ xxd ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ÆÉÌØÔÒÁ × ÒÅÄÁËÔÏÒÅ, ÎÁÐÒÉÍÅÒ ×
+.B vim(1)
+, ÞÔÏÂÙ ÓÏÚÄÁÔØ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÏÂÌÁÓÔÉ ÍÅÖÄÕ
+ÚÁËÌÁÄËÁÍÉ 'a' É 'z':
+.br
\fI:'a,'z!xxd\fR
.PP
-÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ xxd × ËÁÞÅÓÔ×Å ÆÉÌØÔÒÁ × ÒÅÄÁËÔÏÒÅ, ÎÁÐÒÉÍÅÒ ×
-.B vim(1),
-ÄÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÄÁÎÎÙÈ ÉÚ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
-ÍÅÖÄÕ ÏÔÍÅÔËÁÍÉ `a' É `z':
-.PP
+íÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ xxd × ËÁÞÅÓÔ×Å ÆÉÌØÔÒÁ × ÒÅÄÁËÔÏÒÅ, ÎÁÐÒÉÍÅÒ ×
+.B vim(1)
+, ÄÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÄÁÎÎÙÈ ÉÚ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
+ÍÅÖÄÕ ÚÁËÌÁÄËÁÍÉ 'a' É 'z':
+.br
\fI:'a,'z!xxd \-r\fR
.PP
-÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ xxd × ËÁÞÅÓÔ×Å ÆÉÌØÔÒÁ × ÒÅÄÁËÔÏÒÅ, ÎÁÐÒÉÍÅÒ ×
-.B vim(1),
-ÄÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÄÁÎÎÙÈ ÉÚ ÅÄÉÎÓÔ×ÅÎÎÏÊ ÓÔÒÏËÉ
+íÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ xxd × ËÁÞÅÓÔ×Å ÆÉÌØÔÒÁ × ÒÅÄÁËÔÏÒÅ, ÎÁÐÒÉÍÅÒ ×
+.B vim(1)
+, ÄÌÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÄÁÎÎÙÈ ÉÚ ÅÄÉÎÓÔ×ÅÎÎÏÊ ÓÔÒÏËÉ
ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ. ðÏÍÅÓÔÉÔÅ ËÕÒÓÏÒ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÓÔÒÏËÕ
É ÎÁÂÅÒÉÔÅ
-.PP
+.br
\fI!!xxd \-r\fR
.PP
þÔÏÂÙ ÐÒÏÞÉÔÁÔØ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÓÉÍ×ÏÌ ÉÚ ËÁÎÁÌÁ Ó×ÑÚÉ:
-.PP
+.br
\fI% xxd \-c1 < /dev/term/b &\fR
.br
\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
.br
-\fI% echo \-n foo > /dev/term/b\fR
+\fI% echo \-n foo \> /dev/term/b\fR
.PP
-.SH ÷ïú÷òáýáåíùå úîáþåîéñ
-ðÒÏÇÒÁÍÍÁ xxd ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ ÓÏ ÓÌÅÄÕÀÝÉÍÉ ÚÎÁÞÅÎÉÑÍÉ:
+.SH ëïäù úá÷åòûåîéñ
+ðÒÉ ÚÁ×ÅÒÛÅÎÉÉ ÒÁÂÏÔÙ, ÐÒÏÇÒÁÍÍÁ xxd ×ÏÚ×ÒÁÝÁÅÔ ÓÌÅÄÕÀÝÉÅ ÚÎÁÞÅÎÉÑ:
.TP
0
ïÛÉÂËÉ ÎÅ ÏÂÎÁÒÕÖÅÎÙ.
.TP
\-1
ïÐÅÒÁÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ (×ÙÐÏÌÎÅÎÉÅ
-.I xxd \-r \-i
+.I \%xxd \-r \-i
ÐÏËÁ ÎÅ×ÏÚÍÏÖÎÏ).
.TP
1
-ïÛÉÂËÁ ÐÒÉ ÒÁÚÂÏÒÅ ËÌÀÞÅÊ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ.
+ïÛÉÂËÁ ÐÒÉ ÒÁÚÂÏÒÅ ÁÒÇÕÍÅÎÔÏ× ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ.
.TP
2
-ðÒÏÂÌÅÍÙ ×Ï ×ÈÏÄÎÏÍ ÆÁÊÌÅ.
+ïÛÉÂËÉ ×Ï ×ÈÏÄÎÏÍ ÆÁÊÌÅ.
.TP
3
-ðÒÏÂÌÅÍÙ × ×ÙÈÏÄÎÏÍ ÆÁÊÌÅ.
+ïÛÉÂËÉ × ×ÙÈÏÄÎÏÍ ÆÁÊÌÅ.
.TP
4,5
öÅÌÁÔÅÌØÎÁÑ ÐÏÚÉÃÉÑ ÐÏÉÓËÁ ÎÅÄÏÓÔÉÖÉÍÁ.
-.SH óíïôòé ôáëöå
+.SH óíïôòéôå ôáëöå
uuencode(1), uudecode(1), patch(1)
.br
.SH ðòåäõðòåöäåîéå
óÔÒÁÎÎÏÓÔØ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÏÓÏÂÅÎÎÏÓÔÑÍ ÍÏÚÇÁ Å£ ÓÏÚÄÁÔÅÌÑ.
-éÓÐÏÌØÚÕÊÔŠţ ÎÁ Ó×ÏÊ ÓÔÒÁÈ É ÒÉÓË. ëÏÐÉÒÕÊÔÅ ÆÁÊÌÙ, ÏÔÓÌÅÖÉ×ÁÊÔÅ
-×ÙÚÏ×Ù, ÓÔÁÎÏ×ÉÔÅÓØ ×ÏÌÛÅÂÎÉËÏÍ.
+éÓÐÏÌØÚÕÊÔŠţ ÎÁ Ó×ÏÊ ÓÔÒÁÈ É ÒÉÓË. ëÏÐÉÒÕÊÔÅ ÆÁÊÌÙ, ÏÔÓÌÅÖÉ×ÁÊÔÅ ×ÙÚÏ×Ù,
+ÓÔÁÎÏ×ÉÔÅÓØ ×ÏÌÛÅÂÎÉËÏÍ.
.br
.SH ÷åòóéñ
-üÔÁ ÓÔÒÁÎÉÃÁ ÓÐÒÁ×ÏÞÎÉËÁ ÄÏËÕÍÅÎÔÉÒÕÅÔ xxd ×ÅÒÓÉÉ 1.7.
+üÔÏÔ ÓÐÒÁ×ÏÞÎÉË ÄÏËÕÍÅÎÔÉÒÕÅÔ ÐÒÏÇÒÁÍÍÕ xxd ×ÅÒÓÉÉ 1.7 ÏÔ 2024-05.
.SH á÷ôïò
.br
-(c) 1990-1997 àÒÇÅÎ ÷ÁÊÇÅÒÔ (Juergen Weigert)
+(c) àÒÇÅÎ ÷ÁÊÇÅÒÔ (Juergen Weigert), 1990-1997
.br
-<jnweiger@informatik.uni-erlangen.de>
+<jnweiger@informatik.uni\-erlangen.de>
.LP
÷Ù ÍÏÖÅÔÅ Ó×ÏÂÏÄÎÏ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÐÒÏÇÒÁÍÍÕ ÓÏ ÓÓÙÌËÏÊ ÎÁ ÍÅÎÑ.
.br
-åÓÌÉ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ ÐÒÉÎÅÓÌÏ ×ÁÍ ËÁËÏÊ-ÔÏ ÄÏÈÏÄ,
-ÐÏÄÅÌÉÔÅÓØ ÓÏ ÍÎÏÊ.
+åÓÌÉ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ ÐÒÉÎÅÓÌÏ ×ÁÍ ËÁËÏÊ-ÔÏ ÄÏÈÏÄ, ÐÏÄÅÌÉÔÅÓØ ÓÏ
+ÍÎÏÊ.
.br
-åÓÌÉ ×Ù ÐÏÔÅÒÑÌÉ ÄÅÎØÇÉ, ÔÏ Ñ ÔÕÔ ÎÅ ÐÒÉÞ£Í.
+åÓÌÉ ×Ù ÐÏÔÅÒÑÌÉ ÄÅÎØÇÉ, ÔÏ Ñ ÔÕÔ ÎÉ ÐÒÉ Þ£Í.
.PP
-ðÅÒ×ÙÊ ×ÁÒÉÁÎÔ ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÉËÁ ÎÁÐÉÓÁÎ ôÏÎÉ îÁÄÖÅÎÔÏÍ (Tony Nugent)
+ðÅÒ×ÙÊ ×ÁÒÉÁÎÔ ÓÐÒÁ×ÏÞÎÉËÁ ÎÁÐÉÓÁÎ ôÏÎÉ îÁÄÖÅÎÔÏÍ (Tony Nugent)
.br
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.br
-îÅÂÏÌØÛÉÅ ÉÚÍÅÎÅÎÉÑ ×ÎÅÓÅÎÙ âÒÁÍÏÍ íÏÏÌÅÎÁÁÒÏÍ (Bram Moolenaar).
-óÔÒÁÎÉÃÁ ÏÔÒÅÄÁËÔÉÒÏ×ÁÎÁ àÒÇÅÎÏÍ ÷ÁÊÇÅÒÔÏÍ (Juergen Weigert).
+îÅÂÏÌØÛÉÅ ÉÚÍÅÎÅÎÉÑ ×ÎÅÓÅÎÙ âÒÁÍÏÍ íÏÌÅÎÁÒÏÍ (Bram Moolenaar).
+óÐÒÁ×ÏÞÎÉË ÏÔÒÅÄÁËÔÉÒÏ×ÁÎ àÒÇÅÎÏÍ ÷ÁÊÇÅÒÔÏÍ (Juergen Weigert).
.PP
diff --git a/runtime/doc/xxd-ru.UTF-8.1 b/runtime/doc/xxd-ru.UTF-8.1
index 4a41d66..65586dd 100644
--- a/runtime/doc/xxd-ru.UTF-8.1
+++ b/runtime/doc/xxd-ru.UTF-8.1
@@ -1,57 +1,60 @@
-.TH XXD 1 "August 1996" "Страница man Ð´Ð»Ñ xxd"
+.TH XXD 1 "May 2024" "Справочник по программе xxd"
.\"
.\" 21st May 1996
.\" Man page author:
.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.\" Changes by Bram Moolenaar <Bram@vim.org>
-.SH ИМЯ
+.SH ÐÐЗÐÐЧЕÐИЕ
+Программа
.I xxd
-\- Ñоздаёт предÑтавление файла в виде шеÑтнадцатеричных кодов или выполнÑет
-обратное преобразование.
-.SH КОМÐÐДÐÐЯ СТРОКÐ
+\[em] выполнÑет преобразование данных или в шеÑтнадцатеричный вид, или выполнÑет
+обратное преобразование из шеÑтнадцатеричного кода в иÑходный формат
+.SH КРÐТКИЙ ОБЗОР
.B xxd
\-h[elp]
.br
.B xxd
-[ключи] [входной_файл [выходной_файл]]
+[аргументы] [входной_файл [выходной_файл]]
.br
.B xxd
-\-r[evert] [ключи] [входной_файл [выходной_файл]]
+\-r[evert] [аргументы] [входной_файл [выходной_файл]]
.SH ОПИСÐÐИЕ
+Программа
.I xxd
-Ñоздаёт предÑтавление указанного файла или данных, прочитанных из потока
-Ñтандартного ввода, в виде шеÑтнадцатеричных кодов. Эта команда также может
-выполнить обратное преобразование заданных шеÑтнадцатеричными кодами данных
-в иÑходный бинарный формат.
-Подобно командам
+Ñоздаёт предÑтавление указанного файла или данных, прочитанных из Ñтандартного
+потока ввода, в виде шеÑтнадцатеричных кодов. Эта программа также может
+выполнÑÑ‚ÑŒ обратное преобразование заданных шеÑтнадцатеричными кодами данных
+в иÑходный двоичных формат.
+Подобно программам
.BR uuencode(1)
и
-.BR uudecode(1),
-она позволÑет выполнÑÑ‚ÑŒ преобразование бинарных данных в ASCII-код,
-который можно передавать по Ñлектронной почте, однако, помимо Ñтого, программа
-xxd позволÑет выполнÑÑ‚ÑŒ декодирование в поток Ñтандартного вывода,
-а также может применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð»Ð°Ñ‚Ð¾Ðº Ð´Ð»Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ñ… файлов.
-.SH КЛЮЧИ ЗÐПУСКÐ
+.BR uudecode(1)
+, она позволÑет выполнÑÑ‚ÑŒ преобразование двоичных данных в Ñимволы кодировки
+ASCII, которые можно передавать по Ñлектронной почте, однако, помимо Ñтого,
+программа xxd позволÑет выполнÑÑ‚ÑŒ декодирование в поток Ñтандартного вывода,
+а также может применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ñправлений Ð´Ð»Ñ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ñ… файлов.
+.SH ÐРГУМЕÐТЫ КОМÐÐДÐОЙ СТРОКИ
ЕÑли
.I входной_файл
-не задан, то ÑоответÑтвующие данные читаютÑÑ Ð¸Ð· потока Ñтандартного ввода.
+не задан, то требуемые данные ÑчитываютÑÑ Ð¸Ð· Ñтандартного потока ввода.
Ð’ Ñлучае, еÑли в качеÑтве
.I входного_файла
иÑпользуетÑÑ Ñимвол
-.RB \` \- ',
-иÑточником данных также выÑтупает поток Ñтандартного ввода.
+.RB ' \- ',
+иÑточником данных также выÑтупает Ñтандартный поток ввода.
Ð’ том Ñлучае, еÑли не указан
.I выходной_файл
(или вмеÑто него иÑпользуетÑÑ Ñимвол
-.RB \` \- '
-), результат Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÑетÑÑ Ð² поток Ñтандартного вывода.
-.PP
-Обратите внимание, что иÑпользуетÑÑ "ленивый" алгоритм разбора ключей, который не
-проверÑет более одной буквы ключа, еÑли в Ñтом ключе не иÑпользуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€.
-Пробелы между единÑтвенным Ñимволом ключа и ÑоответÑтвующим параметром не ÑвлÑÑŽÑ‚ÑÑ
-обÑзательными. Параметры ключей могут быть заданы Ñ Ð¸Ñпользованием деÑÑтичного,
-шеÑтнадцатеричного или воÑьмеричного формата.
-Таким образом, ключи
+.RB ' \- '
+), результат Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÑетÑÑ Ð² Ñтандартный поток вывода.
+.PP
+Обратите внимание, что применÑетÑÑ "ленивый" алгоритм разбора аргументов,
+который проверÑет только первую букву аргумента, еÑли, конечно, Ð´Ð»Ñ Ñтого
+аргумента не указано какое-то значение.
+Пробелы между одноÑимвольным аргументом и его значением не ÑвлÑÑŽÑ‚ÑÑ
+обÑзательными. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð² могут быть заданы в деÑÑтичном,
+шеÑтнадцатеричном или воÑьмеричном формате.
+Таким образом, аргументы
.BR \-c8 ,
.BR "\-c 8" ,
.B \-c 010
@@ -61,118 +64,179 @@ xxd позволÑет выполнÑÑ‚ÑŒ декодирование в пото
.PP
.TP
.IR \-a " | " \-autoskip
-Включает автоматичеÑкий пропуÑк: вмеÑто поÑледовательноÑти
-нулевых Ñтрок иÑпользуетÑÑ Ð¾Ð´Ð¸Ð½Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñимвол '*'. По умолчанию
-не применÑетÑÑ.
+Включить автоматичеÑкий пропуÑк, Ñ‚. е., вмеÑто неÑкольких идущих подрÑд Ñтрок
+Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ значением, иÑпользуетÑÑ Ð¾Ð´Ð¸Ð½Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñимвол '*'.
+По умолчанию не применÑетÑÑ.
.TP
.IR \-b " | " \-bits
-ВмеÑто шеÑтнадцатеричного кода иÑпользуютÑÑ Ð±Ð¸Ñ‚Ñ‹ (двоичные цифры).
-При иÑпользовании Ñтого ключа вмеÑто обычного шеÑтнадцатеричного предÑтавлениÑ
-октетов иÑпользуютÑÑ Ð½Ð°Ð±Ð¾Ñ€Ñ‹ из воÑьми Ñимволов "1" и "0". ÐšÐ°Ð¶Ð´Ð°Ñ Ñтрока
-предварÑетÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ Ñтроки в шеÑтнадцатеричном виде, а завершаетÑÑ Ñимвольным
-предÑтавлением (в виде ascii или ebcdic). Ключи \-p, \-i в Ñтом режиме
-не работают.
+ИÑпользовать биты (двоичный код), а не шеÑтнадцатеричные цифры.
+При указании Ñтого аргумента, вмеÑто обычного шеÑтнадцатеричного предÑтавлениÑ
+октетов, будет отображаетÑÑ Ð½Ð°Ð±Ð¾Ñ€ из воÑьми цифр "1" и "0". ÐšÐ°Ð¶Ð´Ð°Ñ Ñтрока
+предварÑетÑÑ ÐµÑ‘ номером в шеÑтнадцатеричном виде, а завершаетÑÑ Ð² виде Ñимволов
+в кодировке ASCII (или в кодировке EBCDIC). Ðргументы командной Ñтроки
+\-p, \-i в Ñтом режиме не применÑÑŽÑ‚ÑÑ.
.TP
.IR "\-c кол " | " \-cols кол"
Задаёт количеÑтво октетов
.RI < кол >,
которое выводитÑÑ Ð½Ð° каждой Ñтроке. По умолчанию иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ 16
-(\-i: 12, \-ps: 30, \-b: 6).
-МакÑимально допуÑтимое значение: 256.
+(Ð´Ð»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° \-i иÑпользуетÑÑ 12, Ð´Ð»Ñ \-ps \[em] 30, Ð´Ð»Ñ \-b \[em] 6).
+МакÑимально допуÑтимое значение \[em] 256.
+МакÑимальное значение не применÑетÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ \-ps. ЕÑли Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ \-ps,
+указано значение 0, то будет выведена проÑто одна Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ñтрока.
+.TP
+.IR \-C " | " \-capitalize
+Преобразовать Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… в верхний региÑÑ‚Ñ€ при иÑпользовании ÑтилÑ
+Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² виде подключаемых файлов Ñзыка Си,
+который включаетÑÑ Ñ‡ÐµÑ€ÐµÐ· аргумент командной Ñтроки \-i.
+.TP
+.I \-d
+Отображать Ñмещение не в шеÑтнадцатеричном, а в деÑÑтичном формате.
.TP
.IR \-E " | " \-EBCDIC
-ИзменÑет ÑпоÑоб ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñимволов в правой колонке Ñ ASCII на EBCDIC. Этот ключ
-не изменÑет шеÑтнадцатеричное предÑтавление. Данный ключ не имеет ÑмыÑла,
-еÑли иÑпользуютÑÑ ÐºÐ»ÑŽÑ‡Ð¸ \-r, \-p или \-i.
+Отображать Ñимволы в крайне правой колонке не в кодировке ASCII,
+а в кодировке EBCDIC. Этот аргумент не влиÑет на шеÑтнадцатеричное
+предÑтавление данных. Данный аргумент не имеет ÑмыÑла, еÑли иÑпользуютÑÑ
+аргументы командной Ñтроки \-r, \-p или \-i.
+.TP
+.IR \-e
+ИÑпользовать обратный порÑдок байт при отображение шеÑтнадцатеричного
+предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ….
+Группа байт будет показана как двоичное Ñлово от младших разрÑдов к Ñтаршим.
+ИÑпользуемое по умолчанию группирование по четыре байта может быть изменено
+через аргумент командной Ñтроки
+.RI "" \-g .
+ДейÑтвие Ñтого аргумента раÑпроÑтранÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на шеÑтнадцатеричное
+предÑтавление данных и не оказывает влиÑние на Ñимвольное предÑтавление
+в кодировке ASCII (или EBCDIC).
+Ðргументы командной Ñтроки
+\-r, \-p, \-i не применÑÑŽÑ‚ÑÑ Ð² Ñтом режиме.
.TP
.IR "\-g байт " | " \-groupsize байт"
-ПозволÑет выполнÑÑ‚ÑŒ группировку указанного количеÑтва
-.RI < байтов >
-(две шеÑтнадцатеричные цифры или воÑемь битов), отделÑÑ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ друг от друга пробелами.
+Выполнить группирование указанного количеÑтва
+.RI < байт >
+(две шеÑтнадцатеричные цифры или воÑемь двоичных цифр), отделÑÑ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹
+друг от друга пробелами.
Значение
.I \-g 0
-применÑетÑÑ Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ð·Ð° от иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²ÐºÐ¸.
+применÑетÑÑ Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ð·Ð° от иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ.
По умолчанию иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ
-.RI < байт "> равное " 2
-в обычном режиме и \fI1\fP в битовом режиме. Группировка не применÑетÑÑ
-в режимах postscript и include.
+.RI < байт ">, равное " 2
+при отображении в прÑмом порÑдке байт, \fI4\fP при отображении в обратном
+порÑдке байт и \fI1\fP в двоичном режиме. Группировка не применÑетÑÑ
+в режиме PostScript или include.
.TP
.IR \-h " | " \-help
-Выводит Ñправку по доÑтупным ключам командной Ñтроки и завершает работу программы.
+Показать краткую информацию об аргументах командной Ñтроки и завершить работу
+программы.
Создание шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ выполнÑетÑÑ.
.TP
.IR \-i " | " \-include
-ПозволÑет Ñоздавать вывод в Ñтиле подключаемых заголовочных файлов Ñзыка C.
-Вывод Ñодержит полноценное определение ÑтатичеÑкого маÑÑива данных, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾
-ÑоответÑтвует имени входного файла, еÑли xxd не Ñчитывает данные из потока Ñтандартного
-ввода.
+Создавать вывод в Ñтиле подключаемых заголовочных файлов Ñзыка Си.
+Вывод Ñодержит полноценное определение ÑтатичеÑкого маÑÑива данных, название
+которого ÑоответÑтвует наименованию входного файла, еÑли программа xxd
+не Ñчитывает данные из Ñтандартного потока ввода.
.TP
.IR "\-l длина " | " \-len длина"
-Завершает работу поÑле запиÑи заданного в параметре
+Указывает, что поÑле запиÑи заданного в параметре
.RI < длина >
-количеÑтва октетов.
+количеÑтва октетов, работа программы будет завершена.
+.TP
+.I "\-n название " | " \-name название"
+Изменить возвращаемое наименование переменной при иÑпользовании аргумента \-i.
+ПрименÑетÑÑ Ðº маÑÑиву байт, который будет именоватьÑÑ ÐºÐ°Ðº \fIназвание\fP и длина
+файла как \fIназвание\fP_len.
+.TP
+.I \-o Ñмещение
+Указывает добавить
+.RI < Ñмещение >
+в отображаемую позицию файла.
.TP
.IR \-p " | " \-ps " | " \-postscript " | " \-plain
-ИÑпользует непрерывный формат вывода шеÑтнадцатеричного кода,
-извеÑтный как "проÑтой" Ñтиль или Ñтиль "postscript".
+ИÑпользовать непрерывный формата вывода шеÑтнадцатеричного кода,
+извеÑтного как "проÑтой" Ñтиль или Ñтиль "PostScript".
.TP
.IR \-r " | " \-revert
-ИзменÑет ÑмыÑл операции на противоположный: позволÑет выполнÑÑ‚ÑŒ преобразование
-шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² бинарный код (или применÑÑ‚ÑŒ результат в качеÑтве заплаты).
-ЕÑли вывод проиÑходит не в поток Ñтандартного вывода, то xxd выполнÑет добавление кода
-к ÑоответÑтвующему файлу. При иÑпользовании комбинации ключей
+Выполнить операцию обратного преобразованиÑ, Ñ‚. е. преобразование
+шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² двоичный код (или применить результат
+в качеÑтве иÑправлениÑ).
+ЕÑли вывод проиÑходит не в Ñтандартного поток вывода, то программа xxd выполнÑет
+добавление кода к выходному файлу. При иÑпользовании комбинации аргументов
.I \-r \-p
проиÑходит чтение "проÑтого" шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ· иÑпользованиÑ
-информации о номерах Ñтрок и какого-либо Ñпециального раÑÐºÑ€Ð¾Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº. Пробелы
-и Ñимволы новой Ñтроки могут вÑтречатьÑÑ Ð² любом меÑте иÑходных данных.
+информации о номерах Ñтрок и какого-либо Ñпециального раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº.
+Пробелы и Ñимволы новой Ñтроки могут вÑтречатьÑÑ Ð² любом меÑте иÑходных данных.
+При иÑпользовании комбинации аргументов
+.I \-r \-b
+будет проиÑходить Ñчитывание двоичного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¼ÐµÑто шеÑтнадцатеричного.
+.TP
+.IR \-R " " когда
+Ð’ выходных данных одни и те же шеÑтнадцатеричные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ Ñтроковые значениÑ
+будут подÑвечиватьÑÑ Ð¾Ð´Ð½Ð¸Ð¼ и тем же цветом. Ð’ оÑновном Ñто помогает различать
+печатаемые и непечатаемые Ñимволы.
+Где
+.I \fIкогда\fP
+может принимать значение
+.BR never " (никогда), " always " (вÑегда), или " auto " (автовыбор, по умолчанию).
+ЕÑли уÑтановлена Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ
+.BR $NO_COLOR
+, то Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ñветка будет отключена.
.TP
.I \-seek Ñмещение
-При иÑпользовании поÑле ключа
+При указании поÑле аргумента
.I \-r
-: добавлÑÑ‚ÑŒ указанное
+, будет добавлÑÑ‚ÑŒÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ðµ
.RI < Ñмещение >
к файловым позициÑм, обнаруженным в иÑходных данных.
.TP
-.I \-s [\+][\-]seek
-Ðачинает работу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ абÑолютного (или отноÑительного)
+.I \-s [+][\-]seek
+Ðачинать обработку Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ абÑолютного (или отноÑительного)
.RI < ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ >
в байтах во входном_файле.
-\fI\+ \fRуказывает, что Ñмещение ÑвлÑетÑÑ Ð¾Ñ‚Ð½Ð¾Ñительным по отношению
-к текущей файловой позиции в потоке Ñтандартного ввода (беÑÑмыÑленно, еÑли чтение
-проиÑходит не из потока Ñтандартного ввода). \fI\- \fRуказывает, что должно быть прочитано
-указанное количеÑтво Ñимволов от конца ввода (либо, еÑли ÑочетаетÑÑ Ñ \fI \+ \fR:
-перед текущей позиции файла в потоке Ñтандартного ввода).
-ЕÑли ключ \-s не иÑпользуетÑÑ, то xxd начинает работу от текущей позиции в файле.
+Где \fI+ \fRуказывает, что Ñмещение ÑвлÑетÑÑ Ð¾Ñ‚Ð½Ð¾Ñительным по отношению
+к текущей позиции данных в Ñтандартном потоке ввода (беÑÑмыÑленно, еÑли чтение
+проиÑходит не из Ñтандартного потока ввода). Рпараметр \fI\- \fRуказывает,
+что должно быть прочитано указанное количеÑтво Ñимволов от конца ввода (либо,
+еÑли одновременно Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ \fI+\fR, то перед текущей позицией данных
+в Ñтандартном потоке ввода).
+ЕÑли аргумент \-s не иÑпользуетÑÑ, то программа xxd начинает обработку
+от текущей позиции в файле.
.TP
.I \-u
-ИÑпользует шеÑтнадцатеричные цифры в верхнем региÑтре. По умолчанию иÑпользуютÑÑ Ñ†Ð¸Ñ„Ñ€Ñ‹ в
-нижнем региÑтре Ñимволов.
+Указывает, что в выводе отображать шеÑтнадцатеричные цифры в верхнем региÑтре.
+По умолчанию иÑпользуютÑÑ Ñимволы в нижнем региÑтре Ñимволов.
.TP
.IR \-v " | " \-version
-Отображает информацию о верÑии программы.
-.SH ПОДВОДÐЫЕ КÐÐœÐИ
+Показать информацию о верÑии программы и завершить работу.
+.SH ÐЕКОТОРЫЕ РÐЗЪЯСÐЕÐИЯ
.PP
+При указании команды
.I xxd \-r
-обладает вÑтроенным интеллектом Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о номерах Ñтрок.
+при запуÑке программы, будет применÑÑ‚ÑŒÑÑ Ð½ÐµÐºÐ¸Ð¹ вÑтроенный алгоритм
+Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о номерах Ñтрок.
ЕÑли возможен поиÑк по входному файлу, то номера Ñтрок в начале каждой Ñтроки
-шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть неупорÑдоченными, некоторые Ñтроки могут
-быть пропущены или переÑекатьÑÑ Ð´Ñ€ÑƒÐ³ Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¼. Ð’ Ñтих ÑлучаÑÑ… xxd иÑпользует
-lseek(2) Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° к Ñледующей позиции. ЕÑли поиÑк по входному файлу
-невозможен, то допуÑтимы только пропуÑки Ñтрок, которые заполнÑÑŽÑ‚ÑÑ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼Ð¸
-байтами.
+шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть неупорÑдоченными, некоторые Ñтроки
+могут быть пропущены или переÑекатьÑÑ Ð´Ñ€ÑƒÐ³ Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¼. Ð’ Ñтих ÑлучаÑÑ… программа
+xxd иÑпользует функцию lseek(2) Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° к Ñледующей позиции. ЕÑли поиÑк по
+входному файлу невозможен, то допуÑтимы только пропуÑки Ñтрок, которые
+заполнÑÑŽÑ‚ÑÑ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼Ð¸ байтами.
.PP
+ИÑпользование команды
.I xxd \-r
-никогда не выводит Ñообщений об ошибках. МуÑор пропуÑкаетÑÑ Ð¼Ð¾Ð»Ñ‡Ð°.
+приводит к тому, что ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не будут отображатьÑÑ.
+ПоÑторонние данные проÑто молча пропуÑкаютÑÑ.
.PP
-При редактировании шеÑтнадцатеричных предÑтавлений бинарных файлов обращайте
-внимание, что
+При редактировании шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ñ… файлов, обращайте
+внимание, что по команде
.I xxd \-r
-пропуÑкает в Ñтроке ввода любые данные поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтаточного количеÑтва
-колонок шеÑтнадцатеричных данных (Ñм. ключ \-c). Это означает, что изменениÑ,
-внеÑенные в колонки Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð½Ñ‹Ð¼Ð¸ Ñимволами ascii (или ebcdic), вÑегда игнорируютÑÑ.
+, поÑле ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ñтаточного количеÑтва колонок шеÑтнадцатеричных данных
+(Ñм. аргумент \-c), в Ñтроке ввода не будут обрабатыватьÑÑ Ð¾Ñтальные данные.
+Это означает, что изменениÑ, внеÑённые в колонке Ñ Ñ‚ÐµÐºÑтом в кодировке
+ASCII (или EBCDIC), вÑегда игнорируютÑÑ.
При обратном преобразовании шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² Ñтиле
-postscript Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды xxd \-r \-p количеÑтво колонок не учитываетÑÑ.
-Ð’ Ñтом Ñлучае раÑпознаютÑÑ Ð²Ñе Ñимволы, которые похожи на пары шеÑтнадцатеричных цифр.
+PostScript Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды xxd \-r \-p количеÑтво колонок не учитываетÑÑ.
+Ð’ Ñтом Ñлучае раÑпознаютÑÑ Ð²Ñе Ñимволы, которые похожи на пары шеÑтнадцатеричных
+цифр.
.PP
Обратите внимание на различие между командами
.PP
@@ -186,125 +250,139 @@ postscript Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды xxd \-r \-p количеÑтво кÐ
.I xxd \-s \+seek
может отличатьÑÑ Ð¾Ñ‚
.I xxd \-s seek,
-поÑкольку Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы "отмотать" данные на входе назад, иÑпользуетÑÑ Ð²Ñ‹Ð·Ð¾Ð² lseek(2).
-При иÑпользовании `+' поведение будет отличатьÑÑ, еÑли входные данные
-поÑтупают Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° Ñтандартного ввода, а Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² файле Ñтандартного ввода не находитÑÑ
-в начале файла к тому моменту, когда программа xxd запущена и приÑтупает к чтению ввода.
+поÑкольку Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы "отмотать" данные на входе назад, иÑпользуетÑÑ Ð²Ñ‹Ð·Ð¾Ð²
+функции lseek(2).
+При указании параметра '+' поведение будет отличатьÑÑ, еÑли входные данные
+поÑтупают Ñо Ñтандартного потока ввода, а Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² файле Ñтандартного ввода
+не находитÑÑ Ð² начале файла к тому моменту, когда программа xxd запущена
+и приÑтупает к чтению ввода.
ÐижеÑледующие примеры помогут проÑÑнить (или ещё больше запутать!) Ñитуацию...
.PP
-Отмотка назад потока Ñтандартного ввода; необходимо, поÑкольку 'cat' уже выполнила
-чтение до конца потока Ñтандартного ввода:
+Отмотка потока Ñтандартного ввода назад необходима, поÑкольку программа 'cat'
+уже выполнила чтение данных до конца из Ñтандартного потока ввода:
.PP
-\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
+\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR
.PP
-Вывод шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ позиции в файле 0x480
-(= 1024+128).
-Символ `+' означает "отноÑительно текущей позиции", таким образом `128' добавлÑетÑÑ
-к первому килобайту, где завершает работу dd:
+Вывод шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ позиции в файле 0x480 (=1024+128).
+Параметр '+' означает "отноÑительно текущей позиции", таким образом '128'
+добавлÑетÑÑ Ðº первому килобайту, где завершает работу программа dd:
.PP
-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
+\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 \> hex_snippet" < file\fR
.PP
-Вывод шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ позиции в файле 0x100
-(= 1024-768):
+Вывод шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ позиции в файле 0x100 (=1024\[mi]768):
.PP
-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
+\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 \> hex_snippet" < file\fR
.PP
-Ð’ то же времÑ, Ñледует заметить, что подобные Ñитуации вÑтречаютÑÑ Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾ редко,
-так что Ñимвол `+' обычно не иÑпользуетÑÑ. Ðвтор предпочитает наблюдать за работой
-xxd Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ strace(1) или truss(1) в тех ÑлучаÑÑ…, когда применÑетÑÑ ÐºÐ»ÑŽÑ‡
+Ð’ то же времÑ, Ñледует заметить, что подобные Ñитуации вÑтречаютÑÑ Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾
+редко, так что параметр '+' обычно не иÑпользуетÑÑ. Ðвтор предпочитает наблюдать
+за работой программы xxd Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ инÑтрументов strace(1) или truss(1) в тех
+ÑлучаÑÑ…, когда применÑетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚
\-s.
.SH ПРИМЕРЫ
.PP
.br
-ВывеÑти вÑÑ‘, кроме первых трёх Ñтрок (0x30 байтов) файла
-.B file
+ВывеÑти вÑÑ‘, кроме первых трёх Ñтрок (0x30 байт)
+.BR файла
:
-.PP
-\fI% xxd \-s 0x30 file
+.br
+\fI% xxd \-s 0x30 file\fR
.PP
.br
-ВывеÑти три Ñтроки (0x30 байтов) от конца файла
-.B file
+ВывеÑти три Ñтроки (0x30 байт) от конца
+.BR файла
:
-.PP
-\fI% xxd \-s \-0x30 file
-.PP
.br
-ВывеÑти 120 байтов в виде непрерывного шеÑтнадцатеричного предÑтавлениÑ
-по 20 октетов в Ñтроке:
+\fI% xxd \-s \-0x30 file\fR
.PP
+.br
+ВывеÑти 120 байт в виде непрерывного шеÑтнадцатеричного предÑтавлениÑ
+по 20 октетов в Ñтроке
+.br
+(Ñтот пример Ð´Ð»Ñ Ñправочника xxd.1 на английÑком Ñзыке, Ð´Ð»Ñ Ñ€ÑƒÑÑкого Ñзыка будет
+немного другой результат):
+.br
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
.br
-2e544820585844203120224d616e75616c207061
+2e544820585844203120224d6179203230323422
.br
-676520666f7220787864220a2e5c220a2e5c2220
+20224d616e75616c207061676520666f72207878
.br
-32317374204d617920313939360a2e5c22204d61
+64220a2e5c220a2e5c222032317374204d617920
.br
-6e207061676520617574686f723a0a2e5c222020
+313939360a2e5c22204d616e2070616765206175
.br
-2020546f6e79204e7567656e74203c746f6e7940
+74686f723a0a2e5c2220202020546f6e79204e75
.br
-7363746e7567656e2e7070702e67752e6564752e
+67656e74203c746f6e79407363746e7567656e2e
.br
-.PP
+
+.br
+ВывеÑти первые 120 байт Ñтого Ñправочника по 12 октетов в Ñтроке
+.br
+(Ñтот пример Ð´Ð»Ñ Ñправочника xxd.1 на английÑком Ñзыке, Ð´Ð»Ñ Ñ€ÑƒÑÑкого Ñзыка будет
+немного другой результат):
.br
-ВывеÑти первые 120 байтов Ñтой Ñтраницы Ñправочника по 12 октетов в Ñтроке:
-.PP
\fI% xxd \-l 120 \-c 12 xxd.1\fR
.br
-0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
+00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
.br
-000000c: 616e 7561 6c20 7061 6765 2066 anual page f
+0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
.br
-0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\".
+00000018: 6e75 616c 2070 6167 6520 666f nual page fo
.br
-0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May
+00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\\"..
.br
-0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma
+00000030: 5c22 2032 3173 7420 4d61 7920 \\" 21st May
.br
-000003c: 6e20 7061 6765 2061 7574 686f n page autho
+0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\\" Man
.br
-0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To
+00000048: 2070 6167 6520 6175 7468 6f72 page author
.br
-0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent <t
+00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\\" Ton
.br
-0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
+00000060: 7920 4e75 6765 6e74 203c 746f y Nugent <to
.br
-000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu.
+0000006c: 6e79 4073 6374 6e75 6765 6e2e ny@sctnugen.
.PP
.br
-Показать дату из файла xxd.1:
+Показать дату из файла
+.B xxd.1
+.br
+(Ñтот пример Ð´Ð»Ñ Ñправочника xxd.1 на английÑком Ñзыке, Ð´Ð»Ñ Ñ€ÑƒÑÑкого Ñзыка будет
+немного Ð´Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, например, Ð´Ð»Ñ UTF-8 \[em] \flxxd \-s 0x50 \-l 13 \-c 13 xxd.1\fR):
.PP
-\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
-0000028: 3231 7374 204d 6179 2031 3939 21st May 199
+00000033: 3231 7374 204d 6179 2031 3939 36 21st May 1996
.PP
.br
Скопировать
.B входной_файл
в
.B выходной_файл
-Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ 100 байтов Ñо значением 0x00 в начало файла:
-.PP
+Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ 100 байт Ñо значением 0x00 в начало файла:
+.br
\fI% xxd входной_файл | xxd \-r \-s 100 \> выходной_файл\fR
.br
-.PP
+
.br
-Заменить дату в файле xxd.1:
+Заменить дату в файле
+.B xxd.1
+.br
+(Ñтот пример Ð´Ð»Ñ Ñправочника xxd.1 на английÑком Ñзыке, Ð´Ð»Ñ Ñ€ÑƒÑÑкого Ñзыка будут
+немного другие команды):
.PP
-\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
+\fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fR
.br
-\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
-0000028: 3235 7468 204d 6179 2031 3939 25th May 199
+00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996
.PP
.br
-Создать 65537-байтный файл, вÑе байты которого имеют значение
-0x00, кроме поÑледнего байта, который должен иметь значение 'A'
-(0x41):
+Создать 65537-байтный файл, вÑе байты которого имеют значение 0x00,
+кроме поÑледнего байта, который должен иметь значение 'A' (0x41):
.PP
-\fI% echo '010000: 41' | xxd \-r \> file\fR
+\fI% echo "010000: 41" | xxd \-r > file\fR
.PP
.br
Создать шеÑтнадцатеричное предÑтавление Ñтого файла Ñ
@@ -312,97 +390,97 @@ xxd Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ strace(1) или truss(1) в тех ÑлучаÑÑ…, ког
.PP
\fI% xxd \-a \-c 12 file\fR
.br
-0000000: 0000 0000 0000 0000 0000 0000 ............
+00000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
-000fffc: 0000 0000 40 ....A
+0000fffc: 0000 0000 41 ....A
.PP
Создать 1-байтный файл, Ñодержащий Ñимвол 'A'.
-ЧиÑло поÑле '\-r \-s' добавлÑетÑÑ Ðº номерам Ñтрок, найденным в файле;
+ЧиÑло поÑле аргументов '\-r \-s' добавлÑетÑÑ Ðº номерам Ñтрок, найденным в файле,
иначе говорÑ, предшеÑтвующие байты пропуÑкаютÑÑ:
.PP
-\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
-.PP
-xxd можно иÑпользовать в качеÑтве фильтра в редакторе, например в
-.B vim(1),
-чтобы Ñоздать шеÑтнадцатеричное предÑтавление облаÑти между
-отметками `a' и `z':
+\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 > file\fR
.PP
+Программу xxd можно иÑпользовать в качеÑтве фильтра в редакторе, например в
+.B vim(1)
+, чтобы Ñоздать шеÑтнадцатеричное предÑтавление облаÑти между
+закладками 'a' и 'z':
+.br
\fI:'a,'z!xxd\fR
.PP
-Ð’Ñ‹ можете иÑпользовать xxd в качеÑтве фильтра в редакторе, например в
-.B vim(1),
-Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… из шеÑтнадцатеричного предÑтавлениÑ
-между отметками `a' и `z':
-.PP
+Можно иÑпользовать программу xxd в качеÑтве фильтра в редакторе, например в
+.B vim(1)
+, Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… из шеÑтнадцатеричного предÑтавлениÑ
+между закладками 'a' и 'z':
+.br
\fI:'a,'z!xxd \-r\fR
.PP
-Ð’Ñ‹ можете иÑпользовать xxd в качеÑтве фильтра в редакторе, например в
-.B vim(1),
-Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… из единÑтвенной Ñтроки
+Можно иÑпользовать программу xxd в качеÑтве фильтра в редакторе, например в
+.B vim(1)
+, Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… из единÑтвенной Ñтроки
шеÑтнадцатеричного предÑтавлениÑ. ПомеÑтите курÑор в ÑоответÑтвующую Ñтроку
и наберите
-.PP
+.br
\fI!!xxd \-r\fR
.PP
Чтобы прочитать единÑтвенный Ñимвол из канала ÑвÑзи:
-.PP
+.br
\fI% xxd \-c1 < /dev/term/b &\fR
.br
\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
.br
-\fI% echo \-n foo > /dev/term/b\fR
+\fI% echo \-n foo \> /dev/term/b\fR
.PP
-.SH ВОЗВРÐЩÐЕМЫЕ ЗÐÐЧЕÐИЯ
-Программа xxd завершает работу Ñо Ñледующими значениÑми:
+.SH КОДЫ ЗÐВЕРШЕÐИЯ
+При завершении работы, программа xxd возвращает Ñледующие значениÑ:
.TP
0
Ошибки не обнаружены.
.TP
\-1
ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ поддерживаетÑÑ (выполнение
-.I xxd \-r \-i
+.I \%xxd \-r \-i
пока невозможно).
.TP
1
-Ошибка при разборе ключей командной Ñтроки.
+Ошибка при разборе аргументов командной Ñтроки.
.TP
2
-Проблемы во входном файле.
+Ошибки во входном файле.
.TP
3
-Проблемы в выходном файле.
+Ошибки в выходном файле.
.TP
4,5
Ð–ÐµÐ»Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð¾Ð¸Ñка недоÑтижима.
-.SH СМОТРИ ТÐКЖЕ
+.SH СМОТРИТЕ ТÐКЖЕ
uuencode(1), uudecode(1), patch(1)
.br
.SH ПРЕДУПРЕЖДЕÐИЕ
СтранноÑÑ‚ÑŒ Ñтой программы ÑоответÑтвует оÑобенноÑÑ‚Ñм мозга её ÑоздателÑ.
-ИÑпользуйте её на Ñвой Ñтрах и риÑк. Копируйте файлы, отÑлеживайте
-вызовы, ÑтановитеÑÑŒ волшебником.
+ИÑпользуйте её на Ñвой Ñтрах и риÑк. Копируйте файлы, отÑлеживайте вызовы,
+ÑтановитеÑÑŒ волшебником.
.br
.SH ВЕРСИЯ
-Эта Ñтраница Ñправочника документирует xxd верÑии 1.7.
+Этот Ñправочник документирует программу xxd верÑии 1.7 от 2024-05.
.SH ÐВТОР
.br
-(c) 1990-1997 Юрген Вайгерт (Juergen Weigert)
+(c) Юрген Вайгерт (Juergen Weigert), 1990-1997
.br
-<jnweiger@informatik.uni-erlangen.de>
+<jnweiger@informatik.uni\-erlangen.de>
.LP
Ð’Ñ‹ можете Ñвободно раÑпроÑтранÑÑ‚ÑŒ программу Ñо ÑÑылкой на менÑ.
.br
-ЕÑли иÑпользование Ñтой программы принеÑло вам какой-то доход,
-поделитеÑÑŒ Ñо мной.
+ЕÑли иÑпользование Ñтой программы принеÑло вам какой-то доход, поделитеÑÑŒ Ñо
+мной.
.br
-ЕÑли вы потерÑли деньги, то Ñ Ñ‚ÑƒÑ‚ не причём.
+ЕÑли вы потерÑли деньги, то Ñ Ñ‚ÑƒÑ‚ ни при чём.
.PP
-Первый вариант Ñтраницы Ñправочника напиÑан Тони Ðаджентом (Tony Nugent)
+Первый вариант Ñправочника напиÑан Тони Ðаджентом (Tony Nugent)
.br
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.br
-Ðебольшие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑены Брамом Мооленааром (Bram Moolenaar).
-Страница отредактирована Юргеном Вайгертом (Juergen Weigert).
+Ðебольшие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑены Брамом Моленаром (Bram Moolenaar).
+Справочник отредактирован Юргеном Вайгертом (Juergen Weigert).
.PP
diff --git a/runtime/doc/xxd.1 b/runtime/doc/xxd.1
index c76f89b..2c00d53 100644
--- a/runtime/doc/xxd.1
+++ b/runtime/doc/xxd.1
@@ -1,4 +1,4 @@
-.TH XXD 1 "August 1996" "Manual page for xxd"
+.TH XXD 1 "May 2024" "Manual page for xxd"
.\"
.\" 21st May 1996
.\" Man page author:
@@ -190,7 +190,8 @@ When editing hex dumps, please note that
skips everything on the input line after reading enough columns of hexadecimal
data (see option \-c). This also means that changes to the printable ASCII (or
EBCDIC) columns are always ignored. Reverting a plain (or PostScript) style
-hex dump with xxd \-r \-p does not depend on the correct number of columns. Here, anything that looks like a pair of hex digits is interpreted.
+hex dump with xxd \-r \-p does not depend on the correct number of columns.
+Here, anything that looks like a pair of hex digits is interpreted.
.PP
Note the difference between
.br
@@ -224,7 +225,8 @@ Hex dump from file position 0x100 (=1024\-768) onwards.
\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR
.PP
However, this is a rare situation and the use of `+' is rarely needed.
-The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used.
+The author prefers to monitor the effect of xxd with strace(1) or truss(1),
+whenever \-s is used.
.SH EXAMPLES
.PP
.br
@@ -239,22 +241,25 @@ Print 3 lines (hex 0x30 bytes) from the end of
.br
\fI% xxd \-s \-0x30 file\fR
.PP
+Note: The results of the examples below are relevant to the xxd.1 man page as of
+May 2024
+.PP
.br
Print 120 bytes as a continuous hex dump with 20 octets per line.
.br
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
.br
-2e54482058584420312022417567757374203139
+2e544820585844203120224d6179203230323422
.br
-39362220224d616e75616c207061676520666f72
+20224d616e75616c207061676520666f72207878
.br
-20787864220a2e5c220a2e5c222032317374204d
+64220a2e5c220a2e5c222032317374204d617920
.br
-617920313939360a2e5c22204d616e2070616765
+313939360a2e5c22204d616e2070616765206175
.br
-20617574686f723a0a2e5c2220202020546f6e79
+74686f723a0a2e5c2220202020546f6e79204e75
.br
-204e7567656e74203c746f6e79407363746e7567
+67656e74203c746f6e79407363746e7567656e2e
.br
.br
@@ -262,32 +267,32 @@ Hex dump the first 120 bytes of this man page with 12 octets per line.
.br
\fI% xxd \-l 120 \-c 12 xxd.1\fR
.br
-0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
+00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
.br
-000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
+0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
.br
-0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
+00000018: 6e75 616c 2070 6167 6520 666f nual page fo
.br
-0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\
+00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\\"..
.br
-0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M
+00000030: 5c22 2032 3173 7420 4d61 7920 \\" 21st May
.br
-000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\"
+0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\\" Man
.br
-0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
+00000048: 2070 6167 6520 6175 7468 6f72 page author
.br
-0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\"
+00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\\" Ton
.br
-0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
+00000060: 7920 4e75 6765 6e74 203c 746f y Nugent <to
.br
-000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
+0000006c: 6e79 4073 6374 6e75 6765 6e2e ny@sctnugen.
.PP
.br
Display just the date from the file xxd.1
.br
-\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
+\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
-0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
+00000033: 3231 7374 204d 6179 2031 3939 36 21st May 1996
.PP
.br
Copy
@@ -302,11 +307,11 @@ and prepend 100 bytes of value 0x00.
.br
Patch the date in the file xxd.1
.br
-\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR
+\fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fR
.br
-\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
+\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
-0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
+00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996
.PP
.br
Create a 65537 byte file with all bytes 0x00,
@@ -319,11 +324,11 @@ Hex dump this file with autoskip.
.br
\fI% xxd \-a \-c 12 file\fR
.br
-0000000: 0000 0000 0000 0000 0000 0000 ............
+00000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
-000fffc: 0000 0000 40 ....A
+0000fffc: 0000 0000 41 ....A
.PP
Create a 1 byte file containing a single 'A' character.
The number after '\-r \-s' adds to the line numbers found in the file;
@@ -388,7 +393,7 @@ The tool's weirdness matches its creator's brain.
Use entirely at your own risk. Copy files. Trace it. Become a wizard.
.br
.SH VERSION
-This manual page documents xxd version 1.7
+This manual page documents xxd version 1.7 from 2024-05.
.SH AUTHOR
.br
(c) 1990-1997 by Juergen Weigert
diff --git a/runtime/doc/xxd.man b/runtime/doc/xxd.man
index b06971b..1251591 100644
--- a/runtime/doc/xxd.man
+++ b/runtime/doc/xxd.man
@@ -179,39 +179,42 @@ EXAMPLES
Print 3 lines (hex 0x30 bytes) from the end of file.
% xxd -s -0x30 file
+ Note: The results of the examples below are relevant to the xxd.1 man
+ page as of May 2024
+
Print 120 bytes as a continuous hex dump with 20 octets per line.
% xxd -l 120 -ps -c 20 xxd.1
- 2e54482058584420312022417567757374203139
- 39362220224d616e75616c207061676520666f72
- 20787864220a2e5c220a2e5c222032317374204d
- 617920313939360a2e5c22204d616e2070616765
- 20617574686f723a0a2e5c2220202020546f6e79
- 204e7567656e74203c746f6e79407363746e7567
+ 2e544820585844203120224d6179203230323422
+ 20224d616e75616c207061676520666f72207878
+ 64220a2e5c220a2e5c222032317374204d617920
+ 313939360a2e5c22204d616e2070616765206175
+ 74686f723a0a2e5c2220202020546f6e79204e75
+ 67656e74203c746f6e79407363746e7567656e2e
Hex dump the first 120 bytes of this man page with 12 octets per line.
% xxd -l 120 -c 12 xxd.1
- 0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
- 000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
- 0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
- 0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\
- 0000030: 220a 2e5c 2220 3231 7374 204d "..\" 21st M
- 000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\"
- 0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
- 0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\"
- 0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
- 000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
+ 00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
+ 0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
+ 00000018: 6e75 616c 2070 6167 6520 666f nual page fo
+ 00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\"..
+ 00000030: 5c22 2032 3173 7420 4d61 7920 \" 21st May
+ 0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\" Man
+ 00000048: 2070 6167 6520 6175 7468 6f72 page author
+ 00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\" Ton
+ 00000060: 7920 4e75 6765 6e74 203c 746f y Nugent <to
+ 0000006c: 6e79 4073 6374 6e75 6765 6e2e ny@sctnugen.
Display just the date from the file xxd.1
- % xxd -s 0x36 -l 13 -c 13 xxd.1
- 0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
+ % xxd -s 0x33 -l 13 -c 13 xxd.1
+ 00000033: 3231 7374 204d 6179 2031 3939 36 21st May 1996
Copy input_file to output_file and prepend 100 bytes of value 0x00.
% xxd input_file | xxd -r -s 100 > output_file
Patch the date in the file xxd.1
- % echo "0000037: 3574 68" | xxd -r - xxd.1
- % xxd -s 0x36 -l 13 -c 13 xxd.1
- 0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
+ % echo "0000034: 3574 68" | xxd -r - xxd.1
+ % xxd -s 0x33 -l 13 -c 13 xxd.1
+ 00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996
Create a 65537 byte file with all bytes 0x00, except for the last one
which is 'A' (hex 0x41).
@@ -219,9 +222,9 @@ EXAMPLES
Hex dump this file with autoskip.
% xxd -a -c 12 file
- 0000000: 0000 0000 0000 0000 0000 0000 ............
+ 00000000: 0000 0000 0000 0000 0000 0000 ............
*
- 000fffc: 0000 0000 40 ....A
+ 0000fffc: 0000 0000 41 ....A
Create a 1 byte file containing a single 'A' character. The number afâ€
ter '-r -s' adds to the line numbers found in the file; in effect, the
@@ -268,7 +271,7 @@ WARNINGS
own risk. Copy files. Trace it. Become a wizard.
VERSION
- This manual page documents xxd version 1.7
+ This manual page documents xxd version 1.7 from 2024-05.
AUTHOR
(c) 1990-1997 by Juergen Weigert
@@ -282,4 +285,4 @@ AUTHOR
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
Small changes by Bram Moolenaar. Edited by Juergen Weigert.
-Manual page for xxd August 1996 XXD(1)
+Manual page for xxd May 2024 XXD(1)
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index a2daf14..220b371 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -98,12 +98,22 @@ au BufNewFile,BufRead *.run setf ampl
" Ant
au BufNewFile,BufRead build.xml setf ant
+" ANTLR / PCCTS
+"au BufNewFile,BufRead *.g setf antlr
+au BufNewFile,BufRead *.g setf pccts
+
+" ANTLR 4
+au BufNewFile,BufRead *.g4 setf antlr4
+
" Arduino
au BufNewFile,BufRead *.ino,*.pde setf arduino
" Ash of busybox
au BufNewFile,BufRead .ash_history setf sh
+" Asymptote
+au BufNewFile,BufRead *.asy setf asy
+
" Apache config file
au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf setf apache
au BufNewFile,BufRead */etc/apache2/sites-*/*.com setf apache
@@ -256,6 +266,7 @@ au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key setf named
" BIND zone
au BufNewFile,BufRead named.root setf bindzone
+au BufNewFile,BufRead *.zone setf bindzone
au BufNewFile,BufRead *.db call dist#ft#BindzoneCheck('')
" Blade
@@ -321,6 +332,9 @@ au BufNewFile,BufRead *.toc
" Cdrdao config
au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao setf cdrdaoconf
+" Cedar
+au BufNewFile,BufRead *.cedar setf cedar
+
" Cfengine
au BufNewFile,BufRead cfengine.conf setf cfengine
@@ -457,7 +471,7 @@ au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
au BufNewFile,BufRead */cmus/{rc,*.theme} setf cmusrc
" Cobol
-au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol
+au BufNewFile,BufRead *.cbl,*.cob setf cobol
" cobol or zope form controller python script? (heuristic)
au BufNewFile,BufRead *.cpy
\ if getline(1) =~ '^##' |
@@ -496,6 +510,9 @@ au BufNewFile,BufRead *.cu,*.cuh setf cuda
" Cue
au BufNewFile,BufRead *.cue setf cue
+" Debian devscripts
+au BufNewFile,BufRead devscripts.conf,.devscripts setf sh
+
" Dockerfile; Podman uses the same syntax with name Containerfile
" Also see Dockerfile.* below.
au BufNewFile,BufRead Containerfile,Dockerfile,dockerfile,*.[dD]ockerfile setf dockerfile
@@ -532,6 +549,10 @@ au BufNewFile,BufRead s6-* setf execline
" Fontconfig config files
au BufNewFile,BufRead fonts.conf setf xml
+" Faust
+au BufNewFile,BufRead *.lib setf faust
+au BufNewFile,BufRead *.dsp call dist#ft#FTdsp()
+
" Libreoffice config files
au BufNewFile,BufRead *.xcu,*.xlb,*.xlc,*.xba setf xml
au BufNewFile,BufRead psprint.conf,sofficerc setf dosini
@@ -673,7 +694,7 @@ au BufNewFile,BufRead *.com call dist#ft#BindzoneCheck('dcl')
au BufNewFile,BufRead *.dot,*.gv setf dot
" Dune
-au BufNewFile,BufRead jbuild,dune,dune-project,dune-workspace setf dune
+au BufNewFile,BufRead jbuild,dune,dune-project,dune-workspace,dune-file setf dune
" Dylan - lid files
au BufNewFile,BufRead *.lid setf dylanlid
@@ -692,7 +713,7 @@ if has("fname_case")
endif
" Dracula
-au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula
+au BufNewFile,BufRead *.drac,*.drc,*.lvs,*.lpe setf dracula
" Datascript
au BufNewFile,BufRead *.ds setf datascript
@@ -795,10 +816,6 @@ au BufNewFile,BufRead *.fish setf fish
" Flatpak config
au BufNewFile,BufRead */flatpak/repo/config setf dosini
-" FlexWiki - disabled, because it has side effects when a .wiki file
-" is not actually FlexWiki
-"au BufNewFile,BufRead *.wiki setf flexwiki
-
" Focus Executable
au BufNewFile,BufRead *.fex,*.focexec setf focexec
@@ -883,7 +900,7 @@ au BufNewFile,BufRead .gitattributes,*.git/info/attributes setf gitattributes
au BufNewFile,BufRead */.config/git/attributes setf gitattributes
au BufNewFile,BufRead */etc/gitattributes setf gitattributes
au BufNewFile,BufRead .gitignore,*.git/info/exclude setf gitignore
-au BufNewFile,BufRead */.config/git/ignore setf gitignore
+au BufNewFile,BufRead */.config/git/ignore,*.prettierignore setf gitignore
au BufNewFile,BufRead git-rebase-todo setf gitrebase
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
au BufNewFile,BufRead *.git/*
@@ -898,7 +915,9 @@ au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc
au BufNewFile,BufRead *.gleam setf gleam
" GLSL
-au BufNewFile,BufRead *.glsl setf glsl
+" Extensions supported by Khronos reference compiler (with one exception, ".glsl")
+" https://github.com/KhronosGroup/glslang
+au BufNewFile,BufRead *.vert,*.tesc,*.tese,*.glsl,*.geom,*.frag,*.comp,*.rgen,*.rmiss,*.rchit,*.rahit,*.rint,*.rcall setf glsl
" GN (generate ninja) files
au BufNewFile,BufRead *.gn,*.gni setf gn
@@ -934,6 +953,9 @@ au BufNewFile,BufRead *.go setf go
au BufNewFile,BufRead Gopkg.lock setf toml
au BufRead,BufNewFile go.work setf gowork
+" GoAccess configuration
+au BufNewFile,BufRead goaccess.conf setf goaccess
+
" GrADS scripts
au BufNewFile,BufRead *.gs setf grads
@@ -1020,7 +1042,7 @@ au BufNewFile,BufRead *.t.html setf tilde
" Translate shell
au BufNewFile,BufRead init.trans,*/etc/translate-shell,.trans setf clojure
-" HTML (.shtml and .stm for server side)
+" HTML (.stm for server side, .shtml is server-side or superhtml)
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call dist#ft#FThtml()
au BufNewFile,BufRead *.cshtml setf html
@@ -1177,7 +1199,7 @@ au BufNewFile,BufRead *.ipynb,*.jupyterlab-settings setf json
au BufNewFile,BufRead *.sublime-project,*.sublime-settings,*.sublime-workspace setf json
" Other files that look like json
-au BufNewFile,BufRead .prettierrc,.firebaserc,.stylelintrc,.lintstagedrc,flake.lock setf json
+au BufNewFile,BufRead .prettierrc,.firebaserc,.stylelintrc,.lintstagedrc,flake.lock,deno.lock setf json
" JSONC (JSON with comments)
au BufNewFile,BufRead *.jsonc,.babelrc,.eslintrc,.jsfmtrc setf jsonc
@@ -1242,6 +1264,9 @@ au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf set
" LambdaProlog or SML (see dist#ft#FTmod for *.mod)
au BufNewFile,BufRead *.sig call dist#ft#FTsig()
+" LDAP configuration
+au BufNewFile,BufRead ldaprc,.ldaprc,ldap.conf setf ldapconf
+
" LDAP LDIF
au BufNewFile,BufRead *.ldif setf ldif
@@ -1365,8 +1390,8 @@ au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases setf mailaliases
au BufNewFile,BufRead .mailcap,mailcap setf mailcap
" Makefile
-au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
-au BufNewFile,BufRead Kbuild setf make
+au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak call dist#ft#FTmake()
+au BufNewFile,BufRead Kbuild setf make
" MakeIndex
au BufNewFile,BufRead *.ist,*.mst setf ist
@@ -1394,14 +1419,14 @@ au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md
\ setf markdown |
\ endif
-" Mason
-au BufNewFile,BufRead *.mason,*.mhtml,*.comp setf mason
+" Mason (it used to include *.comp, are those Mason files?)
+au BufNewFile,BufRead *.mason,*.mhtml setf mason
" Mathematica, Matlab, Murphi, Objective C or Octave
au BufNewFile,BufRead *.m call dist#ft#FTm()
-" Mathematica notebook
-au BufNewFile,BufRead *.nb setf mma
+" Mathematica notebook and package files
+au BufNewFile,BufRead *.nb,*.wl setf mma
" Maya Extension Language
au BufNewFile,BufRead *.mel setf mel
@@ -1409,6 +1434,12 @@ au BufNewFile,BufRead *.mel setf mel
" mbsync
au BufNewFile,BufRead .mbsyncrc setf conf
+" mcmeta
+au BufNewFile,BufRead *.mcmeta setf json
+
+" MediaWiki
+au BufNewFile,BufRead *.mw,*.wiki setf mediawiki
+
" Mercurial (hg) commit file
au BufNewFile,BufRead hg-editor-*.txt setf hgcommit
@@ -1608,7 +1639,7 @@ au BufNewFile,BufRead *.xom,*.xin setf omnimark
au BufNewFile,BufRead .ondirrc setf ondir
" OPAM
-au BufNewFile,BufRead opam,*.opam,*.opam.template setf opam
+au BufNewFile,BufRead opam,*.opam,*.opam.template,opam.locked,*.opam.locked setf opam
" OpenFOAM
au BufNewFile,BufRead [a-zA-Z0-9]*Dict\(.*\)\=,[a-zA-Z]*Properties\(.*\)\=,*Transport\(.*\),fvSchemes,fvSolution,fvConstrains,fvModels,*/constant/g,*/0\(\.orig\)\=/* call dist#ft#FTfoam()
@@ -1693,7 +1724,7 @@ au BufNewFile,BufRead *.pcmk setf pcmk
" PEM (Privacy-Enhanced Mail)
au BufNewFile,BufRead *.pem,*.cer,*.crt,*.csr setf pem
-" Perl
+" Perl or Prolog
if has("fname_case")
au BufNewFile,BufRead *.pl,*.PL call dist#ft#FTpl()
else
@@ -1803,10 +1834,6 @@ au BufNewFile,BufRead *termcap
" Prisma
au BufRead,BufNewFile *.prisma setf prisma
-" PCCTS / ANTLR
-"au BufNewFile,BufRead *.g setf antlr
-au BufNewFile,BufRead *.g setf pccts
-
" PPWizard
au BufNewFile,BufRead *.it,*.ih setf ppwiz
@@ -2152,7 +2179,7 @@ au BufNewFile,BufRead catalog setf catalog
" NOTE: Patterns ending in a star are further down, these have lower priority.
au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,.bash[_-]history,bash-fc[-.],*.ebuild,*.bash,*.eclass,PKGBUILD,APKBUILD,*.bats,*.cygport call dist#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
-au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
+au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env{rc,} call dist#ft#SetFileTypeSH(getline(1))
" Shell script (Arch Linux) or PHP file (Drupal)
au BufNewFile,BufRead *.install
@@ -2172,6 +2199,10 @@ au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias
" Zig and Zig Object Notation (ZON)
au BufNewFile,BufRead *.zig,*.zon setf zig
+" Ziggy and Ziggy Schema
+au BufNewFile,BufRead *.ziggy setf ziggy
+au BufNewFile,BufRead *.ziggy-schema setf ziggy_schema
+
" Zserio
au BufNewFile,BufRead *.zs setf zserio
@@ -2402,7 +2433,7 @@ au BufNewFile,BufRead *.tcl,*.tm,*.tk,*.itcl,*.itk,*.jacl,.tclshrc,.wishrc,.tcls
" Xilinx's xsct and xsdb use tcl
au BufNewFile,BufRead .xsctcmdhistory,.xsdbcmdhistory setf tcl
-" templ
+" templ
au BufNewFile,BufRead *.templ setf templ
" Teal
@@ -2438,6 +2469,9 @@ au BufNewFile,BufRead texdoc.cnf setf conf
" Sometime we need to view its content for debugging
au BufNewFile,BufRead *.{pgf,nlo,nls,thm,eps_tex,pygtex,pygstyle,clo,aux,brf,ind,lof,loe,nav,vrb,ins,tikz,bbx,cbx,beamer} setf tex
+" LaTeX files generated by Inkscape
+au BufNewFile,BufRead *.pdf_tex setf tex
+
" ConTeXt
au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi,*.mkxl,*.mklx setf context
@@ -2453,10 +2487,10 @@ au BufNewFile,BufRead *.thrift setf thrift
" Tidy config
au BufNewFile,BufRead .tidyrc,tidyrc,tidy.conf setf tidy
-" TF mud client
+" TF (TinyFugue) mud client
au BufNewFile,BufRead .tfrc,tfrc setf tf
-" TF mud client or terraform
+" TF (TinyFugue) mud client or terraform
au BufNewFile,BufRead *.tf call dist#ft#FTtf()
" TLA+
diff --git a/runtime/ftplugin/antlr4.vim b/runtime/ftplugin/antlr4.vim
new file mode 100644
index 0000000..610d528
--- /dev/null
+++ b/runtime/ftplugin/antlr4.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin
+" Language: ANTLR4, ANother Tool for Language Recognition v4 <www.antlr.org>
+" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
+" Last Change: 2024 July 09
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/asy.vim b/runtime/ftplugin/asy.vim
new file mode 100644
index 0000000..76bd69d
--- /dev/null
+++ b/runtime/ftplugin/asy.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin
+" Language: Asymptote
+" Maintainer: AvidSeeker <avidseeker7@protonmail.com>
+" Last Change: 2024 Jul 13
+"
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let g:did_ftplugin = 1
+
+setlocal commentstring=/*\ %s\ */
+
+let b:undo_ftplugin = "setl commentstring<"
diff --git a/runtime/ftplugin/autohotkey.vim b/runtime/ftplugin/autohotkey.vim
new file mode 100644
index 0000000..9cb4fd7
--- /dev/null
+++ b/runtime/ftplugin/autohotkey.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin file
+" Language: AutoHotkey
+" Maintainer: Peter Aronoff <peteraronoff@fastmail.com>
+" Last Changed: 2024 Jul 25
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal comments=:;
+setlocal commentstring=;\ %s
+
+let b:undo_ftplugin = "setlocal comments< commentstring<"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/bindzone.vim b/runtime/ftplugin/bindzone.vim
new file mode 100644
index 0000000..f9e5f4b
--- /dev/null
+++ b/runtime/ftplugin/bindzone.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin file
+" Language: bind zone file
+" Maintainer: This runtime file is looking for a new maintainer.
+" Last Change: 2024 Jul 06
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin=1
+
+setlocal comments=b:;
+setlocal commentstring=;\ %s
+setlocal formatoptions-=t
+setlocal formatoptions+=crq
+
+let b:undo_ftplugin = "setlocal com< cms< fo<"
diff --git a/runtime/ftplugin/cabal.vim b/runtime/ftplugin/cabal.vim
new file mode 100644
index 0000000..5ccfa1d
--- /dev/null
+++ b/runtime/ftplugin/cabal.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language: Haskell Cabal Build file
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:-- commentstring=--\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/cedar.vim b/runtime/ftplugin/cedar.vim
new file mode 100644
index 0000000..74a1903
--- /dev/null
+++ b/runtime/ftplugin/cedar.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language: Cedar
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 4
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:// commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/chicken.vim b/runtime/ftplugin/chicken.vim
index 84d45ba..b12b264 100644
--- a/runtime/ftplugin/chicken.vim
+++ b/runtime/ftplugin/chicken.vim
@@ -1,12 +1,12 @@
" CHICKEN-specific Vim customizations
-" Last Change: 2018-03-05
-" Author: Evan Hanson <evhan@foldling.org>
-" Maintainer: Evan Hanson <evhan@foldling.org>
-" Repository: https://git.foldling.org/vim-scheme.git
-" URL: https://foldling.org/vim/ftplugin/chicken.vim
-" Notes: These are supplemental settings, to be loaded after the core
-" Scheme ftplugin file (ftplugin/scheme.vim). Enable it by setting
-" b:is_chicken=1 and filetype=scheme.
+" Last Change: 2024 Jun 21
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/ftplugin/chicken.vim
+" Notes: These are supplemental settings, to be loaded after the
+" core Scheme ftplugin file (ftplugin/scheme.vim). Enable
+" it by setting b:is_chicken=1 and filetype=scheme.
if !exists('b:did_scheme_ftplugin')
finish
diff --git a/runtime/ftplugin/cmakecache.vim b/runtime/ftplugin/cmakecache.vim
new file mode 100644
index 0000000..6753cd2
--- /dev/null
+++ b/runtime/ftplugin/cmakecache.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language: cmakecache - CMakeCache.txt files generated by CMake
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:#,:// commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/csv.vim b/runtime/ftplugin/csv.vim
new file mode 100644
index 0000000..f1021f8
--- /dev/null
+++ b/runtime/ftplugin/csv.vim
@@ -0,0 +1,23 @@
+vim9script
+
+# Maintainer: Maxim Kim <habamax@gmail.com>
+# Last Update: 2024-06-18
+
+if !exists("b:csv_delimiter")
+ # detect delimiter
+ var delimiters = ",;\t|"
+
+ var max = 0
+ for d in delimiters
+ var count = getline(1)->split(d)->len() + getline(2)->split(d)->len()
+ if count > max
+ max = count
+ b:csv_delimiter = d
+ endif
+ endfor
+endif
+
+if exists("b:did_ftplugin")
+ finish
+endif
+b:did_ftplugin = 1
diff --git a/runtime/ftplugin/cuda.vim b/runtime/ftplugin/cuda.vim
new file mode 100644
index 0000000..91d722b
--- /dev/null
+++ b/runtime/ftplugin/cuda.vim
@@ -0,0 +1,11 @@
+" Vim filetype plugin
+" Language: CUDA
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 29
+
+if exists('b:did_ftplugin')
+ finish
+endif
+
+" Behaves mostly just like C++
+runtime! ftplugin/cpp.vim
diff --git a/runtime/ftplugin/editorconfig.vim b/runtime/ftplugin/editorconfig.vim
new file mode 100644
index 0000000..6d43735
--- /dev/null
+++ b/runtime/ftplugin/editorconfig.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language: EditorConfig
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:#,:; commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/gdscript.vim b/runtime/ftplugin/gdscript.vim
index 93519d8..d1f41c8 100644
--- a/runtime/ftplugin/gdscript.vim
+++ b/runtime/ftplugin/gdscript.vim
@@ -4,6 +4,7 @@ vim9script
# Language: gdscript (Godot game engine scripting language)
# Maintainer: Maxim Kim <habamax@gmail.com>
# Website: https://github.com/habamax/vim-gdscript
+# Last Change: 2024 Jul 14
if exists("b:did_ftplugin") | finish | endif
@@ -22,6 +23,11 @@ setlocal commentstring=#\ %s
setlocal foldignore=
setlocal foldexpr=GDScriptFoldLevel()
+if get(g:, 'gdscript_recommended_style', 1)
+ setlocal noexpandtab tabstop=4 softtabstop=0 shiftwidth=0
+ b:undo_ftplugin ..= ' | setlocal expandtab< tabstop< softtabstop< shiftwidth<'
+endif
+
def GDScriptFoldLevel(): string
var line = getline(v:lnum)
diff --git a/runtime/ftplugin/go.vim b/runtime/ftplugin/go.vim
index 61dc1a1..75f78cf 100644
--- a/runtime/ftplugin/go.vim
+++ b/runtime/ftplugin/go.vim
@@ -2,6 +2,7 @@
" Language: Go
" Maintainer: David Barnett (https://github.com/google/vim-ft-go)
" Last Change: 2014 Aug 16
+" 2024 Jul 16 by Vim Project (add recommended indent style)
if exists('b:did_ftplugin')
finish
@@ -15,4 +16,9 @@ setlocal commentstring=//\ %s
let b:undo_ftplugin = 'setl fo< com< cms<'
+if get(g:, 'go_recommended_style', 1)
+ setlocal noexpandtab softtabstop=0 shiftwidth=0
+ let b:undo_ftplugin ..= ' | setl et< sts< sw<'
+endif
+
" vim: sw=2 sts=2 et
diff --git a/runtime/ftplugin/goaccess.vim b/runtime/ftplugin/goaccess.vim
new file mode 100644
index 0000000..fb55730
--- /dev/null
+++ b/runtime/ftplugin/goaccess.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin
+" Language: GoAccess configuration
+" Maintainer: Adam Monsen <haircut@gmail.com>
+" Last Change: 2024 Aug 1
+
+if exists('b:did_ftplugin')
+ finish
+endif
+
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/gomod.vim b/runtime/ftplugin/gomod.vim
new file mode 100644
index 0000000..554c948
--- /dev/null
+++ b/runtime/ftplugin/gomod.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin file
+" Language: go module file
+" Maintainer: YU YUK KUEN <yukkuen.yu719@gmail.com>
+" Last Change: 2024-06-21
+" 2024 Jul 16 by Vim Project (noexpandtab)
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal noexpandtab
+setlocal formatoptions-=t formatoptions-=c
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl et< fo< cms<'
diff --git a/runtime/ftplugin/hlsplaylist.vim b/runtime/ftplugin/hlsplaylist.vim
new file mode 100644
index 0000000..879a04f
--- /dev/null
+++ b/runtime/ftplugin/hlsplaylist.vim
@@ -0,0 +1,37 @@
+" Vim filetype plugin
+" Language: HLS/M3U Playlist
+" Maintainer: AvidSeeker <avidseeker7@protonmail.com>
+" Last Change: 2024 Jul 07
+"
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let g:did_ftplugin = 1
+
+setlocal commentstring=#%s
+
+let b:undo_ftplugin = "setl commentstring<"
+
+function! M3UFold() abort
+ let line = getline(v:lnum)
+ if line =~# '^#EXTGRP'
+ return ">1"
+ endif
+ return "="
+endfunction
+
+function! M3UFoldText() abort
+ let start_line = getline(v:foldstart)
+ let title = substitute(start_line, '^#EXTGRP:*', '', '')
+ let foldsize = (v:foldend - v:foldstart + 1)
+ let linecount = '['.foldsize.' lines]'
+ return title.' '.linecount
+endfunction
+
+if has("folding")
+ setlocal foldexpr=M3UFold()
+ setlocal foldmethod=expr
+ setlocal foldtext=M3UFoldText()
+ let b:undo_ftplugin .= "|setl foldexpr< foldmethod< foldtext<"
+endif
diff --git a/runtime/ftplugin/htmlangular.vim b/runtime/ftplugin/htmlangular.vim
new file mode 100644
index 0000000..b114372
--- /dev/null
+++ b/runtime/ftplugin/htmlangular.vim
@@ -0,0 +1,12 @@
+" Vim filetype plugin file
+" Language: Angular HTML Template
+" Maintainer: Dennis van den Berg <dennis@vdberg.dev>
+" Last Change: 2024 Jul 9
+
+" Only use this filetype plugin when no other was loaded.
+if exists("b:did_ftplugin")
+ finish
+endif
+
+" source the HTML ftplugin
+runtime! ftplugin/html.vim
diff --git a/runtime/ftplugin/javacc.vim b/runtime/ftplugin/javacc.vim
new file mode 100644
index 0000000..780c68b
--- /dev/null
+++ b/runtime/ftplugin/javacc.vim
@@ -0,0 +1,20 @@
+" Vim filetype plugin
+" Language: JavaCC
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+" Set 'formatoptions' to break comment lines but not other lines,
+" and insert the comment leader when hitting <CR> or using "o".
+setlocal formatoptions-=t formatoptions+=croql
+
+" Set 'comments' to format dashed lists in comments. Behaves just like C.
+setlocal comments& comments^=sO:*\ -,mO:*\ \ ,exO:*/
+
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl fo< com< cms<'
diff --git a/runtime/ftplugin/kivy.vim b/runtime/ftplugin/kivy.vim
new file mode 100644
index 0000000..e19d832
--- /dev/null
+++ b/runtime/ftplugin/kivy.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language: Kivy
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl cms<'
diff --git a/runtime/ftplugin/ldapconf.vim b/runtime/ftplugin/ldapconf.vim
new file mode 100644
index 0000000..7055716
--- /dev/null
+++ b/runtime/ftplugin/ldapconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language: ldap.conf(5) configuration file.
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/lex.vim b/runtime/ftplugin/lex.vim
new file mode 100644
index 0000000..c6c47fe
--- /dev/null
+++ b/runtime/ftplugin/lex.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin
+" Language: Lex and Flex
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim
index 91e8a8b..45c2bb2 100644
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -4,6 +4,8 @@
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Autoload Split: Bram Moolenaar
" Last Change: 2024 Jun 06 (disabled the q mapping, #8210)
+" 2024 Jul 06 (use nnoremap, #15130)
+" 2024 Aug 23 (improve the <Plug>ManBS mapping, #15547, #15556)
" To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file.
@@ -35,20 +37,18 @@ if &filetype == "man"
let b:undo_ftplugin = b:undo_ftplugin
\ . '|silent! nunmap <buffer> <LocalLeader>h'
endif
- nnoremap <buffer> <Plug>ManBS :%s/.\b//g<CR>:setl nomod<CR>''
+
+ nnoremap <buffer> <silent> <Plug>ManBS :setl ma<Bar>%s/.\b//g
+ \ <Bar>setl noma<CR>`'
nnoremap <buffer> <silent> <c-]> :call dist#man#PreGetPage(v:count)<CR>
nnoremap <buffer> <silent> <c-t> :call dist#man#PopPage()<CR>
- " Disabled, since this hides the ability to record a macro or use the
- " command line window
- " nnoremap <buffer> <silent> q :q<CR>
" Add undo commands for the maps
let b:undo_ftplugin = b:undo_ftplugin
\ . '|silent! nunmap <buffer> <Plug>ManBS'
\ . '|silent! nunmap <buffer> <c-]>'
\ . '|silent! nunmap <buffer> <c-t>'
- "\ . '|silent! nunmap <buffer> q'
endif
if exists('g:ft_man_folding_enable') && (g:ft_man_folding_enable == 1)
@@ -61,8 +61,8 @@ endif
if exists(":Man") != 2
com -nargs=+ -complete=shellcmd Man call dist#man#GetPage(<q-mods>, <f-args>)
- nmap <Leader>K :call dist#man#PreGetPage(0)<CR>
- nmap <Plug>ManPreGetPage :call dist#man#PreGetPage(0)<CR>
+ nnoremap <Leader>K :call dist#man#PreGetPage(0)<CR>
+ nnoremap <Plug>ManPreGetPage :call dist#man#PreGetPage(0)<CR>
endif
let &cpo = s:cpo_save
diff --git a/runtime/ftplugin/mediawiki.vim b/runtime/ftplugin/mediawiki.vim
new file mode 100644
index 0000000..4618246
--- /dev/null
+++ b/runtime/ftplugin/mediawiki.vim
@@ -0,0 +1,42 @@
+" Language: MediaWiki
+" Maintainer: Avid Seeker <avidseeker7@protonmail.com>
+" Home: http://en.wikipedia.org/wiki/Wikipedia:Text_editor_support#Vim
+" Last Change: 2024 Jul 14
+" Credits: chikamichi
+"
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+" Many MediaWiki wikis prefer line breaks only at the end of paragraphs
+" (like in a text processor), which results in long, wrapping lines.
+setlocal wrap linebreak
+setlocal textwidth=0
+
+setlocal formatoptions-=tc formatoptions+=l formatoptions+=roq
+setlocal matchpairs+=<:>
+
+" Treat lists, indented text and tables as comment lines and continue with the
+" same formatting in the next line (i.e. insert the comment leader) when hitting
+" <CR> or using "o".
+setlocal comments=n:#,n:*,n:\:,s:{\|,m:\|,ex:\|},s:<!--,m:\ \ \ \ ,e:-->
+setlocal commentstring=<!--\ %s\ -->
+
+" match HTML tags (taken directly from $VIM/ftplugin/html.vim)
+if exists("loaded_matchit")
+ let b:match_ignorecase=0
+ let b:match_skip = 's:Comment'
+ let b:match_words = '<:>,' .
+ \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
+ \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' .
+ \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
+endif
+
+" Enable folding based on ==sections==
+setlocal foldexpr=getline(v:lnum)=~'^\\(=\\+\\)[^=]\\+\\1\\(\\s*<!--.*-->\\)\\=\\s*$'?\">\".(len(matchstr(getline(v:lnum),'^=\\+'))-1):\"=\"
+setlocal foldmethod=expr
+
+let b:undo_ftplugin = "setl commentstring< comments< formatoptions< foldexpr< foldmethod<"
+let b:undo_ftplugin += " matchpairs< linebreak< wrap< textwidth<"
diff --git a/runtime/ftplugin/mermaid.vim b/runtime/ftplugin/mermaid.vim
index fe84ab3..5547ad3 100644
--- a/runtime/ftplugin/mermaid.vim
+++ b/runtime/ftplugin/mermaid.vim
@@ -2,6 +2,7 @@
" Language: Mermaid
" Maintainer: Craig MacEachern <https://github.com/craigmac/vim-mermaid>
" Last Change: 2022 Oct 13
+" 2024 Jul 18 by Vim Project (adjust comments)
if exists("b:did_ftplugin")
finish
@@ -16,9 +17,9 @@ setlocal shiftwidth=2
setlocal softtabstop=-1
setlocal tabstop=4
+setlocal comments=:%%
+setlocal commentstring=%%\ %s
" TODO: comments, formatlist stuff, based on what?
-setlocal comments=b:#,fb:-
-setlocal commentstring=#\ %s
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:\\&^.\\{4\\}
diff --git a/runtime/ftplugin/mojo.vim b/runtime/ftplugin/mojo.vim
new file mode 100644
index 0000000..ff50229
--- /dev/null
+++ b/runtime/ftplugin/mojo.vim
@@ -0,0 +1,41 @@
+" Vim filetype plugin
+" Language: Mojo
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 07
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal include=^\\s*\\(from\\\|import\\)
+setlocal define=^\\s*\\(\\(async\\s\\+\\)\\?def\\\|class\\)
+
+" For imports with leading .., append / and replace additional .s with ../
+let b:grandparent_match = '^\(.\.\)\(\.*\)'
+let b:grandparent_sub = '\=submatch(1)."/".repeat("../",strlen(submatch(2)))'
+
+" For imports with a single leading ., replace it with ./
+let b:parent_match = '^\.\(\.\)\@!'
+let b:parent_sub = './'
+
+" Replace any . sandwiched between word characters with /
+let b:child_match = '\(\w\)\.\(\w\)'
+let b:child_sub = '\1/\2'
+
+setlocal includeexpr=substitute(substitute(substitute(
+ \v:fname,
+ \b:grandparent_match,b:grandparent_sub,''),
+ \b:parent_match,b:parent_sub,''),
+ \b:child_match,b:child_sub,'g')
+
+setlocal suffixesadd=.mojo
+setlocal comments=b:#,fb:-
+setlocal commentstring=#\ %s
+
+let b:undo_ftplugin = 'setlocal include<'
+ \ . '|setlocal define<'
+ \ . '|setlocal includeexpr<'
+ \ . '|setlocal suffixesadd<'
+ \ . '|setlocal comments<'
+ \ . '|setlocal commentstring<'
diff --git a/runtime/ftplugin/mysql.vim b/runtime/ftplugin/mysql.vim
new file mode 100644
index 0000000..232df8c
--- /dev/null
+++ b/runtime/ftplugin/mysql.vim
@@ -0,0 +1,9 @@
+" Vim filetype plugin
+" Language: MySQL
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Aug 12
+if exists("b:did_ftplugin")
+ finish
+endif
+
+runtime ftplugin/sql.vim
diff --git a/runtime/ftplugin/objcpp.vim b/runtime/ftplugin/objcpp.vim
new file mode 100644
index 0000000..ffba685
--- /dev/null
+++ b/runtime/ftplugin/objcpp.vim
@@ -0,0 +1 @@
+runtime! ftplugin/objc.vim
diff --git a/runtime/ftplugin/scheme.vim b/runtime/ftplugin/scheme.vim
index 03f625b..63e5781 100644
--- a/runtime/ftplugin/scheme.vim
+++ b/runtime/ftplugin/scheme.vim
@@ -1,12 +1,12 @@
" Vim filetype plugin file
-" Language: Scheme (R7RS)
-" Last Change: 2019 Nov 19
-" 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
-" Author: Evan Hanson <evhan@foldling.org>
-" Maintainer: Evan Hanson <evhan@foldling.org>
+" Language: Scheme (R7RS)
+" Last Change: 2024 Jun 21
+" 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
-" Repository: https://git.foldling.org/vim-scheme.git
-" URL: https://foldling.org/vim/ftplugin/scheme.vim
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/ftplugin/scheme.vim
if exists('b:did_ftplugin')
finish
@@ -20,11 +20,13 @@ setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,mb:\|,ex:\|#
setl commentstring=;\ %s
setl define=^\\s*(def\\k*
setl iskeyword=33,35-39,42-43,45-58,60-90,94,95,97-122,126
+setl formatoptions-=t
-let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword<'
+let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword< formatoptions<'
setl lispwords+=case
setl lispwords+=define
+setl lispwords+=define-library
setl lispwords+=define-record-type
setl lispwords+=define-syntax
setl lispwords+=define-values
diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim
index 61b7e67..3b56acd 100644
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -3,8 +3,9 @@
" Version: 12.0
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Last Change: 2017 Mar 07
-" 2024 Jan 14 by Vim Project (browsefilter)
-" 2024 May 18 by Vim Project (set comment options)
+" 2024 Jan 14 by Vim Project: browsefilter
+" 2024 May 18 by Vim Project: set comment options
+" 2024 Aug 14 by Vim Project: remove redundant code
" Download: http://vim.sourceforge.net/script.php?script_id=454
" For more details please use:
@@ -92,13 +93,19 @@
" Only do this when not done yet for this buffer
" This ftplugin can be used with other ftplugins. So ensure loading
" happens if all elements of this plugin have not yet loaded.
-if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql'
+if exists("b:did_ftplugin")
finish
endif
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
let s:save_cpo = &cpo
set cpo&vim
+let b:undo_ftplugin = "setl comments< commentstring< formatoptions< define< omnifunc<" .
+ \ " | unlet! b:browsefilter b:match_words"
+
" Disable autowrapping for code, but enable for comments
" t Auto-wrap text using textwidth
" c Auto-wrap comments using textwidth, inserting the current comment
@@ -263,19 +270,6 @@ elseif exists("g:sql_type_default")
endif
endif
-" If the above runtime command succeeded, do not load the default settings
-" as they should have already been loaded from a previous run.
-if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql'
- finish
-endif
-
-let b:undo_ftplugin = "setl comments< commentstring< formatoptions< define< omnifunc<" .
- \ " | unlet! b:browsefilter b:match_words"
-
-" Don't load another plugin for this buffer
-let b:did_ftplugin = 1
-let b:current_ftplugin = 'sql'
-
" Win32 and GTK can filter files in the browse dialog
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "SQL Files (*.sql)\t*.sql\n"
diff --git a/runtime/ftplugin/squirrel.vim b/runtime/ftplugin/squirrel.vim
new file mode 100644
index 0000000..559be88
--- /dev/null
+++ b/runtime/ftplugin/squirrel.vim
@@ -0,0 +1,17 @@
+" Vim filetype plugin
+" Language: Squirrel
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+" Set 'comments' to format dashed lists in comments.
+" Also include ///, used for Doxygen.
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://
+
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/terraform.vim b/runtime/ftplugin/terraform.vim
new file mode 100644
index 0000000..b03cab3
--- /dev/null
+++ b/runtime/ftplugin/terraform.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin
+" Language: terraform
+" Maintainer: Janno Tjarks (janno.tjarks@mailbox.org)
+" Last Change: 2024 Jul 3
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal commentstring=#\ %s
+setlocal comments=://,:#
+
+let b:undo_ftplugin = "setlocal commentstring< comments<"
diff --git a/runtime/ftplugin/tf.vim b/runtime/ftplugin/tf.vim
new file mode 100644
index 0000000..1571d5e
--- /dev/null
+++ b/runtime/ftplugin/tf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language: tf (TinyFugue)
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:#,:; commentstring=;\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/thrift.vim b/runtime/ftplugin/thrift.vim
new file mode 100644
index 0000000..dd18e19
--- /dev/null
+++ b/runtime/ftplugin/thrift.vim
@@ -0,0 +1,17 @@
+" Vim filetype plugin file
+" Language: Apache Thrift
+" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
+" Last Change: 2024/07/29
+
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let b:did_ftplugin = 1
+
+" Thrift supports shell-style, C-style multi-line as well as single-line Java/C++ style comments.
+" Reference: https://diwakergupta.github.io/thrift-missing-guide/#_language_reference
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://,b:#
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl comments< commentstring<'
diff --git a/runtime/ftplugin/typst.vim b/runtime/ftplugin/typst.vim
index c2d7811..fba8083 100644
--- a/runtime/ftplugin/typst.vim
+++ b/runtime/ftplugin/typst.vim
@@ -1,14 +1,24 @@
-" Vim filetype plugin
-" Language: typst
-" Maintainer: Riley Bruins <ribru17@gmail.com>
-" Last Change: 2024 May 19
+" Vim filetype plugin file
+" Language: Typst
+" Maintainer: Gregory Anders
+" Last Change: 2024-07-14
+" Based on: https://github.com/kaarmu/typst.vim
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
-setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+compiler typst
+
setlocal commentstring=//\ %s
+setlocal comments=s1:/*,mb:*,ex:*/,://
+setlocal formatoptions+=croq
+setlocal suffixesadd=.typ
+
+let b:undo_ftplugin = 'setl cms< com< fo< sua<'
-let b:undo_ftplugin = 'setl com< cms<'
+if get(g:, 'typst_conceal', 0)
+ setlocal conceallevel=2
+ let b:undo_ftplugin .= ' cole<'
+endif
diff --git a/runtime/ftplugin/yacc.vim b/runtime/ftplugin/yacc.vim
new file mode 100644
index 0000000..d95e1ee
--- /dev/null
+++ b/runtime/ftplugin/yacc.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin
+" Language: Yacc
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 06
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+" Set 'comments' to format dashed lists in comments.
+" Also include ///, used for Doxygen.
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/indent/Make_mvc.mak b/runtime/indent/Make_mvc.mak
index 0f73d7f..a50494d 100644
--- a/runtime/indent/Make_mvc.mak
+++ b/runtime/indent/Make_mvc.mak
@@ -4,7 +4,7 @@
.SUFFIXES:
-VIM = vim.exe
+VIMPROG = vim.exe
VIMRUNTIME = ..
# Run the tests that didn't run yet or failed previously.
@@ -12,7 +12,7 @@ VIMRUNTIME = ..
# If a test fails a testdir\*.fail file will be written.
test :
@ set "VIMRUNTIME=$(VIMRUNTIME)"
- $(VIM) --clean --not-a-term -u testdir\runtest.vim
+ $(VIMPROG) --clean --not-a-term -u testdir\runtest.vim
clean testclean :
diff --git a/runtime/indent/Makefile b/runtime/indent/Makefile
index 66ded80..36a3f15 100644
--- a/runtime/indent/Makefile
+++ b/runtime/indent/Makefile
@@ -3,14 +3,14 @@
.SUFFIXES:
.PHONY: test clean testclean
-VIM = vim
+VIMPROG = vim
VIMRUNTIME = ..
# Run the tests that didn't run yet or failed previously.
# 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) $(VIM) --clean --not-a-term -u testdir/runtest.vim
+ VIMRUNTIME=$(VIMRUNTIME) $(VIMPROG) --clean --not-a-term -u testdir/runtest.vim
clean testclean:
diff --git a/runtime/indent/glsl.vim b/runtime/indent/glsl.vim
new file mode 100644
index 0000000..4ebee60
--- /dev/null
+++ b/runtime/indent/glsl.vim
@@ -0,0 +1,14 @@
+" Language: OpenGL Shading Language
+" Maintainer: Gregory Anders <greg@gpanders.com>
+" Last Modified: 2024 Jul 21
+" Upstream: https://github.com/tikhomirov/vim-glsl
+
+if exists('b:did_indent')
+ finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent cindent
+setlocal cinoptions&
+
+let b:undo_indent = 'setl ai< ci< cino<'
diff --git a/runtime/indent/lua.vim b/runtime/indent/lua.vim
index 35b08d4..ce6cfe1 100644
--- a/runtime/indent/lua.vim
+++ b/runtime/indent/lua.vim
@@ -4,6 +4,7 @@
" First Author: Max Ischenko <mfi 'at' ukr.net>
" Last Change: 2017 Jun 13
" 2022 Sep 07: b:undo_indent added by Doug Kearns
+" 2024 Jul 27: by Vim project: match '(', ')' in function GetLuaIndentIntern()
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -46,12 +47,12 @@ function! GetLuaIndentIntern()
endif
" Add a 'shiftwidth' after lines that start a block:
- " 'function', 'if', 'for', 'while', 'repeat', 'else', 'elseif', '{'
+ " 'function', 'if', 'for', 'while', 'repeat', 'else', 'elseif', '{', '('
let ind = indent(prevlnum)
let prevline = getline(prevlnum)
let midx = match(prevline, '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)')
if midx == -1
- let midx = match(prevline, '{\s*\%(--\%([^[].*\)\?\)\?$')
+ let midx = match(prevline, '\%({\|(\)\s*\%(--\%([^[].*\)\?\)\?$')
if midx == -1
let midx = match(prevline, '\<function\>\s*\%(\k\|[.:]\)\{-}\s*(')
endif
@@ -65,9 +66,9 @@ function! GetLuaIndentIntern()
endif
endif
- " Subtract a 'shiftwidth' on end, else, elseif, until and '}'
+ " Subtract a 'shiftwidth' on end, else, elseif, until, '}' and ')'
" This is the part that requires 'indentkeys'.
- let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)')
+ let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\|)\)')
if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
let ind = ind - shiftwidth()
endif
diff --git a/runtime/indent/mojo.vim b/runtime/indent/mojo.vim
new file mode 100644
index 0000000..9b6a7d4
--- /dev/null
+++ b/runtime/indent/mojo.vim
@@ -0,0 +1,6 @@
+" Vim indent file
+" Language: Mojo
+" Maintainer: Riley Bruins <ribru17@gmail.com>
+" Last Change: 2024 Jul 07
+
+runtime! indent/python.vim
diff --git a/runtime/indent/ocaml.vim b/runtime/indent/ocaml.vim
index c9beb8b..d137796 100644
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -4,8 +4,7 @@
" Mike Leary <leary@nwlink.com>
" Markus Mottl <markus.mottl@gmail.com>
" URL: https://github.com/ocaml/vim-ocaml
-" Last Change: 2023 Aug 28 - Add undo_indent (Vim Project)
-" 2017 Jun 13
+" Last Change: 2017 Jun 13
" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
" 2013 June - commented textwidth (Marc Weber)
@@ -36,6 +35,7 @@ if !exists("no_ocaml_comments")
setlocal comments=sr:(*\ ,mb:\ ,ex:*)
setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal fo=cqort
+ let b:undo_indent .= " | setl com< fo<"
endif
endif
diff --git a/runtime/indent/proto.vim b/runtime/indent/proto.vim
new file mode 100644
index 0000000..743f140
--- /dev/null
+++ b/runtime/indent/proto.vim
@@ -0,0 +1,19 @@
+" Vim indent file
+" Language: Protobuf
+" Maintainer: David Pedersen <limero@me.com>
+" Last Change: 2024 Aug 07
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" Protobuf is like indenting C
+setlocal cindent
+setlocal expandtab
+setlocal shiftwidth=2
+
+let b:undo_indent = "setlocal cindent< expandtab< shiftwidth<"
+
+" vim: sw=2 sts=2 et
diff --git a/runtime/indent/rust.vim b/runtime/indent/rust.vim
index 7c055ec..a96650d 100644
--- a/runtime/indent/rust.vim
+++ b/runtime/indent/rust.vim
@@ -2,7 +2,10 @@
" Language: Rust
" Author: Chris Morgan <me@chrismorgan.info>
" Last Change: 2023-09-11
+" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values (#15138)
+
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
+" Note: upstream seems umaintained: https://github.com/rust-lang/rust.vim/issues/502
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -179,7 +182,7 @@ function GetRustIndent(lnum)
" A standalone 'where' adds a shift.
let l:standalone_prevline_where = prevline =~# '\V\^\s\*where\s\*\$'
if l:standalone_prevline_where
- return indent(prevlinenum) + 4
+ return indent(prevlinenum) + shiftwidth()
endif
" Handle where clauses nicely: subsequent values should line up nicely.
@@ -197,7 +200,7 @@ function GetRustIndent(lnum)
let l:scope_start = searchpair('{\|(', '', '}\|)', 'nbW',
\ 's:is_string_comment(line("."), col("."))')
if l:scope_start != 0 && l:scope_start < a:lnum
- return indent(l:scope_start) + 4
+ return indent(l:scope_start) + shiftwidth()
endif
endif
@@ -268,7 +271,7 @@ function GetRustIndent(lnum)
" It's the closing line, dedent it
return 0
else
- return &shiftwidth
+ return shiftwidth()
endif
endif
endif
diff --git a/runtime/indent/scheme.vim b/runtime/indent/scheme.vim
index 496da32..888659b 100644
--- a/runtime/indent/scheme.vim
+++ b/runtime/indent/scheme.vim
@@ -1,9 +1,10 @@
" Vim indent file
-" Language: Scheme
-" Last Change: 2018 Jan 31
-" Maintainer: Evan Hanson <evhan@foldling.org>
+" Language: Scheme
+" Last Change: 2024 Jun 21
+" Maintainer: Evan Hanson <evhan@foldling.org>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
-" URL: https://foldling.org/vim/indent/scheme.vim
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/indent/scheme.vim
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
diff --git a/runtime/indent/testdir/lua.in b/runtime/indent/testdir/lua.in
new file mode 100644
index 0000000..c8f5d2b
--- /dev/null
+++ b/runtime/indent/testdir/lua.in
@@ -0,0 +1,19 @@
+-- vim: set ft=lua sw=2 noet:
+
+-- START_INDENT
+function foo(a, b, c, d)
+ return { a, b, c, d }
+end
+
+local a = foo(
+1,
+2,
+"longxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+4
+)
+
+local b = {
+1,
+ 2,
+}
+-- END_INDENT
diff --git a/runtime/indent/testdir/lua.ok b/runtime/indent/testdir/lua.ok
new file mode 100644
index 0000000..95f9873
--- /dev/null
+++ b/runtime/indent/testdir/lua.ok
@@ -0,0 +1,19 @@
+-- vim: set ft=lua sw=2 noet:
+
+-- START_INDENT
+function foo(a, b, c, d)
+ return { a, b, c, d }
+end
+
+local a = foo(
+ 1,
+ 2,
+ "longxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+ 4
+)
+
+local b = {
+ 1,
+ 2,
+}
+-- END_INDENT
diff --git a/runtime/indent/testdir/thrift.in b/runtime/indent/testdir/thrift.in
new file mode 100644
index 0000000..7490dc8
--- /dev/null
+++ b/runtime/indent/testdir/thrift.in
@@ -0,0 +1,38 @@
+// vim: set ft=thrift sw=4 et:
+
+# START_INDENT
+namespace cpp foo
+namespace java com.foo.thrift
+
+include "Status.thrift"
+
+// These are supporting structs for JniFrontend.java, which serves as the glue
+// between our C++ execution environment and the Java frontend.
+
+struct TSetSessionParams {
+ 1: required string user
+}
+
+struct TAuthenticateParams {
+ 1: required string user
+ 2: required string passwd
+ 3: optional string host
+4: optional string db_name
+ 5: optional list<string> table_names;
+}
+
+/* {
+ * xxxx
+ * }
+ */
+// TColumnDesc
+struct TColumnDesc {
+ // {
+4: optional string tableName
+5: optional string columnDefault
+ // Let FE control the type, which makes it easier to modify and display complex types
+6: optional string columnTypeStr // deprecated
+7: optional string dataType
+ // }
+}
+# END_INDENT
diff --git a/runtime/indent/testdir/thrift.ok b/runtime/indent/testdir/thrift.ok
new file mode 100644
index 0000000..9e2a482
--- /dev/null
+++ b/runtime/indent/testdir/thrift.ok
@@ -0,0 +1,38 @@
+// vim: set ft=thrift sw=4 et:
+
+# START_INDENT
+namespace cpp foo
+namespace java com.foo.thrift
+
+include "Status.thrift"
+
+// These are supporting structs for JniFrontend.java, which serves as the glue
+// between our C++ execution environment and the Java frontend.
+
+struct TSetSessionParams {
+ 1: required string user
+}
+
+struct TAuthenticateParams {
+ 1: required string user
+ 2: required string passwd
+ 3: optional string host
+ 4: optional string db_name
+ 5: optional list<string> table_names;
+}
+
+/* {
+ * xxxx
+ * }
+ */
+// TColumnDesc
+struct TColumnDesc {
+ // {
+ 4: optional string tableName
+ 5: optional string columnDefault
+ // Let FE control the type, which makes it easier to modify and display complex types
+ 6: optional string columnTypeStr // deprecated
+ 7: optional string dataType
+ // }
+}
+# END_INDENT
diff --git a/runtime/indent/thrift.vim b/runtime/indent/thrift.vim
new file mode 100644
index 0000000..e0860e1
--- /dev/null
+++ b/runtime/indent/thrift.vim
@@ -0,0 +1,74 @@
+" Vim indent file
+" Language: Apache Thrift
+" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
+" Last Change: 2024/07/29
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal cindent
+setlocal indentexpr=GetThriftIndent()
+
+let b:undo_indent = "set cindent< indentexpr<"
+
+" Only define the function once.
+if exists("*GetThriftIndent")
+ finish
+endif
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+function! SkipThriftBlanksAndComments(startline)
+ let lnum = a:startline
+ while lnum > 1
+ let lnum = prevnonblank(lnum)
+ if getline(lnum) =~ '\*/\s*$'
+ while getline(lnum) !~ '/\*' && lnum > 1
+ let lnum = lnum - 1
+ endwhile
+ if getline(lnum) =~ '^\s*/\*'
+ let lnum = lnum - 1
+ else
+ break
+ endif
+ elseif getline(lnum) =~ '^\s*\(//\|#\)'
+ let lnum = lnum - 1
+ else
+ break
+ endif
+ endwhile
+ return lnum
+endfunction
+
+function GetThriftIndent()
+ " Thrift is just like C; use the built-in C indenting and then correct a few
+ " specific cases.
+ let theIndent = cindent(v:lnum)
+
+ " If we're in the middle of a comment then just trust cindent
+ if getline(v:lnum) =~ '^\s*\*'
+ return theIndent
+ endif
+
+ let line = substitute(getline(v:lnum), '\(//\|#\).*$', '', '')
+ let previousNum = SkipThriftBlanksAndComments(v:lnum - 1)
+ let previous = substitute(getline(previousNum), '\(//\|#\).*$', '', '')
+
+ let l:indent = indent(previousNum)
+ if previous =~ "{" && previous !~ "}"
+ let l:indent += shiftwidth()
+ endif
+ if line =~ "}" && line !~ "{"
+ let l:indent -= shiftwidth()
+ endif
+ return l:indent
+endfunction
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: sw=2 sts=2 et
diff --git a/runtime/indent/typst.vim b/runtime/indent/typst.vim
new file mode 100644
index 0000000..6aaa04a
--- /dev/null
+++ b/runtime/indent/typst.vim
@@ -0,0 +1,18 @@
+" Vim indent file
+" Language: Typst
+" Maintainer: Gregory Anders <greg@gpanders.com>
+" Last Change: 2024-07-14
+" Based on: https://github.com/kaarmu/typst.vim
+
+if exists('b:did_indent')
+ finish
+endif
+let b:did_indent = 1
+
+setlocal expandtab
+setlocal softtabstop=2
+setlocal shiftwidth=2
+setlocal autoindent
+setlocal indentexpr=typst#indentexpr()
+
+let b:undo_indent = 'setl et< sts< sw< ai< inde<'
diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim
index 97a4a36..c95a76d 100644
--- a/runtime/indent/vim.vim
+++ b/runtime/indent/vim.vim
@@ -3,7 +3,7 @@ vim9script
# Vim indent file
# Language: Vim script
# Maintainer: The Vim Project <https://github.com/vim/vim>
-# Last Change: 2023 Aug 10
+# Last Change: 2024 Jul 12
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
# Only load this indent file when no other was loaded.
@@ -16,7 +16,9 @@ b:undo_indent = 'setlocal indentkeys< indentexpr<'
import autoload '../autoload/dist/vimindent.vim'
-setlocal indentexpr=vimindent.Expr()
+# export indentexpr as a global function, so it can be easily manipulated by plugins
+g:VimIndent = vimindent.Expr
+setlocal indentexpr=g:VimIndent()
setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=endclass,=endinterface,=endenum,=},=else,=cat,=finall,=END,0\\
execute('setlocal indentkeys+=0=\"\\\ ,0=#\\\ ')
setlocal indentkeys-=0#
diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim
index e5daf9f..c387127 100644
--- a/runtime/indent/yaml.vim
+++ b/runtime/indent/yaml.vim
@@ -3,7 +3,8 @@
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
" Last Updates: Lukas Reineke, "lacygoill"
" Last Change: 2022 Jun 17
-" 2024 Feb 29 disable mulitline indent by default (The Vim project)
+" 2024 Feb 29 by Vim project: disable mulitline indent by default
+" 2024 Aug 14 by Vim project: fix re-indenting when commenting out lines
" Only load this indent file when no other was loaded.
if exists('b:did_indent')
@@ -13,7 +14,7 @@ endif
let b:did_indent = 1
setlocal indentexpr=GetYAMLIndent(v:lnum)
-setlocal indentkeys=!^F,o,O,0#,0},0],<:>,0-
+setlocal indentkeys=!^F,o,O,0},0],<:>,0-
setlocal nosmartindent
let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
diff --git a/runtime/lang/Makefile b/runtime/lang/Makefile
index d5f2ed6..211d492 100644
--- a/runtime/lang/Makefile
+++ b/runtime/lang/Makefile
@@ -13,34 +13,34 @@ all: $(CONVERTED)
# Convert menu_zh_cn.utf-8.vim to create menu_chinese_gb.936.vim.
menu_chinese_gb.936.vim: menu_zh_cn.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP936 $< | \
+ iconv -f UTF-8 -t CP936 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp936/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_zh_tw.utf-8.vim to create menu_chinese_taiwan.950.vim.
menu_chinese_taiwan.950.vim: menu_zh_tw.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP950 $< | \
+ iconv -f UTF-8 -t CP950 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp950/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_cs_cz.utf-8.vim to create menu_cs_cz.iso_8859-2.vim.
menu_cs_cz.iso_8859-2.vim: menu_cs_cz.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t ISO-8859-2 $< | \
+ iconv -f UTF-8 -t ISO-8859-2 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
-e 's/\(" Menu Translations:.*\)(.*)/\1(ISO-8859-2)/' \
> $@
# Convert menu_cs_cz.utf-8.vim to create menu_czech_czech_republic.1250.vim.
menu_czech_czech_republic.1250.vim: menu_cs_cz.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP1250 $< | \
+ iconv -f UTF-8 -t CP1250 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
-e 's/\(" Menu Translations:.*\)(.*)/\1(CP1250)/' \
> $@
@@ -54,107 +54,107 @@ menu_czech_czech_republic.ascii.vim: menu_cs_cz.utf-8.vim
-e 's/Ť/T/g' -e 's/ť/t/g' -e 's/Ú/U/g' -e 's/ú/u/g' -e 's/Ů/U/g' \
-e 's/ů/u/g' -e 's/Ã/Y/g' -e 's/ý/y/g' -e 's/Ž/Z/g' -e 's/ž/z/g' \
-e 's/scriptencoding utf-8/scriptencoding latin1/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
-e 's/\(" Menu Translations:.*\)(.*)/\1(ASCII - without diacritics)/' \
- $< > $@
+ $? > $@
# Convert menu_ja_jp.utf-8.vim to create menu_ja_jp.euc-jp.vim.
menu_ja_jp.euc-jp.vim: menu_ja_jp.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t EUC-JP $< | \
+ iconv -f UTF-8 -t EUC-JP $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding euc-jp/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
-e 's/\(" Menu Translations:.*\)(.*)/\1(EUC-JP)/' \
> $@
# Convert menu_ja_jp.utf-8.vim to create menu_japanese_japan.932.vim.
menu_japanese_japan.932.vim: menu_ja_jp.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP932 $< | \
+ iconv -f UTF-8 -t CP932 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp932/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
-e 's/\(" Menu Translations:.*\)(.*)/\1(CP932)/' \
> $@
# Convert menu_ko_kr.utf-8.vim to create menu_ko_kr.euckr.vim.
menu_ko_kr.euckr.vim: menu_ko_kr.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t EUC-KR $< | \
+ iconv -f UTF-8 -t EUC-KR $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding euc-kr/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_pl_pl.utf-8.vim to create menu_pl_pl.iso_8859-2.vim.
menu_pl_pl.iso_8859-2.vim: menu_pl_pl.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t ISO-8859-2 $< | \
+ iconv -f UTF-8 -t ISO-8859-2 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_pl_pl.utf-8.vim to create menu_polish_poland.1250.vim.
menu_polish_poland.1250.vim: menu_pl_pl.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP1250 $< | \
+ iconv -f UTF-8 -t CP1250 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_ru_ru.utf-8.vim to create menu_ru_ru.koi8-r.vim.
menu_ru_ru.koi8-r.vim: menu_ru_ru.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t KOI8-R $< | \
+ iconv -f UTF-8 -t KOI8-R $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding koi8-r/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_ru_ru.utf-8.vim to create menu_ru_ru.cp1251.vim.
menu_ru_ru.cp1251.vim: menu_ru_ru.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP1251 $< | \
+ iconv -f UTF-8 -t CP1251 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1251/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_sl_si.utf-8.vim to create menu_sl_si.cp1250.vim.
menu_sl_si.cp1250.vim: menu_sl_si.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP1250 $< | \
+ iconv -f UTF-8 -t CP1250 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# for naming encodings, see `:h encoding-names`
# Convert menu_sl_si.utf-8.vim to create menu_sl_si.latin2.vim.
menu_sl_si.latin2.vim: menu_sl_si.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t ISO-8859-2 $< | \
+ iconv -f UTF-8 -t ISO-8859-2 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_tr_tr.utf-8.vim to create menu_tr_tr.cp1254.vim.
menu_tr_tr.cp1254.vim: menu_tr_tr.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP1254 $< | \
+ iconv -f UTF-8 -t CP1254 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1254/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_tr_tr.utf-8.vim to create menu_tr_tr.iso_8859-9.vim.
menu_tr_tr.iso_8859-9.vim: menu_tr_tr.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t ISO-8859-9 $< | \
+ iconv -f UTF-8 -t ISO-8859-9 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-9/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_sr_rs.utf-8.vim to create menu_sr_rs.iso_8859-5.vim.
menu_sr_rs.iso_8859-5.vim: menu_sr_rs.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t ISO-8859-5 $< | \
+ iconv -f UTF-8 -t ISO-8859-5 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-5/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# for naming encodings, see `:h encoding-names`
@@ -174,8 +174,8 @@ menu_sr_rs.iso_8859-2.vim: menu_sr_rs.utf-8.vim
-e 's/С/S/g' -e 's/Т/T/g' -e 's/Ћ/Ć/g' -e 's/У/U/g' -e 's/Ф/F/g' \
-e 's/Ð¥/H/g' -e 's/Ц/C/g' -e 's/Ч/ÄŒ/g' -e 's/Ð/Dž/g' -e 's/Ш/Å /g' \
-e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
- $< | iconv -f UTF-8 -t ISO-8859-2 \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
+ $? | iconv -f UTF-8 -t ISO-8859-2 \
> $@
# Convert menu_sr_rs.utf-8.vim to create menu_sr_rs.ascii.vim.
@@ -194,39 +194,39 @@ menu_sr_rs.ascii.vim: menu_sr_rs.utf-8.vim
-e 's/С/S/g' -e 's/Т/T/g' -e 's/Ћ/C/g' -e 's/У/U/g' -e 's/Ф/F/g' \
-e 's/Ð¥/H/g' -e 's/Ц/C/g' -e 's/Ч/C/g' -e 's/Ð/Dz/g' -e 's/Ш/S/g' \
-e 's/scriptencoding utf-8/scriptencoding latin1/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
- $< > $@
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
+ $? > $@
# Convert menu_uk_ua.utf-8.vim to create menu_uk_ua.cp1251.vim.
menu_uk_ua.cp1251.vim: menu_uk_ua.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t CP1251 $< | \
+ iconv -f UTF-8 -t CP1251 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1251/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_uk_ua.utf-8.vim to create menu_uk_ua.koi8-u.vim.
menu_uk_ua.koi8-u.vim: menu_uk_ua.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t KOI8-U $< | \
+ iconv -f UTF-8 -t KOI8-U $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding koi8-u/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_hu_hu.utf-8.vim to create menu_hu_hu.iso_8859-2.vim.
menu_hu_hu.iso_8859-2.vim: menu_hu_hu.utf-8.vim
rm -f $@
- iconv -f UTF-8 -t ISO-8859-2 $< | \
+ iconv -f UTF-8 -t ISO-8859-2 $? | \
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
# Convert menu_slovak_slovak_republic.1250.vim to create menu_sk_sk.iso_8859-2.vim.
menu_sk_sk.iso_8859-2.vim: menu_slovak_slovak_republic.1250.vim
rm -f $@
- iconv -f CP1250 -t ISO-8859-2 $< | \
+ iconv -f CP1250 -t ISO-8859-2 $? | \
$(SED) -e 's/scriptencoding cp1250/scriptencoding iso-8859-2/' \
- -e 's/" Original translations/" Generated from $<, DO NOT EDIT/' \
+ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \
> $@
clean:
diff --git a/runtime/lang/menu_pt_br.vim b/runtime/lang/menu_pt_br.vim
index 06dea92..6f5b043 100644
--- a/runtime/lang/menu_pt_br.vim
+++ b/runtime/lang/menu_pt_br.vim
@@ -1 +1,303 @@
-source <sfile>:p:h/menu_pt_pt.vim
+" Menu Translations: Português do Brasil
+" Maintainer: José de Paula <jose@infoviaweb.com>
+" Contributor: JNylson <nylsinho_ba@hotmail.com>
+" Last Change: 2024 Ago 23
+" Original translations
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Translations in latin1 (ISO-8859-1), and should work in
+" latin9 (ISO-8859-15)
+
+if &enc != "cp1252" && &enc != "iso-8859-15"
+ scriptencoding latin1
+endif
+
+" Help menu
+menutrans &Help A&juda
+menutrans &Overview<Tab><F1> &Conteúdo
+menutrans &User\ Manual &Manual\ do\ Usuário
+menutrans &How-to\ links &Como\ fazer?
+menutrans &Find\.\.\. &Procurar\.\.\.
+menutrans &Credits &Créditos
+menutrans O&rphans &Órfãos
+menutrans Co&pying &Licença
+menutrans &Sponsor/Register &Doar/Registrar
+menutrans &Version &Versão
+menutrans &About &Sobre
+
+" File menu
+menutrans &File &Arquivo
+menutrans &Open\.\.\.<Tab>:e A&brir\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp Ab&rir\ em\ outra\ janela\.\.\.<Tab>:sp
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew A&brir\ em\ outra\ aba\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew &Novo<Tab>:enew
+menutrans &Close<Tab>:close &Fechar<Tab>:close
+menutrans &Save<Tab>:w &Salvar<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav Sa&lvar\ como\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ with\.\.\. &Exibir\ diferenças\ com\.\.\.
+menutrans Split\ Patched\ &By\.\.\. Ex&ibir\ patcheado\ por\.\.\.
+menutrans &Print I&mprimir
+menutrans Sa&ve-Exit<Tab>:wqa Sal&var\ e\ sair<Tab>:wqa
+menutrans E&xit<Tab>:qa Sai&r<Tab>:qa
+
+" Edit menu
+menutrans &Edit &Editar
+menutrans &Undo<Tab>u &Desfazer<Tab>u
+menutrans &Redo<Tab>^R &Refazer<Tab>^R
+menutrans Rep&eat<Tab>\. Repe&tir<Tab>\.
+menutrans Cu&t<Tab>"+x Re&cortar<Tab>"+x
+menutrans &Copy<Tab>"+y Cop&iar<Tab>"+y
+menutrans &Paste<Tab>"+gP C&olar<Tab>"+gP
+menutrans Put\ &Before<Tab>[p Colocar\ &antes<Tab>[p
+menutrans Put\ &After<Tab>]p Colocar\ &depois<Tab>]p
+menutrans &Delete<Tab>x Apa&gar<Tab>x
+menutrans &Select\ all<Tab>ggVG &Selecionar\ tudo<Tab>ggVG
+menutrans &Find\.\.\. &Procurar\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\. Procurar\ e\ substit&uir\.\.\.
+menutrans Find\ and\ Rep&lace<Tab>:%s Procurar\ e\ substit&uir<Tab>:%s
+menutrans Find\ and\ Rep&lace Procurar\ e\ substit&uir
+menutrans Find\ and\ Rep&lace<Tab>:s Procurar\ e\ substituir<Tab>:s
+menutrans Settings\ &Window &Opções
+menutrans Startup\ &Settings &Inicialização
+
+" Edit/Global Settings
+menutrans &Global\ Settings Opções\ &Globais
+
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Ativar/Desativar\ &Realce\ de\ Padrões<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic! Ativar/Desativar\ &Ignorar\ maiúsculas<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! Ativar/Desativar\ &coincidências<Tab>:set\ sm!
+
+menutrans &Context\ lines Linhas\ de\ C&ontexto
+
+menutrans &Virtual\ Edit Edição\ &Virtual
+menutrans Never Nunca
+menutrans Block\ Selection Seleção\ de\ Bloco
+menutrans Insert\ mode Modo\ de\ inserção
+menutrans Block\ and\ Insert Bloco\ e\ inserção
+menutrans Always Sempre
+
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Ativar/Desativar\ Modo\ de\ In&serção<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! Ativar/Desativar\ Co&mpatibilidade\ com\ Vi<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. Camin&ho\ de\ Busca\.\.\.
+menutrans Ta&g\ Files\.\.\. Arquivos\ de\ Tags\.\.\.
+
+" GUI options
+menutrans Toggle\ &Toolbar Ocultar/Exibir\ Barra\ de\ &Ferramentas
+menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Exibir\ Barra\ de\ &Rolagem\ Inferior
+menutrans Toggle\ &Left\ Scrollbar Ocultar/Exibir\ Barra\ de\ R&olagem\ Esquerda
+menutrans Toggle\ &Right\ Scrollbar Ocultar/Exibir\ Barra\ de\ Ro&lagem\ Direita
+let g:menutrans_path_dialog = "Indique um caminho de procura para os arquivos.\nSepare os nomes dos diretórios com uma vírgula."
+let g:menutrans_tags_dialog = "Indique os nomes dos arquivos de tags.\nSepare os nomes com uma vírgula."
+
+" Edit/File Settings
+menutrans F&ile\ Settings Opções\ do\ &Arquivo
+
+" Boolean options
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Ativar/Desativar\ &numeração\ de\ linhas<Tab>:set\ nu!
+menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! Ativar/Desativar\ numeração\ relati&va\ de\ linha<Tab>:set\ rnu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! Ativar/Desativar\ modo\ &lista<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap! Ativar/Desativar\ &quebra\ de\ linhas<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! Ativar/Desativar\ quebra\ na\ &palavra<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et! Ativar/Desativar\ expansão\ de\ tabs<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai! Ativar/Desativar\ &auto-indentação<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin! Ativar/Desativar\ indentação\ estilo\ &C<Tab>:set\ cin!
+
+" other options
+menutrans &Shiftwidth Largura\ da\ &indentação
+
+menutrans Soft\ &Tabstop &Tabulação\ com\ espaços
+
+menutrans Te&xt\ Width\.\.\. Largura\ do\ te&xto\.\.\.
+let g:menutrans_textwidth_dialog = "Digite a nova largura do texto (0 para desativar a formatação): "
+
+menutrans &File\ Format\.\.\. &Formato\ do\ arquivo\.\.\.
+let g:menutrans_fileformat_dialog = "Selecione o formato para gravar o arquivo"
+let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Cancelar "
+
+menutrans C&olor\ Scheme Esquema\ de\ c&ores
+menutrans default padrão
+menutrans Show\ C&olor\ Schemes\ in\ Menu Mostrar\ &esquema\ de\ cores\ no\ menu
+menutrans Select\ Fo&nt\.\.\. Selecionar\ fo&nte\.\.\.
+
+menutrans &Keymap &Mapa\ de\ teclado
+menutrans Show\ &Keymaps\ in\ Menu Mostrar\ &mapa\ de\ teclado\ no\ menu
+menutrans None Nenhum
+
+" Programming menu
+menutrans &Tools &Ferramentas
+menutrans &Jump\ to\ this\ tag<Tab>g^] &Pular\ para\ este\ tag<Tab>g^]
+menutrans Jump\ &back<Tab>^T &Voltar<Tab>^T
+menutrans Build\ &Tags\ File &Construir\ Arquivo\ de\ tags
+menutrans &Spelling &Ortografia
+menutrans &Folding &Dobra
+menutrans &Make<Tab>:make &Make<Tab>:make
+menutrans &List\ Errors<Tab>:cl &Lista\ de\ erros<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! Li&sta\ de\ mensagens<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn P&róximo\ erro<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp &Erro\ anterior<Tab>:cp
+menutrans &Older\ List<Tab>:cold Listar\ erros\ &antigos<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew Listar\ erros\ &novos<Tab>:cnew
+menutrans Error\ &Window &Janela\ de\ erros
+menutrans Se&t\ Compiler Def&inir\ Compilador
+menutrans &Convert\ to\ HEX<Tab>:%!xxd Converter\ para\ hexadecimal<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r Conver&ter\ de\ volta<Tab>:%!xxd\ -r
+
+" Tools.Spelling menu
+menutrans &Spell\ Check\ On &Ativar\ Correção\ Ortográfica
+menutrans Spell\ Check\ &Off &Desativar\ Correção\ Ortográfica
+menutrans To\ &Next\ error<Tab>]s &Próximo\ Erro<Tab>]s
+menutrans To\ &Previous\ Error<Tab>[s Erro\ A&nterior<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z= &Sugerir\ Correções<Tab>z=
+menutrans &Repeat\ correction<Tab>:spellrepall &Repetir\ Correção<Tab>:spellrepall
+
+menutrans Set\ language\ to\ "en" Inglês
+menutrans Set\ language\ to\ "en_au" Inglês\ (en_au)
+menutrans Set\ language\ to\ "en_ca" Inglês\ (en_ca)
+menutrans Set\ language\ to\ "en_gb" Inglês\ (en_gb)
+menutrans Set\ language\ to\ "en_nz" Inglês\ (en_nz)
+menutrans Set\ language\ to\ "en_us" Inglês\ (en_us)
+
+menutrans &Find\ More\ Languages &Buscar\ mais\ idiomas
+
+" Tools.Fold Menu
+menutrans &Enable/Disable\ folds<Tab>zi &Ativar/Desativar\ dobras<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv &Ver\ linha\ do\ cursor<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Ve&r\ somente\ linha\ do\ cursor<Tab>zMzx
+menutrans C&lose\ more\ folds<Tab>zm &Fechar\ mais\ dobras<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM F&echar\ todas\ as\ dobras<Tab>zM
+menutrans O&pen\ more\ folds<Tab>zr A&brir\ mais\ dobras<Tab>zr
+menutrans &Open\ all\ folds<Tab>zR Abr&ir\ todas\ as\ dobras<Tab>zR
+" fold method
+menutrans Fold\ Met&hod &Modo\ de\ dobras
+menutrans Create\ &Fold<Tab>zf Criar\ &dobras<Tab>zf
+menutrans &Delete\ Fold<Tab>zd Remover\ d&obras<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD Remover\ &todas\ as\ dobras<Tab>zD
+" moving around in folds
+menutrans Fold\ col&umn\ width &Largura\ da\ coluna\ da\ dobra
+
+" Tools.Diff Menu
+menutrans &Update &Atualizar
+menutrans &Get\ Block &Obter\ Bloco
+menutrans &Put\ Block &Pôr\ Bloco
+
+" Tools.Error Menu
+menutrans &Update<Tab>:cwin &Atualizar<Tab>:cwin
+menutrans &Open<Tab>:copen A&brir<Tab>:copen
+menutrans &Close<Tab>:cclose &Fechar<Tab>:cclose
+
+" Setup the Tools.Compiler submenu
+menutrans Se&t\ Compiler Def&inir\ compilador
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu Mos&trar\ configurações\ do\ compilador\ no\ menu
+" Names for buffer menu.
+menutrans &Buffers &Buffers
+menutrans &Refresh\ menu A&tualizar\ menu
+menutrans &Delete &Apagar
+menutrans &Alternate A&lternar
+menutrans &Next P&róximo
+menutrans &Previous A&nterior
+let g:menutrans_no_file = "[Sem arquivos]"
+
+" Window menu
+menutrans &Window &Janela
+menutrans &New<Tab>^Wn N&ova<Tab>^Wn
+menutrans S&plit<Tab>^Ws &Dividir<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ D&ividir\ para\ #<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv Dividir\ &verticalmente<Tab>^Wv
+menutrans Split\ File\ E&xplorer &Abrir\ Gerenciador\ de\ arquivos
+menutrans &Close<Tab>^Wc &Fechar<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo Fechar\ &outra(s)<Tab>^Wo
+menutrans Move\ &To Mover\ &para
+menutrans &Top<Tab>^WK A&cima<Tab>^WK
+menutrans &Bottom<Tab>^WJ A&baixo<Tab>^WJ
+menutrans &Left\ side<Tab>^WH Lado\ &esquerdo<Tab>^WH
+menutrans &Right\ side<Tab>^WL Lado\ di&reito<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR &Girar\ para\ cima<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr Girar\ para\ bai&xo<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W= Mesmo\ &Tamanho<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ Altura\ &Máxima<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ A&ltura\ Mínima<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| Larg&ura\ Máxima<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| Largura\ Mí&nima<Tab>^W1\|
+
+" The popup menu
+menutrans &Undo &Desfazer
+menutrans Cu&t Recor&tar
+menutrans &Copy &Copiar
+menutrans &Paste Co&lar
+menutrans &Delete &Apagar
+menutrans Select\ Blockwise Seleção\ de\ bloco
+menutrans Select\ &Word Selecionar\ &Palavra
+menutrans Select\ &Sentence Selecionar\ &frase
+menutrans Select\ Pa&ragraph Selecionar\ pa&rágrafo
+menutrans Select\ &Line Selecionar\ L&inha
+menutrans Select\ &Block Selecionar\ &bloco
+menutrans Select\ &All Selecionar\ T&udo
+
+" The GUI toolbar
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open Abrir Arquivo
+ tmenu ToolBar.Save Salvar Arquivo
+ tmenu ToolBar.SaveAll Salvar Todos os arquivos
+ tmenu ToolBar.Print Imprimir
+ tmenu ToolBar.Undo Desfazer
+ tmenu ToolBar.Redo Refazer
+ tmenu ToolBar.Cut Recortar
+ tmenu ToolBar.Copy Copiar
+ tmenu ToolBar.Paste Colar
+ tmenu ToolBar.Find Procurar...
+ tmenu ToolBar.FindNext Procurar Próximo
+ tmenu ToolBar.FindPrev Procurar Anterior
+ tmenu ToolBar.Replace Procurar e Substituir
+ if 0 " disable; these are in the Windoze menu
+ tmenu ToolBar.New Nova Janela
+ tmenu ToolBar.WinSplit Dividir Janela
+ tmenu ToolBar.WinMax Janela Máxima
+ tmenu ToolBar.WinMin Janela Mínima
+ tmenu ToolBar.WinVSplit Dividir Verticalmente
+ tmenu ToolBar.WinMaxWidth Largura Máxima
+ tmenu ToolBar.WinMinWidth Largura Mínima
+ tmenu ToolBar.WinClose Fechar Janela
+ endif
+ tmenu ToolBar.LoadSesn Carregar Sessão
+ tmenu ToolBar.SaveSesn Salvar Sessão
+ tmenu ToolBar.RunScript Executar script
+ tmenu ToolBar.Make Make
+ tmenu ToolBar.Shell Abrir um shell
+ tmenu ToolBar.RunCtags Gerar um arquivo de tags
+ tmenu ToolBar.TagJump Saltar para um tag
+ tmenu ToolBar.Help Ajuda
+ tmenu ToolBar.FindHelp Procurar na Ajuda
+ endfun
+endif
+
+" Syntax menu
+menutrans &Syntax &Sintaxe
+"menutrans &Show\ individual\ choices E&xibir\ escolhas\ individuais
+menutrans &Show\ filetypes\ in\ menu E&xibir\ tipos\ de\ arquivos\ no\ menu
+menutrans Set\ '&syntax'\ only Ativar\ somente\ s&intaxe
+menutrans Set\ '&filetype'\ too Ativar\ também\ &tipo\ de\ arquivo
+menutrans &Off &Desativar
+menutrans &Manual &Manual
+menutrans A&utomatic A&utomática
+menutrans on/off\ for\ &This\ file Ativar/Desativar\ neste\ &arquivo
+menutrans &Show\ File\ Types\ in\ Menu Mos&trar\ tipos\ de\ arquivos\ no\ menu
+menutrans Co&lor\ test T&este\ de\ cores
+menutrans &Highlight\ test Teste\ de\ &realce
+menutrans &Convert\ to\ HTML &Converter\ para\ HTML
+
+" Find Help dialog text
+let g:menutrans_help_dialog = "Digite um comando ou palavra para obter ajuda;\n\nAnteponha i_ para comandos de entrada (ex.: i_CTRL-X)\nAnteponha c_ para comandos da linha de comandos (ex.: c_<Del>)\nAnteponha ` para um nome de opção (ex.: `shiftwidth`)"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/lang/menu_pt_pt.vim b/runtime/lang/menu_pt_pt.vim
index ddc35b8..7d3c104 100644
--- a/runtime/lang/menu_pt_pt.vim
+++ b/runtime/lang/menu_pt_pt.vim
@@ -1,7 +1,7 @@
" Menu Translations: Português
" adaptado de pt_br.
" Maintainer: Duarte Henriques <duarte_henriques@myrealbox.com>
-" Last Change: 2024 May 2
+" Last Change: 2024 Aug 22
" Original translations
" Quit when menu translations have already been done.
@@ -129,7 +129,7 @@ menutrans &Jump\ to\ this\ tag<Tab>g^] Saltar\ para\ esta\ &tag<Tab>g^]
menutrans Jump\ &back<Tab>^T &Voltar<Tab>^T
menutrans Build\ &Tags\ File &Construir\ Arquivo\ de\ tags
menutrans &Folding &Dobra
-menutrans &Make<Tab>:make Fazer<Tab>:make
+menutrans &Make<Tab>:make &Make<Tab>:make
menutrans &List\ Errors<Tab>:cl &Lista\ de\ erros<Tab>:cl
menutrans L&ist\ Messages<Tab>:cl! Li&sta\ de\ mensagens<Tab>:cl!
menutrans &Next\ Error<Tab>:cn P&róximo\ erro<Tab>:cn
@@ -137,7 +137,7 @@ menutrans &Previous\ Error<Tab>:cp &Erro\ anterior<Tab>:cp
menutrans &Older\ List<Tab>:cold Listar\ erros\ &antigos<Tab>:cold
menutrans N&ewer\ List<Tab>:cnew Listar\ erros\ &novos<Tab>:cnew
menutrans Error\ &Window &Janela\ de\ erros
-menutrans Se&T\ Compiler Def&inir\ Compilador
+menutrans Se&t\ Compiler Def&inir\ Compilador
menutrans &Convert\ to\ HEX<Tab>:%!xxd Converter\ para\ hexadecimal<Tab>:%!xxd
menutrans Conve&rt\ back<Tab>:%!xxd\ -r Conver&ter\ de\ volta<Tab>:%!xxd\ -r
@@ -266,38 +266,6 @@ menutrans &Convert\ to\ HTML &Converter\ para\ HTML
" Find Help dialog text
let g:menutrans_help_dialog = "Digite um comando ou palavra para obter ajuda;\n\nAnteponha i_ para comandos de entrada (ex.: i_CTRL-X)\nAnteponha c_ para comandos da linha de comandos (ex.: c_<Del>)\nAnteponha ` para um nome de opção (ex.: `shiftwidth`)"
-menutrans Open\ &Tab\.\.\.<Tab>:tabnew Aba\ aberta\.\.\.<Tab>:tabnew
-menutrans Startup\ &Settings Configurações\ de\ inicialização
-menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! Numeração\ relativa\ de\ linha<Tab>:set\ nru!
-menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap! Quebra\ de\ linha<Tab>:set\ wrap!
-menutrans Toggle\ W&rapping\ at\ word<Tab>:set\ lbr! Envolvendo\ a\ palavra<Tab>:set\ lbr!
-menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et! Gastos\ de\ tabulação<Tab>:set\ et!
-menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai! Recuo\ automático<Tab>:set\ ai!
-menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin! Recuo\ estilo\ C<Tab>:set\ cin!
-menutrans &Spelling Ortografia
-menutrans &Spell\ Check\ On Correção\ ortográfica\ ativada
-menutrans Spell\ Check\ &Off Correção\ ortográfica\ desativada
-menutrans To\ &Next\ error<Tab>]s Próximo\ erro<Tab>]s
-menutrans To\ &Previous\ error<Tab>[s erro\ anterior<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z= Sugerir\ correções<Tab>z=
-menutrans &Repeat\ correction<Tab>:spellrepall repetir\ correção<Tab>:spellrepall
-"-------------------
-menutrans Set\ language\ to\ "en" Definir\ idioma\ para\ "en"
-menutrans Set\ language\ to\ "en_au" Definir\ idioma\ para\ "en_au"
-menutrans Set\ language\ to\ "en_ca" Definir\ idioma\ para\ "en_ca"
-menutrans Set\ language\ to\ "en_gb" Definir\ idioma\ para\ "en_gb"
-menutrans Set\ language\ to\ "en_nz" Definir\ idioma\ para\ "en_nz"
-menutrans Set\ language\ to\ "en_us" Definir\ idioma\ para\ "en_us"
-menutrans &Find\ More\ Languages Encontre\ mais\ idiomas
-let g:menutrans_set_lang_to = 'Definir idioma para'
-menutrans M&anual Manual
-menutrans I&ndent Recuar
-menutrans E&xpression Expressão
-menutrans S&yntax Sintaxe
-menutrans &Diff Diferença
-menutrans Ma&rker Marcador
-menutrans &Show\ File\ Types\ in\ menu Mostrar\ tipos\ de\ arquivo\ no\ menu
-menutrans &Sponsor/Register Patrocinador/Registro
let &cpo = s:keepcpo
unlet s:keepcpo
diff --git a/runtime/macros/maze/mazeclean.c b/runtime/macros/maze/mazeclean.c
index 04dcebd..f0f0bb6 100644
--- a/runtime/macros/maze/mazeclean.c
+++ b/runtime/macros/maze/mazeclean.c
@@ -8,7 +8,7 @@
char *M, A, Z, E = 40, line[80], T[3];
int
-main (C)
+main (int C)
{
for (M = line + E, *line = A = scanf ("%d", &C); --E; line[E] = M[E] = E)
printf ("._");
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index f218ffb..8306ed3 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
-" Last Change: 2024 Jun 05
+" Last Change: 2024 Jul 12
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" If there already is an option window, jump to that one.
@@ -556,6 +556,8 @@ endif
call <SID>Header(gettext("multiple tab pages"))
call <SID>AddOption("showtabline", gettext("0, 1 or 2; when to use a tab pages line"))
call append("$", " \tset stal=" . &stal)
+call <SID>AddOption("tabclose", gettext("behaviour when closing tab pages: left, uselast or empty"))
+call append("$", " \tset tcl=" . &tcl)
call <SID>AddOption("tabpagemax", gettext("maximum number of tab pages to open for -p and \"tab all\""))
call append("$", " \tset tpm=" . &tpm)
call <SID>AddOption("tabline", gettext("custom tab pages line"))
diff --git a/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim b/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim
new file mode 100644
index 0000000..a2d766e
--- /dev/null
+++ b/runtime/pack/dist/opt/nohlsearch/plugin/nohlsearch.vim
@@ -0,0 +1,20 @@
+" nohlsearch.vim: Auto turn off hlsearch
+" Last Change: 2024-07-31
+" Maintainer: Maxim Kim <habamax@gmail.com>
+"
+" turn off hlsearch after:
+" - doing nothing for 'updatetime'
+" - getting into insert mode
+
+if exists('g:loaded_nohlsearch')
+ finish
+endif
+let g:loaded_nohlsearch = 1
+
+augroup nohlsearch
+ au!
+ noremap <Plug>(nohlsearch) <cmd>nohlsearch<cr>
+ noremap! <Plug>(nohlsearch) <cmd>nohlsearch<cr>
+ au CursorHold * call feedkeys("\<Plug>(nohlsearch)", 'm')
+ au InsertEnter * call feedkeys("\<Plug>(nohlsearch)", 'm')
+augroup END
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index d24ae57..377827e 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -4,7 +4,7 @@ vim9script
# Author: Bram Moolenaar
# Copyright: Vim license applies, see ":help license"
-# Last Change: 2024 Jun 16
+# Last Change: 2024 Jul 04
# Converted to Vim9: Ubaldo Tiberi <ubaldo.tiberi@gmail.com>
# WORK IN PROGRESS - The basics works stable, more to come
@@ -15,7 +15,7 @@ vim9script
# There are two ways to run gdb:
# - In a terminal window; used if possible, does not work on MS-Windows
-# Not used when g:termdebug_use_prompt is set to 1.
+# Not used when g:termdebug_use_prompt is set to true.
# - Using a "prompt" buffer; may use a terminal window for the program
# For both the current window is used to view source code and shows the
@@ -42,18 +42,33 @@ def Echoerr(msg: string)
echohl ErrorMsg | echom $'[termdebug] {msg}' | echohl None
enddef
+def Echowarn(msg: string)
+ echohl WarningMsg | echom $'[termdebug] {msg}' | echohl None
+enddef
# Variables to keep their status among multiple instances of Termdebug
# Avoid to source the script twice.
if exists('g:termdebug_loaded')
- Echoerr('Termdebug already loaded.')
- finish
+ Echoerr('Termdebug already loaded.')
+ finish
endif
g:termdebug_loaded = true
+g:termdebug_is_running = false
+
+
+# The command that starts debugging, e.g. ":Termdebug vim".
+# To end type "quit" in the gdb window.
+command -nargs=* -complete=file -bang Termdebug StartDebug(<bang>0, <f-args>)
+command -nargs=+ -complete=file -bang TermdebugCommand StartDebugCommand(<bang>0, <f-args>)
+
+enum Way
+ Prompt,
+ Terminal
+endenum
# Script variables declaration. These variables are re-initialized at every
# Termdebug instance
-var way: string
+var way: Way
var err: string
var pc_id: number
@@ -74,10 +89,12 @@ var varbufnr: number
var varbufname: string
var asmbufnr: number
var asmbufname: string
-var promptbuf: number
-# This is for the "debugged program" thing
+var promptbufnr: number
+# 'pty' refers to the "debugged-program" pty
var ptybufnr: number
+var ptybufname: string
var commbufnr: number
+var commbufname: string
var gdbjob: job
var gdb_channel: channel
@@ -110,7 +127,7 @@ var evalexpr: string
# Remember the old value of 'signcolumn' for each buffer that it's set in, so
# that we can restore the value for all buffers.
var signcolumn_buflist: list<number>
-var save_columns: number
+var saved_columns: number
var allleft: bool
# This was s:vertical but I cannot use vertical as variable name
@@ -120,20 +137,19 @@ var winbar_winids: list<number>
var saved_mousemodel: string
-var k_map_saved: dict<any>
-var plus_map_saved: dict<any>
-var minus_map_saved: dict<any>
-
+var saved_K_map: dict<any>
+var saved_plus_map: dict<any>
+var saved_minus_map: dict<any>
def InitScriptVariables()
if exists('g:termdebug_config') && has_key(g:termdebug_config, 'use_prompt')
- way = g:termdebug_config['use_prompt'] ? 'prompt' : 'terminal'
+ way = g:termdebug_config['use_prompt'] ? Way.Prompt : Way.Terminal
elseif exists('g:termdebug_use_prompt')
- way = g:termdebug_use_prompt
+ way = g:termdebug_use_prompt ? Way.Prompt : Way.Terminal
elseif has('terminal') && !has('win32')
- way = 'terminal'
+ way = Way.Terminal
else
- way = 'prompt'
+ way = Way.Prompt
endif
err = ''
@@ -154,9 +170,11 @@ def InitScriptVariables()
varbufname = 'Termdebug-variables-listing'
asmbufnr = 0
asmbufname = 'Termdebug-asm-listing'
- promptbuf = 0
- # This is for the "debugged program" thing
+ promptbufnr = 0
+ # This is for the "debugged-program" thing
+ ptybufname = "debugged-program"
ptybufnr = 0
+ commbufname = "gdb-communication"
commbufnr = 0
gdbjob = null_job
@@ -190,23 +208,87 @@ def InitScriptVariables()
# Remember the old value of 'signcolumn' for each buffer that it's set in, so
# that we can restore the value for all buffers.
signcolumn_buflist = [bufnr()]
- save_columns = 0
+ saved_columns = &columns
winbar_winids = []
- k_map_saved = null_dict
- plus_map_saved = null_dict
- minus_map_saved = null_dict
+ saved_K_map = maparg('K', 'n', false, true)
+ saved_plus_map = maparg('+', 'n', false, true)
+ saved_minus_map = maparg('-', 'n', false, true)
if has('menu')
- saved_mousemodel = null_string
+ saved_mousemodel = &mousemodel
+ endif
+enddef
+
+def SanityCheck(): bool
+ var gdb_cmd = GetCommand()[0]
+ var cwd = $'{getcwd()}/'
+ if exists('+shellslash') && !&shellslash
+ # on windows, need to handle backslash
+ cwd->substitute('\\', '/', 'g')
+ endif
+ var is_check_ok = true
+ # Need either the +terminal feature or +channel and the prompt buffer.
+ # The terminal feature does not work with gdb on win32.
+ if (way is Way.Prompt) && !has('channel')
+ err = 'Cannot debug, +channel feature is not supported'
+ elseif (way is Way.Prompt) && !exists('*prompt_setprompt')
+ err = 'Cannot debug, missing prompt buffer support'
+ elseif (way is Way.Prompt) && !empty(glob($'{cwd}{gdb_cmd}'))
+ err = $"You have a file/folder named '{gdb_cmd}' in the current directory Termdebug may not work properly. Please exit and rename such a file/folder."
+ elseif !empty(glob($'{cwd}{asmbufname}'))
+ err = $"You have a file/folder named '{asmbufname}' in the current directory Termdebug may not work properly. Please exit and rename such a file/folder."
+ elseif !empty(glob($'{cwd}{varbufname}'))
+ err = $"You have a file/folder named '{varbufname}' in the current directory Termdebug may not work properly. Please exit and rename such a file/folder."
+ elseif !executable(gdb_cmd)
+ err = $"Cannot execute debugger program '{gdb_cmd}'"
+ endif
+
+ if !empty(err)
+ Echoerr(err)
+ is_check_ok = false
+ endif
+ return is_check_ok
+enddef
+
+def DeprecationWarnings()
+ # TODO Remove the deprecated features after 1 Jan 2025.
+ var config_param = ''
+ if exists('g:termdebug_wide')
+ config_param = 'g:termdebug_wide'
+ elseif exists('g:termdebug_popup')
+ config_param = 'g:termdebug_popup'
+ elseif exists('g:termdebugger')
+ config_param = 'g:termdebugger'
+ elseif exists('g:termdebug_variables_window')
+ config_param = 'g:termdebug_variables_window'
+ elseif exists('g:termdebug_disasm_window')
+ config_param = 'g:termdebug_disasm_window'
+ elseif exists('g:termdebug_map_K')
+ config_param = 'g:termdebug_map_K'
+ elseif exists('g:termdebug_use_prompt')
+ config_param = 'g:termdebug_use_prompt'
+ endif
+
+ if !empty(config_param)
+ Echowarn($"Deprecation Warning: '{config_param}' parameter
+ \ is deprecated and will be removed in the future. See ':h g:termdebug_config' for alternatives.")
endif
-enddef
-# The command that starts debugging, e.g. ":Termdebug vim".
-# To end type "quit" in the gdb window.
-command -nargs=* -complete=file -bang Termdebug StartDebug(<bang>0, <f-args>)
-command -nargs=+ -complete=file -bang TermdebugCommand StartDebugCommand(<bang>0, <f-args>)
+ # termdebug config types
+ if exists('g:termdebug_config') && !empty(g:termdebug_config)
+ for key in keys(g:termdebug_config)
+ if index(['disasm_window', 'variables_window', 'use_prompt', 'map_K', 'map_minus', 'map_plus'], key) != -1
+ if typename(g:termdebug_config[key]) == 'number'
+ var val = g:termdebug_config[key]
+ Echowarn($"Deprecation Warning: 'g:termdebug_config[\"{key}\"] = {val}' will be deprecated.
+ \ Please use 'g:termdebug_config[\"{key}\"] = {val != 0}'" )
+ endif
+ endif
+ endfor
+ endif
+enddef
# Take a breakpoint number as used by GDB and turn it into an integer.
# The breakpoint may contain a dot: 123.4 -> 123004
@@ -228,7 +310,7 @@ enddef
# Define the default highlighting, using the current 'background' value.
def InitHighlight()
- Highlight(1, '', &background)
+ Highlight(true, '', &background)
hi default debugBreakpoint term=reverse ctermbg=red guibg=red
hi default debugBreakpointDisabled term=reverse ctermbg=gray guibg=gray
enddef
@@ -244,18 +326,19 @@ enddef
# Get the command to execute the debugger as a list, defaults to ["gdb"].
def GetCommand(): list<string>
- var cmd = 'gdb'
+ var cmd: any
if exists('g:termdebug_config')
cmd = get(g:termdebug_config, 'command', 'gdb')
elseif exists('g:termdebugger')
cmd = g:termdebugger
+ else
+ cmd = 'gdb'
endif
return type(cmd) == v:t_list ? copy(cmd) : [cmd]
enddef
def StartDebug(bang: bool, ...gdb_args: list<string>)
- InitScriptVariables()
# First argument is the command to debug, second core file or process ID.
StartDebug_internal({gdb_args: gdb_args, bang: bang})
enddef
@@ -265,22 +348,25 @@ def StartDebugCommand(bang: bool, ...args: list<string>)
StartDebug_internal({gdb_args: [args[0]], proc_args: args[1 : ], bang: bang})
enddef
-
def StartDebug_internal(dict: dict<any>)
- if gdbwin > 0
+ if g:termdebug_is_running
Echoerr('Terminal debugger already running, cannot run two')
return
endif
- var gdbcmd = GetCommand()
- if !executable(gdbcmd[0])
- Echoerr($'Cannot execute debugger program "{gdbcmd[0]}"')
+
+ InitScriptVariables()
+ if !SanityCheck()
return
endif
+ DeprecationWarnings()
if exists('#User#TermdebugStartPre')
doauto <nomodeline> User TermdebugStartPre
endif
+ # Uncomment this line to write logging in "debuglog".
+ # ch_logfile('debuglog', 'w')
+
# Assume current window is the source code window
sourcewin = win_getid()
var wide = 0
@@ -292,7 +378,6 @@ def StartDebug_internal(dict: dict<any>)
endif
if wide > 0
if &columns < wide
- save_columns = &columns
&columns = wide
# If we make the Vim window wider, use the whole left half for the debug
# windows.
@@ -303,7 +388,7 @@ def StartDebug_internal(dict: dict<any>)
vvertical = false
endif
- if way == 'prompt'
+ if way is Way.Prompt
StartDebug_prompt(dict)
else
StartDebug_term(dict)
@@ -324,44 +409,34 @@ def StartDebug_internal(dict: dict<any>)
if exists('#User#TermdebugStartPost')
doauto <nomodeline> User TermdebugStartPost
endif
+ g:termdebug_is_running = true
enddef
# Use when debugger didn't start or ended.
def CloseBuffers()
- var bufnames = ['debugged\ program', 'gdb\ communication', asmbufname, varbufname]
- for bufname in bufnames
- var buf_nr = bufnr(bufname)
+ var buf_numbers = [promptbufnr, ptybufnr, commbufnr, asmbufnr, varbufnr]
+ for buf_nr in buf_numbers
if buf_nr > 0 && bufexists(buf_nr)
- exe $'bwipe! {bufname}'
+ exe $'bwipe! {buf_nr}'
endif
endfor
-
- running = 0
- gdbwin = 0
enddef
-# IsGdbRunning(): bool may be a better name?
def IsGdbStarted(): bool
var gdbproc_status = job_status(term_getjob(gdbbufnr))
if gdbproc_status !=# 'run'
- var cmd_name = string(GetCommand()[0])
- Echoerr($'{cmd_name} exited unexpectedly')
- CloseBuffers()
return false
endif
return true
enddef
-# Open a terminal window without a job, to run the debugged program in.
-def StartDebug_term(dict: dict<any>)
+def CreateProgramPty(): string
ptybufnr = term_start('NONE', {
- term_name: 'debugged program',
+ term_name: ptybufname,
vertical: vvertical})
if ptybufnr == 0
- Echoerr('Failed to open the program terminal window')
- return
+ return null_string
endif
- var pty = job_info(term_getjob(ptybufnr))['tty_out']
ptywin = win_getid()
if vvertical
@@ -374,19 +449,23 @@ def StartDebug_term(dict: dict<any>)
endif
endif
+ return job_info(term_getjob(ptybufnr))['tty_out']
+enddef
+
+def CreateCommunicationPty(): string
# Create a hidden terminal window to communicate with gdb
commbufnr = term_start('NONE', {
- term_name: 'gdb communication',
- out_cb: function('CommOutput'),
+ term_name: commbufname,
+ out_cb: CommOutput,
hidden: 1
})
if commbufnr == 0
- Echoerr('Failed to open the communication terminal window')
- exe $'bwipe! {ptybufnr}'
- return
+ return null_string
endif
- var commpty = job_info(term_getjob(commbufnr))['tty_out']
+ return job_info(term_getjob(commbufnr))['tty_out']
+enddef
+def CreateGdbConsole(dict: dict<any>, pty: string, commpty: string): string
# Start the gdb buffer
var gdb_args = get(dict, 'gdb_args', [])
var proc_args = get(dict, 'proc_args', [])
@@ -422,24 +501,25 @@ def StartDebug_term(dict: dict<any>)
ch_log($'executing "{join(gdb_cmd)}"')
gdbbufnr = term_start(gdb_cmd, {
- term_name: gdbbufname,
- term_finish: 'close',
- })
+ term_name: gdbbufname,
+ term_finish: 'close',
+ })
if gdbbufnr == 0
- Echoerr('Failed to open the gdb terminal window')
- CloseBuffers()
- return
+ return 'Failed to open the gdb terminal window'
endif
gdbwin = win_getid()
# Wait for the "startupdone" message before sending any commands.
var counter = 0
var counter_max = 300
+ if exists('g:termdebug_config') && has_key(g:termdebug_config, 'timeout')
+ counter_max = g:termdebug_config['timeout']
+ endif
+
var success = false
while !success && counter < counter_max
if !IsGdbStarted()
- CloseBuffers()
- return
+ return $'{gdbbufname} exited unexpectedly'
endif
for lnum in range(1, 200)
@@ -454,14 +534,12 @@ def StartDebug_term(dict: dict<any>)
endwhile
if !success
- Echoerr('Failed to startup the gdb program.')
- CloseBuffers()
- return
+ return 'Failed to startup the gdb program.'
endif
# ---- gdb started. Next, let's set the MI interface. ---
# Set arguments to be run.
- if len(proc_args)
+ if !empty(proc_args)
term_sendkeys(gdbbufnr, $"server set args {join(proc_args)}\r")
endif
@@ -476,7 +554,7 @@ def StartDebug_term(dict: dict<any>)
success = false
while !success && counter < counter_max
if !IsGdbStarted()
- return
+ return $'{gdbbufname} exited unexpectedly'
endif
var response = ''
@@ -487,10 +565,8 @@ def StartDebug_term(dict: dict<any>)
# response can be in the same line or the next line
response = $"{line1}{line2}"
if response =~ 'Undefined command'
- Echoerr('Sorry, your gdb is too old, gdb 7.12 is required')
# CHECKME: possibly send a "server show version" here
- CloseBuffers()
- return
+ return 'Sorry, your gdb is too old, gdb 7.12 is required'
endif
if response =~ 'New UI allocated'
# Success!
@@ -509,11 +585,37 @@ def StartDebug_term(dict: dict<any>)
endwhile
if !success
- Echoerr('Cannot check if your gdb works, continuing anyway')
+ return 'Cannot check if your gdb works, continuing anyway'
+ endif
+ return ''
+enddef
+
+
+# Open a terminal window without a job, to run the debugged program in.
+def StartDebug_term(dict: dict<any>)
+
+ var programpty = CreateProgramPty()
+ if programpty is null_string
+ Echoerr('Failed to open the program terminal window')
+ CloseBuffers()
+ return
+ endif
+
+ var commpty = CreateCommunicationPty()
+ if commpty is null_string
+ Echoerr('Failed to open the communication terminal window')
+ CloseBuffers()
+ return
+ endif
+
+ var err_message = CreateGdbConsole(dict, programpty, commpty)
+ if !empty(err_message)
+ Echoerr(err_message)
+ CloseBuffers()
return
endif
- job_setoptions(term_getjob(gdbbufnr), {exit_cb: function('EndTermDebug')})
+ job_setoptions(term_getjob(gdbbufnr), {exit_cb: EndDebug})
# Set the filetype, this can be used to add mappings.
set filetype=termdebug
@@ -523,29 +625,22 @@ enddef
# Open a window with a prompt buffer to run gdb in.
def StartDebug_prompt(dict: dict<any>)
+ var gdb_cmd = GetCommand()
+ gdbbufname = gdb_cmd[0]
+
if vvertical
vertical new
else
new
endif
gdbwin = win_getid()
- promptbuf = bufnr('')
- prompt_setprompt(promptbuf, 'gdb> ')
+ promptbufnr = bufnr('')
+ prompt_setprompt(promptbufnr, 'gdb> ')
set buftype=prompt
+ exe $"file {gdbbufname}"
- if empty(glob('gdb'))
- file gdb
- elseif empty(glob('Termdebug-gdb-console'))
- file Termdebug-gdb-console
- else
- Echoerr("You have a file/folder named 'gdb' " ..
- "or 'Termdebug-gdb-console'. " ..
- "Please exit and rename them because Termdebug may not work " ..
- "as expected.")
- endif
-
- prompt_setcallback(promptbuf, function('PromptCallback'))
- prompt_setinterrupt(promptbuf, function('PromptInterrupt'))
+ prompt_setcallback(promptbufnr, PromptCallback)
+ prompt_setinterrupt(promptbufnr, PromptInterrupt)
if vvertical
# Assuming the source code window will get a signcolumn, use two more
@@ -556,7 +651,6 @@ def StartDebug_prompt(dict: dict<any>)
var gdb_args = get(dict, 'gdb_args', [])
var proc_args = get(dict, 'proc_args', [])
- var gdb_cmd = GetCommand()
# Add -quiet to avoid the intro message causing a hit-enter prompt.
gdb_cmd += ['-quiet']
# Disable pagination, it causes everything to stop at the gdb, needs to be run early
@@ -573,16 +667,16 @@ def StartDebug_prompt(dict: dict<any>)
ch_log($'executing "{join(gdb_cmd)}"')
gdbjob = job_start(gdb_cmd, {
- exit_cb: function('EndPromptDebug'),
- out_cb: function('GdbOutCallback'),
+ exit_cb: EndDebug,
+ out_cb: GdbOutCallback
})
if job_status(gdbjob) != "run"
Echoerr('Failed to start gdb')
- exe $'bwipe! {promptbuf}'
+ exe $'bwipe! {promptbufnr}'
return
endif
- exe $'au BufUnload <buffer={promptbuf}> ++once ' ..
- 'call job_stop(gdbjob, ''kill'')'
+ exe $'au BufUnload <buffer={promptbufnr}> ++once ' ..
+ 'call job_stop(gdbjob, ''kill'')'
# Mark the buffer modified so that it's not easy to close.
set modified
gdb_channel = job_getchannel(gdbjob)
@@ -623,7 +717,7 @@ def StartDebug_prompt(dict: dict<any>)
SendCommand('set breakpoint pending on')
# Set arguments to be run
- if len(proc_args)
+ if !empty(proc_args)
SendCommand($'set args {join(proc_args)}')
endif
@@ -669,7 +763,7 @@ enddef
# Send a command to gdb. "cmd" is the string without line terminator.
def SendCommand(cmd: string)
ch_log($'sending to gdb: {cmd}')
- if way == 'prompt'
+ if way is Way.Prompt
ch_sendraw(gdb_channel, $"{cmd}\n")
else
term_sendkeys(commbufnr, $"{cmd}\r")
@@ -678,7 +772,7 @@ enddef
# Interrupt or stop the program
def StopCommand()
- if way == 'prompt'
+ if way is Way.Prompt
PromptInterrupt()
else
SendCommand('-exec-interrupt')
@@ -687,7 +781,7 @@ enddef
# Continue the program
def ContinueCommand()
- if way == 'prompt'
+ if way is Way.Prompt
SendCommand('continue')
else
# using -exec-continue results in CTRL-C in the gdb window not working,
@@ -699,12 +793,12 @@ enddef
# This is global so that a user can create their mappings with this.
def g:TermDebugSendCommand(cmd: string)
- if way == 'prompt'
+ if way is Way.Prompt
ch_sendraw(gdb_channel, $"{cmd}\n")
else
- var do_continue = 0
+ var do_continue = false
if !stopped
- do_continue = 1
+ do_continue = true
StopCommand()
sleep 10m
endif
@@ -765,7 +859,7 @@ def GdbOutCallback(channel: channel, text: string)
# Drop the gdb prompt, we have our own.
# Drop status and echo'd commands.
if text == '(gdb) ' || text == '^done' ||
- (text[0] == '&' && text !~ '^&"disassemble')
+ (text[0] == '&' && text !~ '^&"disassemble')
return
endif
@@ -808,20 +902,18 @@ def DecodeMessage(quotedText: string, literal: bool): string
return ''
endif
var msg = quotedText
- ->substitute('^"\|[^\\]\zs".*', '', 'g')
- ->substitute('\\"', '"', 'g')
- #\ multi-byte characters arrive in octal form
- #\ NULL-values must be kept encoded as those break the string otherwise
- ->substitute('\\000', NullRepl, 'g')
- ->substitute('\\\(\o\o\o\)', (m) => nr2char(str2nr(m[1], 8)), 'g')
- # You could also use ->substitute('\\\\\(\o\o\o\)', '\=nr2char(str2nr(submatch(1), 8))', "g")
- #\ Note: GDB docs also mention hex encodings - the translations below work
- #\ but we keep them out for performance-reasons until we actually see
- #\ those in mi-returns
- #\ \ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
- #\ \ ->substitute('\\0x00', NullRepl, 'g')
- ->substitute('\\\\', '\', 'g')
- ->substitute(NullRepl, '\\000', 'g')
+ ->substitute('^"\|[^\\]\zs".*', '', 'g')
+ ->substitute('\\"', '"', 'g')
+ #\ multi-byte characters arrive in octal form
+ #\ NULL-values must be kept encoded as those break the string otherwise
+ ->substitute('\\000', NullRepl, 'g')
+ ->substitute('\\\(\o\o\o\)', (m) => nr2char(str2nr(m[1], 8)), 'g')
+ # You could also use ->substitute('\\\\\(\o\o\o\)', '\=nr2char(str2nr(submatch(1), 8))', "g")
+ #\ Note: GDB docs also mention hex encodings - the translations below work
+ #\ but we keep them out for performance-reasons until we actually see
+ #\ those in mi-returns
+ ->substitute('\\\\', '\', 'g')
+ ->substitute(NullRepl, '\\000', 'g')
if !literal
return msg
->substitute('\\t', "\t", 'g')
@@ -857,32 +949,17 @@ def GetAsmAddr(msg: string): string
return addr
enddef
-
-def EndTermDebug(job: any, status: any)
+def EndDebug(job: any, status: any)
if exists('#User#TermdebugStopPre')
doauto <nomodeline> User TermdebugStopPre
endif
- if commbufnr > 0 && bufexists(commbufnr)
- exe $'bwipe! {commbufnr}'
+ if way is Way.Prompt
+ ch_log("Returning from EndDebug()")
endif
- gdbwin = 0
- EndDebugCommon()
-enddef
-def EndDebugCommon()
var curwinid = win_getid()
-
- if ptybufnr > 0 && bufexists(ptybufnr)
- exe $'bwipe! {ptybufnr}'
- endif
- if asmbufnr > 0 && bufexists(asmbufnr)
- exe $'bwipe! {asmbufnr}'
- endif
- if varbufnr > 0 && bufexists(varbufnr)
- exe $'bwipe! {varbufnr}'
- endif
- running = false
+ CloseBuffers()
# Restore 'signcolumn' in all buffers for which it was set.
win_gotoid(sourcewin)
@@ -904,9 +981,7 @@ def EndDebugCommon()
win_gotoid(curwinid)
- if save_columns > 0
- &columns = save_columns
- endif
+ &columns = saved_columns
if has("balloon_eval") || has("balloon_eval_term")
set balloonexpr=
@@ -923,23 +998,9 @@ def EndDebugCommon()
endif
au! TermDebug
+ g:termdebug_is_running = false
enddef
-def EndPromptDebug(job: any, status: any)
- if exists('#User#TermdebugStopPre')
- doauto <nomodeline> User TermdebugStopPre
- endif
-
- if bufexists(promptbuf)
- exe $'bwipe! {promptbuf}'
- endif
-
- EndDebugCommon()
- gdbwin = 0
- ch_log("Returning from EndPromptDebug()")
-enddef
-
-
# Disassembly window - added by Michael Sartain
#
# - CommOutput: &"disassemble $pc\n"
@@ -990,11 +1051,11 @@ def HandleDisasmMsg(msg: string)
endif
elseif msg !~ '^&"disassemble'
var value = substitute(msg, '^\~\"[ ]*', '', '')
- ->substitute('^=>[ ]*', '', '')
- ->substitute('\\n\"\r$', '', '')
- ->substitute('\\n\"$', '', '')
- ->substitute('\r', '', '')
- ->substitute('\\t', ' ', 'g')
+ ->substitute('^=>[ ]*', '', '')
+ ->substitute('\\n\"\r$', '', '')
+ ->substitute('\\n\"$', '', '')
+ ->substitute('\r', '', '')
+ ->substitute('\\t', ' ', 'g')
if value != '' || !empty(asm_lines)
add(asm_lines, value)
@@ -1070,9 +1131,9 @@ def CommOutput(chan: channel, message: string)
if msg =~ '^\(\*stopped\|\*running\|=thread-selected\)'
HandleCursor(msg)
elseif msg =~ '^\^done,bkpt=' || msg =~ '^=breakpoint-created,'
- HandleNewBreakpoint(msg, 0)
+ HandleNewBreakpoint(msg, false)
elseif msg =~ '^=breakpoint-modified,'
- HandleNewBreakpoint(msg, 1)
+ HandleNewBreakpoint(msg, true)
elseif msg =~ '^=breakpoint-deleted,'
HandleBreakpointDelete(msg)
elseif msg =~ '^=thread-group-started'
@@ -1127,74 +1188,70 @@ def InstallCommands()
command Source GotoSourcewinOrCreateIt()
command Asm GotoAsmwinOrCreateIt()
command Var GotoVariableswinOrCreateIt()
- command Winbar InstallWinbar(1)
+ command Winbar InstallWinbar(true)
- var map = 1
+ var map = true
if exists('g:termdebug_config')
- map = get(g:termdebug_config, 'map_K', 1)
+ map = get(g:termdebug_config, 'map_K', true)
elseif exists('g:termdebug_map_K')
map = g:termdebug_map_K
endif
if map
- k_map_saved = maparg('K', 'n', 0, 1)
- if !empty(k_map_saved) && !k_map_saved.buffer || empty(k_map_saved)
+ if !empty(saved_K_map) && !saved_K_map.buffer || empty(saved_K_map)
nnoremap K :Evaluate<CR>
endif
endif
- map = 1
+ map = true
if exists('g:termdebug_config')
- map = get(g:termdebug_config, 'map_plus', 1)
+ map = get(g:termdebug_config, 'map_plus', true)
endif
if map
- plus_map_saved = maparg('+', 'n', 0, 1)
- if !empty(plus_map_saved) && !plus_map_saved.buffer || empty(plus_map_saved)
+ if !empty(saved_plus_map) && !saved_plus_map.buffer || empty(saved_plus_map)
nnoremap <expr> + $'<Cmd>{v:count1}Up<CR>'
endif
endif
- map = 1
+ map = true
if exists('g:termdebug_config')
- map = get(g:termdebug_config, 'map_minus', 1)
+ map = get(g:termdebug_config, 'map_minus', true)
endif
if map
- minus_map_saved = maparg('-', 'n', 0, 1)
- if !empty(minus_map_saved) && !minus_map_saved.buffer || empty(minus_map_saved)
+ if !empty(saved_minus_map) && !saved_minus_map.buffer || empty(saved_minus_map)
nnoremap <expr> - $'<Cmd>{v:count1}Down<CR>'
endif
endif
if has('menu') && &mouse != ''
- InstallWinbar(0)
+ InstallWinbar(false)
- var pup = 1
+ var pup = true
if exists('g:termdebug_config')
- pup = get(g:termdebug_config, 'popup', 1)
+ pup = get(g:termdebug_config, 'popup', true)
elseif exists('g:termdebug_popup')
pup = g:termdebug_popup
endif
if pup
- saved_mousemodel = &mousemodel
&mousemodel = 'popup_setpos'
an 1.200 PopUp.-SEP3- <Nop>
- an 1.210 PopUp.Set\ breakpoint :Break<CR>
- an 1.220 PopUp.Clear\ breakpoint :Clear<CR>
- an 1.230 PopUp.Run\ until :Until<CR>
- an 1.240 PopUp.Evaluate :Evaluate<CR>
+ an 1.210 PopUp.Set\ breakpoint <cmd>Break<CR>
+ an 1.220 PopUp.Clear\ breakpoint <cmd>Clear<CR>
+ an 1.230 PopUp.Run\ until <cmd>Until<CR>
+ an 1.240 PopUp.Evaluate <cmd>Evaluate<CR>
endif
endif
enddef
# Install the window toolbar in the current window.
-def InstallWinbar(force: number)
+def InstallWinbar(force: bool)
# install the window toolbar by default, can be disabled in the config
- var winbar = 1
+ var winbar = true
if exists('g:termdebug_config')
- winbar = get(g:termdebug_config, 'winbar', 1)
+ winbar = get(g:termdebug_config, 'winbar', true)
endif
if has('menu') && &mouse != '' && (winbar || force)
@@ -1232,40 +1289,26 @@ def DeleteCommands()
delcommand Var
delcommand Winbar
- if k_map_saved isnot null_dict
- if !empty(k_map_saved) && k_map_saved.buffer
- # pass
- elseif !empty(k_map_saved) && !k_map_saved.buffer
- nunmap K
- mapset(k_map_saved)
- elseif empty(k_map_saved)
- silent! nunmap K
- endif
- k_map_saved = null_dict
- endif
- if plus_map_saved isnot null_dict
- if !empty(plus_map_saved) && plus_map_saved.buffer
- # pass
- elseif !empty(plus_map_saved) && !plus_map_saved.buffer
- nunmap +
- mapset(plus_map_saved)
- elseif empty(plus_map_saved)
- silent! nunmap +
- endif
- plus_map_saved = null_dict
- endif
- if minus_map_saved isnot null_dict
- if !empty(minus_map_saved) && minus_map_saved.buffer
- # pass
- elseif !empty(minus_map_saved) && !minus_map_saved.buffer
- nunmap -
- mapset(minus_map_saved)
- elseif empty(minus_map_saved)
- silent! nunmap -
- endif
- minus_map_saved = null_dict
+
+ if !empty(saved_K_map) && !saved_K_map.buffer
+ mapset(saved_K_map)
+ elseif empty(saved_K_map)
+ silent! nunmap K
+ endif
+
+ if !empty(saved_plus_map) && !saved_plus_map.buffer
+ mapset(saved_plus_map)
+ elseif empty(saved_plus_map)
+ silent! nunmap +
+ endif
+
+ if !empty(saved_minus_map) && !saved_minus_map.buffer
+ mapset(saved_minus_map)
+ elseif empty(saved_minus_map)
+ silent! nunmap -
endif
+
if has('menu')
# Remove the WinBar entries from all windows where it was added.
var curwinid = win_getid()
@@ -1280,32 +1323,29 @@ def DeleteCommands()
endif
endfor
win_gotoid(curwinid)
- winbar_winids = []
-
- if saved_mousemodel isnot null_string
- &mousemodel = saved_mousemodel
- saved_mousemodel = null_string
- try
- aunmenu PopUp.-SEP3-
- aunmenu PopUp.Set\ breakpoint
- aunmenu PopUp.Clear\ breakpoint
- aunmenu PopUp.Run\ until
- aunmenu PopUp.Evaluate
- catch
- # ignore any errors in removing the PopUp menu
- endtry
- endif
+
+ &mousemodel = saved_mousemodel
+ try
+ aunmenu PopUp.-SEP3-
+ aunmenu PopUp.Set\ breakpoint
+ aunmenu PopUp.Clear\ breakpoint
+ aunmenu PopUp.Run\ until
+ aunmenu PopUp.Evaluate
+ catch
+ # ignore any errors in removing the PopUp menu
+ endtry
endif
sign_unplace('TermDebug')
- breakpoints = {}
- breakpoint_locations = {}
-
sign_undefine('debugPC')
sign_undefine(BreakpointSigns->map("'debugBreakpoint' .. v:val"))
- BreakpointSigns = []
enddef
+def QuoteArg(x: string): string
+ # Find all the occurrences of " and \ and escape them and double quote
+ # the resulting string.
+ return printf('"%s"', x ->substitute('[\\"]', '\\&', 'g'))
+enddef
# :Until - Execute until past a specified position or current line
def Until(at: string)
@@ -1316,7 +1356,7 @@ def Until(at: string)
ch_log('assume that program is running after this command')
# Use the fname:lnum format
- var AT = empty(at) ? $"{fnameescape(expand('%:p'))}:{line('.')}" : at
+ var AT = empty(at) ? QuoteArg($"{expand('%:p')}:{line('.')}") : at
SendCommand($'-exec-until {AT}')
else
ch_log('dropping command, program is running: exec-until')
@@ -1327,23 +1367,21 @@ enddef
def SetBreakpoint(at: string, tbreak=false)
# Setting a breakpoint may not work while the program is running.
# Interrupt to make it work.
- var do_continue = 0
+ var do_continue = false
if !stopped
- do_continue = 1
+ do_continue = true
StopCommand()
sleep 10m
endif
# Use the fname:lnum format, older gdb can't handle --source.
- var AT = empty(at) ? $"{fnameescape(expand('%:p'))}:{line('.')}" : at
+ var AT = empty(at) ? QuoteArg($"{expand('%:p')}:{line('.')}") : at
var cmd = ''
if tbreak
cmd = $'-break-insert -t {AT}'
else
cmd = $'-break-insert {AT}'
endif
- # OK
- # echom $"cmsd: {cmd}"
SendCommand(cmd)
if do_continue
ContinueCommand()
@@ -1497,27 +1535,33 @@ def CleanupExpr(passed_expr: string): string
return expr
enddef
+def Balloon_show(expr: string)
+ if has("balloon_eval") || has("balloon_eval_term")
+ balloon_show(expr)
+ endif
+enddef
+
def HandleEvaluate(msg: string)
var value = msg
- ->substitute('.*value="\(.*\)"', '\1', '')
- ->substitute('\\"', '"', 'g')
- ->substitute('\\\\', '\\', 'g')
- #\ multi-byte characters arrive in octal form, replace everything but NULL values
- ->substitute('\\000', NullRepl, 'g')
- ->substitute('\\\(\o\o\o\)', (m) => nr2char(str2nr(m[1], 8)), 'g')
- #\ Note: GDB docs also mention hex encodings - the translations below work
- #\ but we keep them out for performance-reasons until we actually see
- #\ those in mi-returns
- #\ ->substitute('\\0x00', NullRep, 'g')
- #\ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
- ->substitute(NullRepl, '\\000', 'g')
+ ->substitute('.*value="\(.*\)"', '\1', '')
+ ->substitute('\\"', '"', 'g')
+ ->substitute('\\\\', '\\', 'g')
+ #\ multi-byte characters arrive in octal form, replace everything but NULL values
+ ->substitute('\\000', NullRepl, 'g')
+ ->substitute('\\\(\o\o\o\)', (m) => nr2char(str2nr(m[1], 8)), 'g')
+ #\ Note: GDB docs also mention hex encodings - the translations below work
+ #\ but we keep them out for performance-reasons until we actually see
+ #\ those in mi-returns
+ #\ ->substitute('\\0x00', NullRep, 'g')
+ #\ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
+ ->substitute(NullRepl, '\\000', 'g')
if evalFromBalloonExpr
if empty(evalFromBalloonExprResult)
evalFromBalloonExprResult = $'{evalexpr}: {value}'
else
evalFromBalloonExprResult ..= $' = {value}'
endif
- balloon_show(evalFromBalloonExprResult)
+ Balloon_show(evalFromBalloonExprResult)
else
echomsg $'"{evalexpr}": {value}'
endif
@@ -1567,19 +1611,22 @@ def GotoSourcewinOrCreateIt()
if !win_gotoid(sourcewin)
new
sourcewin = win_getid()
- InstallWinbar(0)
+ InstallWinbar(false)
endif
enddef
-def GetDisasmWindow(): number
- if exists('g:termdebug_config')
- return get(g:termdebug_config, 'disasm_window', 0)
- endif
- if exists('g:termdebug_disasm_window')
- return g:termdebug_disasm_window
+def GetDisasmWindow(): bool
+ # TODO Remove the deprecated features after 1 Jan 2025.
+ var val: any
+ if exists('g:termdebug_config') && has_key(g:termdebug_config, 'disasm_window')
+ val = g:termdebug_config['disasm_window']
+ elseif exists('g:termdebug_disasm_window')
+ val = g:termdebug_disasm_window
+ else
+ val = false
endif
- return 0
+ return typename(val) == 'number' ? val != 0 : val
enddef
def GetDisasmWindowHeight(): number
@@ -1619,13 +1666,9 @@ def GotoAsmwinOrCreateIt()
if asmbufnr > 0 && bufexists(asmbufnr)
exe $'buffer {asmbufnr}'
- elseif empty(glob('Termdebug-asm-listing'))
- silent file Termdebug-asm-listing
- asmbufnr = bufnr('Termdebug-asm-listing')
else
- Echoerr("You have a file/folder named 'Termdebug-asm-listing'. " ..
- "Please exit and rename it because Termdebug may not work " ..
- "as expected.")
+ exe $"silent file {asmbufname}"
+ asmbufnr = bufnr(asmbufname)
endif
if mdf != 'vert' && GetDisasmWindowHeight() > 0
@@ -1646,14 +1689,17 @@ def GotoAsmwinOrCreateIt()
endif
enddef
-def GetVariablesWindow(): number
- if exists('g:termdebug_config')
- return get(g:termdebug_config, 'variables_window', 0)
- endif
- if exists('g:termdebug_disasm_window')
- return g:termdebug_variables_window
+def GetVariablesWindow(): bool
+ # TODO Remove the deprecated features after 1 Jan 2025.
+ var val: any
+ if exists('g:termdebug_config') && has_key(g:termdebug_config, 'variables_window')
+ val = g:termdebug_config['variables_window']
+ elseif exists('g:termdebug_variables_window')
+ val = g:termdebug_variables_window
+ else
+ val = false
endif
- return 0
+ return typename(val) == 'number' ? val != 0 : val
enddef
def GetVariablesWindowHeight(): number
@@ -1691,15 +1737,12 @@ def GotoVariableswinOrCreateIt()
setlocal signcolumn=no
setlocal modifiable
+ # If exists, then open, otherwise create
if varbufnr > 0 && bufexists(varbufnr)
exe $'buffer {varbufnr}'
- elseif empty(glob('Termdebug-variables-listing'))
- silent file Termdebug-variables-listing
- varbufnr = bufnr('Termdebug-variables-listing')
else
- Echoerr("You have a file/folder named 'Termdebug-variables-listing'. " ..
- "Please exit and rename it because Termdebug may not work " ..
- "as expected.")
+ exe $"silent file {varbufname}"
+ varbufnr = bufnr(varbufname)
endif
if mdf != 'vert' && GetVariablesWindowHeight() > 0
@@ -1719,7 +1762,7 @@ def HandleCursor(msg: string)
if msg =~ '^\*stopped'
ch_log('program stopped')
- stopped = 1
+ stopped = true
if msg =~ '^\*stopped,reason="exited-normally"'
running = false
endif
@@ -1778,7 +1821,7 @@ def HandleCursor(msg: string)
# TODO: find existing window
exe $'split {fnameescape(fname)}'
sourcewin = win_getid()
- InstallWinbar(0)
+ InstallWinbar(false)
else
exe $'edit {fnameescape(fname)}'
endif
@@ -1790,7 +1833,7 @@ def HandleCursor(msg: string)
normal! zv
sign_unplace('TermDebug', {id: pc_id})
sign_place(pc_id, 'TermDebug', 'debugPC', fname,
- {lnum: str2nr(lnum), priority: 110})
+ {lnum: str2nr(lnum), priority: 110})
if !exists('b:save_signcolumn')
b:save_signcolumn = &signcolumn
add(signcolumn_buflist, bufnr())
@@ -1837,7 +1880,7 @@ enddef
# Handle setting a breakpoint
# Will update the sign that shows the breakpoint
-def HandleNewBreakpoint(msg: string, modifiedFlag: any)
+def HandleNewBreakpoint(msg: string, modifiedFlag: bool)
var nr = ''
if msg !~ 'fullname='
diff --git a/runtime/plugin/manpager.vim b/runtime/plugin/manpager.vim
index 076aca5..6ed6030 100644
--- a/runtime/plugin/manpager.vim
+++ b/runtime/plugin/manpager.vim
@@ -1,6 +1,6 @@
" Vim plugin for using Vim as manpager.
" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
-" Last Change: 2022 Oct 17
+" Last Change: 2024 Jul 03
if exists('g:loaded_manpager_plugin')
finish
@@ -20,9 +20,6 @@ function s:ManPager()
endif
syntax on
- " Make this an unlisted, readonly scratch buffer
- setlocal buftype=nofile noswapfile bufhidden=hide nobuflisted readonly
-
" Ensure text width matches window width
setlocal foldcolumn& nofoldenable nonumber norelativenumber
@@ -45,6 +42,9 @@ function s:ManPager()
" Finished preprocessing the buffer, prevent any further modifications
setlocal nomodified nomodifiable
+ " Make this an unlisted, readonly scratch buffer
+ setlocal buftype=nofile noswapfile bufhidden=hide nobuflisted readonly
+
" Set filetype to man even if ftplugin is disabled
setlocal filetype=man
runtime ftplugin/man.vim
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index 6c061c9..2899612 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -60,12 +60,8 @@ func s:Highlight_Matching_Pair()
let before = 0
let text = getline(c_lnum)
- let matches = matchlist(text, '\(.\)\=\%'.c_col.'c\(.\=\)')
- if empty(matches)
- let [c_before, c] = ['', '']
- else
- let [c_before, c] = matches[1:2]
- endif
+ let c_before = text->strpart(0, c_col - 1)->slice(-1)
+ let c = text->strpart(c_col - 1)->slice(0, 1)
let plist = split(&matchpairs, '.\zs[:,]')
let i = index(plist, c)
if i < 0
diff --git a/runtime/syntax/antlr4.vim b/runtime/syntax/antlr4.vim
new file mode 100644
index 0000000..33cc865
--- /dev/null
+++ b/runtime/syntax/antlr4.vim
@@ -0,0 +1,30 @@
+" Vim syntax file
+" Language: ANTLR4, ANother Tool for Language Recognition v4 <www.antlr.org>
+" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
+" Last Change: 2024 July 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Keywords. See https://github.com/antlr/antlr4/blob/4.13.1/doc/lexicon.md
+syn keyword antlr4Include import
+" https://github.com/antlr/antlr4/blob/4.13.1/doc/options.md
+" https://github.com/antlr/antlr4/blob/4.13.1/doc/grammars.md
+syn keyword antlr4Structure fragment lexer parser grammar options channels tokens mode
+syn keyword antlr4Statement returns locals
+syn keyword antlr4Exceptions throws catch finally
+
+" Comments.
+syn keyword antlr4Todo contained TODO FIXME XXX NOTE
+syn region antlr4Comment start="//" end="$" contains=antlr4Todo,@Spell
+syn region antlr4Comment start="/\*" end="\*/" contains=antlr4Todo,@Spell
+
+hi def link antlr4Include Include
+hi def link antlr4Structure Structure
+hi def link antlr4Statement Statement
+hi def link antlr4Exceptions Structure
+hi def link antlr4Comment Comment
+
+let b:current_syntax = "antlr4"
diff --git a/runtime/syntax/asy.vim b/runtime/syntax/asy.vim
new file mode 100644
index 0000000..ed2bf71
--- /dev/null
+++ b/runtime/syntax/asy.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language: Asymptote
+" Maintainer: Avid Seeker <avidseeker7@protonmail.com>
+" Andy Hammerlindl
+" Last Change: 2022 Jan 05
+
+" Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's
+" Java syntax file.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" useful C/C++/Java keywords
+syn keyword asyStatement break return continue unravel
+syn keyword asyConditional if else
+syn keyword asyRepeat while for do
+syn keyword asyExternal access from import include
+syn keyword asyOperator new operator
+
+" basic asymptote keywords
+syn keyword asyConstant VERSION
+syn keyword asyConstant true false default infinity inf nan
+syn keyword asyConstant null nullframe nullpath nullpen
+syn keyword asyConstant intMin intMax realMin realMax
+syn keyword asyConstant realEpsilon realDigits
+syn keyword asyPathSpec and cycle controls tension atleast curl
+syn keyword asyStorageClass static public restricted private explicit
+syn keyword asyStructure struct typedef
+syn keyword asyType void bool bool3 int real string file
+syn keyword asyType pair triple transform guide path pen frame
+syn keyword asyType picture
+
+" module specific keywords
+if exists("asy_syn_plain")
+ syn keyword asyConstant currentpicture currentpen defaultpen
+ syn keyword asyConstant inch inches cm mm bp pt up down right left
+ syn keyword asyConstant E NE N NW W SW S SE
+ syn keyword asyConstant ENE NNE NNW WNW WSW SSW SSE ESE
+ syn keyword asyConstant I pi twopi
+ syn keyword asyConstant CCW CW
+ syn keyword asyConstant undefined sqrtEpsilon Align mantissaBits
+ syn keyword asyConstant identity zeroTransform invert
+ syn keyword asyConstant stdin stdout
+ syn keyword asyConstant unitsquare unitcircle circleprecision
+ syn keyword asyConstant solid dotted Dotted dashed dashdotted
+ syn keyword asyConstant longdashed longdashdotted
+ syn keyword asyConstant squarecap roundcap extendcap
+ syn keyword asyConstant miterjoin roundjoin beveljoin
+ syn keyword asyConstant zerowinding evenodd basealign nobasealign
+ syn keyword asyConstant black white gray red green blue Cyan Magenta
+ syn keyword asyConstant Yellow Black cyan magenta yellow palered
+ syn keyword asyConstant palegreen paleblue palecyan palemagenta
+ syn keyword asyConstant paleyellow palegray lightred lightgreen
+ syn keyword asyConstant lightblue lightcyan lightmagenta lightyellow
+ syn keyword asyConstant lightgray mediumred mediumgreen mediumblue
+ syn keyword asyConstant mediumcyan mediummagenta mediumyellow
+ syn keyword asyConstant mediumgray heavyred heavygreen heavyblue
+ syn keyword asyConstant heavycyan heavymagenta lightolive heavygray
+ syn keyword asyConstant deepred deepgreen deepblue deepcyan
+ syn keyword asyConstant deepmagenta deepyellow deepgray darkred
+ syn keyword asyConstant darkgreen darkblue darkcyan darkmagenta
+ syn keyword asyConstant darkolive darkgray orange fuchsia chartreuse
+ syn keyword asyConstant springgreen purple royalblue salmon brown
+ syn keyword asyConstant olive darkbrown pink palegrey lightgrey
+ syn keyword asyConstant mediumgrey grey heavygrey deepgrey darkgrey
+
+ if exists("asy_syn_texcolors")
+ syn keyword asyConstant GreenYellow Yellow Goldenrod Dandelion
+ syn keyword asyConstant Apricot Peach Melon YellowOrange Orange
+ syn keyword asyConstant BurntOrange Bittersweet RedOrange Mahogany
+ syn keyword asyConstant Maroon BrickRed Red OrangeRed RubineRed
+ syn keyword asyConstant WildStrawberry Salmon CarnationPink Magenta
+ syn keyword asyConstant VioletRed Rhodamine Mulberry RedViolet
+ syn keyword asyConstant Fuchsia Lavender Thistle Orchid DarkOrchid
+ syn keyword asyConstant Purple Plum Violet RoyalPurple BlueViolet
+ syn keyword asyConstant Periwinkle CadetBlue CornflowerBlue
+ syn keyword asyConstant MidnightBlue NavyBlue RoyalBlue Blue
+ syn keyword asyConstant Cerulean Cyan ProcessBlue SkyBlue Turquoise
+ syn keyword asyConstant TealBlue Aquamarine BlueGreen Emerald
+ syn keyword asyConstant JungleGreen SeaGreen Green ForestGreen
+ syn keyword asyConstant PineGreen LimeGreen YellowGreen SpringGreen
+ syn keyword asyConstant OliveGreen RawSienna Sepia Brown Tan Gray
+ syn keyword asyConstant Black White
+ endif
+
+ if exists("asy_syn_x11colors")
+ syn keyword asyConstant AliceBlue AntiqueWhite Aqua Aquamarine Azure
+ syn keyword asyConstant Beige Bisque Black BlanchedAlmond Blue
+ syn keyword asyConstant BlueViolet Brown BurlyWood CadetBlue
+ syn keyword asyConstant Chartreuse Chocolate Coral CornflowerBlue
+ syn keyword asyConstant Cornsilk Crimson Cyan DarkBlue DarkCyan
+ syn keyword asyConstant DarkGoldenrod DarkGray DarkGreen DarkKhaki
+ syn keyword asyConstant DarkMagenta DarkOliveGreen DarkOrange
+ syn keyword asyConstant DarkOrchid DarkRed DarkSalmon DarkSeaGreen
+ syn keyword asyConstant DarkSlateBlue DarkSlateGray DarkTurquoise
+ syn keyword asyConstant DarkViolet DeepPink DeepSkyBlue DimGray
+ syn keyword asyConstant DodgerBlue FireBrick FloralWhite ForestGreen
+ syn keyword asyConstant Fuchsia Gainsboro GhostWhite Gold Goldenrod
+ syn keyword asyConstant Gray Green GreenYellow Honeydew HotPink
+ syn keyword asyConstant IndianRed Indigo Ivory Khaki Lavender
+ syn keyword asyConstant LavenderBlush LawnGreen LemonChiffon
+ syn keyword asyConstant LightBlue LightCoral LightCyan
+ syn keyword asyConstant LightGoldenrodYellow LightGreen LightGrey
+ syn keyword asyConstant LightPink LightSalmon LightSeaGreen
+ syn keyword asyConstant LightSkyBlue LightSlateGray LightSteelBlue
+ syn keyword asyConstant LightYellow Lime LimeGreen Linen Magenta
+ syn keyword asyConstant Maroon MediumAquamarine MediumBlue
+ syn keyword asyConstant MediumOrchid MediumPurple MediumSeaGreen
+ syn keyword asyConstant MediumSlateBlue MediumSpringGreen
+ syn keyword asyConstant MediumTurquoise MediumVioletRed MidnightBlue
+ syn keyword asyConstant MintCream MistyRose Moccasin NavajoWhite
+ syn keyword asyConstant Navy OldLace Olive OliveDrab Orange
+ syn keyword asyConstant OrangeRed Orchid PaleGoldenrod PaleGreen
+ syn keyword asyConstant PaleTurquoise PaleVioletRed PapayaWhip
+ syn keyword asyConstant PeachPuff Peru Pink Plum PowderBlue Purple
+ syn keyword asyConstant Red RosyBrown RoyalBlue SaddleBrown Salmon
+ syn keyword asyConstant SandyBrown SeaGreen Seashell Sienna Silver
+ syn keyword asyConstant SkyBlue SlateBlue SlateGray Snow SpringGreen
+ syn keyword asyConstant SteelBlue Tan Teal Thistle Tomato Turquoise
+ syn keyword asyConstant Violet Wheat White WhiteSmoke Yellow
+ syn keyword asyConstant YellowGreen
+ endif
+
+ if exists("asy_syn_three")
+ syn keyword asyType path3 guide3 transform3
+ syn keyword asyType projection light material patch surface tube
+ syn keyword asyConstant currentprojection currentlight defaultrender
+ syn keyword asyConstant identity4 O X Y Z
+ syn keyword asyConstant nolight nullpens
+ syn keyword asyConstant unitsphere unithemisphere unitplane octant1
+ syn keyword asyConstant unitcone unitsolidcone unitcube unitcylinder
+ syn keyword asyConstant unitdisk unittube
+ endif
+endif
+
+
+" string constants
+syn region asyCString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=asyCSpecial
+syn match asyCSpecial display contained +\\\(['"?\\abfnrtv]\|\o\{1,3}\)+
+syn match asyCSpecial display contained +\\\(x[0-9A-F]\{1,2\}\|$\)+
+" double quoted strings only special character is \"
+syn region asyString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=asySpecial
+syn match asySpecial display contained +\(\\\)\@1<!\(\\\\\)*\zs\\"+
+
+
+" number constants
+syn match asyNumbers display transparent "\<\d\|\.\d"
+ \ contains=asyNumber,asyNumberError
+syn match asyNumber display contained "\d*\.\=\d*\(e[-+]\=\d\+\)\="
+" highlight number constants with two '.' or with '.' after an 'e'
+syn match asyNumberError display contained "\d*\.\(\d\|e[-+]\=\)*\.[0-9.]*"
+syn match asyNumberError display contained "\d*e[-+]\=\d*\.[0-9.]*"
+syn match asyNumberError display contained "\d*e[-+]\=\(e[-+]\=\)*\.[0-9.]*"
+
+
+" comments and comment strings
+syn keyword asyTodo contained TODO FIXME XXX
+syn sync ccomment asyComment minlines=15
+if exists("asy_comment_strings")
+ " A comment can contain asyString, asyCString, and asyNumber. But a "*/"
+ " inside a asy*String in a asyComment DOES end the comment! So we need to
+ " use a special type of asy*String: asyComment*String, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syn match asyCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syn region asyCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ end=+\*/+me=s-1
+ \ contains=asySpecial,asyCommentSkip
+ syn region asyCommentCString contained start=+'+ skip=+\\\\\|\\'+ end=+'+
+ \ end=+\*/+me=s-1
+ \ contains=asyCSpecial,asyCommentSkip
+ syn region asyCommentLString contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ end="$" contains=asySpecial
+ syn region asyCommentLCString contained start=+'+ skip=+\\\\\|\\'+ end=+'+
+ \ end="$" contains=asyCSpecial
+ syn region asyCommentL start="//" skip="\\$" end="$" keepend
+ \ contains=asyTodo,asyCommentLString,
+ \ asyCommentLCString,asyNumbers
+ syn region asyComment matchgroup=asyComment start="/\*" end="\*/"
+ \ contains=asyTodo,asyCommentStartError,
+ \ asyCommentString,asyCommentCString,asyNumbers
+else
+ syn region asyCommentL start="//" skip="\\$" end="$" keepend
+ \ contains=asyTodo
+ syn region asyComment matchgroup=asyComment start="/\*" end="\*/"
+ \ contains=asyTodo,asyCommentStartError
+endif
+
+" highlight common errors when starting/ending C comments
+syn match asyCommentError display "\*/"
+syn match asyCommentStartError display "/\*"me=e-1 contained
+
+
+" delimiter matching errors
+syn region asyCurly transparent start='{' end='}'
+ \ contains=TOP,asyCurlyError
+syn region asyBrack transparent start='\[' end='\]' matchgroup=asyError
+ \ end=';' contains=TOP,asyBrackError
+syn region asyParen transparent start='(' end=')' matchgroup=asyError
+ \ end=';' contains=TOP,asyParenError
+syn match asyCurlyError display '}'
+syn match asyBrackError display '\]'
+syn match asyParenError display ')'
+" for (;;) constructs are exceptions that allow ; inside parenthesis
+syn region asyParen transparent matchgroup=asyParen
+ \ start='\(for\s*\)\@<=(' end=')'
+ \ contains=TOP,asyParenError
+
+" Define the default highlighting.
+hi def link asyCommentL asyComment
+hi def link asyConditional Conditional
+hi def link asyRepeat Repeat
+hi def link asyNumber Number
+hi def link asyNumberError asyError
+hi def link asyCurlyError asyError
+hi def link asyBracketError asyError
+hi def link asyParenError asyError
+hi def link asyCommentError asyError
+hi def link asyCommentStartError asyError
+hi def link asyOperator Operator
+hi def link asyStructure Structure
+hi def link asyStorageClass StorageClass
+hi def link asyExternal Include
+hi def link asyDefine Macro
+hi def link asyError Error
+hi def link asyStatement Statement
+hi def link asyType Type
+hi def link asyConstant Constant
+hi def link asyCommentString asyString
+hi def link asyCommentCString asyString
+hi def link asyCommentLString asyString
+hi def link asyCommentLCString asyString
+hi def link asyCommentSkip asyComment
+hi def link asyString String
+hi def link asyCString String
+hi def link asyComment Comment
+hi def link asySpecial SpecialChar
+hi def link asyCSpecial SpecialChar
+hi def link asyTodo Todo
+hi def link asyPathSpec Statement
+
+let b:current_syntax = "asy"
diff --git a/runtime/syntax/chicken.vim b/runtime/syntax/chicken.vim
index f53d872..958fc1f 100644
--- a/runtime/syntax/chicken.vim
+++ b/runtime/syntax/chicken.vim
@@ -1,13 +1,13 @@
" Vim syntax file
-" Language: Scheme (CHICKEN)
-" Last Change: 2021 Oct 01
-" Author: Evan Hanson <evhan@foldling.org>
-" Maintainer: Evan Hanson <evhan@foldling.org>
-" Repository: https://git.foldling.org/vim-scheme.git
-" URL: https://foldling.org/vim/syntax/chicken.vim
-" Notes: This is supplemental syntax, to be loaded after the core Scheme
-" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1
-" and filetype=scheme.
+" Language: Scheme (CHICKEN)
+" Last Change: 2024 Jun 21
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/syntax/chicken.vim
+" Notes: This is supplemental syntax, to be loaded after the core
+" Scheme syntax file (syntax/scheme.vim). Enable it by
+" setting b:is_chicken=1 and filetype=scheme.
" Only to be used on top of the Scheme syntax.
if !exists('b:did_scheme_syntax')
diff --git a/runtime/syntax/csv.vim b/runtime/syntax/csv.vim
new file mode 100644
index 0000000..848029a
--- /dev/null
+++ b/runtime/syntax/csv.vim
@@ -0,0 +1,39 @@
+vim9script
+
+# Maintainer: Maxim Kim <habamax@gmail.com>
+# Last Update: 2024-06-18
+
+if exists("b:current_syntax")
+ finish
+endif
+
+var delimiter = get(b:, "csv_delimiter", ",")
+
+# generate bunch of following syntaxes:
+# syntax match csvCol8 /.\{-}\(,\|$\)/ nextgroup=escCsvCol0,csvCol0
+# syntax region escCsvCol8 start=/ *"\([^"]*""\)*[^"]*/ end=/" *\(,\|$\)/ nextgroup=escCsvCol0,csvCol0
+for col in range(8, 0, -1)
+ var ncol = (col == 8 ? 0 : col + 1)
+ exe $'syntax match csvCol{col}' .. ' /.\{-}\(' .. delimiter .. '\|$\)/ nextgroup=escCsvCol' .. ncol .. ',csvCol' .. ncol
+ exe $'syntax region escCsvCol{col}' .. ' start=/ *"\([^"]*""\)*[^"]*/ end=/" *\(' .. delimiter .. '\|$\)/ nextgroup=escCsvCol' .. ncol .. ',csvCol' .. ncol
+endfor
+
+hi def link csvCol1 Statement
+hi def link csvCol2 Constant
+hi def link csvCol3 Type
+hi def link csvCol4 PreProc
+hi def link csvCol5 Identifier
+hi def link csvCol6 Special
+hi def link csvCol7 String
+hi def link csvCol8 Comment
+
+hi def link escCsvCol1 csvCol1
+hi def link escCsvCol2 csvCol2
+hi def link escCsvCol3 csvCol3
+hi def link escCsvCol4 csvCol4
+hi def link escCsvCol5 csvCol5
+hi def link escCsvCol6 csvCol6
+hi def link escCsvCol7 csvCol7
+hi def link escCsvCol8 csvCol8
+
+b:current_syntax = "csv"
diff --git a/runtime/syntax/debcopyright.vim b/runtime/syntax/debcopyright.vim
index 6f76b5c..cb9e896 100644
--- a/runtime/syntax/debcopyright.vim
+++ b/runtime/syntax/debcopyright.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Debian copyright file
" Maintainer: Debian Vim Maintainers
-" Last Change: 2023 Jan 16
+" Last Change: 2024 Jul 28
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcopyright.vim
" Standard syntax initialization
@@ -15,7 +15,7 @@ set cpo&vim
syn case match
syn match debcopyrightUrl "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
-syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-Excluded\%(-[-a-zA-Z0-9]\+\)\=\): *"
+syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-\%(Excluded\|Included\)\%(-[-a-zA-Z0-9]\+\)\=\): *"
syn match debcopyrightEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
syn match debcopyrightEmail "<.\{-}>"
syn match debcopyrightComment "^#.*$" contains=@Spell
diff --git a/runtime/syntax/dockerfile.vim b/runtime/syntax/dockerfile.vim
index ce52e69..6ec71fc 100644
--- a/runtime/syntax/dockerfile.vim
+++ b/runtime/syntax/dockerfile.vim
@@ -1,6 +1,6 @@
" dockerfile.vim - Syntax highlighting for Dockerfiles
" Maintainer: Honza Pokorny <https://honza.ca>
-" Last Change: 2020 Feb 11
+" Last Change: 2024 Jul 03
" License: BSD
" https://docs.docker.com/engine/reference/builder/
@@ -34,7 +34,7 @@ syntax region dockerfileJSON contained keepend start=/\v\[/ skip=/\v\\\_./ end
syntax region dockerfileShell contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=@Shell
syntax region dockerfileValue contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=dockerfileString
-syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/
+syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/ contains=@Spell
set commentstring=#\ %s
hi def link dockerfileString String
diff --git a/runtime/syntax/dosbatch.vim b/runtime/syntax/dosbatch.vim
index 5560199..0c3e99b 100644
--- a/runtime/syntax/dosbatch.vim
+++ b/runtime/syntax/dosbatch.vim
@@ -3,6 +3,7 @@
" Maintainer: Mike Williams <mrmrdubya@gmail.com>
" Filenames: *.bat
" Last Change: 3rd February 2024
+" 2024 Aug 14 by Vim Project: improve syntax (#15453)
"
" Options Flags:
" dosbatch_cmdextversion - 1 = Windows NT, 2 = Windows 2000 [default]
@@ -45,7 +46,7 @@ syn match dosbatchString "\<echo\([^)>|]\|\^\@<=[)>|]\)*"lc=4 contains=dosbatchV
syn match dosbatchEchoOperator "\<echo\s\+\(on\|off\)\s*$"lc=4
" For embedded commands
-syn match dosbatchCmd "(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator
+syn match dosbatchCmd "(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator,dosbatchIfOperator
" Numbers - surround with ws to not include in dir and filenames
syn match dosbatchInteger "[[:space:]=(/:,!~-]\d\+"lc=1
@@ -74,7 +75,7 @@ syn match dosbatchSet "\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatc
" Args to bat files and for loops, etc
syn match dosbatchArgument "%\(\d\|\*\)"
-syn match dosbatchArgument "%[a-z]\>"
+syn match dosbatchArgument "%%[a-z]\>"
if dosbatch_cmdextversion == 1
syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
else
@@ -102,9 +103,11 @@ else
syn match dosbatchColonCommentErr contained "\s*:\s*:.*$"
endif
syn match dosbatchColonCommentErr contained "\s*:\s*:[^)]*\(\(\n\s*\)\?)\)\@="
-syn region dosbatchCodeBlock transparent start=+(+ end=+)+ contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator,@dosbatchCodeBlockComment,dosbatchColonCommentErr,dosbatchCodeBlock
+syn region dosbatchCodeBlock transparent start=+(+ end=+)+ contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator,dosbatchIfOperator,@dosbatchCodeBlockComment,dosbatchColonCommentErr,dosbatchCodeBlock
syn match dosbatchCodeBlockErr ")"
+syn sync match dosbatchSyncCodeBlock grouphere NONE "^)\s*$"
+
syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir
syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy
syn keyword dosbatchImplicit date del dir diskcomp diskcopy doskey echo endlocal
diff --git a/runtime/syntax/dune.vim b/runtime/syntax/dune.vim
index b425405..3cfb47f 100644
--- a/runtime/syntax/dune.vim
+++ b/runtime/syntax/dune.vim
@@ -4,6 +4,7 @@
" Anton Kochkov <anton.kochkov@gmail.com>
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
+" 2023 Nov 24 - Add end-of-line strings (Samuel Hym)
" 2019 Feb 27 - Add newer keywords to the syntax (Simon Cruanes)
" 2018 May 8 - Check current_syntax (Kawahara Satoru)
" 2018 Mar 29 - Extend jbuild syntax with more keywords (Petter A. Urkedal)
@@ -38,6 +39,8 @@ syn keyword lispFunc ignore-stdout ignore-stderr ignore-outputs
syn keyword lispFunc with-stdout-to with-stderr-to with-outputs-to
syn keyword lispFunc write-file system bash
+syn region lispString start=+"\\[>|]+ end=+$+ contains=@Spell
+
syn cluster lispBaseListCluster add=duneVar
syn match duneVar '\${[@<^]}' containedin=lispSymbol
syn match duneVar '\${\k\+\(:\k\+\)\?}' containedin=lispSymbol
diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim
index 91150bc..64d5bee 100644
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -2,8 +2,8 @@
" Language: fstab file
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
-" Last Change: 2023 Feb 19
-" Version: 1.6.3
+" Last Change: 2024 Jul 11
+" Version: 1.6.4
"
" Credits:
" David Necas (Yeti) <yeti@physics.muni.cz>
@@ -35,7 +35,7 @@ syn match fsOperator /[,=:#]/
" Device
syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError
syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained
-syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs
+syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs tracefs overlay
syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel
syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID
syn keyword fsDeviceKeyword contained PARTLABEL nextgroup=fsDevicePARTLABEL
@@ -56,7 +56,7 @@ syn keyword fsMountPointKeyword contained none swap
" Type
syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
syn match fsTypeUnknown /\s\+\zs\w\+/ contained
-syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs
+syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs tracefs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs
" Options
" -------
@@ -80,10 +80,10 @@ syn match fsOptionsKeywords contained /\<x-systemd\.\%(device-bound\|automount\|
syn match fsOptionsKeywords contained /\<x-initrd\.mount/
syn match fsOptionsKeywords contained /\<cache=/ nextgroup=fsOptionsCache
-syn keyword fsOptionsCache yes no none strict loose fscache mmap
+syn keyword fsOptionsCache contained yes no none strict loose fscache mmap
syn match fsOptionsKeywords contained /\<dax=/ nextgroup=fsOptionsDax
-syn keyword fsOptionsDax inode never always
+syn keyword fsOptionsDax contained inode never always
syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsErrors
syn keyword fsOptionsErrors contained continue panic withdraw remount-ro recover zone-ro zone-offline repair
@@ -288,8 +288,15 @@ syn match fsOptionsKeywords contained /\<\%(atime_quantum\|preferred_slot\|local
syn keyword fsOptionsKeywords contained strictatime inode64
" Options: overlay
+syn match fsOptionsKeywords contained /\<\%(index\|uuid\|nfs_export\|metacopy\)=/ nextgroup=fsOptionsOverlayBool
+syn keyword fsOptionsOverlayBool contained on off
+syn match fsOptionsKeywords contained /\<\%(lowerdir\|upperdir\|workdir\)=/ nextgroup=fsOptionsOverlayDir
+syn match fsOptionsOverlayDir contained /[^,[:space:]]*/
syn match fsOptionsKeywords contained /\<redirect_dir=/ nextgroup=fsOptionsOverlayRedirectDir
syn keyword fsOptionsOverlayRedirectDir contained on follow off nofollow
+syn match fsOptionsKeywords contained /\<xino=/ nextgroup=fsOptionsOverlayXino
+syn keyword fsOptionsOverlayXino contained on off auto
+syn keyword fsOptionsKeywords contained userxattr volatile
" Options: proc
syn match fsOptionsKeywords contained /\<\%(hidepid\|subset\)=/ nextgroup=fsOptionsString
@@ -462,7 +469,10 @@ hi def link fsOptionsNumberOctal Number
hi def link fsOptionsNumberSigned Number
hi def link fsOptionsOcfs2Coherency String
hi def link fsOptionsOcfs2ResvLevel Number
+hi def link fsOptionsOverlayBool Boolean
+hi def link fsOptionsOverlayDir String
hi def link fsOptionsOverlayRedirectDir String
+hi def link fsOptionsOverlayXino String
hi def link fsOptionsQnx4Bitmap String
hi def link fsOptionsQnx6Hold String
hi def link fsOptionsQnx6Sync String
diff --git a/runtime/syntax/generator/Makefile b/runtime/syntax/generator/Makefile
index 3cf4b95..a7ccba3 100644
--- a/runtime/syntax/generator/Makefile
+++ b/runtime/syntax/generator/Makefile
@@ -1,5 +1,5 @@
VIM_SRCDIR = ../../../src
-RUN_VIM = $(VIM_SRCDIR)/vim -N -u NONE -i NONE -n
+RUN_VIMPROG = $(VIM_SRCDIR)/vim -N -u NONE -i NONE -n
REVISION ?= $(shell date +%Y-%m-%dT%H:%M:%S%:z)
SRC = $(VIM_SRCDIR)/eval.c $(VIM_SRCDIR)/ex_cmds.h $(VIM_SRCDIR)/ex_docmd.c \
@@ -15,13 +15,13 @@ generate: vim.vim
vim.vim: vim.vim.rc update_date.vim
@echo "Generating vim.vim ..."
@cp -f vim.vim.rc ../vim.vim
- @$(RUN_VIM) -S update_date.vim
+ @$(RUN_VIMPROG) -S update_date.vim
@echo "done."
vim.vim.rc: gen_syntax_vim.vim vim.vim.base $(SRC)
@echo "Generating vim.vim.rc ..."
@rm -f sanity_check.err generator.err
- @$(RUN_VIM) -S gen_syntax_vim.vim
+ @$(RUN_VIMPROG) -S gen_syntax_vim.vim
@if test -f sanity_check.err ; then \
echo ; \
echo "Sanity errors:" ; \
diff --git a/runtime/syntax/generator/gen_syntax_vim.vim b/runtime/syntax/generator/gen_syntax_vim.vim
index 8b76775..480038e 100644
--- a/runtime/syntax/generator/gen_syntax_vim.vim
+++ b/runtime/syntax/generator/gen_syntax_vim.vim
@@ -2,7 +2,7 @@
" Language: Vim script
" Maintainer: Hirohito Higashi (h_east)
" URL: https://github.com/vim-jp/syntax-vim-ex
-" Last Change: 2024 Apr 07
+" Last Change: 2024 Aug 23
" Version: 2.1.1
let s:keepcpo= &cpo
@@ -275,6 +275,8 @@ function! s:get_vim_command_type(cmd_name)
let menu_prefix = '^\%([acinostvx]\?\|tl\)'
let map_prefix = '^[acilnostvx]\?'
let exclude_list =<< trim EOL
+ 2match
+ 3match
Next
Print
X
@@ -283,6 +285,7 @@ function! s:get_vim_command_type(cmd_name)
augroup
autocmd
behave
+ call
catch
def
doautoall
@@ -297,10 +300,16 @@ function! s:get_vim_command_type(cmd_name)
enddef
endfunction
execute
+ final
+ for
function
insert
+ let
+ loadkeymap
map
mapclear
+ match
+ noremap
new
normal
popup
@@ -313,6 +322,8 @@ function! s:get_vim_command_type(cmd_name)
substitute
syntax
throw
+ unlet
+ unmap
var
vim9script
EOL
@@ -516,15 +527,15 @@ function! s:parse_vim_complete_name(li)
new
exec 'read ' . file_name
norm! gg
- exec '/^}\s*command_complete\[\]\s*=\s*$/+1;/^};/-1yank'
+ exec '/^static keyvalue_T command_complete_tab\[] =$/+1;/^};$/-1yank'
%delete _
put
- g!/^\s*{.*"\w\+"\s*}\s*,.*$/d
+ g!/^\s*KEYVALUE_ENTRY(/d
g/"custom\(list\)\?"/d
for line in getline(1, line('$'))
- let list = matchlist(line, '^\s*{.*"\(\w\+\)"\s*}\s*,')
+ let list = matchlist(line, '^\s*KEYVALUE_ENTRY(EXPAND_\w\+,\s*"\(\w\+\)"')
let item.name = list[1]
call add(a:li, copy(item))
endfor
diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base
index adfd68e..2624798 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -3,7 +3,7 @@
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
" URL: https://github.com/vim-jp/syntax-vim-ex
-" Last Change: 2024 Jun 17
+" Last Change: 2024 Aug 23
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
@@ -29,15 +29,13 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
-syn keyword vimCommand contained 2mat[ch] 3mat[ch]
-
" Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!"
syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
" vimOptions are caught only when contained in a vimSet {{{2
-" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
+" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
" vimOptions: These are the turn-off setting variants {{{2
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
@@ -46,7 +44,7 @@ syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue Di
" 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=''
+" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
" term key codes
syn keyword vimOption 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 vimOption contained "t_%1"
@@ -79,7 +77,11 @@ syn case match
"--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1
-" Set up folding commands for this syntax highlighting file {{{2
+" Set up commands for this syntax highlighting file {{{2
+
+com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
+com! -nargs=* VimL execute <q-args> s:vim9script ? "contained" : ""
+
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
if g:vimsyn_folding =~# 'a'
com! -nargs=* VimFolda <args> fold
@@ -162,6 +164,14 @@ else
let s:vimsyn_maxlines= 60
endif
+" Nulls {{{2
+" =====
+Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string
+
+" Booleans {{{2
+" ========
+Vim9 syn keyword vim9Boolean true false
+
" Numbers {{{2
" =======
syn case ignore
@@ -175,7 +185,8 @@ syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSub
syn case match
" All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vim9CmdList contains=vim9Const,vim9Final,vim9For,vim9Var
syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
@@ -186,7 +197,8 @@ syn match vimVar "\s\zs&t_k;"
syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
syn keyword vimCommand contained in
-syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
+syn cluster vimExprList contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
+syn cluster vim9ExprList contains=vim9Boolean,vim9Null
" Insertions And Appends: insert append {{{2
" (buftype != nofile test avoids having append, change, insert show up in the command window)
@@ -206,6 +218,10 @@ syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vi
syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
syn keyword vimBehaveModel contained mswin xterm
+" Call {{{2
+" ====
+syn match vimCall "\<call\=\>" skipwhite nextgroup=vimFunc
+
" Exception Handling {{{2
syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
@@ -240,8 +256,8 @@ syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBan
" Operators: {{{2
" =========
-syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
-syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
+syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
+syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
@@ -256,8 +272,8 @@ syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFunc
syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
-syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
-syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
+syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet
+syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For
syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
@@ -277,19 +293,19 @@ syn keyword vimFuncKey contained fu[nction]
syn keyword vimDefKey contained def
syn keyword vimMethodName contained empty len string
-syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
-syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
+syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue
+syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment,vimFuncParamEquals
syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
-syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
+syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
-syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
-syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
+syn region vimFuncBody contained start="^.\=" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn region vimDefBody contained start="^.\=" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
-syn match vimEndfunction "\<endf\%[unction]\>"
-syn match vimEnddef "\<enddef\>"
+syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
syn region vimFuncFold start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
@@ -302,9 +318,9 @@ syn match vimFuncBlank contained "\s\+"
" Types: {{{2
" =====
-" vimTypes : new for vim9
-syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
-syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
+
+syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
+syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
syn keyword vimType contained any blob bool channel float job number string void
@@ -331,7 +347,7 @@ else
endif
syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
-syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
+syn region vimLoadkeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
" Special Filenames, Modifiers, Extension Removal: {{{2
" ===============================================
@@ -379,35 +395,26 @@ if get(g:, "vimsyn_comment_strings", 1)
endif
if s:vim9script
- syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
- syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
- syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
- " Vim9 comments - TODO: might be highlighted while they don't work
- syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
- syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
- syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
- " Vim9 comment inside expression
- " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
- " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
- " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
-
syn cluster vimComment contains=vim9Comment
else
- syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
- syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
- syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
- " Vim9 comments - TODO: might be highlighted while they don't work
- syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
- " Vim9 comment inside expression
- syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
-
syn cluster vimComment contains=vimComment
endif
+VimL syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+VimL syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
+VimL syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
+" Vim9 comments - TODO: might be highlighted while they don't work
+Vim9 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+Vim9 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
+Vim9 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
+" Vim9 comment inside expression
+Vim9 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
+Vim9 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
+Vim9 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
+
+syn match vim9CommentError contained "#.*"
+syn match vimCommentError contained +".*+
+
" Environment Variables: {{{2
" =====================
syn match vimEnvvar "\$\I\i*"
@@ -434,11 +441,12 @@ syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1
syn match vimEscape contained "\\<" contains=vimNotation
syn match vimEscape contained "\\<\*[^>]*>\=>"
-syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
-syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
+syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation
+syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation
syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
syn match vimStringInterpolationBrace contained "{{"
syn match vimStringInterpolationBrace contained "}}"
+syn cluster vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace
" Substitutions: {{{2
" =============
@@ -498,28 +506,45 @@ 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 region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,@vimComment,vimSetString,vimSetMod
-syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
-syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
+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 vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap
+syn keyword vimSetAll contained all nextgroup=vimSetMod
+syn keyword vimSetTermcap contained termcap
+syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
syn match vimSetSep contained "[,:]"
-syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
+syn match vimSetMod contained "\a\@1<=\%(&vim\=\|[!&?<]\)"
-" Let And Var: {{{2
-" ===========
-syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
-syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
-syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
+" Variable Declarations: {{{2
+" =====================
+VimL syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
+VimL syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimVarList
+syn region vimVarList contained start="\[" end="]" contains=vimVar,@vimContinue
-syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
+VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
-VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' extend
-syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
+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
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' contains=@vimStringInterpolation extend
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' contains=@vimStringInterpolation extend
+
+Vim9 syn keyword vim9Const const skipwhite nextgroup=vim9Variable,vim9VariableList
+Vim9 syn keyword vim9Final final skipwhite nextgroup=vim9Variable,vim9VariableList
+Vim9 syn keyword vim9Var var skipwhite nextgroup=vim9Variable,vim9VariableList
+
+syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vimTypeSep,vimLetHereDoc
+syn region vim9VariableList contained start="\[" end="]" contains=vim9Variable,@vimContinue
" For: {{{2
" ===
-syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
+if s:vim9script
+ syn keyword vim9For for skipwhite nextgroup=vim9Variable,vim9VariableList
+else
+ syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
+endif
" Abbreviations: {{{2
" =============
@@ -561,12 +586,14 @@ syn region vimExecute matchgroup=vimCommand start="\<exe\%[cute]\>" skip=+\\|\|\
" Maps: {{{2
" ====
-syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
-syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
-" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
+" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
+syn match vimMap "\<map\>" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword vimMap no[remap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
-syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
-" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
+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 vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
@@ -632,6 +659,8 @@ syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\
syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vimMethodName
syn keyword vimFuncEcho contained ec ech echo
+syn match vimMap "\<map\%(\s\+(\)\@=" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+
" User Command Highlighting: {{{2
syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
@@ -649,6 +678,15 @@ endif
syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
+" Match: {{{2
+" =====
+syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
+syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
+syn case ignore
+syn keyword vimMatchNone contained none
+syn case match
+syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
+
" Norm: {{{2
" ====
syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
@@ -824,13 +862,9 @@ syn match vimCtrlChar "[- -]"
" Beginners - Patterns that involve ^ {{{2
" =========
-if s:vim9script
- syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
- syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
-else
- syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
- syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
-endif
+Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
+VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+
syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
@@ -898,12 +932,16 @@ if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimLuaRegion
exe "syn include @vimLuaScript ".s:luapath
- VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
- VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+^\z(\s*\)lua\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+^\z(\s*\)lua\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+^\.$+ contains=@vimLuaScript
syn cluster vimFuncBodyList add=vimLuaRegion
else
- syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)lua\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+lua\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)lua\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+lua\s*<<\s*$+ end=+^\.$+
endif
unlet s:luapath
@@ -921,12 +959,16 @@ if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimPerlRegion
exe "syn include @vimPerlScript ".s:perlpath
- VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
- VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
syn cluster vimFuncBodyList add=vimPerlRegion
else
- syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+^\.$+
endif
unlet s:perlpath
@@ -944,12 +986,16 @@ if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
syn cluster vimFuncBodyList add=vimRubyRegion
unlet! b:current_syntax
exe "syn include @vimRubyScript ".s:rubypath
- VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
- syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub\%[y]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub\%[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
syn cluster vimFuncBodyList add=vimRubyRegion
else
- syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+rub\%[y]\s*<<\s*\z(\S.*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+rub\%[y]\s*<<\s*$+ end=+^\.$+
endif
unlet s:rubypath
@@ -967,14 +1013,18 @@ if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimPythonRegion
exe "syn include @vimPythonScript ".s:pythonpath
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\z(\S\+\)+ end=+^\z1$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*$+ end=+^\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S\+\)+ end=+^\z1$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=$+ end=+^\.$+ contains=@vimPythonScript
syn cluster vimFuncBodyList add=vimPythonRegion
else
- syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+py\%[thon][3x]\=\s*<<\s*\z(\S\+\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+py\%[thon][3x]\=\s*<<\s*$+ end=+^\.$+
endif
unlet s:pythonpath
@@ -999,17 +1049,23 @@ if s:trytcl
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimTclRegion
exe "syn include @vimTclScript ".s:tclpath
- VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
- VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+ contains=@vimTclScript
syn cluster vimFuncBodyList add=vimTclScript
else
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+
endif
unlet s:tclpath
else
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+
endif
unlet s:trytcl
@@ -1030,12 +1086,16 @@ if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
exe "syn include @vimMzSchemeScript ".s:mzschemepath
let &isk= s:iskKeep
unlet s:iskKeep
- VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
- VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+^\.$+ contains=@vimMzSchemeScript
syn cluster vimFuncBodyList add=vimMzSchemeRegion
else
- syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+^\.$+
endif
unlet s:mzschemepath
@@ -1073,7 +1133,6 @@ if !exists("skip_vim_syntax_inits")
hi def link vimBufnrWarn vimWarn
endif
- hi def link vim9Vim9ScriptArg Special
hi def link vimAbb vimCommand
hi def link vimAddress vimMark
hi def link vimAugroupBang vimBang
@@ -1087,20 +1146,20 @@ if !exists("skip_vim_syntax_inits")
hi def link vimBehaveModel vimBehave
hi def link vimBehave vimCommand
hi def link vimBracket Delimiter
+ hi def link vimCall vimCommand
hi def link vimCatch vimCommand
hi def link vimCmplxRepeat SpecialChar
hi def link vimCommand Statement
hi def link vimComment Comment
- hi def link vim9Comment Comment
+ hi def link vimCommentError vimError
hi def link vimCommentString vimString
hi def link vimCommentTitle PreProc
- hi def link vim9CommentTitle PreProc
hi def link vimCondHL vimCommand
hi def link vimConst vimCommand
hi def link vimContinue Special
hi def link vimContinueComment vimComment
hi def link vimCtrlChar SpecialChar
- hi def link vimDefComment vimComment
+ hi def link vimDefComment vim9Comment
hi def link vimDefKey vimCommand
hi def link vimDefParam vimVar
hi def link vimEcho vimCommand
@@ -1161,13 +1220,15 @@ if !exists("skip_vim_syntax_inits")
hi def link vimLetHereDocStop Special
hi def link vimLetRegister Special
hi def link vimLineComment vimComment
- hi def link vim9LineComment vimComment
hi def link vimMapBang vimBang
hi def link vimMapModKey vimFuncSID
hi def link vimMapMod vimBracket
hi def link vimMap vimCommand
hi def link vimMark Number
hi def link vimMarkNumber vimNumber
+ hi def link vimMatch vimCommand
+ hi def link vimMatchGroup vimGroup
+ hi def link vimMatchNone vimGroup
hi def link vimMenuBang vimBang
hi def link vimMenuClear Special
hi def link vimMenuMod vimMapMod
@@ -1201,10 +1262,13 @@ if !exists("skip_vim_syntax_inits")
hi def link vimSearchDelim Statement
hi def link vimSearch vimString
hi def link vimSep Delimiter
+ hi def link vimSet vimCommand
+ hi def link vimSetAll vimOption
+ hi def link vimSetBang vimBang
hi def link vimSetMod vimOption
- hi def link vimSetSep Statement
+ hi def link vimSetSep vimSep
hi def link vimSetString vimString
- hi def link vim9Vim9Script vimCommand
+ hi def link vimSetTermcap vimOption
hi def link vimShebang PreProc
hi def link vimSleep vimCommand
hi def link vimSleepArg Constant
@@ -1265,6 +1329,20 @@ if !exists("skip_vim_syntax_inits")
hi def link vimUserFunc Normal
hi def link vimVar Identifier
hi def link vimWarn WarningMsg
+
+ hi def link vim9Boolean Boolean
+ hi def link vim9Comment Comment
+ hi def link vim9CommentError vimError
+ hi def link vim9CommentTitle PreProc
+ hi def link vim9Const vimCommand
+ hi def link vim9Final vimCommand
+ hi def link vim9For vimCommand
+ hi def link vim9LineComment vimComment
+ hi def link vim9Null Constant
+ hi def link vim9Var vimCommand
+ hi def link vim9Variable vimVar
+ hi def link vim9Vim9Script vimCommand
+ hi def link vim9Vim9ScriptArg Special
endif
" Current Syntax Variable: {{{2
@@ -1272,6 +1350,8 @@ let b:current_syntax = "vim"
" ---------------------------------------------------------------------
" Cleanup: {{{1
+delc Vim9
+delc VimL
delc VimFolda
delc VimFoldf
delc VimFoldh
diff --git a/runtime/syntax/glsl.vim b/runtime/syntax/glsl.vim
new file mode 100644
index 0000000..06ffcba
--- /dev/null
+++ b/runtime/syntax/glsl.vim
@@ -0,0 +1,752 @@
+" Language: OpenGL Shading Language
+" Maintainer: Gregory Anders <greg@gpanders.com>
+" Last Modified: 2024 Jul 21
+" Upstream: https://github.com/tikhomirov/vim-glsl
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Statements
+syn keyword glslConditional if else switch case default
+syn keyword glslRepeat for while do
+syn keyword glslStatement discard return break continue
+
+" Comments
+syn keyword glslTodo contained TODO FIXME XXX NOTE
+syn region glslCommentL start="//" skip="\\$" end="$" keepend contains=glslTodo,@Spell
+syn region glslComment matchgroup=glslCommentStart start="/\*" end="\*/" extend contains=glslTodo,@Spell
+
+" Preprocessor
+syn region glslPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|else\|elif\|endif\)" skip="\\$" end="$" keepend
+syn region glslDefine start="^\s*#\s*\(define\|undef\)" skip="\\$" end="$" keepend
+syn keyword glslTokenConcat ##
+syn keyword glslPredefinedMacro __LINE__ __FILE__ __VERSION__ GL_ES
+syn region glslPreProc start="^\s*#\s*\(error\|pragma\|extension\|version\|line\)" skip="\\$" end="$" keepend
+syn region glslInclude start="^\s*#\s*include" skip="\\$" end="$" keepend
+
+" Folding Blocks
+syn region glslCurlyBlock start="{" end="}" transparent fold
+syn region glslParenBlock start="(" end=")" transparent fold
+
+" Boolean Constants
+syn keyword glslBoolean true false
+
+" Integer Numbers
+syn match glslDecimalInt display "\<\(0\|[1-9]\d*\)[uU]\?"
+syn match glslOctalInt display "\<0\o\+[uU]\?"
+syn match glslHexInt display "\<0[xX]\x\+[uU]\?"
+
+" Float Numbers
+syn match glslFloat display "\<\d\+\.\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\="
+syn match glslFloat display "\<\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\="
+syn match glslFloat display "\<\d\+[eE][+-]\=\d\+\(lf\|LF\|f\|F\)\="
+syn match glslFloat display "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\="
+
+" Swizzles
+syn match glslSwizzle display /\.[xyzw]\{1,4\}\>/
+syn match glslSwizzle display /\.[rgba]\{1,4\}\>/
+syn match glslSwizzle display /\.[stpq]\{1,4\}\>/
+
+" Structure
+syn keyword glslStructure struct nextgroup=glslIdentifier skipwhite skipempty
+
+syn match glslIdentifier contains=glslIdentifierPrime "\%([a-zA-Z_]\)\%([a-zA-Z0-9_]\)*" display contained
+
+" Types
+syn keyword glslType accelerationStructureEXT
+syn keyword glslType atomic_uint
+syn keyword glslType bool
+syn keyword glslType bvec2
+syn keyword glslType bvec3
+syn keyword glslType bvec4
+syn keyword glslType dmat2
+syn keyword glslType dmat2x2
+syn keyword glslType dmat2x3
+syn keyword glslType dmat2x4
+syn keyword glslType dmat3
+syn keyword glslType dmat3x2
+syn keyword glslType dmat3x3
+syn keyword glslType dmat3x4
+syn keyword glslType dmat4
+syn keyword glslType dmat4x2
+syn keyword glslType dmat4x3
+syn keyword glslType dmat4x4
+syn keyword glslType double
+syn keyword glslType dvec2
+syn keyword glslType dvec3
+syn keyword glslType dvec4
+syn keyword glslType float
+syn keyword glslType iimage1D
+syn keyword glslType iimage1DArray
+syn keyword glslType iimage2D
+syn keyword glslType iimage2DArray
+syn keyword glslType iimage2DMS
+syn keyword glslType iimage2DMSArray
+syn keyword glslType iimage2DRect
+syn keyword glslType iimage3D
+syn keyword glslType iimageBuffer
+syn keyword glslType iimageCube
+syn keyword glslType iimageCubeArray
+syn keyword glslType image1D
+syn keyword glslType image1DArray
+syn keyword glslType image2D
+syn keyword glslType image2DArray
+syn keyword glslType image2DMS
+syn keyword glslType image2DMSArray
+syn keyword glslType image2DRect
+syn keyword glslType image3D
+syn keyword glslType imageBuffer
+syn keyword glslType imageCube
+syn keyword glslType imageCubeArray
+syn keyword glslType int
+syn keyword glslType isampler1D
+syn keyword glslType isampler1DArray
+syn keyword glslType isampler2D
+syn keyword glslType isampler2DArray
+syn keyword glslType isampler2DMS
+syn keyword glslType isampler2DMSArray
+syn keyword glslType isampler2DRect
+syn keyword glslType isampler3D
+syn keyword glslType isamplerBuffer
+syn keyword glslType isamplerCube
+syn keyword glslType isamplerCubeArray
+syn keyword glslType ivec2
+syn keyword glslType ivec3
+syn keyword glslType ivec4
+syn keyword glslType mat2
+syn keyword glslType mat2x2
+syn keyword glslType mat2x3
+syn keyword glslType mat2x4
+syn keyword glslType mat3
+syn keyword glslType mat3x2
+syn keyword glslType mat3x3
+syn keyword glslType mat3x4
+syn keyword glslType mat4
+syn keyword glslType mat4x2
+syn keyword glslType mat4x3
+syn keyword glslType mat4x4
+syn keyword glslType rayQueryEXT
+syn keyword glslType sampler1D
+syn keyword glslType sampler1DArray
+syn keyword glslType sampler1DArrayShadow
+syn keyword glslType sampler1DShadow
+syn keyword glslType sampler2D
+syn keyword glslType sampler2DArray
+syn keyword glslType sampler2DArrayShadow
+syn keyword glslType sampler2DMS
+syn keyword glslType sampler2DMSArray
+syn keyword glslType sampler2DRect
+syn keyword glslType sampler2DRectShadow
+syn keyword glslType sampler2DShadow
+syn keyword glslType sampler3D
+syn keyword glslType samplerBuffer
+syn keyword glslType samplerCube
+syn keyword glslType samplerCubeArray
+syn keyword glslType samplerCubeArrayShadow
+syn keyword glslType samplerCubeShadow
+syn keyword glslType uimage1D
+syn keyword glslType uimage1DArray
+syn keyword glslType uimage2D
+syn keyword glslType uimage2DArray
+syn keyword glslType uimage2DMS
+syn keyword glslType uimage2DMSArray
+syn keyword glslType uimage2DRect
+syn keyword glslType uimage3D
+syn keyword glslType uimageBuffer
+syn keyword glslType uimageCube
+syn keyword glslType uimageCubeArray
+syn keyword glslType uint
+syn keyword glslType usampler1D
+syn keyword glslType usampler1DArray
+syn keyword glslType usampler2D
+syn keyword glslType usampler2DArray
+syn keyword glslType usampler2DMS
+syn keyword glslType usampler2DMSArray
+syn keyword glslType usampler2DRect
+syn keyword glslType usampler3D
+syn keyword glslType usamplerBuffer
+syn keyword glslType usamplerCube
+syn keyword glslType usamplerCubeArray
+syn keyword glslType uvec2
+syn keyword glslType uvec3
+syn keyword glslType uvec4
+syn keyword glslType vec2
+syn keyword glslType vec3
+syn keyword glslType vec4
+syn keyword glslType void
+
+" Qualifiers
+syn keyword glslQualifier align
+syn keyword glslQualifier attribute
+syn keyword glslQualifier binding
+syn keyword glslQualifier buffer
+syn keyword glslQualifier callableDataEXT
+syn keyword glslQualifier callableDataInEXT
+syn keyword glslQualifier ccw
+syn keyword glslQualifier centroid
+syn keyword glslQualifier centroid varying
+syn keyword glslQualifier coherent
+syn keyword glslQualifier column_major
+syn keyword glslQualifier const
+syn keyword glslQualifier cw
+syn keyword glslQualifier depth_any
+syn keyword glslQualifier depth_greater
+syn keyword glslQualifier depth_less
+syn keyword glslQualifier depth_unchanged
+syn keyword glslQualifier early_fragment_tests
+syn keyword glslQualifier equal_spacing
+syn keyword glslQualifier flat
+syn keyword glslQualifier fractional_even_spacing
+syn keyword glslQualifier fractional_odd_spacing
+syn keyword glslQualifier highp
+syn keyword glslQualifier hitAttributeEXT
+syn keyword glslQualifier in
+syn keyword glslQualifier index
+syn keyword glslQualifier inout
+syn keyword glslQualifier invariant
+syn keyword glslQualifier invocations
+syn keyword glslQualifier isolines
+syn keyword glslQualifier layout
+syn keyword glslQualifier line_strip
+syn keyword glslQualifier lines
+syn keyword glslQualifier lines_adjacency
+syn keyword glslQualifier local_size_x
+syn keyword glslQualifier local_size_y
+syn keyword glslQualifier local_size_z
+syn keyword glslQualifier location
+syn keyword glslQualifier lowp
+syn keyword glslQualifier max_vertices
+syn keyword glslQualifier mediump
+syn keyword glslQualifier nonuniformEXT
+syn keyword glslQualifier noperspective
+syn keyword glslQualifier offset
+syn keyword glslQualifier origin_upper_left
+syn keyword glslQualifier out
+syn keyword glslQualifier packed
+syn keyword glslQualifier patch
+syn keyword glslQualifier pixel_center_integer
+syn keyword glslQualifier point_mode
+syn keyword glslQualifier points
+syn keyword glslQualifier precise
+syn keyword glslQualifier precision
+syn keyword glslQualifier quads
+syn keyword glslQualifier r11f_g11f_b10f
+syn keyword glslQualifier r16
+syn keyword glslQualifier r16_snorm
+syn keyword glslQualifier r16f
+syn keyword glslQualifier r16i
+syn keyword glslQualifier r16ui
+syn keyword glslQualifier r32f
+syn keyword glslQualifier r32i
+syn keyword glslQualifier r32ui
+syn keyword glslQualifier r8
+syn keyword glslQualifier r8_snorm
+syn keyword glslQualifier r8i
+syn keyword glslQualifier r8ui
+syn keyword glslQualifier rayPayloadEXT
+syn keyword glslQualifier rayPayloadInEXT
+syn keyword glslQualifier readonly
+syn keyword glslQualifier restrict
+syn keyword glslQualifier rg16
+syn keyword glslQualifier rg16_snorm
+syn keyword glslQualifier rg16f
+syn keyword glslQualifier rg16i
+syn keyword glslQualifier rg16ui
+syn keyword glslQualifier rg32f
+syn keyword glslQualifier rg32i
+syn keyword glslQualifier rg32ui
+syn keyword glslQualifier rg8
+syn keyword glslQualifier rg8_snorm
+syn keyword glslQualifier rg8i
+syn keyword glslQualifier rg8ui
+syn keyword glslQualifier rgb10_a2
+syn keyword glslQualifier rgb10_a2ui
+syn keyword glslQualifier rgba16
+syn keyword glslQualifier rgba16_snorm
+syn keyword glslQualifier rgba16f
+syn keyword glslQualifier rgba16i
+syn keyword glslQualifier rgba16ui
+syn keyword glslQualifier rgba32f
+syn keyword glslQualifier rgba32i
+syn keyword glslQualifier rgba32ui
+syn keyword glslQualifier rgba8
+syn keyword glslQualifier rgba8_snorm
+syn keyword glslQualifier rgba8i
+syn keyword glslQualifier rgba8ui
+syn keyword glslQualifier row_major
+syn keyword glslQualifier sample
+syn keyword glslQualifier shaderRecordEXT
+syn keyword glslQualifier shared
+syn keyword glslQualifier smooth
+syn keyword glslQualifier std140
+syn keyword glslQualifier std430
+syn keyword glslQualifier stream
+syn keyword glslQualifier triangle_strip
+syn keyword glslQualifier triangles
+syn keyword glslQualifier triangles_adjacency
+syn keyword glslQualifier uniform
+syn keyword glslQualifier varying
+syn keyword glslQualifier vertices
+syn keyword glslQualifier volatile
+syn keyword glslQualifier writeonly
+syn keyword glslQualifier xfb_buffer
+syn keyword glslQualifier xfb_offset
+syn keyword glslQualifier xfb_stride
+
+" Built-in Constants
+syn keyword glslBuiltinConstant gl_CullDistance
+syn keyword glslBuiltinConstant gl_HitKindBackFacingTriangleEXT
+syn keyword glslBuiltinConstant gl_HitKindFrontFacingTriangleEXT
+syn keyword glslBuiltinConstant gl_MaxAtomicCounterBindings
+syn keyword glslBuiltinConstant gl_MaxAtomicCounterBufferSize
+syn keyword glslBuiltinConstant gl_MaxClipDistances
+syn keyword glslBuiltinConstant gl_MaxClipPlanes
+syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxCombinedClipAndCullDistances
+syn keyword glslBuiltinConstant gl_MaxCombinedImageUniforms
+syn keyword glslBuiltinConstant gl_MaxCombinedImageUnitsAndFragmentOutputs
+syn keyword glslBuiltinConstant gl_MaxCombinedShaderOutputResources
+syn keyword glslBuiltinConstant gl_MaxCombinedTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxComputeAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxComputeAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxComputeImageUniforms
+syn keyword glslBuiltinConstant gl_MaxComputeTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxComputeUniformComponents
+syn keyword glslBuiltinConstant gl_MaxComputeWorkGroupCount
+syn keyword glslBuiltinConstant gl_MaxComputeWorkGroupSize
+syn keyword glslBuiltinConstant gl_MaxCullDistances
+syn keyword glslBuiltinConstant gl_MaxDrawBuffers
+syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxFragmentImageUniforms
+syn keyword glslBuiltinConstant gl_MaxFragmentInputComponents
+syn keyword glslBuiltinConstant gl_MaxFragmentInputVectors
+syn keyword glslBuiltinConstant gl_MaxFragmentUniformComponents
+syn keyword glslBuiltinConstant gl_MaxFragmentUniformVectors
+syn keyword glslBuiltinConstant gl_MaxGeometryAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxGeometryAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxGeometryImageUniforms
+syn keyword glslBuiltinConstant gl_MaxGeometryInputComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryOutputComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryOutputVertices
+syn keyword glslBuiltinConstant gl_MaxGeometryTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxGeometryTotalOutputComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryUniformComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryVaryingComponents
+syn keyword glslBuiltinConstant gl_MaxImageSamples
+syn keyword glslBuiltinConstant gl_MaxImageUnits
+syn keyword glslBuiltinConstant gl_MaxLights
+syn keyword glslBuiltinConstant gl_MaxPatchVertices
+syn keyword glslBuiltinConstant gl_MaxProgramTexelOffset
+syn keyword glslBuiltinConstant gl_MaxSamples
+syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxTessControlImageUniforms
+syn keyword glslBuiltinConstant gl_MaxTessControlInputComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxTessControlTotalOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlUniformComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationImageUniforms
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationInputComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationUniformComponents
+syn keyword glslBuiltinConstant gl_MaxTessGenLevel
+syn keyword glslBuiltinConstant gl_MaxTessPatchComponents
+syn keyword glslBuiltinConstant gl_MaxTextureCoords
+syn keyword glslBuiltinConstant gl_MaxTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxTextureUnits
+syn keyword glslBuiltinConstant gl_MaxTransformFeedbackBuffers
+syn keyword glslBuiltinConstant gl_MaxTransformFeedbackInterleavedComponents
+syn keyword glslBuiltinConstant gl_MaxVaryingComponents
+syn keyword glslBuiltinConstant gl_MaxVaryingFloats
+syn keyword glslBuiltinConstant gl_MaxVaryingVectors
+syn keyword glslBuiltinConstant gl_MaxVertexAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxVertexAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxVertexAttribs
+syn keyword glslBuiltinConstant gl_MaxVertexImageUniforms
+syn keyword glslBuiltinConstant gl_MaxVertexOutputComponents
+syn keyword glslBuiltinConstant gl_MaxVertexOutputVectors
+syn keyword glslBuiltinConstant gl_MaxVertexTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxVertexUniformComponents
+syn keyword glslBuiltinConstant gl_MaxVertexUniformVectors
+syn keyword glslBuiltinConstant gl_MaxViewports
+syn keyword glslBuiltinConstant gl_MinProgramTexelOffset
+syn keyword glslBuiltinConstant gl_RayFlagsCullBackFacingTrianglesEXT
+syn keyword glslBuiltinConstant gl_RayFlagsCullFrontFacingTrianglesEXT
+syn keyword glslBuiltinConstant gl_RayFlagsCullNoOpaqueEXT
+syn keyword glslBuiltinConstant gl_RayFlagsCullOpaqueEXT
+syn keyword glslBuiltinConstant gl_RayFlagsNoOpaqueEXT
+syn keyword glslBuiltinConstant gl_RayFlagsNoneEXT
+syn keyword glslBuiltinConstant gl_RayFlagsOpaqueEXT
+syn keyword glslBuiltinConstant gl_RayFlagsSkipClosestHitShaderEXT
+syn keyword glslBuiltinConstant gl_RayFlagsTerminateOnFirstHitEXT
+syn keyword glslBuiltinConstant gl_RayQueryCandidateIntersectionAABBEXT
+syn keyword glslBuiltinConstant gl_RayQueryCandidateIntersectionTriangleEXT
+syn keyword glslBuiltinConstant gl_RayQueryCommittedIntersectionGeneratedEXT
+syn keyword glslBuiltinConstant gl_RayQueryCommittedIntersectionNoneEXT
+syn keyword glslBuiltinConstant gl_RayQueryCommittedIntersectionTriangleEXT
+
+" Built-in Variables
+syn keyword glslBuiltinVariable gl_BackColor
+syn keyword glslBuiltinVariable gl_BackLightModelProduct
+syn keyword glslBuiltinVariable gl_BackLightProduct
+syn keyword glslBuiltinVariable gl_BackLightProduct
+syn keyword glslBuiltinVariable gl_BackMaterial
+syn keyword glslBuiltinVariable gl_BackSecondaryColor
+syn keyword glslBuiltinVariable gl_ClipDistance
+syn keyword glslBuiltinVariable gl_ClipPlane
+syn keyword glslBuiltinVariable gl_ClipVertex
+syn keyword glslBuiltinVariable gl_Color
+syn keyword glslBuiltinVariable gl_DepthRange
+syn keyword glslBuiltinVariable gl_EyePlaneQ
+syn keyword glslBuiltinVariable gl_EyePlaneR
+syn keyword glslBuiltinVariable gl_EyePlaneS
+syn keyword glslBuiltinVariable gl_EyePlaneT
+syn keyword glslBuiltinVariable gl_Fog
+syn keyword glslBuiltinVariable gl_FogCoord
+syn keyword glslBuiltinVariable gl_FogFragCoord
+syn keyword glslBuiltinVariable gl_FragColor
+syn keyword glslBuiltinVariable gl_FragCoord
+syn keyword glslBuiltinVariable gl_FragData
+syn keyword glslBuiltinVariable gl_FragDepth
+syn keyword glslBuiltinVariable gl_FrontColor
+syn keyword glslBuiltinVariable gl_FrontFacing
+syn keyword glslBuiltinVariable gl_FrontLightModelProduct
+syn keyword glslBuiltinVariable gl_FrontLightProduct
+syn keyword glslBuiltinVariable gl_FrontMaterial
+syn keyword glslBuiltinVariable gl_FrontSecondaryColor
+syn keyword glslBuiltinVariable gl_GeometryIndexEXT
+syn keyword glslBuiltinVariable gl_GlobalInvocationID
+syn keyword glslBuiltinVariable gl_HelperInvocation
+syn keyword glslBuiltinVariable gl_HitKindEXT
+syn keyword glslBuiltinVariable gl_HitTEXT
+syn keyword glslBuiltinVariable gl_IncomingRayFlagsEXT
+syn keyword glslBuiltinVariable gl_InstanceCustomIndexEXT
+syn keyword glslBuiltinVariable gl_InstanceID
+syn keyword glslBuiltinVariable gl_InstanceID
+syn keyword glslBuiltinVariable gl_InvocationID
+syn keyword glslBuiltinVariable gl_LaunchIDEXT
+syn keyword glslBuiltinVariable gl_LaunchSizeEXT
+syn keyword glslBuiltinVariable gl_Layer
+syn keyword glslBuiltinVariable gl_LightModel
+syn keyword glslBuiltinVariable gl_LightSource
+syn keyword glslBuiltinVariable gl_LocalInvocationID
+syn keyword glslBuiltinVariable gl_LocalInvocationIndex
+syn keyword glslBuiltinVariable gl_ModelViewMatrix
+syn keyword glslBuiltinVariable gl_ModelViewMatrixInverse
+syn keyword glslBuiltinVariable gl_ModelViewMatrixInverseTranspose
+syn keyword glslBuiltinVariable gl_ModelViewMatrixTranspose
+syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrix
+syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrixInverse
+syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrixInverseTranspose
+syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrixTranspose
+syn keyword glslBuiltinVariable gl_MultiTexCoord0
+syn keyword glslBuiltinVariable gl_MultiTexCoord1
+syn keyword glslBuiltinVariable gl_MultiTexCoord2
+syn keyword glslBuiltinVariable gl_MultiTexCoord3
+syn keyword glslBuiltinVariable gl_MultiTexCoord4
+syn keyword glslBuiltinVariable gl_MultiTexCoord5
+syn keyword glslBuiltinVariable gl_MultiTexCoord6
+syn keyword glslBuiltinVariable gl_MultiTexCoord7
+syn keyword glslBuiltinVariable gl_Normal
+syn keyword glslBuiltinVariable gl_NormalMatrix
+syn keyword glslBuiltinVariable gl_NormalScale
+syn keyword glslBuiltinVariable gl_NumSamples
+syn keyword glslBuiltinVariable gl_NumWorkGroups
+syn keyword glslBuiltinVariable gl_ObjectPlaneQ
+syn keyword glslBuiltinVariable gl_ObjectPlaneR
+syn keyword glslBuiltinVariable gl_ObjectPlaneS
+syn keyword glslBuiltinVariable gl_ObjectPlaneT
+syn keyword glslBuiltinVariable gl_ObjectRayDirectionEXT
+syn keyword glslBuiltinVariable gl_ObjectRayOriginEXT
+syn keyword glslBuiltinVariable gl_ObjectToWorld3x4EXT
+syn keyword glslBuiltinVariable gl_ObjectToWorldEXT
+syn keyword glslBuiltinVariable gl_PatchVerticesIn
+syn keyword glslBuiltinVariable gl_Point
+syn keyword glslBuiltinVariable gl_PointCoord
+syn keyword glslBuiltinVariable gl_PointSize
+syn keyword glslBuiltinVariable gl_Position
+syn keyword glslBuiltinVariable gl_PrimitiveID
+syn keyword glslBuiltinVariable gl_PrimitiveID
+syn keyword glslBuiltinVariable gl_PrimitiveIDIn
+syn keyword glslBuiltinVariable gl_ProjectionMatrix
+syn keyword glslBuiltinVariable gl_ProjectionMatrixInverse
+syn keyword glslBuiltinVariable gl_ProjectionMatrixInverseTranspose
+syn keyword glslBuiltinVariable gl_ProjectionMatrixTranspose
+syn keyword glslBuiltinVariable gl_RayTmaxEXT
+syn keyword glslBuiltinVariable gl_RayTminEXT
+syn keyword glslBuiltinVariable gl_SampleID
+syn keyword glslBuiltinVariable gl_SampleMask
+syn keyword glslBuiltinVariable gl_SampleMaskIn
+syn keyword glslBuiltinVariable gl_SamplePosition
+syn keyword glslBuiltinVariable gl_SecondaryColor
+syn keyword glslBuiltinVariable gl_TessCoord
+syn keyword glslBuiltinVariable gl_TessLevelInner
+syn keyword glslBuiltinVariable gl_TessLevelOuter
+syn keyword glslBuiltinVariable gl_TexCoord
+syn keyword glslBuiltinVariable gl_TextureEnvColor
+syn keyword glslBuiltinVariable gl_TextureMatrix
+syn keyword glslBuiltinVariable gl_TextureMatrixInverse
+syn keyword glslBuiltinVariable gl_TextureMatrixInverseTranspose
+syn keyword glslBuiltinVariable gl_TextureMatrixTranspose
+syn keyword glslBuiltinVariable gl_Vertex
+syn keyword glslBuiltinVariable gl_VertexID
+syn keyword glslBuiltinVariable gl_VertexIndex
+syn keyword glslBuiltinVariable gl_ViewportIndex
+syn keyword glslBuiltinVariable gl_WorkGroupID
+syn keyword glslBuiltinVariable gl_WorkGroupSize
+syn keyword glslBuiltinVariable gl_WorldRayDirectionEXT
+syn keyword glslBuiltinVariable gl_WorldRayOriginEXT
+syn keyword glslBuiltinVariable gl_WorldToObject3x4EXT
+syn keyword glslBuiltinVariable gl_WorldToObjectEXT
+syn keyword glslBuiltinVariable gl_in
+syn keyword glslBuiltinVariable gl_out
+
+" Built-in Functions
+syn keyword glslBuiltinFunction EmitStreamVertex
+syn keyword glslBuiltinFunction EmitVertex
+syn keyword glslBuiltinFunction EndPrimitive
+syn keyword glslBuiltinFunction EndStreamPrimitive
+syn keyword glslBuiltinFunction abs
+syn keyword glslBuiltinFunction acos
+syn keyword glslBuiltinFunction acosh
+syn keyword glslBuiltinFunction all
+syn keyword glslBuiltinFunction any
+syn keyword glslBuiltinFunction asin
+syn keyword glslBuiltinFunction asinh
+syn keyword glslBuiltinFunction atan
+syn keyword glslBuiltinFunction atanh
+syn keyword glslBuiltinFunction atomicAdd
+syn keyword glslBuiltinFunction atomicAnd
+syn keyword glslBuiltinFunction atomicCompSwap
+syn keyword glslBuiltinFunction atomicCounter
+syn keyword glslBuiltinFunction atomicCounterDecrement
+syn keyword glslBuiltinFunction atomicCounterIncrement
+syn keyword glslBuiltinFunction atomicExchange
+syn keyword glslBuiltinFunction atomicMax
+syn keyword glslBuiltinFunction atomicMin
+syn keyword glslBuiltinFunction atomicOr
+syn keyword glslBuiltinFunction atomicXor
+syn keyword glslBuiltinFunction barrier
+syn keyword glslBuiltinFunction bitCount
+syn keyword glslBuiltinFunction bitfieldExtract
+syn keyword glslBuiltinFunction bitfieldInsert
+syn keyword glslBuiltinFunction bitfieldReverse
+syn keyword glslBuiltinFunction ceil
+syn keyword glslBuiltinFunction clamp
+syn keyword glslBuiltinFunction cos
+syn keyword glslBuiltinFunction cosh
+syn keyword glslBuiltinFunction cross
+syn keyword glslBuiltinFunction dFdx
+syn keyword glslBuiltinFunction dFdxCoarse
+syn keyword glslBuiltinFunction dFdxFine
+syn keyword glslBuiltinFunction dFdy
+syn keyword glslBuiltinFunction dFdyCoarse
+syn keyword glslBuiltinFunction dFdyFine
+syn keyword glslBuiltinFunction degrees
+syn keyword glslBuiltinFunction determinant
+syn keyword glslBuiltinFunction distance
+syn keyword glslBuiltinFunction dot
+syn keyword glslBuiltinFunction equal
+syn keyword glslBuiltinFunction executeCallableEXT
+syn keyword glslBuiltinFunction exp
+syn keyword glslBuiltinFunction exp2
+syn keyword glslBuiltinFunction faceforward
+syn keyword glslBuiltinFunction findLSB
+syn keyword glslBuiltinFunction findMSB
+syn keyword glslBuiltinFunction floatBitsToInt
+syn keyword glslBuiltinFunction floatBitsToUint
+syn keyword glslBuiltinFunction floor
+syn keyword glslBuiltinFunction fma
+syn keyword glslBuiltinFunction fract
+syn keyword glslBuiltinFunction frexp
+syn keyword glslBuiltinFunction ftransform
+syn keyword glslBuiltinFunction fwidth
+syn keyword glslBuiltinFunction fwidthCoarse
+syn keyword glslBuiltinFunction fwidthFine
+syn keyword glslBuiltinFunction greaterThan
+syn keyword glslBuiltinFunction greaterThanEqual
+syn keyword glslBuiltinFunction groupMemoryBarrier
+syn keyword glslBuiltinFunction ignoreIntersectionEXT
+syn keyword glslBuiltinFunction imageAtomicAdd
+syn keyword glslBuiltinFunction imageAtomicAnd
+syn keyword glslBuiltinFunction imageAtomicCompSwap
+syn keyword glslBuiltinFunction imageAtomicExchange
+syn keyword glslBuiltinFunction imageAtomicMax
+syn keyword glslBuiltinFunction imageAtomicMin
+syn keyword glslBuiltinFunction imageAtomicOr
+syn keyword glslBuiltinFunction imageAtomicXor
+syn keyword glslBuiltinFunction imageLoad
+syn keyword glslBuiltinFunction imageSize
+syn keyword glslBuiltinFunction imageStore
+syn keyword glslBuiltinFunction imulExtended
+syn keyword glslBuiltinFunction intBitsToFloat
+syn keyword glslBuiltinFunction interpolateAtCentroid
+syn keyword glslBuiltinFunction interpolateAtOffset
+syn keyword glslBuiltinFunction interpolateAtSample
+syn keyword glslBuiltinFunction inverse
+syn keyword glslBuiltinFunction inversesqrt
+syn keyword glslBuiltinFunction isinf
+syn keyword glslBuiltinFunction isnan
+syn keyword glslBuiltinFunction ldexp
+syn keyword glslBuiltinFunction length
+syn keyword glslBuiltinFunction lessThan
+syn keyword glslBuiltinFunction lessThanEqual
+syn keyword glslBuiltinFunction log
+syn keyword glslBuiltinFunction log2
+syn keyword glslBuiltinFunction matrixCompMult
+syn keyword glslBuiltinFunction max
+syn keyword glslBuiltinFunction memoryBarrier
+syn keyword glslBuiltinFunction memoryBarrierAtomicCounter
+syn keyword glslBuiltinFunction memoryBarrierBuffer
+syn keyword glslBuiltinFunction memoryBarrierImage
+syn keyword glslBuiltinFunction memoryBarrierShared
+syn keyword glslBuiltinFunction min
+syn keyword glslBuiltinFunction mix
+syn keyword glslBuiltinFunction mod
+syn keyword glslBuiltinFunction modf
+syn keyword glslBuiltinFunction noise1
+syn keyword glslBuiltinFunction noise2
+syn keyword glslBuiltinFunction noise3
+syn keyword glslBuiltinFunction noise4
+syn keyword glslBuiltinFunction normalize
+syn keyword glslBuiltinFunction not
+syn keyword glslBuiltinFunction notEqual
+syn keyword glslBuiltinFunction outerProduct
+syn keyword glslBuiltinFunction packDouble2x32
+syn keyword glslBuiltinFunction packHalf2x16
+syn keyword glslBuiltinFunction packSnorm2x16
+syn keyword glslBuiltinFunction packSnorm4x8
+syn keyword glslBuiltinFunction packUnorm2x16
+syn keyword glslBuiltinFunction packUnorm4x8
+syn keyword glslBuiltinFunction pow
+syn keyword glslBuiltinFunction radians
+syn keyword glslBuiltinFunction rayQueryConfirmIntersectionEXT
+syn keyword glslBuiltinFunction rayQueryGenerateIntersectionEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionBarycentricsEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionCandidateAABBOpaqueEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionFrontFaceEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionGeometryIndexEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionInstanceCustomIndexEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionInstanceIdEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionObjectRayDirectionEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionObjectRayOriginEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionObjectToWorldEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionPrimitiveIndexEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionTEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionTypeEXT
+syn keyword glslBuiltinFunction rayQueryGetIntersectionWorldToObjectEXT
+syn keyword glslBuiltinFunction rayQueryGetRayFlagsEXT
+syn keyword glslBuiltinFunction rayQueryGetRayTMinEXT
+syn keyword glslBuiltinFunction rayQueryGetWorldRayDirectionEXT
+syn keyword glslBuiltinFunction rayQueryGetWorldRayOriginEXT
+syn keyword glslBuiltinFunction rayQueryInitializeEXT
+syn keyword glslBuiltinFunction rayQueryProceedEXT
+syn keyword glslBuiltinFunction rayQueryTerminateEXT
+syn keyword glslBuiltinFunction reflect
+syn keyword glslBuiltinFunction refract
+syn keyword glslBuiltinFunction reportIntersectionEXT
+syn keyword glslBuiltinFunction round
+syn keyword glslBuiltinFunction roundEven
+syn keyword glslBuiltinFunction shadow1D
+syn keyword glslBuiltinFunction shadow1DLod
+syn keyword glslBuiltinFunction shadow1DProj
+syn keyword glslBuiltinFunction shadow1DProjLod
+syn keyword glslBuiltinFunction shadow2D
+syn keyword glslBuiltinFunction shadow2DLod
+syn keyword glslBuiltinFunction shadow2DProj
+syn keyword glslBuiltinFunction shadow2DProjLod
+syn keyword glslBuiltinFunction sign
+syn keyword glslBuiltinFunction sin
+syn keyword glslBuiltinFunction sinh
+syn keyword glslBuiltinFunction smoothstep
+syn keyword glslBuiltinFunction sqrt
+syn keyword glslBuiltinFunction step
+syn keyword glslBuiltinFunction tan
+syn keyword glslBuiltinFunction tanh
+syn keyword glslBuiltinFunction terminateRayEXT
+syn keyword glslBuiltinFunction texelFetch
+syn keyword glslBuiltinFunction texelFetchOffset
+syn keyword glslBuiltinFunction texture
+syn keyword glslBuiltinFunction texture1D
+syn keyword glslBuiltinFunction texture1DLod
+syn keyword glslBuiltinFunction texture1DProj
+syn keyword glslBuiltinFunction texture1DProjLod
+syn keyword glslBuiltinFunction texture2D
+syn keyword glslBuiltinFunction texture2DLod
+syn keyword glslBuiltinFunction texture2DProj
+syn keyword glslBuiltinFunction texture2DProjLod
+syn keyword glslBuiltinFunction texture3D
+syn keyword glslBuiltinFunction texture3DLod
+syn keyword glslBuiltinFunction texture3DProj
+syn keyword glslBuiltinFunction texture3DProjLod
+syn keyword glslBuiltinFunction textureCube
+syn keyword glslBuiltinFunction textureCubeLod
+syn keyword glslBuiltinFunction textureGather
+syn keyword glslBuiltinFunction textureGatherOffset
+syn keyword glslBuiltinFunction textureGatherOffsets
+syn keyword glslBuiltinFunction textureGrad
+syn keyword glslBuiltinFunction textureGradOffset
+syn keyword glslBuiltinFunction textureLod
+syn keyword glslBuiltinFunction textureLodOffset
+syn keyword glslBuiltinFunction textureOffset
+syn keyword glslBuiltinFunction textureProj
+syn keyword glslBuiltinFunction textureProjGrad
+syn keyword glslBuiltinFunction textureProjGradOffset
+syn keyword glslBuiltinFunction textureProjLod
+syn keyword glslBuiltinFunction textureProjLodOffset
+syn keyword glslBuiltinFunction textureProjOffset
+syn keyword glslBuiltinFunction textureQueryLevels
+syn keyword glslBuiltinFunction textureQueryLod
+syn keyword glslBuiltinFunction textureSize
+syn keyword glslBuiltinFunction traceRayEXT
+syn keyword glslBuiltinFunction transpose
+syn keyword glslBuiltinFunction trunc
+syn keyword glslBuiltinFunction uaddCarry
+syn keyword glslBuiltinFunction uintBitsToFloat
+syn keyword glslBuiltinFunction umulExtended
+syn keyword glslBuiltinFunction unpackDouble2x32
+syn keyword glslBuiltinFunction unpackHalf2x16
+syn keyword glslBuiltinFunction unpackSnorm2x16
+syn keyword glslBuiltinFunction unpackSnorm4x8
+syn keyword glslBuiltinFunction unpackUnorm2x16
+syn keyword glslBuiltinFunction unpackUnorm4x8
+syn keyword glslBuiltinFunction usubBorrow
+
+hi def link glslConditional Conditional
+hi def link glslRepeat Repeat
+hi def link glslStatement Statement
+hi def link glslTodo Todo
+hi def link glslCommentL glslComment
+hi def link glslCommentStart glslComment
+hi def link glslComment Comment
+hi def link glslPreCondit PreCondit
+hi def link glslDefine Define
+hi def link glslTokenConcat glslPreProc
+hi def link glslPredefinedMacro Macro
+hi def link glslPreProc PreProc
+hi def link glslInclude Include
+hi def link glslBoolean Boolean
+hi def link glslDecimalInt glslInteger
+hi def link glslOctalInt glslInteger
+hi def link glslHexInt glslInteger
+hi def link glslInteger Number
+hi def link glslFloat Float
+hi def link glslIdentifierPrime glslIdentifier
+hi def link glslIdentifier Identifier
+hi def link glslStructure Structure
+hi def link glslType Type
+hi def link glslQualifier StorageClass
+hi def link glslBuiltinConstant Constant
+hi def link glslBuiltinFunction Function
+hi def link glslBuiltinVariable Identifier
+hi def link glslSwizzle Identifier
+
+let b:current_syntax = 'glsl'
diff --git a/runtime/syntax/goaccess.vim b/runtime/syntax/goaccess.vim
new file mode 100644
index 0000000..4ca8f6d
--- /dev/null
+++ b/runtime/syntax/goaccess.vim
@@ -0,0 +1,34 @@
+" Vim syntax file
+" Language: GoAccess configuration
+" Maintainer: Adam Monsen <haircut@gmail.com>
+" Last Change: 2024 Aug 1
+" Remark: see https://goaccess.io/man#configuration
+"
+" The GoAccess configuration file syntax is line-separated settings. Settings
+" are space-separated key value pairs. Comments are any line starting with a
+" hash mark.
+" Example: https://github.com/allinurl/goaccess/blob/master/config/goaccess.conf
+"
+" This syntax definition supports todo/fixme highlighting in comments, and
+" special (Keyword) highlighting if a setting's value is 'true' or 'false'.
+"
+" TODO: a value is required, so use extreme highlighting (e.g. bright red
+" background) if a setting is missing a value.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match goaccessSettingName '^[a-z-]\+' nextgroup=goaccessSettingValue
+syn match goaccessSettingValue '\s\+.\+$' contains=goaccessKeyword
+syn match goaccessComment "^#.*$" contains=goaccessTodo,@Spell
+syn keyword goaccessTodo TODO FIXME contained
+syn keyword goaccessKeyword true false contained
+
+hi def link goaccessSettingName Type
+hi def link goaccessSettingValue String
+hi def link goaccessComment Comment
+hi def link goaccessTodo Todo
+hi def link goaccessKeyword Keyword
+
+let b:current_syntax = "goaccess"
diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim
index d067dde..ca7c7f1 100644
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -4,6 +4,7 @@
" Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
" Claudio Fleiner <claudio@fleiner.com>
" Last Change: 2023 Nov 28
+" 2024 Jul 30 by Vim Project: increase syn-sync-minlines to 250
" See :help html.vim for some comments and a description of the options
@@ -320,7 +321,7 @@ if main_syntax == "html"
syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
syn sync match htmlHighlight groupthere javaScript "<script"
syn sync match htmlHighlightSkip "^.*['\"].*$"
- syn sync minlines=10
+ exe "syn sync minlines=" . get(g:, 'html_minlines', 250)
endif
" Folding
diff --git a/runtime/syntax/htmlangular.vim b/runtime/syntax/htmlangular.vim
new file mode 100644
index 0000000..021e61f
--- /dev/null
+++ b/runtime/syntax/htmlangular.vim
@@ -0,0 +1,18 @@
+" Vim syntax file
+" Language: Angular HTML template
+" Maintainer: Dennis van den Berg <dennis@vdberg.dev>
+" Last Change: 2024 Aug 22
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'html'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+let b:current_syntax = "htmlangular"
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 6f64bdc..51ef839 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -3,17 +3,17 @@
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
" Former Maintainer: Claudio Fleiner <claudio@fleiner.com>
" Repository: https://github.com/zzzyxwvut/java-vim.git
-" Last Change: 2024 Jun 15
+" Last Change: 2024 Aug 22
" Please check :help java.vim for comments on some of the options available.
" quit when a syntax file was already loaded
-if !exists("main_syntax")
+if !exists("g:main_syntax")
if exists("b:current_syntax")
finish
endif
" we define it here so that included files can test for it
- let main_syntax='java'
+ let g:main_syntax = 'java'
endif
let s:cpo_save = &cpo
@@ -39,17 +39,27 @@ else
endfunction
endif
-function! JavaSyntaxFoldTextExpr() abort
- return getline(v:foldstart) !~ '/\*\+\s*$'
- \ ? foldtext()
- \ : printf('+-%s%3d lines: ',
- \ v:folddashes,
- \ (v:foldend - v:foldstart + 1)) .
- \ getline(v:foldstart + 1)
-endfunction
+if exists("g:java_foldtext_show_first_or_second_line")
+ function! s:LazyPrefix(prefix, dashes, count) abort
+ return empty(a:prefix)
+ \ ? printf('+-%s%3d lines: ', a:dashes, a:count)
+ \ : a:prefix
+ endfunction
-" E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
-setlocal foldtext=JavaSyntaxFoldTextExpr()
+ function! JavaSyntaxFoldTextExpr() abort
+ " Piggyback on NGETTEXT.
+ let summary = foldtext()
+ return getline(v:foldstart) !~ '/\*\+\s*$'
+ \ ? summary
+ \ : s:LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'),
+ \ v:folddashes,
+ \ (v:foldend - v:foldstart + 1)) .
+ \ getline(v:foldstart + 1)
+ endfunction
+
+ " E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
+ setlocal foldtext=JavaSyntaxFoldTextExpr()
+endif
" Admit the ASCII dollar sign to keyword characters (JLS-17, §3.8):
try
@@ -65,7 +75,6 @@ syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
" use separate name so that it can be deleted in javacc.vim
syn match javaError2 "#\|=<"
-hi def link javaError2 javaError
" Keywords (JLS-17, §3.9):
syn keyword javaExternal native package
@@ -87,18 +96,18 @@ syn match javaOperator "\<var\>\%(\s*(\)\@!"
" if necessary, on the line before that (h: \@<=), trying to match
" neither a method reference nor a qualified method invocation.
try
- syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@80<!\<yield\>"
+ syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@80<!\<yield\>"
let s:ff.Peek = s:ff.LeftConstant
catch /\<E59:/
call s:ReportOnce(v:exception)
- syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@<!\<yield\>"
+ syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@<!\<yield\>"
let s:ff.Peek = s:ff.RightConstant
endtry
syn keyword javaType boolean char byte short int long float double
syn keyword javaType void
syn keyword javaStatement return
-syn keyword javaStorageClass static synchronized transient volatile strictfp serializable
+syn keyword javaStorageClass static synchronized transient volatile strictfp
syn keyword javaExceptions throw try catch finally
syn keyword javaAssert assert
syn keyword javaMethodDecl throws
@@ -113,7 +122,7 @@ syn match javaAnnotation "@\%(\K\k*\.\)*\K\k*\>"
syn region javaAnnotation transparent matchgroup=javaAnnotationStart start=/@\%(\K\k*\.\)*\K\k*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=javaAnnotation,javaParenT,javaBlock,javaString,javaBoolean,javaNumber,javaTypedef,javaComment,javaLineComment
syn match javaClassDecl "@interface\>"
syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
-syn match javaUserLabelRef "\k\+" contained
+syn match javaUserLabelRef contained "\k\+"
syn match javaVarArg "\.\.\."
syn keyword javaScopeDecl public protected private
syn keyword javaConceptKind abstract final
@@ -121,15 +130,6 @@ syn match javaConceptKind "\<non-sealed\>"
syn match javaConceptKind "\<sealed\>\%(\s*(\)\@!"
syn match javaConceptKind "\<default\>\%(\s*\%(:\|->\)\)\@!"
-" Note that a "module-info" file will be recognised with an arbitrary
-" file extension (or no extension at all) so that more than one such
-" declaration for the same Java module can be maintained for modular
-" testing in a project without attendant confusion for IDEs, with the
-" ".java\=" extension used for a production version and an arbitrary
-" extension used for a testing version.
-let s:module_info_cur_buf = fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
-lockvar s:module_info_cur_buf
-
if !(v:version < 704)
" Request the new regexp engine for [:upper:] and [:lower:].
let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.LeftConstant], 3)
@@ -139,17 +139,57 @@ else
let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.RightConstant], 3)
endif
-" Java modules (since Java 9, for "module-info.java" file).
-if s:module_info_cur_buf
+if exists("g:java_highlight_signature")
+ let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.LeftConstant], 3)
+else
+ let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.RightConstant], 3)
+endif
+
+" Java module declarations (JLS-17, §7.7).
+"
+" Note that a "module-info" file will be recognised with an arbitrary
+" file extension (or no extension at all) so that more than one such
+" declaration for the same Java module can be maintained for modular
+" testing in a project without attendant confusion for IDEs, with the
+" ".java\=" extension used for a production version and an arbitrary
+" extension used for a testing version.
+if fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
syn keyword javaModuleStorageClass module transitive
syn keyword javaModuleStmt open requires exports opens uses provides
syn keyword javaModuleExternal to with
+ hi def link javaModuleStorageClass StorageClass
+ hi def link javaModuleStmt Statement
+ hi def link javaModuleExternal Include
+endif
+
+" Fancy parameterised types (JLS-17, §4.5).
+"
+" Note that false positives may elsewhere occur whenever an identifier
+" is butted against a less-than operator. Cf. (X<Y) and (X < Y).
+if exists("g:java_highlight_generics")
+ syn keyword javaWildcardBound contained extends super
+
+ " Parameterised types are delegated to javaGenerics (s:ctx.gsg) and
+ " are not matched with javaTypeArgument.
+ exec 'syn match javaTypeArgument contained "' . s:ff.Engine('\%#=2', '') . '?\|\%(\<\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\)\[\]\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\)\%(\[\]\)*"'
+
+ for s:ctx in [{'dsg': 'javaDimExpr', 'gsg': 'javaGenerics', 'ghg': 'javaGenericsC1', 'csg': 'javaGenericsX', 'c': ''},
+ \ {'dsg': 'javaDimExprX', 'gsg': 'javaGenericsX', 'ghg': 'javaGenericsC2', 'csg': 'javaGenerics', 'c': ' contained'}]
+ " Consider array creation expressions of reifiable types.
+ exec 'syn region ' . s:ctx.dsg . ' contained transparent matchgroup=' . s:ctx.ghg . ' start="\[" end="\]" nextgroup=' . s:ctx.dsg . ' skipwhite skipnl'
+ exec 'syn region ' . s:ctx.gsg . s:ctx.c . ' transparent matchgroup=' . s:ctx.ghg . ' start=/' . s:ff.Engine('\%#=2', '') . '\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\><\%([[:space:]\n]*\%([?@]\|\<\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\)\[\]\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\)\)\@=/ end=/>/ contains=' . s:ctx.csg . ',javaAnnotation,javaTypeArgument,javaWildcardBound,javaType,@javaClasses nextgroup=' . s:ctx.dsg . ' skipwhite skipnl'
+ endfor
+
+ unlet s:ctx
+ hi def link javaWildcardBound Question
+ hi def link javaGenericsC1 Function
+ hi def link javaGenericsC2 Type
endif
-if exists("java_highlight_java_lang_ids")
- let java_highlight_all=1
+if exists("g:java_highlight_java_lang_ids")
+ let g:java_highlight_all = 1
endif
-if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
+if exists("g:java_highlight_all") || exists("g:java_highlight_java") || exists("g:java_highlight_java_lang")
" java.lang.*
"
" The keywords of javaR_JavaLang, javaC_JavaLang, javaE_JavaLang,
@@ -175,9 +215,15 @@ if exists("java_highlight_all") || exists("java_highlight_java") || exists("ja
exec 'syn match javaC_JavaLang "\%(\<ModuleLayer\.\)\@' . s:ff.Peek('12', '') . '<=\<Controller\>"'
exec 'syn match javaC_JavaLang "\%(\<Runtime\.\)\@' . s:ff.Peek('8', '') . '<=\<Version\>"'
exec 'syn match javaC_JavaLang "\%(\<System\.\)\@' . s:ff.Peek('7', '') . '<=\<LoggerFinder\>"'
- exec 'syn match javaC_JavaLang "\%(\<Enum\.\)\@' . s:ff.Peek('5', '') . '<=\<EnumDesc\>"'
- syn keyword javaC_JavaLang Boolean Character Class ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void InheritableThreadLocal Package RuntimePermission ThreadLocal StrictMath StackTraceElement Enum ProcessBuilder StringBuilder ClassValue Module ModuleLayer StackWalker Record
+ syn keyword javaC_JavaLang Boolean Character ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void Package RuntimePermission StrictMath StackTraceElement ProcessBuilder StringBuilder Module ModuleLayer StackWalker Record
syn match javaC_JavaLang "\<System\>" " See javaDebug.
+
+ if !exists("g:java_highlight_generics")
+ " The non-interface parameterised names of java.lang members.
+ exec 'syn match javaC_JavaLang "\%(\<Enum\.\)\@' . s:ff.Peek('5', '') . '<=\<EnumDesc\>"'
+ syn keyword javaC_JavaLang Class InheritableThreadLocal ThreadLocal Enum ClassValue
+ endif
+
" As of JDK 21, java.lang.Compiler is no more (deprecated in JDK 9).
syn keyword javaLangDeprecated Compiler
syn cluster javaClasses add=javaC_JavaLang
@@ -193,31 +239,40 @@ if exists("java_highlight_all") || exists("java_highlight_java") || exists("ja
hi def link javaC_Java javaC_
hi def link javaE_Java javaE_
hi def link javaX_Java javaX_
- hi def link javaX_ javaExceptions
- hi def link javaR_ javaExceptions
- hi def link javaE_ javaExceptions
- hi def link javaC_ javaConstant
-
- syn keyword javaLangObject clone equals finalize getClass hashCode
- syn keyword javaLangObject notify notifyAll toString wait
- hi def link javaLangObject javaConstant
+ hi def link javaX_ javaExceptions
+ hi def link javaR_ javaExceptions
+ hi def link javaE_ javaExceptions
+ hi def link javaC_ javaConstant
+
+ syn keyword javaLangObject getClass notify notifyAll wait
+
+ " Lower the syntax priority of overridable java.lang.Object method
+ " names for zero-width matching (define g:java_highlight_signature
+ " and see their base declarations for java.lang.Object):
+ syn match javaLangObject "\<clone\>"
+ syn match javaLangObject "\<equals\>"
+ syn match javaLangObject "\<finalize\>"
+ syn match javaLangObject "\<hashCode\>"
+ syn match javaLangObject "\<toString\>"
+ hi def link javaLangObject javaConstant
endif
if filereadable(expand("<sfile>:p:h") . "/javaid.vim")
source <sfile>:p:h/javaid.vim
endif
-if exists("java_space_errors")
- if !exists("java_no_trail_space_error")
- syn match javaSpaceError "\s\+$"
+if exists("g:java_space_errors")
+ if !exists("g:java_no_trail_space_error")
+ syn match javaSpaceError "\s\+$"
endif
- if !exists("java_no_tab_space_error")
- syn match javaSpaceError " \+\t"me=e-1
+ if !exists("g:java_no_tab_space_error")
+ syn match javaSpaceError " \+\t"me=e-1
endif
+ hi def link javaSpaceError Error
endif
-exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*:"he=e-1'
-syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
+exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
+syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<default\>\%(\s*\%(:\|->\)\)\@=" matchgroup=NONE end=":\|->" oneline
" Consider grouped _default_ _case_ labels, i.e.
" case null, default ->
@@ -230,18 +285,14 @@ syn keyword javaLabelCastType contained char byte short int
syn region javaLabelWhenClause contained transparent matchgroup=javaLabel start="\<when\>" matchgroup=NONE end=":"me=e-1 end="->"me=e-2 contains=TOP,javaExternal,javaLambdaDef
syn match javaLabelNumber contained "\<0\>[lL]\@!"
syn match javaLabelNumber contained "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)\>[lL]\@!"
-hi def link javaLabelDefault javaLabel
-hi def link javaLabelVarType javaOperator
-hi def link javaLabelNumber javaNumber
-hi def link javaLabelCastType javaType
" Comments
-syn keyword javaTodo contained TODO FIXME XXX
+syn keyword javaTodo contained TODO FIXME XXX
-if exists("java_comment_strings")
- syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
- syn region javaCommentString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell,javaSpecialError,javaTextBlockError
- syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
+if exists("g:java_comment_strings")
+ syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
+ syn region javaCommentString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell,javaSpecialError,javaTextBlockError
+ syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
syn match javaCommentCharacter contained "'[^\\]'"
@@ -249,22 +300,22 @@ if exists("java_comment_strings")
syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber,javaStrTempl
endif
-syn region javaComment matchgroup=javaCommentStart start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,javaCommentError,javaSpaceError,@Spell fold
-syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
-syn match javaCommentStar contained "^\s*\*$"
+syn region javaComment matchgroup=javaCommentStart start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,javaCommentError,javaSpaceError,@Spell fold
+syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
+syn match javaCommentStar contained "^\s*\*$"
syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,javaCommentMarkupTag,javaSpaceError,@Spell
syn match javaCommentMarkupTag contained "@\%(end\|highlight\|link\|replace\|start\)\>" nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite
syn match javaCommentMarkupTagAttr contained "\<region\>" nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite
-exec 'syn region javaCommentMarkupTagAttr contained transparent matchgroup=htmlArg start=/\<\%(re\%(gex\|gion\|placement\)\|substring\|t\%(arget\|ype\)\)\%(\s*=\)\@=/ matchgroup=htmlString end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.-]\|\k\)\+\)/ nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite oneline'
-hi def link javaCommentMarkupTagAttr htmlArg
-hi def link javaCommentString javaString
-hi def link javaComment2String javaString
-hi def link javaCommentCharacter javaCharacter
+exec 'syn region javaCommentMarkupTagAttr contained transparent matchgroup=javaHtmlArg start=/\<\%(re\%(gex\|gion\|placement\)\|substring\|t\%(arget\|ype\)\)\%(\s*=\)\@=/ matchgroup=javaHtmlString end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.-]\|\k\)\+\)/ nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite oneline'
syn match javaCommentError contained "/\*"me=e-1 display
-hi def link javaCommentError javaError
-hi def link javaCommentStart javaComment
-if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
+if !exists("g:java_ignore_javadoc") && g:main_syntax != 'jsp'
+ " The overridable "html*" default links must be defined _before_ the
+ " inclusion of the same default links from "html.vim".
+ hi def link htmlComment Special
+ hi def link htmlCommentPart Special
+ hi def link htmlArg Type
+ hi def link htmlString String
syntax case ignore
" Include HTML syntax coloring for Javadoc comments.
@@ -291,80 +342,104 @@ if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\%(\k\|\.\)*\%(#\k\+\%((\_[^)]*)\)\=\)\=@ contains=@javaHtml extend
syn region javaCodeSkipBlock contained transparent start="{\%(@code\>\)\@!" end="}" contains=javaCodeSkipBlock,javaDocCodeTag
syn region javaDocCodeTag contained start="{@code\>" end="}" contains=javaDocCodeTag,javaCodeSkipBlock
- exec 'syn region javaDocSnippetTagAttr contained transparent matchgroup=htmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ matchgroup=htmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.\\/-]\|\k\)\+\)/ nextgroup=javaDocSnippetTagAttr skipwhite skipnl'
+ exec 'syn region javaDocSnippetTagAttr contained transparent matchgroup=javaHtmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ matchgroup=javaHtmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.\\/-]\|\k\)\+\)/ nextgroup=javaDocSnippetTagAttr skipwhite skipnl'
syn region javaSnippetSkipBlock contained transparent start="{\%(@snippet\>\)\@!" end="}" contains=javaSnippetSkipBlock,javaDocSnippetTag,javaCommentMarkupTag
syn region javaDocSnippetTag contained start="{@snippet\>" end="}" contains=javaDocSnippetTag,javaSnippetSkipBlock,javaDocSnippetTagAttr,javaCommentMarkupTag
syntax case match
+ hi def link javaDocComment Comment
+ hi def link javaCommentTitle SpecialComment
+ hi def link javaDocTags Special
+ hi def link javaDocCodeTag Special
+ hi def link javaDocSnippetTag Special
+ hi def link javaDocSeeTagParam Function
+ hi def link javaDocParam Function
endif
" match the special comment /**/
-syn match javaComment "/\*\*/"
+syn match javaComment "/\*\*/"
" Strings and constants
-syn match javaSpecialError contained "\\."
+syn match javaSpecialError contained "\\."
syn match javaSpecialCharError contained "[^']"
" Escape Sequences (JLS-17, §3.10.7):
-syn match javaSpecialChar contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)"
+syn match javaSpecialChar contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)"
syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
syn region javaString start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell
syn match javaTextBlockError +"""\s*"""+
-syn region javaStrTemplEmbExp contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP
+syn region javaStrTemplEmbExp contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP
exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="+ end=+"+ contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,@Spell'
exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell'
-syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
-syn match javaCharacter "'\\''" contains=javaSpecialChar
-syn match javaCharacter "'[^\\]'"
+syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
+syn match javaCharacter "'\\''" contains=javaSpecialChar
+syn match javaCharacter "'[^\\]'"
" Integer literals (JLS-17, §3.10.1):
-syn keyword javaNumber 0 0l 0L
-syn match javaNumber "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
+syn keyword javaNumber 0 0l 0L
+syn match javaNumber "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
" Decimal floating-point literals (JLS-17, §3.10.2):
" Against "\<\d\+\>\.":
-syn match javaNumber "\<\d\%(_*\d\)*\."
-syn match javaNumber "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
-syn match javaNumber "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
-syn match javaNumber "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
+syn match javaNumber "\<\d\%(_*\d\)*\."
+syn match javaNumber "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
+syn match javaNumber "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+syn match javaNumber "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
" Hexadecimal floating-point literals (JLS-17, §3.10.2):
-syn match javaNumber "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+syn match javaNumber "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
" Unicode characters
syn match javaSpecial "\\u\x\x\x\x"
" Method declarations (JLS-17, §8.4.3, §8.4.4, §9.4).
-if exists("java_highlight_functions")
- syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaType,javaVarArg,javaComment,javaLineComment
+if exists("g:java_highlight_functions")
+ syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaGenerics,javaType,javaVarArg,javaComment,javaLineComment
- if java_highlight_functions =~# '^indent[1-8]\=$'
- let s:last = java_highlight_functions[-1 :]
- let s:indent = s:last != 't' ? repeat("\x20", s:last) : "\t"
+ if exists("g:java_highlight_signature")
+ syn cluster javaFuncParams add=javaParamModifier
+ hi def link javaFuncDefStart javaFuncDef
+ else
syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
+ endif
+
+ if g:java_highlight_functions =~# '^indent[1-8]\=$'
+ let s:last = g:java_highlight_functions[-1 :]
+ let s:indent = s:last != 't' ? repeat("\x20", s:last) : "\t"
" Try to not match other type members, initialiser blocks, enum
" constants (JLS-17, §8.9.1), and constructors (JLS-17, §8.1.7):
" at any _conventional_ indentation, skip over all fields with
" "[^=]*", all records with "\<record\s", and let the "*Skip*"
" definitions take care of constructor declarations and enum
- " constants (with no support for @Foo(value = "bar")).
- exec 'syn region javaFuncDef start=+^' . s:indent . '\%(<[^>]\+>\+\s\+\|\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)\+\)\=\%(\<\K\k*\>\.\)*\K\k*\>[^=]*\%(\<record\)\@' . s:ff.Peek('6', '') . '<!\s\K\k*\s*(+ end=+)+ contains=@javaFuncParams'
+ " constants (with no support for @Foo(value = "bar")). Also,
+ " reject inlined declarations with "[^{]" for signature.
+ exec 'syn region javaFuncDef ' . s:ff.GroupArgs('transparent matchgroup=javaFuncDefStart', '') . ' start=/' . s:ff.PeekTo('\%(', '') . '^' . s:indent . '\%(<[^>]\+>\+\s\+\|\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)\+\)\=\%(\<\K\k*\>\.\)*\K\k*\>[^={]*\%(\<record\)\@' . s:ff.Peek('6', '') . '<!\s' . s:ff.PeekFrom('\)\@' . s:ff.Peek('80', '') . '<=', '') . '\K\k*\s*(/ end=/)/ contains=@javaFuncParams'
" As long as package-private constructors cannot be matched with
" javaFuncDef, do not look with javaConstructorSkipDeclarator for
" them.
- exec 'syn match javaConstructorSkipDeclarator transparent +^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*p\%(ublic\|rotected\|rivate\)\s\+\%(<[^>]\+>\+\s\+\)\=\K\k*\s*\ze(+ contains=javaAnnotation,javaScopeDecl'
- exec 'syn match javaEnumSkipArgumentativeConstant transparent +^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\K\k*\s*\ze(+ contains=javaAnnotation'
+ exec 'syn match javaConstructorSkipDeclarator transparent /^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*p\%(ublic\|rotected\|rivate\)\s\+\%(<[^>]\+>\+\s\+\)\=\K\k*\s*\ze(/ contains=javaAnnotation,javaScopeDecl,javaClassDecl,javaTypedef,javaGenerics'
+ " With a zero-width span for signature applicable on demand to
+ " javaFuncDef, make related adjustments:
+ " (1) Claim all enum constants of a line as a unit.
+ exec 'syn match javaEnumSkipConstant contained transparent /^' . s:indent . '\%(\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\K\k*\s*\%((.*)\)\=\s*[,;({]\s*\)\+/ contains=@javaEnumConstants'
+ " (2) Define a syntax group for top level enumerations and tell
+ " apart their constants from method declarations.
+ exec 'syn region javaTopEnumDeclaration transparent start=/\%(^\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(strictfp\s\+\)\=\<enum\_s\+\)\@' . s:ff.Peek('80', '') . '<=\K\k*\%(\_s\+implements\_s.\+\)\=\_s*{/ end=/}/ contains=@javaTop,javaEnumSkipConstant'
+ " (3) Define a base variant of javaParenT without using @javaTop
+ " in order to not include javaFuncDef.
+ syn region javaParenE transparent matchgroup=javaParen start="(" end=")" contains=@javaEnumConstants,javaInParen
+ syn region javaParenE transparent matchgroup=javaParen start="\[" end="\]" contains=@javaEnumConstants
+ syn cluster javaEnumConstants contains=TOP,javaTopEnumDeclaration,javaFuncDef,javaParenT
unlet s:indent s:last
else
" This is the "style" variant (:help ft-java-syntax).
- syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
" Match arbitrarily indented camelCasedName method declarations.
" Match: [@É] [abstract] [<α, β>] Τʬ[<γ>][[][]] μʭʭ(/* ... */);
- exec 'syn region javaFuncDef start=/' . s:ff.Engine('\%#=2', '') . '^\s\+\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(\%(abstract\|default\)\s\+\|\%(\%(final\|\%(native\|strictfp\)\|s\%(tatic\|ynchronized\)\)\s\+\)*\)\=\%(<.*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\s\+\)\=\%(void\|\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\)\%(\[\]\)*\)\s\+\<' . s:ff.LowerCase('[$_[:lower:]]', '[^A-Z0-9]') . '\k*\>\s*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=@javaFuncParams'
+ exec 'syn region javaFuncDef ' . s:ff.GroupArgs('transparent matchgroup=javaFuncDefStart', '') . ' start=/' . s:ff.Engine('\%#=2', '') . s:ff.PeekTo('\%(', '') . '^\s\+\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(\%(abstract\|default\)\s\+\|\%(\%(final\|\%(native\|strictfp\)\|s\%(tatic\|ynchronized\)\)\s\+\)*\)\=\%(<.*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\s\+\)\=\%(void\|\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\)\%(\[\]\)*\)\s\+' . s:ff.PeekFrom('\)\@' . s:ff.Peek('80', '') . '<=', '') . '\<' . s:ff.LowerCase('[$_[:lower:]]', '[^A-Z0-9]') . '\k*\>\s*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=@javaFuncParams'
endif
endif
-if exists("java_highlight_debug")
+if exists("g:java_highlight_debug")
" Strings and constants
syn match javaDebugSpecial contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)"
- syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
+ syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
syn region javaDebugString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaDebugSpecial,javaDebugTextBlockError
" The highlight groups of java{StrTempl,Debug{,Paren,StrTempl}}\,
" share one colour by default. Do not conflate unrelated parens.
@@ -384,7 +459,7 @@ if exists("java_highlight_debug")
syn match javaDebugNumber contained "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
syn keyword javaDebugBoolean contained true false
syn keyword javaDebugType contained null this super
- syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
+ syn region javaDebugParen contained start=+(+ end=+)+ contains=javaDebug.*,javaDebugParen
" To make this work, define the highlighting for these groups.
syn match javaDebug "\<System\.\%(out\|err\)\.print\%(ln\)\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
@@ -394,74 +469,89 @@ if exists("java_highlight_debug")
" FIXME: What API do "trace*" belong to?
" syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
- hi def link javaDebug Debug
- hi def link javaDebugString DebugString
- hi def link javaDebugStrTempl Macro
- hi def link javaDebugTextBlockError Error
- hi def link javaDebugType DebugType
- hi def link javaDebugBoolean DebugBoolean
- hi def link javaDebugNumber Debug
- hi def link javaDebugSpecial DebugSpecial
- hi def link javaDebugSpecialCharacter DebugSpecial
- hi def link javaDebugCharacter DebugString
- hi def link javaDebugParen Debug
-
- hi def link DebugString String
- hi def link DebugSpecial Special
- hi def link DebugBoolean Boolean
- hi def link DebugType Type
-endif
-
-if exists("java_mark_braces_in_parens_as_errors")
- syn match javaInParen contained "[{}]"
- hi def link javaInParen javaError
+ hi def link javaDebug Debug
+ hi def link javaDebugString DebugString
+ hi def link javaDebugStrTempl Macro
+ hi def link javaDebugTextBlockError Error
+ hi def link javaDebugType DebugType
+ hi def link javaDebugBoolean DebugBoolean
+ hi def link javaDebugNumber Debug
+ hi def link javaDebugSpecial DebugSpecial
+ hi def link javaDebugSpecialCharacter DebugSpecial
+ hi def link javaDebugCharacter DebugString
+ hi def link javaDebugParen Debug
+
+ hi def link DebugString String
+ hi def link DebugSpecial Special
+ hi def link DebugBoolean Boolean
+ hi def link DebugType Type
endif
" Try not to fold top-level-type bodies under assumption that there is
" but one such body.
exec 'syn region javaBlock transparent start="\%(^\|^\S[^:]\+\)\@' . s:ff.Peek('120', '') . '<!{" end="}" fold'
+if exists("g:java_mark_braces_in_parens_as_errors")
+ syn match javaInParen contained "[{}]"
+ hi def link javaInParen javaError
+endif
+
" catch errors caused by wrong parenthesis
-syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaInParen,javaParenT1
-syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaInParen,javaParenT2 contained
-syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaInParen,javaParenT contained
-syn match javaParenError ")"
+syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaInParen,javaParenT1
+syn region javaParenT1 contained transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaInParen,javaParenT2
+syn region javaParenT2 contained transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaInParen,javaParenT
+syn match javaParenError ")"
" catch errors caused by wrong square parenthesis
-syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
-syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
-syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
-syn match javaParenError "\]"
-
-hi def link javaParenError javaError
+syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
+syn region javaParenT1 contained transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2
+syn region javaParenT2 contained transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT
+syn match javaParenError "\]"
+
+" Lambda expressions (JLS-17, §15.27) and method reference expressions
+" (JLS-17, §15.13).
+if exists("g:java_highlight_functions")
+ syn match javaMethodRef ":::\@!"
+
+ if exists("g:java_highlight_signature")
+ let s:ff.LambdaDef = s:ff.LeftConstant
+ else
+ let s:ff.LambdaDef = s:ff.RightConstant
+ endif
-" Lambda expressions (JLS-17, §15.27).
-if exists("java_highlight_functions")
" Make ()-matching definitions after the parenthesis error catcher.
"
+ " Note that here and elsewhere a single-line token is used for \z,
+ " with other tokens repeated as necessary, to overcome the lack of
+ " support for multi-line matching with \z.
+ "
" Match: ([@A [@B ...] final] var a[, var b, ...]) ->
" | ([@A [@B ...] final] T[<α>][[][]] a[, T b, ...]) ->
" There is no recognition of expressions interspersed with comments
" or of expressions whose parameterised parameter types are written
" across multiple lines.
- exec 'syn match javaLambdaDef "\k\@' . s:ff.Peek('4', '') . '<!([[:space:]\n]*\%(\%(@\%(\K\k*\.\)*\K\k*\>\%((\_.\{-1,})\)\{-,1}[[:space:]\n]\+\)*\%(final[[:space:]\n]\+\)\=\%(\<\K\k*\>\.\)*\<\K\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\%(\%(\%(\[\]\)\+\|\.\.\.\)\)\=[[:space:]\n]\+\<\K\k*\>\%(\[\]\)*\%(,[[:space:]\n]*\)\=\)\+)[[:space:]\n]*->" contains=javaAnnotation,javaParamModifier,javaLambdaVarType,javaType,@javaClasses,javaVarArg'
+ exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent matchgroup=javaLambdaDefStart start=/', 'match javaLambdaDef "') . '\k\@' . s:ff.Peek('4', '') . '<!(' . s:ff.LambdaDef('\%(', '') . '[[:space:]\n]*\%(\%(@\%(\K\k*\.\)*\K\k*\>\%((\_.\{-1,})\)\{-,1}[[:space:]\n]\+\)*\%(final[[:space:]\n]\+\)\=\%(\<\K\k*\>\.\)*\<\K\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\%(\%(\%(\[\]\)\+\|\.\.\.\)\)\=[[:space:]\n]\+\<\K\k*\>\%(\[\]\)*\%(,[[:space:]\n]*\)\=\)\+)[[:space:]\n]*' . s:ff.LambdaDef('\z(->\)\)\@=/ end=/)[[:space:]\n]*\z1/', '->"') . ' contains=javaAnnotation,javaParamModifier,javaLambdaVarType,javaType,@javaClasses,javaGenerics,javaVarArg'
" Match: () ->
" | (a[, b, ...]) ->
- exec 'syn match javaLambdaDef "\k\@' . s:ff.Peek('4', '') . '<!([[:space:]\n]*\%(\<\K\k*\>\%(,[[:space:]\n]*\)\=\)*)[[:space:]\n]*->"'
+ exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent matchgroup=javaLambdaDefStart start=/', 'match javaLambdaDef "') . '\k\@' . s:ff.Peek('4', '') . '<!(' . s:ff.LambdaDef('\%(', '') . '[[:space:]\n]*\%(\<\K\k*\>\%(,[[:space:]\n]*\)\=\)*)[[:space:]\n]*' . s:ff.LambdaDef('\z(->\)\)\@=/ end=/)[[:space:]\n]*\z1/', '->"')
" Match: a ->
- exec 'syn match javaLambdaDef "\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<![[:space:]\n]*->"'
+ exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent start=/', 'match javaLambdaDef "') . '\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!' . s:ff.LambdaDef('\%([[:space:]\n]*\z(->\)\)\@=/ matchgroup=javaLambdaDefStart end=/\z1/', '[[:space:]\n]*->"')
syn keyword javaParamModifier contained final
- hi def link javaParamModifier javaConceptKind
syn keyword javaLambdaVarType contained var
- hi def link javaLambdaVarType javaOperator
+ hi def link javaParamModifier javaConceptKind
+ hi def link javaLambdaVarType javaOperator
+ hi def link javaLambdaDef javaFuncDef
+ hi def link javaLambdaDefStart javaFuncDef
+ hi def link javaMethodRef javaFuncDef
+ hi def link javaFuncDef Function
endif
" The @javaTop cluster comprises non-contained Java syntax groups.
" Note that the syntax file "aidl.vim" relies on its availability.
-syn cluster javaTop contains=TOP,javaDocComment,javaBlock,javaParenError,javaParenT
+syn cluster javaTop contains=TOP,javaTopEnumDeclaration
-if !exists("java_minlines")
- let java_minlines = 10
+if !exists("g:java_minlines")
+ let g:java_minlines = 10
endif
" Note that variations of a /*/ balanced comment, e.g., /*/*/, /*//*/,
@@ -470,16 +560,11 @@ endif
" to make synchronisation start further towards file's beginning by
" bumping up g:java_minlines or issuing ':syntax sync fromstart' or
" preferring &foldmethod set to 'syntax'.
-exec "syn sync ccomment javaComment minlines=" . java_minlines
+exec "syn sync ccomment javaComment minlines=" . g:java_minlines
" The default highlighting.
-hi def link javaLambdaDef Function
-hi def link javaFuncDef Function
hi def link javaVarArg Function
hi def link javaBranch Conditional
-hi def link javaUserLabelRef javaUserLabel
-hi def link javaLabel Label
-hi def link javaUserLabel Label
hi def link javaConditional Conditional
hi def link javaRepeat Repeat
hi def link javaExceptions Exception
@@ -490,8 +575,8 @@ hi def link javaClassDecl javaStorageClass
hi def link javaScopeDecl javaStorageClass
hi def link javaConceptKind NonText
-hi def link javaBoolean Boolean
-hi def link javaSpecial Special
+hi def link javaBoolean Boolean
+hi def link javaSpecial Special
hi def link javaSpecialError Error
hi def link javaSpecialCharError Error
hi def link javaString String
@@ -500,65 +585,74 @@ hi def link javaCharacter Character
hi def link javaSpecialChar SpecialChar
hi def link javaNumber Number
hi def link javaError Error
+hi def link javaError2 javaError
hi def link javaTextBlockError Error
+hi def link javaParenError javaError
hi def link javaStatement Statement
hi def link javaOperator Operator
-hi def link javaComment Comment
-hi def link javaDocComment Comment
-hi def link javaLineComment Comment
hi def link javaConstant Constant
-hi def link javaTypedef Typedef
+hi def link javaTypedef Typedef
hi def link javaTodo Todo
hi def link javaAnnotation PreProc
hi def link javaAnnotationStart javaAnnotation
-
-hi def link javaCommentTitle SpecialComment
-hi def link javaDocTags Special
-hi def link javaDocCodeTag Special
-hi def link javaDocSnippetTag Special
-hi def link javaDocParam Function
-hi def link javaDocSeeTagParam Function
-hi def link javaCommentStar javaComment
-
hi def link javaType Type
hi def link javaExternal Include
-hi def link htmlComment Special
-hi def link htmlCommentPart Special
-hi def link htmlArg Type
-hi def link htmlString String
-hi def link javaSpaceError Error
+hi def link javaUserLabel Label
+hi def link javaUserLabelRef javaUserLabel
+hi def link javaLabel Label
+hi def link javaLabelDefault javaLabel
+hi def link javaLabelVarType javaOperator
+hi def link javaLabelNumber javaNumber
+hi def link javaLabelCastType javaType
+
+hi def link javaComment Comment
+hi def link javaCommentStar javaComment
+hi def link javaLineComment Comment
+hi def link javaCommentMarkupTagAttr javaHtmlArg
+hi def link javaCommentString javaString
+hi def link javaComment2String javaString
+hi def link javaCommentCharacter javaCharacter
+hi def link javaCommentError javaError
+hi def link javaCommentStart javaComment
-if s:module_info_cur_buf
- hi def link javaModuleStorageClass StorageClass
- hi def link javaModuleStmt Statement
- hi def link javaModuleExternal Include
-endif
+hi def link javaHtmlArg Type
+hi def link javaHtmlString String
let b:current_syntax = "java"
-if main_syntax == 'java'
- unlet main_syntax
+if g:main_syntax == 'java'
+ unlet g:main_syntax
endif
let b:spell_options = "contained"
let &cpo = s:cpo_save
-unlet s:module_info_cur_buf s:ff s:cpo_save
+unlet s:ff s:cpo_save
" See ":help vim9-mix".
if !has("vim9script")
finish
endif
-def! s:JavaSyntaxFoldTextExpr(): string
- return getline(v:foldstart) !~ '/\*\+\s*$'
- ? foldtext()
- : printf('+-%s%3d lines: ',
- v:folddashes,
- (v:foldend - v:foldstart + 1)) ..
- getline(v:foldstart + 1)
-enddef
-
-setlocal foldtext=s:JavaSyntaxFoldTextExpr()
-delfunction! g:JavaSyntaxFoldTextExpr
+if exists("g:java_foldtext_show_first_or_second_line")
+ def! s:LazyPrefix(prefix: string, dashes: string, count: number): string
+ return empty(prefix)
+ ? printf('+-%s%3d lines: ', dashes, count)
+ : prefix
+ enddef
+
+ def! s:JavaSyntaxFoldTextExpr(): string
+ # Piggyback on NGETTEXT.
+ const summary: string = foldtext()
+ return getline(v:foldstart) !~ '/\*\+\s*$'
+ ? summary
+ : LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'),
+ v:folddashes,
+ (v:foldend - v:foldstart + 1)) ..
+ getline(v:foldstart + 1)
+ enddef
+
+ setlocal foldtext=s:JavaSyntaxFoldTextExpr()
+ delfunction! g:JavaSyntaxFoldTextExpr
+endif
" vim: sw=2 ts=8 noet sta
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index e3b4cdf..c73f5d7 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -10,6 +10,7 @@
" Last Change: 2022 Jun 09
" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
+" 2024 Aug 14: fix a few stylistic issues (#15480)
" tuning parameters:
" unlet javaScript_fold
@@ -59,14 +60,15 @@ syn keyword javaScriptType Array Boolean Date Function Number Object String Reg
syn keyword javaScriptStatement return with await yield
syn keyword javaScriptBoolean true false
syn keyword javaScriptNull null undefined
-syn keyword javaScriptIdentifier arguments this var let
+syn keyword javaScriptIdentifier arguments this
syn keyword javaScriptLabel case default
syn keyword javaScriptException try catch finally throw
syn keyword javaScriptMessage alert confirm prompt status
syn keyword javaScriptGlobal self window top parent
syn keyword javaScriptMember document event location
syn keyword javaScriptDeprecated escape unescape
-syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile async
+syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float from goto implements import int interface let long native package private protected public short super synchronized throws transient var volatile async
+syn keyword javaScriptModifier static
syn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT
@@ -110,7 +112,7 @@ hi def link javaScriptBranch Conditional
hi def link javaScriptOperator Operator
hi def link javaScriptType Type
hi def link javaScriptStatement Statement
-hi def link javaScriptFunction Function
+hi def link javaScriptFunction Keyword
hi def link javaScriptBraces Function
hi def link javaScriptError Error
hi def link javaScrParenError javaScriptError
@@ -126,6 +128,7 @@ hi def link javaScriptGlobal Keyword
hi def link javaScriptMember Keyword
hi def link javaScriptDeprecated Exception
hi def link javaScriptReserved Keyword
+hi def link javaScriptModifier StorageClass
hi def link javaScriptDebug Debug
hi def link javaScriptConstant Label
hi def link javaScriptEmbed Special
diff --git a/runtime/syntax/kconfig.vim b/runtime/syntax/kconfig.vim
index c7a305b..0aecc00 100644
--- a/runtime/syntax/kconfig.vim
+++ b/runtime/syntax/kconfig.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2015-05-29
+" Latest Revision: 2024-07-19
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-kconfig
@@ -715,8 +715,6 @@ syn region kconfigHelpText
\ skip='^$'
\ end='^\z1\@!'
-syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---'
-
hi def link kconfigTodo Todo
hi def link kconfigComment Comment
hi def link kconfigKeyword Keyword
diff --git a/runtime/syntax/kivy.vim b/runtime/syntax/kivy.vim
index b145503..d4bccfc 100644
--- a/runtime/syntax/kivy.vim
+++ b/runtime/syntax/kivy.vim
@@ -1,9 +1,9 @@
" Vim syntax file
" Language: Kivy
-" Maintainer: Corey Prophitt <prophitt.corey@gmail.com>
-" Last Change: May 29th, 2014
+" Maintainer: Corey Prophitt <corey@prophitt.me>
+" Last Change: Jul 31st, 2024
" Version: 1
-" URL: http://kivy.org/
+" URL: https://kivy.org/
if exists("b:current_syntax")
finish
@@ -13,11 +13,11 @@ endif
syn include @pyth $VIMRUNTIME/syntax/python.vim
" Kivy language rules can be found here
-" http://kivy.org/docs/guide/lang.html
+" https://kivy.org/doc/stable/guide/lang.html
" Define Kivy syntax
syn match kivyPreProc /#:.*/
-syn match kivyComment /#.*/
+syn match kivyComment /#[^:].*/
syn match kivyRule /<\I\i*\(,\s*\I\i*\)*>:/
syn match kivyAttribute /\<\I\i*\>/ nextgroup=kivyValue
diff --git a/runtime/syntax/logindefs.vim b/runtime/syntax/logindefs.vim
index 8cb4295..51fa199 100644
--- a/runtime/syntax/logindefs.vim
+++ b/runtime/syntax/logindefs.vim
@@ -1,7 +1,8 @@
-" Vim syntax file
+" Vim syntax file for login.defs(5)
" Language: login.defs(5) configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-11-29
+" 2024 Jul 12 by Vim Project: Update keywords
if exists("b:current_syntax")
finish
@@ -35,6 +36,8 @@ syn keyword logindefsBooleanKeyword contained
\ CREATE_HOME
\ DEFAULT_HOME
\ FAILLOG_ENAB
+ \ FORCE_SHADOW
+ \ GRANT_AUX_GROUP_SUBIDS
\ LASTLOG_ENAB
\ LOG_OK_LOGINS
\ LOG_UNKFAIL_ENAB
@@ -54,15 +57,20 @@ syn keyword logindefsBoolean contained yes no
syn keyword logindefsEncryptKeyword contained
\ ENCRYPT_METHOD
+ \ HMAC_CRYPTO_ALGO
\ nextgroup=logindefsEncryptMethod skipwhite
syn keyword logindefsEncryptMethod contained
+ \ BCRYPT
\ DES
\ MD5
\ SHA256
\ SHA512
+ \ YESCRYPT
syn keyword logindefsNumberKeyword contained
+ \ BCRYPT_MAX_ROUNDS
+ \ BCRYPT_MIN_ROUNDS
\ ERASECHAR
\ FAIL_DELAY
\ GID_MAX
@@ -79,6 +87,12 @@ syn keyword logindefsNumberKeyword contained
\ PASS_MIN_LEN
\ SHA_CRYPT_MAX_ROUNDS
\ SHA_CRYPT_MIN_ROUNDS
+ \ SUB_GID_COUNT
+ \ SUB_GID_MAX
+ \ SUB_GID_MIN
+ \ SUB_UID_COUNT
+ \ SUB_UID_MAX
+ \ SUB_UID_MIN
\ SYS_GID_MAX
\ SYS_GID_MIN
\ SYS_UID_MAX
@@ -86,9 +100,15 @@ syn keyword logindefsNumberKeyword contained
\ UID_MAX
\ UID_MIN
\ ULIMIT
- \ UMASK
+ \ YESCRYPT_COST_FACTOR
\ nextgroup=@logindefsNumber skipwhite
+syn keyword logindefsNumberKeyword contained
+ \ HOME_MODE
+ \ TTYPERM
+ \ UMASK
+ \ nextgroup=logindefsOctal,logindefsOctalError skipwhite
+
syn cluster logindefsNumber contains=
\ logindefsDecimal,
\ logindefsHex,
@@ -114,6 +134,7 @@ syn keyword logindefsPathKeyword contained
\ MAIL_DIR
\ MAIL_FILE
\ NOLOGINS_FILE
+ \ NONEXISTENT
\ SULOG_FILE
\ TTYTYPE_FILE
\ nextgroup=logindefsPath skipwhite
@@ -138,9 +159,9 @@ syn keyword logindefsStringKeyword contained
\ ENV_HZ
\ ENV_TZ
\ LOGIN_STRING
+ \ PREVENT_NO_AUTH
\ SU_NAME
\ TTYGROUP
- \ TTYPERM
\ USERDEL_CMD
\ nextgroup=logindefsString skipwhite
diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim
index b457304..d3ddf78 100644
--- a/runtime/syntax/make.vim
+++ b/runtime/syntax/make.vim
@@ -28,8 +28,13 @@ syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\
syn case match
" identifiers
-syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent
-syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent
+if exists("b:make_microsoft") || exists("make_microsoft")
+ syn region makeIdent start="\$(" end=")" contains=makeStatement,makeIdent
+ syn region makeIdent start="\${" end="}" contains=makeStatement,makeIdent
+else
+ syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent
+ syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent
+endif
syn match makeIdent "\$\$\w*"
syn match makeIdent "\$[^({]"
syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2
@@ -78,11 +83,13 @@ syn match makeOverride "^ *override\>"
syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
" Comment
-if exists("make_microsoft")
- syn match makeComment "#.*" contains=@Spell,makeTodo
-elseif !exists("make_no_comments")
- syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
- syn match makeComment "#$" contains=@Spell
+if !exists("make_no_comments")
+ if exists("b:make_microsoft") || exists("make_microsoft")
+ syn match makeComment "#.*" contains=@Spell,makeTodo
+ else
+ syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
+ syn match makeComment "#$" contains=@Spell
+ endif
endif
syn keyword makeTodo TODO FIXME XXX contained
diff --git a/runtime/syntax/mediawiki.vim b/runtime/syntax/mediawiki.vim
new file mode 100644
index 0000000..8ac30b9
--- /dev/null
+++ b/runtime/syntax/mediawiki.vim
@@ -0,0 +1,292 @@
+" mediawiki.vim (formerly named Wikipedia.vim)
+"
+" Vim syntax file
+" Language: MediaWiki
+" Maintainer: Avid Seeker <avidseeker7@protonmail.com>
+" Home: http://en.wikipedia.org/wiki/Wikipedia:Text_editor_support#Vim
+" Last Change: 2024 Jul 14
+" Credits: [[User:Unforgettableid]] [[User:Aepd87]], [[User:Danny373]], [[User:Ingo Karkat]], et al.
+"
+" Published on Wikipedia in 2003-04 and declared authorless.
+"
+" Based on the HTML syntax file. Probably too closely based, in fact.
+" There may well be name collisions everywhere, but ignorance is bliss,
+" so they say.
+"
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case ignore
+syntax spell toplevel
+
+" Mark illegal characters
+sy match htmlError "[<>&]"
+
+" Tags
+sy region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,@htmlPreproc
+sy region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,@htmlPreproc
+sy match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=@htmlPreproc
+sy region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError
+sy region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
+sy match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
+sy match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
+sy match htmlTagError contained "[^>]<"ms=s+1
+
+" Allowed HTML tag names
+sy keyword htmlTagName contained big blockquote br caption center cite code
+sy keyword htmlTagName contained dd del div dl dt font hr ins li
+sy keyword htmlTagName contained ol p pre rb rp rt ruby s small span strike sub
+sy keyword htmlTagName contained sup table td th tr tt ul var
+sy match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\)\>"
+" Allowed Wiki tag names
+sy keyword htmlTagName contained math nowiki references source syntaxhighlight
+
+" Allowed arg names
+sy keyword htmlArg contained align lang dir width height nowrap bgcolor clear
+sy keyword htmlArg contained noshade cite datetime size face color type start
+sy keyword htmlArg contained value compact summary border frame rules
+sy keyword htmlArg contained cellspacing cellpadding valign char charoff
+sy keyword htmlArg contained colgroup col span abbr axis headers scope rowspan
+sy keyword htmlArg contained colspan id class name style title
+
+" Special characters
+sy match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
+
+" Comments
+sy region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError
+sy match htmlCommentError contained "[^><!]"
+sy region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc
+sy region htmlComment start=+<!DOCTYPE+ keepend end=+>+
+
+if !exists("html_no_rendering")
+ sy cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,@htmlPreproc
+
+ sy region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
+ sy region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
+ sy region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
+ sy region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline
+ sy region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline
+ sy region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
+ sy region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
+ sy region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
+
+ sy region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
+ sy region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic
+ sy region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic
+ sy region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold
+ sy region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold
+ sy region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
+ sy region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
+ sy region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
+ sy region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
+
+ sy region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
+ sy region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop
+ sy region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline
+ sy region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline
+ sy region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop
+ sy region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold
+ sy region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
+ sy region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
+
+ sy region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop
+ sy region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop
+ sy region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop
+ sy region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop
+ sy region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop
+ sy region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop
+endif
+
+
+" No htmlTop and wikiPre inside HTML preformatted areas, because
+" MediaWiki renders everything in there literally (HTML tags and
+" entities, too): <pre> tags work as the combination of <nowiki> and
+" the standard HTML <pre> tag: the content will preformatted, and it
+" will not be parsed, but shown as in the wikitext source.
+"
+" With wikiPre, indented lines would be rendered differently from
+" unindented lines.
+sy match htmlPreTag /<pre\>[^>]*>/ contains=htmlTag
+sy match htmlPreEndTag /<\/pre>/ contains=htmlEndTag
+sy match wikiNowikiTag /<nowiki>/ contains=htmlTag
+sy match wikiNowikiEndTag /<\/nowiki>/ contains=htmlEndTag
+sy match wikiSourceTag /<source\s\+[^>]\+>/ contains=htmlTag
+sy match wikiSourceEndTag /<\/source>/ contains=htmlEndTag
+sy match wikiSyntaxHLTag /<syntaxhighlight\s\+[^>]\+>/ contains=htmlTag
+sy match wikiSyntaxHLEndTag /<\/syntaxhighlight>/ contains=htmlEndTag
+
+" Note: Cannot use 'start="<pre>"rs=e', so still have the <pre> tag
+" highlighted correctly via separate sy-match. Unfortunately, this will
+" also highlight <pre> tags inside the preformatted region.
+sy region htmlPre start="<pre\>[^>]*>" end="<\/pre>"me=e-6 contains=htmlPreTag
+sy region wikiNowiki start="<nowiki>" end="<\/nowiki>"me=e-9 contains=wikiNowikiTag
+sy region wikiSource start="<source\s\+[^>]\+>" keepend end="<\/source>"me=e-9 contains=wikiSourceTag
+sy region wikiSyntaxHL start="<syntaxhighlight\s\+[^>]\+>" keepend end="<\/syntaxhighlight>"me=e-18 contains=wikiSyntaxHLTag
+
+sy include @TeX syntax/tex.vim
+unlet b:current_syntax
+sy region wikiTeX matchgroup=htmlTag start="<math>" end="<\/math>" contains=@texMathZoneGroup,wikiNowiki,wikiNowikiEndTag
+sy region wikiRef matchgroup=htmlTag start="<ref>" end="<\/ref>" contains=wikiNowiki,wikiNowikiEndTag
+
+sy cluster wikiText contains=wikiLink,wikiTemplate,wikiNowiki,wikiNowikiEndTag,wikiItalic,wikiBold,wikiBoldAndItalic
+
+" Tables
+sy cluster wikiTableFormat contains=wikiTemplate,htmlString,htmlArg,htmlValue
+sy region wikiTable matchgroup=wikiTableSeparator start="{|" end="|}" contains=wikiTableHeaderLine,wikiTableCaptionLine,wikiTableNewRow,wikiTableHeadingCell,wikiTableNormalCell,@wikiText
+sy match wikiTableSeparator /^!/ contained
+sy match wikiTableSeparator /^|/ contained
+sy match wikiTableSeparator /^|[+-]/ contained
+sy match wikiTableSeparator /||/ contained
+sy match wikiTableSeparator /!!/ contained
+sy match wikiTableFormatEnd /[!|]/ contained
+sy match wikiTableHeadingCell /\(^!\|!!\)\([^!|]*|\)\?.*/ contains=wikiTableSeparator,@wikiText,wikiTableHeadingFormat
+" Require at least one '=' in the format, to avoid spurious matches (e.g.
+" the | in [[foo|bar]] might be taken as the final |, indicating the beginning
+" of the cell). The same is done for wikiTableNormalFormat below.
+sy match wikiTableHeadingFormat /\%(^!\|!!\)[^!|]\+=[^!|]\+\([!|]\)\(\1\)\@!/me=e-1 contains=@wikiTableFormat,wikiTableSeparator nextgroup=wikiTableFormatEnd
+sy match wikiTableNormalCell /\(^|\|||\)\([^|]*|\)\?.*/ contains=wikiTableSeparator,@wikiText,wikiTableNormalFormat
+sy match wikiTableNormalFormat /\(^|\|||\)[^|]\+=[^|]\+||\@!/me=e-1 contains=@wikiTableFormat,wikiTableSeparator nextgroup=wikiTableFormatEnd
+sy match wikiTableHeaderLine /\(^{|\)\@<=.*$/ contained contains=@wikiTableFormat
+sy match wikiTableCaptionLine /^|+.*$/ contained contains=wikiTableSeparator,@wikiText
+sy match wikiTableNewRow /^|-.*$/ contained contains=wikiTableSeparator,@wikiTableFormat
+
+sy cluster wikiTop contains=@Spell,wikiLink,wikiNowiki,wikiNowikiEndTag
+
+sy region wikiItalic start=+'\@<!'''\@!+ end=+''+ oneline contains=@wikiTop,wikiItalicBold
+sy region wikiBold start=+'''+ end=+'''+ oneline contains=@wikiTop,wikiBoldItalic
+sy region wikiBoldAndItalic start=+'''''+ end=+'''''+ oneline contains=@wikiTop
+
+sy region wikiBoldItalic contained start=+'\@<!'''\@!+ end=+''+ oneline contains=@wikiTop
+sy region wikiItalicBold contained start=+'''+ end=+'''+ oneline contains=@wikiTop
+
+sy region wikiH1 start="^=" end="=" oneline contains=@wikiTop
+sy region wikiH2 start="^==" end="==" oneline contains=@wikiTop
+sy region wikiH3 start="^===" end="===" oneline contains=@wikiTop
+sy region wikiH4 start="^====" end="====" oneline contains=@wikiTop
+sy region wikiH5 start="^=====" end="=====" oneline contains=@wikiTop
+sy region wikiH6 start="^======" end="======" oneline contains=@wikiTop
+
+sy region wikiLink start="\[\[" end="\]\]\(s\|'s\|es\|ing\|\)" oneline contains=wikiLink,wikiNowiki,wikiNowikiEndTag
+
+sy region wikiLink start="https\?://" end="\W*\_s"me=s-1 oneline
+sy region wikiLink start="\[http:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag
+sy region wikiLink start="\[https:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag
+sy region wikiLink start="\[ftp:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag
+sy region wikiLink start="\[gopher:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag
+sy region wikiLink start="\[news:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag
+sy region wikiLink start="\[mailto:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag
+
+sy match wikiTemplateName /{{[^{|}<>\[\]]\+/hs=s+2 contained
+sy region wikiTemplate start="{{" end="}}" keepend extend contains=wikiNowiki,wikiNowikiEndTag,wikiTemplateName,wikiTemplateParam,wikiTemplate,wikiLink
+sy region wikiTemplateParam start="{{{\s*\d" end="}}}" extend contains=wikiTemplateName
+
+sy match wikiParaFormatChar /^[\:|\*|;|#]\+/
+sy match wikiParaFormatChar /^-----*/
+sy match wikiPre /^\ .*$/ contains=wikiNowiki,wikiNowikiEndTag
+
+" HTML highlighting
+
+hi def link htmlTag Function
+hi def link htmlEndTag Identifier
+hi def link htmlArg Type
+hi def link htmlTagName htmlStatement
+hi def link htmlSpecialTagName Exception
+hi def link htmlValue String
+hi def link htmlSpecialChar Special
+
+if !exists("html_no_rendering")
+ hi def link htmlTitle Title
+ hi def link htmlH1 htmlTitle
+ hi def link htmlH2 htmlTitle
+ hi def link htmlH3 htmlTitle
+ hi def link htmlH4 htmlTitle
+ hi def link htmlH5 htmlTitle
+ hi def link htmlH6 htmlTitle
+
+ hi def link htmlPreProc PreProc
+ hi def link htmlHead htmlPreProc
+ hi def link htmlPreProcAttrName htmlPreProc
+ hi def link htmlPreStmt htmlPreProc
+
+ hi def link htmlSpecial Special
+ hi def link htmlCssDefinition htmlSpecial
+ hi def link htmlEvent htmlSpecial
+ hi def link htmlSpecialChar htmlSpecial
+
+ hi def link htmlComment Comment
+ hi def link htmlCommentPart htmlComment
+ hi def link htmlCssStyleComment htmlComment
+
+ hi def link htmlString String
+ hi def link htmlPreAttr htmlString
+ hi def link htmlValue htmlString
+
+ hi def link htmlError Error
+ hi def link htmlBadArg htmlError
+ hi def link htmlBadTag htmlError
+ hi def link htmlCommentError htmlError
+ hi def link htmlPreError htmlError
+ hi def link htmlPreProcAttrError htmlError
+ hi def link htmlTagError htmlError
+
+ hi def link htmlStatement Statement
+
+ hi def link htmlConstant Constant
+
+ hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
+ hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
+ hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
+ hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
+ hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
+
+ hi def link htmlItalicBold htmlBoldItalic
+ hi def link htmlItalicUnderline htmlUnderlineItalic
+ hi def link htmlUnderlineBold htmlBoldUnderline
+
+ hi def link htmlLink Underlined
+
+ if !exists("html_style_rendering")
+ hi def htmlBold term=bold cterm=bold gui=bold
+ hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
+ hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
+ hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
+ hi def htmlUnderline term=underline cterm=underline gui=underline
+ hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
+ hi def htmlItalic term=italic cterm=italic gui=italic
+ endif
+endif
+
+" Wiki highlighting
+
+hi def link wikiItalic htmlItalic
+hi def link wikiBold htmlBold
+hi def link wikiBoldItalic htmlBoldItalic
+hi def link wikiItalicBold htmlBoldItalic
+hi def link wikiBoldAndItalic htmlBoldItalic
+
+hi def link wikiH1 htmlTitle
+hi def link wikiH2 htmlTitle
+hi def link wikiH3 htmlTitle
+hi def link wikiH4 htmlTitle
+hi def link wikiH5 htmlTitle
+hi def link wikiH6 htmlTitle
+
+hi def link wikiLink htmlLink
+hi def link wikiTemplate htmlSpecial
+hi def link wikiTemplateParam htmlSpecial
+hi def link wikiTemplateName Type
+hi def link wikiParaFormatChar htmlSpecial
+hi def link wikiPre htmlConstant
+hi def link wikiRef htmlComment
+
+hi def link htmlPre wikiPre
+hi def link wikiSource wikiPre
+hi def link wikiSyntaxHL wikiPre
+
+hi def link wikiTableSeparator Statement
+hi def link wikiTableFormatEnd wikiTableSeparator
+hi def link wikiTableHeadingCell htmlBold
+
+let b:current_syntax = "mediawiki"
diff --git a/runtime/syntax/mysql.vim b/runtime/syntax/mysql.vim
index 8bd7b64..49b5331 100644
--- a/runtime/syntax/mysql.vim
+++ b/runtime/syntax/mysql.vim
@@ -1,10 +1,13 @@
" Vim syntax file
" Language: mysql
" Maintainer: Kenneth J. Pronovici <pronovic@ieee.org>
-" Last Change: $LastChangedDate: 2016-04-11 10:31:04 -0500 (Mon, 11 Apr 2016) $
" Filenames: *.mysql
-" URL: ftp://cedar-solutions.com/software/mysql.vim
-" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
+" URL: ftp://cedar-solutions.com/software/mysql.vim (https://github.com/pronovic/vim-syntax/blob/master/mysql.vim)
+" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 and have been updated
+" in July 2024 with the docs for version 8.4
+" Last Change: 2016 Apr 11
+" 2024-07-21: update MySQL functions as of MySQL 8.4 (by Vim Project)
+"
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -92,23 +95,23 @@ syn keyword mysqlType tinytext mediumtext longtext text
syn keyword mysqlType tinyblob mediumblob longblob blob
syn region mysqlType start="float\W" end="."me=s-1
syn region mysqlType start="float$" end="."me=s-1
-syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<float(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="double\W" end="."me=s-1
syn region mysqlType start="double$" end="."me=s-1
-syn region mysqlType start="double(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<double(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="double precision\W" end="."me=s-1
syn region mysqlType start="double precision$" end="."me=s-1
syn region mysqlType start="double precision(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="real\W" end="."me=s-1
syn region mysqlType start="real$" end="."me=s-1
-syn region mysqlType start="real(" end=")" contains=mysqlNumber,mysqlVariable
-syn region mysqlType start="numeric(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<real(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<numeric(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="dec\W" end="."me=s-1
syn region mysqlType start="dec$" end="."me=s-1
-syn region mysqlType start="dec(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<dec(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="decimal\W" end="."me=s-1
syn region mysqlType start="decimal$" end="."me=s-1
-syn region mysqlType start="decimal(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<decimal(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="\Wtimestamp\W" end="."me=s-1
syn region mysqlType start="\Wtimestamp$" end="."me=s-1
syn region mysqlType start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable
@@ -117,25 +120,42 @@ syn region mysqlType start="^timestamp$" end="."me=s-1
syn region mysqlType start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable
syn region mysqlType start="^year(" end=")" contains=mysqlNumber,mysqlVariable
-syn region mysqlType start="char(" end=")" contains=mysqlNumber,mysqlVariable
-syn region mysqlType start="varchar(" end=")" contains=mysqlNumber,mysqlVariable
-syn region mysqlType start="enum(" end=")" contains=mysqlString,mysqlVariable
+syn region mysqlType start="\<char(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<varchar(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\<enum(" end=")" contains=mysqlString,mysqlVariable
syn region mysqlType start="\Wset(" end=")" contains=mysqlString,mysqlVariable
syn region mysqlType start="^set(" end=")" contains=mysqlString,mysqlVariable
" Logical, string and numeric operators
syn keyword mysqlOperator between not and or is in like regexp rlike binary exists
-syn region mysqlOperator start="isnull(" end=")" contains=ALL
-syn region mysqlOperator start="coalesce(" end=")" contains=ALL
-syn region mysqlOperator start="interval(" end=")" contains=ALL
+syn region mysqlOperatorFunction start="\<isnull(" end=")" contains=ALL
+syn region mysqlOperatorFunction start="\<coalesce(" end=")" contains=ALL
+syn region mysqlOperatorFunction start="\<interval(" end=")" contains=ALL
-" Control flow functions
-syn keyword mysqlFlow case when then else end
-syn region mysqlFlow start="ifnull(" end=")" contains=ALL
-syn region mysqlFlow start="nullif(" end=")" contains=ALL
-syn region mysqlFlow start="if(" end=")" contains=ALL
+" Flow control functions
+" https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/flow-control-functions.html
+syn keyword mysqlFlowLabel case when then else end
+syn region mysqlFlowFunction start="\<ifnull(" end=")" contains=ALL
+syn region mysqlFlowFunction start="\<nullif(" end=")" contains=ALL
+syn region mysqlFlowFunction start="\<if(" end=")" contains=ALL
-" General Functions
+" Window functions
+" https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/window-functions-usage.html
+syn keyword mysqlWindowKeyword over partition window
+" https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/window-function-descriptions.html
+syn region mysqlWindowFunction start="\<cume_dist(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<dense_rank(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<first_value(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<lag(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<last_value(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<lead(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<nth_value(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<ntile(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<percent_rank(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<rank(" end=")" contains=ALL
+syn region mysqlWindowFunction start="\<row_number(" end=")" contains=ALL
+
+" General functions
"
" I'm leery of just defining keywords for functions, since according to the MySQL manual:
"
@@ -147,140 +167,144 @@ syn region mysqlFlow start="if(" end=")" contains=ALL
" region to define them, not just a keyword. This will probably cause the syntax file
" to load more slowly, but at least it will be 'correct'.
-syn region mysqlFunction start="abs(" end=")" contains=ALL
-syn region mysqlFunction start="acos(" end=")" contains=ALL
-syn region mysqlFunction start="adddate(" end=")" contains=ALL
-syn region mysqlFunction start="ascii(" end=")" contains=ALL
-syn region mysqlFunction start="asin(" end=")" contains=ALL
-syn region mysqlFunction start="atan(" end=")" contains=ALL
-syn region mysqlFunction start="atan2(" end=")" contains=ALL
-syn region mysqlFunction start="avg(" end=")" contains=ALL
-syn region mysqlFunction start="benchmark(" end=")" contains=ALL
-syn region mysqlFunction start="bin(" end=")" contains=ALL
-syn region mysqlFunction start="bit_and(" end=")" contains=ALL
-syn region mysqlFunction start="bit_count(" end=")" contains=ALL
-syn region mysqlFunction start="bit_or(" end=")" contains=ALL
-syn region mysqlFunction start="ceiling(" end=")" contains=ALL
-syn region mysqlFunction start="character_length(" end=")" contains=ALL
-syn region mysqlFunction start="char_length(" end=")" contains=ALL
-syn region mysqlFunction start="concat(" end=")" contains=ALL
-syn region mysqlFunction start="concat_ws(" end=")" contains=ALL
-syn region mysqlFunction start="connection_id(" end=")" contains=ALL
-syn region mysqlFunction start="conv(" end=")" contains=ALL
-syn region mysqlFunction start="cos(" end=")" contains=ALL
-syn region mysqlFunction start="cot(" end=")" contains=ALL
-syn region mysqlFunction start="count(" end=")" contains=ALL
-syn region mysqlFunction start="curdate(" end=")" contains=ALL
-syn region mysqlFunction start="curtime(" end=")" contains=ALL
-syn region mysqlFunction start="date_add(" end=")" contains=ALL
-syn region mysqlFunction start="date_format(" end=")" contains=ALL
-syn region mysqlFunction start="date_sub(" end=")" contains=ALL
-syn region mysqlFunction start="dayname(" end=")" contains=ALL
-syn region mysqlFunction start="dayofmonth(" end=")" contains=ALL
-syn region mysqlFunction start="dayofweek(" end=")" contains=ALL
-syn region mysqlFunction start="dayofyear(" end=")" contains=ALL
-syn region mysqlFunction start="decode(" end=")" contains=ALL
-syn region mysqlFunction start="degrees(" end=")" contains=ALL
-syn region mysqlFunction start="elt(" end=")" contains=ALL
-syn region mysqlFunction start="encode(" end=")" contains=ALL
-syn region mysqlFunction start="encrypt(" end=")" contains=ALL
-syn region mysqlFunction start="exp(" end=")" contains=ALL
-syn region mysqlFunction start="export_set(" end=")" contains=ALL
-syn region mysqlFunction start="extract(" end=")" contains=ALL
-syn region mysqlFunction start="field(" end=")" contains=ALL
-syn region mysqlFunction start="find_in_set(" end=")" contains=ALL
-syn region mysqlFunction start="floor(" end=")" contains=ALL
-syn region mysqlFunction start="format(" end=")" contains=ALL
-syn region mysqlFunction start="from_days(" end=")" contains=ALL
-syn region mysqlFunction start="from_unixtime(" end=")" contains=ALL
-syn region mysqlFunction start="get_lock(" end=")" contains=ALL
-syn region mysqlFunction start="greatest(" end=")" contains=ALL
-syn region mysqlFunction start="group_unique_users(" end=")" contains=ALL
-syn region mysqlFunction start="hex(" end=")" contains=ALL
-syn region mysqlFunction start="inet_aton(" end=")" contains=ALL
-syn region mysqlFunction start="inet_ntoa(" end=")" contains=ALL
-syn region mysqlFunction start="instr(" end=")" contains=ALL
-syn region mysqlFunction start="lcase(" end=")" contains=ALL
-syn region mysqlFunction start="least(" end=")" contains=ALL
-syn region mysqlFunction start="length(" end=")" contains=ALL
-syn region mysqlFunction start="load_file(" end=")" contains=ALL
-syn region mysqlFunction start="locate(" end=")" contains=ALL
-syn region mysqlFunction start="log(" end=")" contains=ALL
-syn region mysqlFunction start="log10(" end=")" contains=ALL
-syn region mysqlFunction start="lower(" end=")" contains=ALL
-syn region mysqlFunction start="lpad(" end=")" contains=ALL
-syn region mysqlFunction start="ltrim(" end=")" contains=ALL
-syn region mysqlFunction start="make_set(" end=")" contains=ALL
-syn region mysqlFunction start="master_pos_wait(" end=")" contains=ALL
-syn region mysqlFunction start="max(" end=")" contains=ALL
-syn region mysqlFunction start="md5(" end=")" contains=ALL
-syn region mysqlFunction start="mid(" end=")" contains=ALL
-syn region mysqlFunction start="min(" end=")" contains=ALL
-syn region mysqlFunction start="mod(" end=")" contains=ALL
-syn region mysqlFunction start="monthname(" end=")" contains=ALL
-syn region mysqlFunction start="now(" end=")" contains=ALL
-syn region mysqlFunction start="oct(" end=")" contains=ALL
-syn region mysqlFunction start="octet_length(" end=")" contains=ALL
-syn region mysqlFunction start="ord(" end=")" contains=ALL
-syn region mysqlFunction start="period_add(" end=")" contains=ALL
-syn region mysqlFunction start="period_diff(" end=")" contains=ALL
-syn region mysqlFunction start="pi(" end=")" contains=ALL
-syn region mysqlFunction start="position(" end=")" contains=ALL
-syn region mysqlFunction start="pow(" end=")" contains=ALL
-syn region mysqlFunction start="power(" end=")" contains=ALL
-syn region mysqlFunction start="quarter(" end=")" contains=ALL
-syn region mysqlFunction start="radians(" end=")" contains=ALL
-syn region mysqlFunction start="rand(" end=")" contains=ALL
-syn region mysqlFunction start="release_lock(" end=")" contains=ALL
-syn region mysqlFunction start="repeat(" end=")" contains=ALL
-syn region mysqlFunction start="reverse(" end=")" contains=ALL
-syn region mysqlFunction start="round(" end=")" contains=ALL
-syn region mysqlFunction start="rpad(" end=")" contains=ALL
-syn region mysqlFunction start="rtrim(" end=")" contains=ALL
-syn region mysqlFunction start="sec_to_time(" end=")" contains=ALL
-syn region mysqlFunction start="session_user(" end=")" contains=ALL
-syn region mysqlFunction start="sign(" end=")" contains=ALL
-syn region mysqlFunction start="sin(" end=")" contains=ALL
-syn region mysqlFunction start="soundex(" end=")" contains=ALL
-syn region mysqlFunction start="space(" end=")" contains=ALL
-syn region mysqlFunction start="sqrt(" end=")" contains=ALL
-syn region mysqlFunction start="std(" end=")" contains=ALL
-syn region mysqlFunction start="stddev(" end=")" contains=ALL
-syn region mysqlFunction start="strcmp(" end=")" contains=ALL
-syn region mysqlFunction start="subdate(" end=")" contains=ALL
-syn region mysqlFunction start="substring(" end=")" contains=ALL
-syn region mysqlFunction start="substring_index(" end=")" contains=ALL
-syn region mysqlFunction start="subtime(" end=")" contains=ALL
-syn region mysqlFunction start="sum(" end=")" contains=ALL
-syn region mysqlFunction start="sysdate(" end=")" contains=ALL
-syn region mysqlFunction start="system_user(" end=")" contains=ALL
-syn region mysqlFunction start="tan(" end=")" contains=ALL
-syn region mysqlFunction start="time_format(" end=")" contains=ALL
-syn region mysqlFunction start="time_to_sec(" end=")" contains=ALL
-syn region mysqlFunction start="to_days(" end=")" contains=ALL
-syn region mysqlFunction start="trim(" end=")" contains=ALL
-syn region mysqlFunction start="ucase(" end=")" contains=ALL
-syn region mysqlFunction start="unique_users(" end=")" contains=ALL
-syn region mysqlFunction start="unix_timestamp(" end=")" contains=ALL
-syn region mysqlFunction start="upper(" end=")" contains=ALL
-syn region mysqlFunction start="user(" end=")" contains=ALL
-syn region mysqlFunction start="version(" end=")" contains=ALL
-syn region mysqlFunction start="week(" end=")" contains=ALL
-syn region mysqlFunction start="weekday(" end=")" contains=ALL
-syn region mysqlFunction start="yearweek(" end=")" contains=ALL
+syn region mysqlFunction start="\<abs(" end=")" contains=ALL
+syn region mysqlFunction start="\<acos(" end=")" contains=ALL
+syn region mysqlFunction start="\<adddate(" end=")" contains=ALL
+syn region mysqlFunction start="\<ascii(" end=")" contains=ALL
+syn region mysqlFunction start="\<asin(" end=")" contains=ALL
+syn region mysqlFunction start="\<atan(" end=")" contains=ALL
+syn region mysqlFunction start="\<atan2(" end=")" contains=ALL
+syn region mysqlFunction start="\<avg(" end=")" contains=ALL
+syn region mysqlFunction start="\<benchmark(" end=")" contains=ALL
+syn region mysqlFunction start="\<bin(" end=")" contains=ALL
+syn region mysqlFunction start="\<bit_and(" end=")" contains=ALL
+syn region mysqlFunction start="\<bit_count(" end=")" contains=ALL
+syn region mysqlFunction start="\<bit_or(" end=")" contains=ALL
+syn region mysqlFunction start="\<ceiling(" end=")" contains=ALL
+syn region mysqlFunction start="\<character_length(" end=")" contains=ALL
+syn region mysqlFunction start="\<char_length(" end=")" contains=ALL
+syn region mysqlFunction start="\<concat(" end=")" contains=ALL
+syn region mysqlFunction start="\<concat_ws(" end=")" contains=ALL
+syn region mysqlFunction start="\<connection_id(" end=")" contains=ALL
+syn region mysqlFunction start="\<conv(" end=")" contains=ALL
+syn region mysqlFunction start="\<cos(" end=")" contains=ALL
+syn region mysqlFunction start="\<cot(" end=")" contains=ALL
+syn region mysqlFunction start="\<count(" end=")" contains=ALL
+syn region mysqlFunction start="\<curdate(" end=")" contains=ALL
+syn region mysqlFunction start="\<curtime(" end=")" contains=ALL
+syn region mysqlFunction start="\<date_add(" end=")" contains=ALL
+syn region mysqlFunction start="\<date_format(" end=")" contains=ALL
+syn region mysqlFunction start="\<date_sub(" end=")" contains=ALL
+syn region mysqlFunction start="\<dayname(" end=")" contains=ALL
+syn region mysqlFunction start="\<dayofmonth(" end=")" contains=ALL
+syn region mysqlFunction start="\<dayofweek(" end=")" contains=ALL
+syn region mysqlFunction start="\<dayofyear(" end=")" contains=ALL
+syn region mysqlFunction start="\<decode(" end=")" contains=ALL
+syn region mysqlFunction start="\<degrees(" end=")" contains=ALL
+syn region mysqlFunction start="\<elt(" end=")" contains=ALL
+syn region mysqlFunction start="\<encode(" end=")" contains=ALL
+syn region mysqlFunction start="\<encrypt(" end=")" contains=ALL
+syn region mysqlFunction start="\<exp(" end=")" contains=ALL
+syn region mysqlFunction start="\<export_set(" end=")" contains=ALL
+syn region mysqlFunction start="\<extract(" end=")" contains=ALL
+syn region mysqlFunction start="\<field(" end=")" contains=ALL
+syn region mysqlFunction start="\<find_in_set(" end=")" contains=ALL
+syn region mysqlFunction start="\<floor(" end=")" contains=ALL
+syn region mysqlFunction start="\<format(" end=")" contains=ALL
+syn region mysqlFunction start="\<from_days(" end=")" contains=ALL
+syn region mysqlFunction start="\<from_unixtime(" end=")" contains=ALL
+syn region mysqlFunction start="\<get_lock(" end=")" contains=ALL
+syn region mysqlFunction start="\<greatest(" end=")" contains=ALL
+syn region mysqlFunction start="\<group_unique_users(" end=")" contains=ALL
+syn region mysqlFunction start="\<hex(" end=")" contains=ALL
+syn region mysqlFunction start="\<inet_aton(" end=")" contains=ALL
+syn region mysqlFunction start="\<inet_ntoa(" end=")" contains=ALL
+syn region mysqlFunction start="\<instr(" end=")" contains=ALL
+syn region mysqlFunction start="\<lcase(" end=")" contains=ALL
+syn region mysqlFunction start="\<least(" end=")" contains=ALL
+syn region mysqlFunction start="\<length(" end=")" contains=ALL
+syn region mysqlFunction start="\<load_file(" end=")" contains=ALL
+syn region mysqlFunction start="\<locate(" end=")" contains=ALL
+syn region mysqlFunction start="\<log(" end=")" contains=ALL
+syn region mysqlFunction start="\<log10(" end=")" contains=ALL
+syn region mysqlFunction start="\<lower(" end=")" contains=ALL
+syn region mysqlFunction start="\<lpad(" end=")" contains=ALL
+syn region mysqlFunction start="\<ltrim(" end=")" contains=ALL
+syn region mysqlFunction start="\<make_set(" end=")" contains=ALL
+syn region mysqlFunction start="\<master_pos_wait(" end=")" contains=ALL
+syn region mysqlFunction start="\<max(" end=")" contains=ALL
+syn region mysqlFunction start="\<md5(" end=")" contains=ALL
+syn region mysqlFunction start="\<mid(" end=")" contains=ALL
+syn region mysqlFunction start="\<min(" end=")" contains=ALL
+syn region mysqlFunction start="\<mod(" end=")" contains=ALL
+syn region mysqlFunction start="\<monthname(" end=")" contains=ALL
+syn region mysqlFunction start="\<now(" end=")" contains=ALL
+syn region mysqlFunction start="\<oct(" end=")" contains=ALL
+syn region mysqlFunction start="\<octet_length(" end=")" contains=ALL
+syn region mysqlFunction start="\<ord(" end=")" contains=ALL
+syn region mysqlFunction start="\<period_add(" end=")" contains=ALL
+syn region mysqlFunction start="\<period_diff(" end=")" contains=ALL
+syn region mysqlFunction start="\<pi(" end=")" contains=ALL
+syn region mysqlFunction start="\<position(" end=")" contains=ALL
+syn region mysqlFunction start="\<pow(" end=")" contains=ALL
+syn region mysqlFunction start="\<power(" end=")" contains=ALL
+syn region mysqlFunction start="\<quarter(" end=")" contains=ALL
+syn region mysqlFunction start="\<radians(" end=")" contains=ALL
+syn region mysqlFunction start="\<rand(" end=")" contains=ALL
+syn region mysqlFunction start="\<release_lock(" end=")" contains=ALL
+syn region mysqlFunction start="\<repeat(" end=")" contains=ALL
+syn region mysqlFunction start="\<reverse(" end=")" contains=ALL
+syn region mysqlFunction start="\<round(" end=")" contains=ALL
+syn region mysqlFunction start="\<rpad(" end=")" contains=ALL
+syn region mysqlFunction start="\<rtrim(" end=")" contains=ALL
+syn region mysqlFunction start="\<sec_to_time(" end=")" contains=ALL
+syn region mysqlFunction start="\<session_user(" end=")" contains=ALL
+syn region mysqlFunction start="\<sign(" end=")" contains=ALL
+syn region mysqlFunction start="\<sin(" end=")" contains=ALL
+syn region mysqlFunction start="\<soundex(" end=")" contains=ALL
+syn region mysqlFunction start="\<space(" end=")" contains=ALL
+syn region mysqlFunction start="\<sqrt(" end=")" contains=ALL
+syn region mysqlFunction start="\<std(" end=")" contains=ALL
+syn region mysqlFunction start="\<stddev(" end=")" contains=ALL
+syn region mysqlFunction start="\<strcmp(" end=")" contains=ALL
+syn region mysqlFunction start="\<subdate(" end=")" contains=ALL
+syn region mysqlFunction start="\<substring(" end=")" contains=ALL
+syn region mysqlFunction start="\<substring_index(" end=")" contains=ALL
+syn region mysqlFunction start="\<subtime(" end=")" contains=ALL
+syn region mysqlFunction start="\<sum(" end=")" contains=ALL
+syn region mysqlFunction start="\<sysdate(" end=")" contains=ALL
+syn region mysqlFunction start="\<system_user(" end=")" contains=ALL
+syn region mysqlFunction start="\<tan(" end=")" contains=ALL
+syn region mysqlFunction start="\<time_format(" end=")" contains=ALL
+syn region mysqlFunction start="\<time_to_sec(" end=")" contains=ALL
+syn region mysqlFunction start="\<to_days(" end=")" contains=ALL
+syn region mysqlFunction start="\<trim(" end=")" contains=ALL
+syn region mysqlFunction start="\<ucase(" end=")" contains=ALL
+syn region mysqlFunction start="\<unique_users(" end=")" contains=ALL
+syn region mysqlFunction start="\<unix_timestamp(" end=")" contains=ALL
+syn region mysqlFunction start="\<upper(" end=")" contains=ALL
+syn region mysqlFunction start="\<user(" end=")" contains=ALL
+syn region mysqlFunction start="\<version(" end=")" contains=ALL
+syn region mysqlFunction start="\<week(" end=")" contains=ALL
+syn region mysqlFunction start="\<weekday(" end=")" contains=ALL
+syn region mysqlFunction start="\<yearweek(" end=")" contains=ALL
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
-hi def link mysqlKeyword Statement
+hi def link mysqlKeyword Keyword
hi def link mysqlSpecial Special
hi def link mysqlString String
hi def link mysqlNumber Number
hi def link mysqlVariable Identifier
hi def link mysqlComment Comment
hi def link mysqlType Type
-hi def link mysqlOperator Statement
-hi def link mysqlFlow Statement
+hi def link mysqlOperator Operator
+hi def link mysqlOperatorFunction Function
+hi def link mysqlFlowFunction Function
+hi def link mysqlFlowLabel Label
+hi def link mysqlWindowFunction Function
+hi def link mysqlWindowKeyword Keyword
hi def link mysqlFunction Function
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
index af3efd3..04ba392 100644
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -6,6 +6,7 @@
" Issac Trotts <ijtrotts@ucdavis.edu>
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
+" 2019 Nov 05 - Accurate type highlighting (Maëlan)
" 2018 Nov 08 - Improved highlighting of operators (Maëlan)
" 2018 Apr 22 - Improved support for PPX (Andrey Popp)
" 2018 Mar 16 - Remove raise, lnot and not from keywords (Étienne Millon, "copy")
@@ -38,25 +39,18 @@ syn case match
" Access to the method of an object
syn match ocamlMethod "#"
-" Script headers highlighted like comments
-syn match ocamlComment "^#!.*" contains=@Spell
-
" Scripting directives
syn match ocamlScript "^#\<\(quit\|labels\|warnings\|warn_error\|directory\|remove_directory\|cd\|load\|load_rec\|use\|mod_use\|install_printer\|remove_printer\|require\|list\|ppx\|principal\|predicates\|rectypes\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\|camlp4o\|camlp4r\|topfind_log\|topfind_verbose\)\>"
" lowercase identifier - the standard way to match
syn match ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
-syn match ocamlKeyChar "|"
-
" Errors
syn match ocamlBraceErr "}"
syn match ocamlBrackErr "\]"
syn match ocamlParenErr ")"
syn match ocamlArrErr "|]"
-syn match ocamlCommentErr "\*)"
-
syn match ocamlCountErr "\<downto\>"
syn match ocamlCountErr "\<to\>"
@@ -75,19 +69,22 @@ else
syn match ocamlEndErr "\<end\>"
endif
-" Some convenient clusters
-syn cluster ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+" These keywords are only expected nested in constructions that are handled by
+" the type linter, so outside of type contexts we highlight them as errors:
+syn match ocamlKwErr "\<\(mutable\|nonrec\|of\|private\)\>"
-syn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+" Some convenient clusters
+syn cluster ocamlAllErrs contains=@ocamlAENoParen,ocamlParenErr
+syn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr,ocamlKwErr
-syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal
+syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlModTypePre,ocamlModRHS,ocamlFuncWith,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlFullMod,ocamlVal
" Enclosing delimiters
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
+syn region ocamlNone transparent matchgroup=ocamlEncl start="(" matchgroup=ocamlEncl end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region ocamlNone transparent matchgroup=ocamlEncl start="{" matchgroup=ocamlEncl end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr
+syn region ocamlNone transparent matchgroup=ocamlEncl start="\[" matchgroup=ocamlEncl end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region ocamlNone transparent matchgroup=ocamlEncl start="\[|" matchgroup=ocamlEncl end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
" Comments
@@ -124,10 +121,6 @@ syn region ocamlPpx matchgroup=ocamlPpxEncl start="\[@\{1,3\}" contains=TOP end=
"" Modules
-" "sig"
-syn region ocamlSig matchgroup=ocamlSigEncl start="\<sig\>" matchgroup=ocamlSigEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
-syn region ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
-
" "open"
syn match ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
@@ -135,51 +128,66 @@ syn match ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
syn match ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
" "module" - somewhat complicated stuff ;-)
-syn region ocamlModule matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef
-syn region ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|=\|)"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS
-syn region ocamlModParam start="([^*]" end=")" contained contains=ocamlGenMod,ocamlModParam1,ocamlSig,ocamlVal
+" 2022-10: please document it?
+syn region ocamlModule matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<_\|\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef
+syn region ocamlPreDef start="."me=e-1 end="[a-z:=)]\@=" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod,ocamlModTypeRestr nextgroup=ocamlModTypePre,ocamlModPreRHS
+syn region ocamlModParam start="(\*\@!" end=")" contained contains=ocamlGenMod,ocamlModParam,ocamlModParam1,ocamlSig,ocamlVal
syn match ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty
syn match ocamlGenMod "()" contained skipwhite skipempty
-syn region ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3
-syn region ocamlMPRestr1 matchgroup=ocamlSigEncl start="\ssig\s\=" matchgroup=ocamlSigEncl end="\<end\>" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
-syn region ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2
-syn match ocamlMPRestr3 "\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*" contained
+syn match ocamlModTypePre ":" contained skipwhite skipempty nextgroup=ocamlModTRWith,ocamlSig,ocamlFunctor,ocamlModTypeRestr,ocamlModTypeOf
+syn match ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained
+
syn match ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
syn keyword ocamlKeyword val
-syn region ocamlVal matchgroup=ocamlKeyword start="\<val\>" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlMPRestr
+syn region ocamlVal matchgroup=ocamlKeyword start="\<val\>" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlModTypePre
syn region ocamlModRHS start="." end=". *\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
syn match ocamlFullMod "\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith
-syn region ocamlFuncWith start="([^*)]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith
-syn region ocamlFuncStruct matchgroup=ocamlStructEncl start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlStructEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+syn region ocamlFuncWith start="([*)]\@!" end=")" contained contains=ocamlComment,ocamlWith,ocamlStruct skipwhite skipempty nextgroup=ocamlFuncWith
-syn match ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained
-syn region ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith
+syn region ocamlModTRWith start="(\*\@!" end=")" contained contains=@ocamlAENoParen,ocamlWith
syn match ocamlWith "\<\(\u\(\w\|'\)* *\. *\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest
syn region ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained
" "struct"
syn region ocamlStruct matchgroup=ocamlStructEncl start="\<\(module\s\+\)\=struct\>" matchgroup=ocamlStructEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+" "sig"
+syn region ocamlSig matchgroup=ocamlSigEncl start="\<sig\>" matchgroup=ocamlSigEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+
+" "functor"
+syn region ocamlFunctor start="\<functor\>" matchgroup=ocamlKeyword end="->" contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod skipwhite skipempty nextgroup=ocamlStruct,ocamlSig,ocamlFuncWith,ocamlFunctor
+
" "module type"
-syn region ocamlKeyword start="\<module\>\s*\<type\>\(\s*\<of\>\)\=" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
+syn region ocamlModTypeOf start="\<module\s\+type\(\s\+of\)\=\>" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
syn match ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s+1 skipwhite skipempty nextgroup=ocamlFullMod
" Quoted strings
syn region ocamlString matchgroup=ocamlQuotedStringDelim start="{\z\([a-z_]*\)|" end="|\z1}" contains=@Spell
+syn region ocamlString matchgroup=ocamlQuotedStringDelim start="{%[a-z_]\+\(\.[a-z_]\+\)\?\( \z\([a-z_]\+\)\)\?|" end="|\z1}" contains=@Spell
syn keyword ocamlKeyword and as assert class
-syn keyword ocamlKeyword constraint else
-syn keyword ocamlKeyword exception external fun
-
+syn keyword ocamlKeyword else
+syn keyword ocamlKeyword external
syn keyword ocamlKeyword in inherit initializer
syn keyword ocamlKeyword lazy let match
-syn keyword ocamlKeyword method mutable new nonrec of
-syn keyword ocamlKeyword parser private rec
-syn keyword ocamlKeyword try type
+syn keyword ocamlKeyword method new
+syn keyword ocamlKeyword parser rec
+syn keyword ocamlKeyword try
syn keyword ocamlKeyword virtual when while with
+" Keywords which are handled by the type linter:
+" as (within a type equation)
+" constraint exception mutable nonrec of private type
+
+" The `fun` keyword has special treatment because of the syntax `fun … : t -> e`
+" where `->` ends the type context rather than being part of it; to handle that,
+" we blacklist the ocamlTypeAnnot matchgroup, and we plug ocamlFunTypeAnnot
+" instead (later in this file, by using containedin=ocamlFun):
+syn region ocamlFun matchgroup=ocamlKeyword start='\<fun\>' matchgroup=ocamlArrow end='->'
+\ contains=ALLBUT,@ocamlContained,ocamlArrow,ocamlInfixOp,ocamlTypeAnnot
+
if exists("ocaml_revised")
syn keyword ocamlKeyword do value
syn keyword ocamlBoolean True False
@@ -188,14 +196,10 @@ else
syn keyword ocamlBoolean true false
endif
-syn keyword ocamlType array bool char exn float format format4
-syn keyword ocamlType int int32 int64 lazy_t list nativeint option
-syn keyword ocamlType bytes string unit
-
-syn match ocamlConstructor "(\s*)"
-syn match ocamlConstructor "\[\s*\]"
-syn match ocamlConstructor "\[|\s*>|]"
-syn match ocamlConstructor "\[<\s*>\]"
+syn match ocamlEmptyConstructor "(\s*)"
+syn match ocamlEmptyConstructor "\[\s*\]"
+syn match ocamlEmptyConstructor "\[|\s*>|]"
+syn match ocamlEmptyConstructor "\[<\s*>\]"
syn match ocamlConstructor "\u\(\w\|'\)*\>"
" Polymorphic variants
@@ -210,26 +214,24 @@ syn match ocamlCharErr "'\\\d\d'\|'\\\d'"
syn match ocamlCharErr "'\\[^\'ntbr]'"
syn region ocamlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
-syn match ocamlTopStop ";;"
-
syn match ocamlAnyVar "\<_\>"
-syn match ocamlKeyChar "|[^\]]"me=e-1
+syn match ocamlKeyChar "|]\@!"
syn match ocamlKeyChar ";"
syn match ocamlKeyChar "\~"
syn match ocamlKeyChar "?"
+" NOTE: for correct precedence, the rule for ";;" must come after that for ";"
+syn match ocamlTopStop ";;"
+
"" Operators
" The grammar of operators is found there:
" https://caml.inria.fr/pub/docs/manual-ocaml/names.html#operator-name
" https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s:ext-ops
" https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s:index-operators
-" =, *, < and > are both operator names and keywords, we let the user choose how
-" to display them (has to be declared before regular infix operators):
+" = is both an operator name and a keyword, we let the user choose how
+" to display it (has to be declared before regular infix operators):
syn match ocamlEqual "="
-syn match ocamlStar "*"
-syn match ocamlAngle "<"
-syn match ocamlAngle ">"
" Custom indexing operators:
syn region ocamlIndexing matchgroup=ocamlIndexingOp
\ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
@@ -248,8 +250,8 @@ syn match ocamlExtensionOp "#[#~?!.:|&$%<=>@^*/+-]\+"
" Infix and prefix operators:
syn match ocamlPrefixOp "![~?!.:|&$%<=>@^*/+-]*"
syn match ocamlPrefixOp "[~?][~?!.:|&$%<=>@^*/+-]\+"
-syn match ocamlInfixOp "[&$%@^/+-][~?!.:|&$%<=>@^*/+-]*"
-syn match ocamlInfixOp "[|<=>*][~?!.:|&$%<=>@^*/+-]\+"
+syn match ocamlInfixOp "[&$%<>@^*/+-][~?!.:|&$%<=>@^*/+-]*"
+syn match ocamlInfixOp "[|=][~?!.:|&$%<=>@^*/+-]\+"
syn match ocamlInfixOp "#[~?!.:|&$%<=>@^*/+-]\+#\@!"
syn match ocamlInfixOp "!=[~?!.:|&$%<=>@^*/+-]\@!"
syn keyword ocamlInfixOpKeyword asr land lor lsl lsr lxor mod or
@@ -266,6 +268,9 @@ else
syn match ocamlKeyChar "<-[~?!.:|&$%<=>@^*/+-]\@!"
endif
+" Script shebang (has to be declared after operators)
+syn match ocamlShebang "\%1l^#!.*$"
+
syn match ocamlNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
syn match ocamlNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
syn match ocamlNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
@@ -273,10 +278,264 @@ syn match ocamlNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
syn match ocamlFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
" Labels
-syn match ocamlLabel "\~\(\l\|_\)\(\w\|'\)*"lc=1
-syn match ocamlLabel "?\(\l\|_\)\(\w\|'\)*"lc=1
+syn match ocamlLabel "[~?]\(\l\|_\)\(\w\|'\)*:\?"
syn region ocamlLabel transparent matchgroup=ocamlLabel start="[~?](\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+"" Type contexts
+
+" How we recognize type contexts is explained in `type-linter-notes.md`
+" and a test suite is found in `type-linter-test.ml`.
+"
+" ocamlTypeExpr is the cluster of things that can make up a type expression
+" (in a loose sense, e.g. the “as†keyword and universal quantification are
+" included). Regions containing a type expression use it like this:
+"
+" contains=@ocamlTypeExpr,...
+"
+" ocamlTypeContained is the cluster of things that can be found in a type
+" expression or a type definition. It is not expected to be used in any region,
+" it exists solely for throwing things in it that should not pollute the main
+" linter.
+"
+" Both clusters are filled in incrementally. Every match group that is not to be
+" found at the main level must be declared as “contained†and added to either
+" ocamlTypeExpr or ocamlTypeContained.
+"
+" In these clusters we don’t put generic things that can also be found elswhere,
+" i.e. ocamlComment and ocamlPpx, because everything that is in these clusters
+" is also put in ocamlContained and thus ignored by the main linter.
+
+"syn cluster ocamlTypeExpr contains=
+syn cluster ocamlTypeContained contains=@ocamlTypeExpr
+syn cluster ocamlContained add=@ocamlTypeContained
+
+" We’ll use a “catch-all†highlighting group to show as error anything that is
+" not matched more specifically; we don’t want spaces to be reported as errors
+" (different background color), so we just catch them here:
+syn cluster ocamlTypeExpr add=ocamlTypeBlank
+syn match ocamlTypeBlank contained "\_s\+"
+hi link ocamlTypeBlank NONE
+
+" NOTE: Carefully avoid catching "(*" here.
+syn cluster ocamlTypeExpr add=ocamlTypeParen
+syn region ocamlTypeParen contained transparent
+\ matchgroup=ocamlEncl start="(\*\@!"
+\ matchgroup=ocamlEncl end=")"
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+
+syn cluster ocamlTypeExpr add=ocamlTypeKeyChar,ocamlTypeAs
+syn match ocamlTypeKeyChar contained "->"
+syn match ocamlTypeKeyChar contained "\*"
+syn match ocamlTypeKeyChar contained "#"
+syn match ocamlTypeKeyChar contained ","
+syn match ocamlTypeKeyChar contained "\."
+syn keyword ocamlTypeAs contained as
+hi link ocamlTypeAs ocamlKeyword
+
+syn cluster ocamlTypeExpr add=ocamlTypeVariance
+syn match ocamlTypeVariance contained "[-+!]\ze *\('\|\<_\>\)"
+syn match ocamlTypeVariance contained "[-+] *!\+\ze *\('\|\<_\>\)"
+syn match ocamlTypeVariance contained "! *[-+]\+\ze *\('\|\<_\>\)"
+
+syn cluster ocamlTypeContained add=ocamlTypeEq
+syn match ocamlTypeEq contained "[+:]\?="
+hi link ocamlTypeEq ocamlKeyChar
+
+syn cluster ocamlTypeExpr add=ocamlTypeVar,ocamlTypeConstr,ocamlTypeAnyVar,ocamlTypeBuiltin
+syn match ocamlTypeVar contained "'\(\l\|_\)\(\w\|'\)*\>"
+syn match ocamlTypeConstr contained "\<\(\l\|_\)\(\w\|'\)*\>"
+" NOTE: for correct precedence, the rule for the wildcard (ocamlTypeAnyVar)
+" must come after the rule for type constructors (ocamlTypeConstr).
+syn match ocamlTypeAnyVar contained "\<_\>"
+" NOTE: For correct precedence, these builtin names must occur after the rule
+" for type constructors (ocamlTypeConstr) but before the rule for non-optional
+" labeled arguments (ocamlTypeLabel). For the latter to take precedence over
+" these builtin names, we use “syn match†here instead of “syn keywordâ€.
+syn match ocamlTypeBuiltin contained "\<array\>"
+syn match ocamlTypeBuiltin contained "\<bool\>"
+syn match ocamlTypeBuiltin contained "\<bytes\>"
+syn match ocamlTypeBuiltin contained "\<char\>"
+syn match ocamlTypeBuiltin contained "\<exn\>"
+syn match ocamlTypeBuiltin contained "\<float\>"
+syn match ocamlTypeBuiltin contained "\<format\>"
+syn match ocamlTypeBuiltin contained "\<format4\>"
+syn match ocamlTypeBuiltin contained "\<format6\>"
+syn match ocamlTypeBuiltin contained "\<in_channel\>"
+syn match ocamlTypeBuiltin contained "\<int\>"
+syn match ocamlTypeBuiltin contained "\<int32\>"
+syn match ocamlTypeBuiltin contained "\<int64\>"
+syn match ocamlTypeBuiltin contained "\<lazy_t\>"
+syn match ocamlTypeBuiltin contained "\<list\>"
+syn match ocamlTypeBuiltin contained "\<nativeint\>"
+syn match ocamlTypeBuiltin contained "\<option\>"
+syn match ocamlTypeBuiltin contained "\<out_channel\>"
+syn match ocamlTypeBuiltin contained "\<ref\>"
+syn match ocamlTypeBuiltin contained "\<result\>"
+syn match ocamlTypeBuiltin contained "\<scanner\>"
+syn match ocamlTypeBuiltin contained "\<string\>"
+syn match ocamlTypeBuiltin contained "\<unit\>"
+
+syn cluster ocamlTypeExpr add=ocamlTypeLabel
+syn match ocamlTypeLabel contained "?\?\(\l\|_\)\(\w\|'\)*\_s*:[>=]\@!"
+hi link ocamlTypeLabel ocamlLabel
+
+" Object type
+syn cluster ocamlTypeExpr add=ocamlTypeObject
+syn region ocamlTypeObject contained
+\ matchgroup=ocamlEncl start="<"
+\ matchgroup=ocamlEncl end=">"
+\ contains=ocamlTypeObjectDots,ocamlLCIdentifier,ocamlTypeObjectAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeObject ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeObjectDots
+syn match ocamlTypeObjectDots contained "\.\."
+hi link ocamlTypeObjectDots ocamlKeyChar
+syn cluster ocamlTypeContained add=ocamlTypeObjectAnnot
+syn region ocamlTypeObjectAnnot contained
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=ocamlKeyChar end=";\|>\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlTypeObjectAnnot ocamlTypeCatchAll
+
+" Record type definition
+syn cluster ocamlTypeContained add=ocamlTypeRecordDecl
+syn region ocamlTypeRecordDecl contained
+\ matchgroup=ocamlEncl start="{"
+\ matchgroup=ocamlEncl end="}"
+\ contains=ocamlTypeMutable,ocamlLCIdentifier,ocamlTypeRecordAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeRecordDecl ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeMutable
+syn keyword ocamlTypeMutable contained mutable
+hi link ocamlTypeMutable ocamlKeyword
+syn cluster ocamlTypeContained add=ocamlTypeRecordAnnot
+syn region ocamlTypeRecordAnnot contained
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=ocamlKeyChar end=";\|}\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlTypeRecordAnnot ocamlTypeCatchAll
+
+" Polymorphic variant types
+" NOTE: Carefully avoid catching "[@" here.
+syn cluster ocamlTypeExpr add=ocamlTypeVariant
+syn region ocamlTypeVariant contained
+\ matchgroup=ocamlEncl start="\[>" start="\[<" start="\[@\@!"
+\ matchgroup=ocamlEncl end="\]"
+\ contains=ocamlTypeVariantKeyChar,ocamlTypeVariantConstr,ocamlTypeVariantAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeVariant ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeVariantKeyChar
+syn match ocamlTypeVariantKeyChar contained "|"
+syn match ocamlTypeVariantKeyChar contained ">"
+hi link ocamlTypeVariantKeyChar ocamlKeyChar
+syn cluster ocamlTypeContained add=ocamlTypeVariantConstr
+syn match ocamlTypeVariantConstr contained "`\w\(\w\|'\)*\>"
+hi link ocamlTypeVariantConstr ocamlConstructor
+syn cluster ocamlTypeContained add=ocamlTypeVariantAnnot
+syn region ocamlTypeVariantAnnot contained
+\ matchgroup=ocamlKeyword start="\<of\>"
+\ matchgroup=ocamlKeyChar end="|\|>\|\]\@="
+\ contains=@ocamlTypeExpr,ocamlTypeAmp,ocamlComment,ocamlPpx
+hi link ocamlTypeVariantAnnot ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeAmp
+syn match ocamlTypeAmp contained "&"
+hi link ocamlTypeAmp ocamlTypeKeyChar
+
+" Sum type definition
+syn cluster ocamlTypeContained add=ocamlTypeSumDecl
+syn region ocamlTypeSumDecl contained
+\ matchgroup=ocamlTypeSumBar start="|"
+\ matchgroup=ocamlTypeSumConstr start="\<\u\(\w\|'\)*\>"
+\ matchgroup=ocamlTypeSumConstr start="\<false\>" start="\<true\>"
+\ matchgroup=ocamlTypeSumConstr start="(\_s*)" start="\[\_s*]" start="(\_s*::\_s*)"
+\ matchgroup=NONE end="\(\<type\>\|\<exception\>\|\<val\>\|\<module\>\|\<class\>\|\<method\>\|\<constraint\>\|\<inherit\>\|\<object\>\|\<struct\>\|\<open\>\|\<include\>\|\<let\>\|\<external\>\|\<in\>\|\<end\>\|)\|]\|}\|;\|;;\|=\)\@="
+\ matchgroup=NONE end="\(\<and\>\)\@="
+\ contains=ocamlTypeSumBar,ocamlTypeSumConstr,ocamlTypeSumAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeSumDecl ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeSumBar
+syn match ocamlTypeSumBar contained "|"
+hi link ocamlTypeSumBar ocamlKeyChar
+syn cluster ocamlTypeContained add=ocamlTypeSumConstr
+syn match ocamlTypeSumConstr contained "\<\u\(\w\|'\)*\>"
+syn match ocamlTypeSumConstr contained "\<false\>"
+syn match ocamlTypeSumConstr contained "\<true\>"
+syn match ocamlTypeSumConstr contained "(\_s*)"
+syn match ocamlTypeSumConstr contained "\[\_s*]"
+syn match ocamlTypeSumConstr contained "(\_s*::\_s*)"
+hi link ocamlTypeSumConstr ocamlConstructor
+syn cluster ocamlTypeContained add=ocamlTypeSumAnnot
+syn region ocamlTypeSumAnnot contained
+\ matchgroup=ocamlKeyword start="\<of\>"
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=NONE end="|\@="
+\ matchgroup=NONE end="\(\<type\>\|\<exception\>\|\<val\>\|\<module\>\|\<class\>\|\<method\>\|\<constraint\>\|\<inherit\>\|\<object\>\|\<struct\>\|\<open\>\|\<include\>\|\<let\>\|\<external\>\|\<in\>\|\<end\>\|)\|]\|}\|;\|;;\)\@="
+\ matchgroup=NONE end="\(\<and\>\)\@="
+\ contains=@ocamlTypeExpr,ocamlTypeRecordDecl,ocamlComment,ocamlPpx
+hi link ocamlTypeSumAnnot ocamlTypeCatchAll
+
+" Type context opened by “type†(type definition), “constraint†(type
+" constraint) and “exception†(exception definition)
+syn region ocamlTypeDef
+\ matchgroup=ocamlKeyword start="\<type\>\(\_s\+\<nonrec\>\)\?\|\<constraint\>\|\<exception\>"
+\ matchgroup=NONE end="\(\<type\>\|\<exception\>\|\<val\>\|\<module\>\|\<class\>\|\<method\>\|\<constraint\>\|\<inherit\>\|\<object\>\|\<struct\>\|\<open\>\|\<include\>\|\<let\>\|\<external\>\|\<in\>\|\<end\>\|)\|]\|}\|;\|;;\)\@="
+\ contains=@ocamlTypeExpr,ocamlTypeEq,ocamlTypePrivate,ocamlTypeDefDots,ocamlTypeRecordDecl,ocamlTypeSumDecl,ocamlTypeDefAnd,ocamlComment,ocamlPpx
+hi link ocamlTypeDef ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypePrivate
+syn keyword ocamlTypePrivate contained private
+hi link ocamlTypePrivate ocamlKeyword
+syn cluster ocamlTypeContained add=ocamlTypeDefAnd
+syn keyword ocamlTypeDefAnd contained and
+hi link ocamlTypeDefAnd ocamlKeyword
+syn cluster ocamlTypeContained add=ocamlTypeDefDots
+syn match ocamlTypeDefDots contained "\.\."
+hi link ocamlTypeDefDots ocamlKeyChar
+
+" When "exception" is preceded by "with", "|" or "(", that’s not an exception
+" definition but an exception pattern; we simply highlight the keyword without
+" starting a type context.
+" NOTE: These rules must occur after that for "exception".
+syn match ocamlKeyword "\<with\_s\+exception\>"lc=4
+syn match ocamlKeyword "|\_s*exception\>"lc=1
+syn match ocamlKeyword "(\_s*exception\>"lc=1
+
+" Type context opened by “:†(countless kinds of type annotations) and “:>â€
+" (type coercions)
+syn region ocamlTypeAnnot matchgroup=ocamlKeyChar start=":\(>\|\_s*type\>\|[>:=]\@!\)"
+\ matchgroup=NONE end="\(\<type\>\|\<exception\>\|\<val\>\|\<module\>\|\<class\>\|\<method\>\|\<constraint\>\|\<inherit\>\|\<object\>\|\<struct\>\|\<open\>\|\<include\>\|\<let\>\|\<external\>\|\<in\>\|\<end\>\|)\|]\|}\|;\|;;\)\@="
+\ matchgroup=NONE end="\(;\|}\)\@="
+\ matchgroup=NONE end="\(=\|:>\)\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlTypeAnnot ocamlTypeCatchAll
+
+" Type annotation that gives the return type of a `fun` keyword
+" (the type context is ended by `->`)
+syn cluster ocamlTypeContained add=ocamlFunTypeAnnot
+syn region ocamlFunTypeAnnot contained containedin=ocamlFun
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=NONE end="\(->\)\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlFunTypeAnnot ocamlTypeCatchAll
+
+" Module paths (including functors) in types.
+" NOTE: This rule must occur after the rule for ocamlTypeSumDecl as it must take
+" precedence over it (otherwise the module name would be mistakenly highlighted
+" as a constructor).
+" NOTE: Carefully avoid catching "(*" here.
+syn cluster ocamlTypeExpr add=ocamlTypeModPath
+syn match ocamlTypeModPath contained "\<\u\(\w\|'\)*\_s*\."
+syn region ocamlTypeModPath contained transparent
+\ matchgroup=ocamlModPath start="\<\u\(\w\|'\)*\_s*(\*\@!"
+\ matchgroup=ocamlModPath end=")\_s*\."
+\ contains=ocamlTypeDotlessModPath,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeModPath ocamlModPath
+syn cluster ocamlTypeContained add=ocamlTypeDotlessModPath
+syn match ocamlTypeDotlessModPath contained "\<\u\(\w\|'\)*\_s*\.\?"
+syn region ocamlTypeDotlessModPath contained transparent
+\ matchgroup=ocamlModPath start="\<\u\(\w\|'\)*\_s*(\*\@!"
+\ matchgroup=ocamlModPath end=")\_s*\.\?"
+\ contains=ocamlTypeDotlessModPath,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeDotlessModPath ocamlTypeModPath
+
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Synchronization
syn sync minlines=50
@@ -306,27 +565,25 @@ hi def link ocamlBrackErr Error
hi def link ocamlParenErr Error
hi def link ocamlArrErr Error
-hi def link ocamlCommentErr Error
-
hi def link ocamlCountErr Error
hi def link ocamlDoErr Error
hi def link ocamlDoneErr Error
hi def link ocamlEndErr Error
hi def link ocamlThenErr Error
+hi def link ocamlKwErr Error
hi def link ocamlCharErr Error
hi def link ocamlErr Error
hi def link ocamlComment Comment
+hi def link ocamlShebang ocamlComment
hi def link ocamlModPath Include
hi def link ocamlObject Include
hi def link ocamlModule Include
hi def link ocamlModParam1 Include
hi def link ocamlGenMod Include
-hi def link ocamlModType Include
-hi def link ocamlMPRestr3 Include
hi def link ocamlFullMod Include
hi def link ocamlFuncWith Include
hi def link ocamlModParam Include
@@ -339,10 +596,13 @@ hi def link ocamlStructEncl ocamlModule
hi def link ocamlScript Include
hi def link ocamlConstructor Constant
+hi def link ocamlEmptyConstructor ocamlConstructor
hi def link ocamlVal Keyword
+hi def link ocamlModTypePre Keyword
hi def link ocamlModPreRHS Keyword
-hi def link ocamlMPRestr2 Keyword
+hi def link ocamlFunctor Keyword
+hi def link ocamlModTypeOf Keyword
hi def link ocamlKeyword Keyword
hi def link ocamlMethod Include
hi def link ocamlArrow Keyword
@@ -352,8 +612,6 @@ hi def link ocamlTopStop Keyword
hi def link ocamlRefAssign ocamlKeyChar
hi def link ocamlEqual ocamlKeyChar
-hi def link ocamlStar ocamlInfixOp
-hi def link ocamlAngle ocamlInfixOp
hi def link ocamlCons ocamlInfixOp
hi def link ocamlPrefixOp ocamlOperator
@@ -377,7 +635,24 @@ hi def link ocamlQuotedStringDelim Identifier
hi def link ocamlLabel Identifier
-hi def link ocamlType Type
+" Type linting groups that the user can customize:
+" - ocamlTypeCatchAll: anything in a type context that is not caught by more
+" specific rules (in principle, this should only match syntax errors)
+" - ocamlTypeConstr: type constructors
+" - ocamlTypeBuiltin: builtin type constructors (like int or list)
+" - ocamlTypeVar: type variables ('a)
+" - ocamlTypeAnyVar: wildcard (_)
+" - ocamlTypeVariance: variance and injectivity indications (+'a, !'a)
+" - ocamlTypeKeyChar: symbols such as -> and *
+" Default values below mimick the behavior before the type linter was
+" implemented, but now we can do better. :-)
+hi def link ocamlTypeCatchAll Error
+hi def link ocamlTypeConstr NONE
+hi def link ocamlTypeBuiltin Type
+hi def link ocamlTypeVar NONE
+hi def link ocamlTypeAnyVar NONE
+hi def link ocamlTypeVariance ocamlKeyChar
+hi def link ocamlTypeKeyChar ocamlKeyChar
hi def link ocamlTodo Todo
diff --git a/runtime/syntax/opam.vim b/runtime/syntax/opam.vim
index 9ac1d41..da29662 100644
--- a/runtime/syntax/opam.vim
+++ b/runtime/syntax/opam.vim
@@ -1,5 +1,5 @@
" Vim syntax file
-" Language: OPAM - OCaml package manager
+" Language: opam - OCaml package manager
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
@@ -11,20 +11,55 @@ endif
" need %{vars}%
" env: [[CAML_LD_LIBRARY_PATH = "%{lib}%/stublibs"]]
-syn keyword opamKeyword1 remove depends pin-depends depopts conflicts env packages patches version maintainer tags license homepage authors doc install author available name depexts substs synopsis description
-syn match opamKeyword2 "\v(bug-reports|post-messages|ocaml-version|opam-version|dev-repo|build-test|build-doc|build)"
+syn iskeyword a-z,A-Z,-
+syn keyword opamKeyword1 author
+syn keyword opamKeyword1 authors
+syn keyword opamKeyword1 available
+syn keyword opamKeyword1 bug-reports
+syn keyword opamKeyword1 build
+syn keyword opamKeyword1 build-env
+syn keyword opamKeyword1 conflict-class
+syn keyword opamKeyword1 conflicts
+syn keyword opamKeyword1 depends
+syn keyword opamKeyword1 depexts
+syn keyword opamKeyword1 depopts
+syn keyword opamKeyword1 description
+syn keyword opamKeyword1 dev-repo
+syn keyword opamKeyword1 doc
+syn keyword opamKeyword1 extra-files
+syn keyword opamKeyword1 features
+syn keyword opamKeyword1 flags
+syn keyword opamKeyword1 homepage
+syn keyword opamKeyword1 install
+syn keyword opamKeyword1 libraries
+syn keyword opamKeyword1 license
+syn keyword opamKeyword1 maintainer
+syn keyword opamKeyword1 messages
+syn keyword opamKeyword1 name
+syn keyword opamKeyword1 opam-version
+syn keyword opamKeyword1 patches
+syn keyword opamKeyword1 pin-depends
+syn keyword opamKeyword1 post-messages
+syn keyword opamKeyword1 remove
+syn keyword opamKeyword1 run-test
+syn keyword opamKeyword1 setenv
+syn keyword opamKeyword1 substs
+syn keyword opamKeyword1 synopsis
+syn keyword opamKeyword1 syntax
+syn keyword opamKeyword1 tags
+syn keyword opamKeyword1 version
syn keyword opamTodo FIXME NOTE NOTES TODO XXX contained
syn match opamComment "#.*$" contains=opamTodo,@Spell
syn match opamOperator ">\|<\|=\|<=\|>="
-syn region opamInterpolate start=/%{/ end=/}%/ contained
-syn region opamString start=/"/ end=/"/ contains=opamInterpolate
-syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1,opamKeyword2
-syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1,opamKeyword2
+syn match opamUnclosedInterpolate "%{[^ "]*" contained
+syn match opamInterpolate "%{[^ "]\+}%" contained
+syn region opamString start=/"/ end=/"/ contains=opamInterpolate,OpamUnclosedInterpolate
+syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1
+syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1
hi link opamKeyword1 Keyword
-hi link opamKeyword2 Keyword
hi link opamString String
hi link opamExp Function
@@ -32,6 +67,7 @@ hi link opamSeq Statement
hi link opamOperator Operator
hi link opamComment Comment
hi link opamInterpolate Identifier
+hi link opamUnclosedInterpolate Error
let b:current_syntax = "opam"
diff --git a/runtime/syntax/progress.vim b/runtime/syntax/progress.vim
index 5e7cfef..4b8f612 100644
--- a/runtime/syntax/progress.vim
+++ b/runtime/syntax/progress.vim
@@ -3,13 +3,13 @@
" Filename extensions: *.p (collides with Pascal),
" *.i (collides with assembler)
" *.w (collides with cweb)
-" Maintainer: Philip Uren <philuSPAXY@ieee.org> Remove SPAXY spam block
+" Maintainer: Daniel Smith <daniel@rdnlsmith.com>
+" Previous Maintainer: Philip Uren <philuSPAXY@ieee.org> Remove SPAXY spam block
" Contributors: Matthew Stickney <mtstickneySPAXY@gmail.com>
" Chris Ruprecht <chrisSPAXY@ruprecht.org>
" Mikhail Kuperblum <mikhailSPAXY@whasup.com>
" John Florian <jflorianSPAXY@voyager.net>
-" Version: 13
-" Last Change: Nov 11 2012
+" Last Change: Jul 23 2024
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -116,8 +116,10 @@ syn match ProgressShowTab "\t"
" If you don't like white space on the end of lines, uncomment this:
" syn match ProgressSpaceError "\s\+$"
-syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell
-syn region ProgressInclude start="^[ ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
+syn region ProgressBlockComment start="/\*" end="\*/" contains=ProgressBlockComment,ProgressTodo,ProgressDebug,@Spell
+syn match ProgressLineComment "//.*$" contains=ProgressTodo,ProgressDebug,@Spell
+syn cluster ProgressComment contains=ProgressBlockComment,ProgressLineComment
+syn region ProgressInclude start="^[ ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,@ProgressComment
syn region ProgressPreProc start="&" end="\>" contained
" This next line works reasonably well.
@@ -281,6 +283,8 @@ syn sync lines=800
hi def link ProgressByte Number
hi def link ProgressCase Repeat
hi def link ProgressComment Comment
+hi def link ProgressBlockComment ProgressComment
+hi def link ProgressLineComment ProgressComment
hi def link ProgressConditional Conditional
hi def link ProgressDebug Debug
hi def link ProgressDo Repeat
diff --git a/runtime/syntax/scheme.vim b/runtime/syntax/scheme.vim
index c4454fc..59b0cc5 100644
--- a/runtime/syntax/scheme.vim
+++ b/runtime/syntax/scheme.vim
@@ -1,12 +1,12 @@
" Vim syntax file
-" Language: Scheme (R7RS)
-" Last Change: 2021-01-03
-" Author: Evan Hanson <evhan@foldling.org>
-" Maintainer: Evan Hanson <evhan@foldling.org>
-" Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be>
+" Language: Scheme (R7RS)
+" Last Change: 2024 Jun 21
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
-" Repository: https://git.foldling.org/vim-scheme.git
-" URL: https://foldling.org/vim/syntax/scheme.vim
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/syntax/scheme.vim
if exists('b:current_syntax')
finish
@@ -50,9 +50,11 @@ syn match schemeBoolean /#f\(alse\)\?/
syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/
syn match schemeCharacter /#\\x[0-9a-fA-F]\+/
-syn match schemeComment /;.*$/ contains=@Spell
+syn match schemeComment /;.*$/ contains=schemeTodo,@Spell
-syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment,@Spell
+syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeTodo,schemeMultilineComment,@Spell
+
+syn match schemeTodo /\c\<\(todo\|xxx\|fixme\|note\):\?\>/ contained
syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
@@ -427,6 +429,7 @@ syn keyword schemeFunction write-string
syn keyword schemeFunction write-u8
syn keyword schemeFunction zero?
+hi def link schemeTodo Todo
hi def link schemeBoolean Boolean
hi def link schemeCharacter Character
hi def link schemeComment Comment
diff --git a/runtime/syntax/sdc.vim b/runtime/syntax/sdc.vim
index dbfa35e..ae2aae5 100644
--- a/runtime/syntax/sdc.vim
+++ b/runtime/syntax/sdc.vim
@@ -1,9 +1,10 @@
" Vim syntax file
" Language: SDC - Synopsys Design Constraints
" Maintainer: Maurizio Tranchero - maurizio.tranchero@gmail.com
-" Last Change: Thu Mar 25 17:35:16 CET 2009
" Credits: based on TCL Vim syntax file
" Version: 0.3
+" Last Change: Thu Mar 25 17:35:16 CET 2009
+" 2024 Jul 17 by Vim Project (update to SDC 2.1)
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -13,16 +14,48 @@ endif
" Read the TCL syntax to start with
runtime! syntax/tcl.vim
-" SDC-specific keywords
+" TCL extension related to SDC and available from some vendors
+" (not defined in SDC standard!)
syn keyword sdcCollections foreach_in_collection
-syn keyword sdcObjectsQuery get_clocks get_ports
syn keyword sdcObjectsInfo get_point_info get_node_info get_path_info
syn keyword sdcObjectsInfo get_timing_paths set_attribute
-syn keyword sdcConstraints set_false_path
+
+" SDC rev. 2.1 specific keywords
+syn keyword sdcObjectsQuery get_clocks get_ports get_cells
+syn keyword sdcObjectsQuery get_pins get_nets all_inputs
+syn keyword sdcObjectsQuery all_outputs all_registers all_clocks
+syn keyword sdcObjectsQuery get_libs get_lib_cells get_lib_pins
+
+syn keyword sdcConstraints set_false_path set_clock_groups set_sense
+syn keyword sdcConstraints set_propagated_clock set_clock_gating_check
+syn keyword sdcConstraints set_ideal_latency set_ideal_network
+syn keyword sdcConstraints set_ideal_transistion set_max_time_borrow
+syn keyword sdcConstraints set_data_check group_path set_max_transition
+syn keyword sdcConstraints set_max_fanout set_driving_cell
+syn keyword sdcConstraints set_port_fanout_number set_multi_cycle_path
+syn keyword sdcConstraints set_disable_timing set_min_pulse_width
+
syn keyword sdcNonIdealities set_min_delay set_max_delay
syn keyword sdcNonIdealities set_input_delay set_output_delay
syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance
+syn keyword sdcNonIdealities set_clock_latency set_clock_transition set_clock_uncertainty
+syn keyword sdcNonIdealities set_resistance set_timing_derate set_drive
+syn keyword sdcNonIdealities set_input_transition set_fanout_load
+
syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist
+syn keyword sdcCreateOperations create_generated_clock
+
+syn keyword sdcPowerArea set_max_area create_voltage_area
+syn keyword sdcPowerArea set_level_shifter_threshold set_max_dynamic_power
+syn keyword sdcPowerArea set_level_shifter_strategy set_max_leakage_power
+
+syn keyword sdcModeConfig set_case_analysis set_logic_dc
+syn keyword sdcModeConfig set_logic_zero set_logic_one
+
+syn keyword sdcMiscCommmands sdc_version set_wire_load_selection_group
+syn keyword sdcMiscCommmands set_units set_wire_load_mode set_wire_load_model
+syn keyword sdcMiscCommmands set_wire_load_min_block_size set_operating_conditions
+syn keyword sdcMiscCommmands current_design
" command flags highlighting
syn match sdcFlags "[[:space:]]-[[:alpha:]_]*\>"
@@ -31,9 +64,12 @@ syn match sdcFlags "[[:space:]]-[[:alpha:]_]*\>"
hi def link sdcCollections Repeat
hi def link sdcObjectsInfo Operator
hi def link sdcCreateOperations Operator
-hi def link sdcObjectsQuery Operator
+hi def link sdcObjectsQuery Function
hi def link sdcConstraints Operator
hi def link sdcNonIdealities Operator
+hi def link sdcPowerArea Operator
+hi def link sdcModeConfig Operator
+hi def link sdcMiscCommmands Operator
hi def link sdcFlags Special
let b:current_syntax = "sdc"
diff --git a/runtime/syntax/testdir/README.txt b/runtime/syntax/testdir/README.txt
index 9c12648..3baa43b 100644
--- a/runtime/syntax/testdir/README.txt
+++ b/runtime/syntax/testdir/README.txt
@@ -6,9 +6,9 @@ highlighting enabled. Screendumps are generated and compared with the
expected screendumps in the "dumps" directory. This will uncover any
character attributes that differ.
-Without any further setup a screendump is made at the top of the file (using
-_00.dump) and another one at the end of the file (using _99.dump). The dumps
-are normally 20 screen lines tall.
+The dumps are normally 20 screen lines tall. Without any further setup
+a screendump is made at the top of the file (using _00.dump) and another
+screendump is made if there are more lines (using _01.dump), and so on.
When the screendumps are OK an empty "done/{name}" file is created. This
avoids running the test again until "make clean" is used. Thus you can run
@@ -18,7 +18,7 @@ again to only repeat the failing test.
When a screendump differs it is stored in the "failed" directory. This allows
for comparing it with the expected screendump, using a command like:
- let fname = '{name}_99.dump'
+ let fname = '{name}_00.dump'
call term_dumpdiff('failed/' .. fname, 'dumps/' .. fname)
@@ -27,12 +27,12 @@ Creating a syntax plugin test
Create a source file in the language you want to test in the "input"
directory. Use the filetype name as the base and a file name extension
-matching the filetype. Let's use Java as an example. The file would then be
+matching the filetype. Let's use Java as an example. The file would then be
"input/java.java".
Make sure to include some interesting constructs with plenty of complicated
highlighting. Optionally, pre-configure the testing environment by including
-setup commands at the top of the input file. The format for these lines is:
+setup commands at the top of the input file. The format for these lines is:
VIM_TEST_SETUP {command}
@@ -61,6 +61,8 @@ an "input/setup/java.vim" script file with the following lines:
Both inline setup commands and setup scripts may be used at the same time, the
script file will be sourced before any VIM_TEST_SETUP commands are executed.
+Every line of a source file must not be longer than 1425 (19 x 75) characters.
+
If there is no further setup required, you can now run the tests:
make test
@@ -72,14 +74,12 @@ newly created screendumps will be "failed/java_00.dump",
call term_dumpload('failed/java_00.dump')
call term_dumpload('failed/java_01.dump')
...
- call term_dumpload('failed/java_99.dump')
If they look OK, move them to the "dumps" directory:
:!mv failed/java_00.dump dumps
:!mv failed/java_01.dump dumps
...
- :!mv failed/java_99.dump dumps
If you now run the test again, it will succeed.
@@ -99,7 +99,7 @@ are covered by the test. You can follow these steps:
input file, carefully check that the changes in the screendump are
intentional:
- let fname = '{name}_99.dump'
+ let fname = '{name}_00.dump'
call term_dumpdiff('failed/' .. fname, 'dumps/' .. fname)
Fix the syntax plugin until the result is good.
@@ -115,13 +115,95 @@ are covered by the test. You can follow these steps:
- 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}_99.dump
+ - test dump files: syntax/testdir/dumps/{name}_00.dump
+ syntax/testdir/dumps/{name}_01.dump (if any)
+ ...
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
test.
+Viewing generated screendumps (local)
+-------------------------------------
+
+You may also wish to look at the whole batch of failed screendumps after
+running "make test". Source the "viewdumps.vim" script for this task:
+
+ [VIMRUNTIME=../..] \
+ ../../src/vim --clean -S testdir/viewdumps.vim \
+ [testdir/dumps/java_*.dump ...]
+
+By default, all screendumps found in the "failed" directory will be added to
+the argument list and then the first one will be loaded. Loaded screendumps
+that bear filenames of screendumps found in the "dumps" directory will be
+rendering the contents of any such pair of files and the difference between
+them (:help term_dumpdiff()); otherwise, they will be rendering own contents
+(:help term_dumpload()). Remember to execute :edit when occasionally you see
+raw file contents instead of rendered.
+
+At any time, you can add, list, and abandon other screendumps:
+
+ :$argedit testdir/dumps/java_*.dump
+ :args
+ :qall
+
+The listing of argument commands can be found under :help buffer-list.
+
+
+Viewing generated screendumps (from a CI-uploaded artifact)
+-----------------------------------------------------------
+
+After you have downloaded an artifact archive containing failed screendumps
+and extracted its files in a temporary directory, you need to set up a "dumps"
+directory by creating a symlink:
+
+ cd /path/to/fork
+ ln -s $(pwd)/runtime/syntax/testdir/dumps \
+ /tmp/runtime/syntax/testdir/dumps
+
+You can now examine the extracted screendumps:
+
+ ./src/vim --clean -S runtime/syntax/testdir/viewdumps.vim \
+ /tmp/runtime/syntax/testdir/failed/*.dump
+
+
+Viewing generated screendumps (submitted for a pull request)
+------------------------------------------------------------
+
+First, you need to check out the topic branch with the proposed changes and
+write down a difference list between the HEAD commit (index) and its parent
+commit with respect to the changed "dumps" filenames:
+
+ cd /path/to/fork
+ git switch prs/1234
+ git diff-index --relative=runtime/syntax/testdir/dumps/ \
+ --name-only prs/1234~1 > /tmp/filelist
+
+Then, you need to check out the master branch, change the current working
+directory to reconcile relative filepaths written in the filenames list, copy
+in the "failed" directory the old "dumps" files, whose names are on the same
+list, and follow it by checking out the topic branch:
+
+ git switch master
+ cd runtime/syntax/testdir/dumps
+ cp -t ../failed $(cat /tmp/filelist)
+ git switch prs/1234
+
+Make note of any missing new screendumps. Please remember about the
+introduced INVERTED relation between "dumps" and "failed", i.e. the files to
+be committed are in "dumps" already and their old versions are in "failed".
+Therefore, you need to copy the missing new screendumps from "dumps" to
+"failed":
+
+ cp -t ../failed foo_10.dump foo_11.dump foo_12.dump
+
+After you have changed the current working directory to its parent directory,
+you can now examine the screendumps from the "failed" directory (note that new
+screendumps will be shown with no difference between their versions):
+
+ cd ..
+ ../../../src/vim --clean -S viewdumps.vim
TODO: run test for one specific filetype
diff --git a/runtime/syntax/testdir/dumps/c_02.dump b/runtime/syntax/testdir/dumps/c_02.dump
index 72ab11f..4fcaaeb 100644
--- a/runtime/syntax/testdir/dumps/c_02.dump
+++ b/runtime/syntax/testdir/dumps/c_02.dump
@@ -1,9 +1,10 @@
-|#+0#e000e06#ffffff0|i|f| |(|d|e|f|i|n|e|d|(|U|N|I|X|)| ||@1| |d|e|f|i|n|e|d|(|V|M|S|)@1| |&@1| |!|d|e|f|i|n|e|d|(|N|O|_|V|I|M|_|M|A|I|N|)| +0#0000000&@14
+| +0&#ffffff0@74
+|#+0#e000e06&|i|f| |(|d|e|f|i|n|e|d|(|U|N|I|X|)| ||@1| |d|e|f|i|n|e|d|(|V|M|S|)@1| |&@1| |!|d|e|f|i|n|e|d|(|N|O|_|V|I|M|_|M|A|I|N|)| +0#0000000&@14
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|f|i|l|e|_|o|w|n|e|d|(|c+0#00e0003&|h|a|r| +0#0000000&|*|f|n|a|m|e|)|;| @39
|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|e|r@1|(|i+0#00e0003&|n|t|,+0#0000000&| |c|h|a|r|_|u| |*|)|;| @39
-|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e|a|r|l|y|_|a|r|g|_|s|c|a|n|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @31
->#+0#e000e06&|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| +0#0000000&@55
+>s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e|a|r|l|y|_|a|r|g|_|s|c|a|n|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @31
+|#+0#e000e06&|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| +0#0000000&@55
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|u|s|a|g|e|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @50
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|p|a|r|s|e|_|c|o|m@1|a|n|d|_|n|a|m|e|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @27
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|c|o|m@1|a|n|d|_|l|i|n|e|_|s|c|a|n|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @28
@@ -16,5 +17,4 @@
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|s|o|u|r|c|e|_|s|t|a|r|t|u|p|_|s|c|r|i|p|t|s|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @23
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|_|s|t|a|r|t|_|g|u|i|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @41
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|c|h|e|c|k|_|s|w|a|p|_|e|x|i|s|t|s|_|a|c|t|i|o|n|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @31
-|#+0#e000e06&| |i|f|d|e|f| |F|E|A|T|_|E|V|A|L| +0#0000000&@57
-@57|3|7|,|1| @9|2|9|%|
+@57|3|6|,|1| @9|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/c_03.dump b/runtime/syntax/testdir/dumps/c_03.dump
index 17c6f3b..07350a7 100644
--- a/runtime/syntax/testdir/dumps/c_03.dump
+++ b/runtime/syntax/testdir/dumps/c_03.dump
@@ -1,9 +1,10 @@
-|#+0#e000e06#ffffff0| |i|f|d|e|f| |F|E|A|T|_|E|V|A|L| +0#0000000&@57
+|s+0#00e0003#ffffff0|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|c|h|e|c|k|_|s|w|a|p|_|e|x|i|s|t|s|_|a|c|t|i|o|n|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @31
+|#+0#e000e06&| |i|f|d|e|f| |F|E|A|T|_|E|V|A|L| +0#0000000&@57
|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|s|e|t|_|p|r|o|g|p|a|t|h|(|c|h|a|r|_|u| |*|a|r|g|v|0|)|;| @34
|#+0#e000e06&| |e|n|d|i|f| +0#0000000&@67
|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
-@75
> @74
+@75
|/+0#0000e05&|*| +0#0000000&@72
| +0#0000e05&|*| |D|i|f@1|e|r|e|n|t| |t|y|p|e|s| |o|f| |e|r@1|o|r| |m|e|s@1|a|g|e|s|.| +0#0000000&@37
| +0#0000e05&|*|/| +0#0000000&@71
@@ -16,5 +17,4 @@
@4|N|_|(|"+0#e000002&|A|r|g|u|m|e|n|t| |m|i|s@1|i|n|g| |a|f|t|e|r|"|)+0#0000000&|,| @41
|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|A|R|G|_|M|I|S@1|I|N|G| @9|2+0#e000002&| +0#0000000&@41
@4|N|_|(|"+0#e000002&|G|a|r|b|a|g|e| |a|f|t|e|r| |o|p|t|i|o|n| |a|r|g|u|m|e|n|t|"|)+0#0000000&|,| @34
-|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|G|A|R|B|A|G|E| @13|3+0#e000002&| +0#0000000&@41
-@57|5@1|,|0|-|1| @7|4|7|%|
+@57|5|4|,|0|-|1| @7|4|6|%|
diff --git a/runtime/syntax/testdir/dumps/c_04.dump b/runtime/syntax/testdir/dumps/c_04.dump
index 03804a5..1d2d511 100644
--- a/runtime/syntax/testdir/dumps/c_04.dump
+++ b/runtime/syntax/testdir/dumps/c_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@3|N|_|(|"+0#e000002&|T|o@1| |m|a|n|y| |\+0#e000e06&|"|++0#e000002&|c|o|m@1|a|n|d|\+0#e000e06&|"|,+0#e000002&| |\+0#e000e06&|"|-+0#e000002&|c| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|o|r| |\+0#e000e06&|"|-+0#e000002&@1|c|m|d| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|a|r|g|u|m|e|n|t
+| +0&#ffffff0@3|N|_|(|"+0#e000002&|G|a|r|b|a|g|e| |a|f|t|e|r| |o|p|t|i|o|n| |a|r|g|u|m|e|n|t|"|)+0#0000000&|,| @34
+|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|G|A|R|B|A|G|E| @13|3+0#e000002&| +0#0000000&@41
+@4|N|_|(|"+0#e000002&|T|o@1| |m|a|n|y| |\+0#e000e06&|"|++0#e000002&|c|o|m@1|a|n|d|\+0#e000e06&|"|,+0#e000002&| |\+0#e000e06&|"|-+0#e000002&|c| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|o|r| |\+0#e000e06&|"|-+0#e000002&@1|c|m|d| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|a|r|g|u|m|e|n|t
|s|"|)+0#0000000&|,| @70
|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|E|X|T|R|A|_|C|M|D| @11|4+0#e000002&| +0#0000000&@41
-@4|N|_|(|"+0#e000002&|I|n|v|a|l|i|d| |a|r|g|u|m|e|n|t| |f|o|r|"|)+0#0000000&|,| @43
+@4>N|_|(|"+0#e000002&|I|n|v|a|l|i|d| |a|r|g|u|m|e|n|t| |f|o|r|"|)+0#0000000&|,| @43
|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|I|N|V|A|L|I|D|_|A|R|G| @9|5+0#e000002&| +0#0000000&@41
->}|;| @72
+|}|;| @72
@75
|#+0#e000e06&|i|f|n|d|e|f| |P|R|O|T|O| @10|/+0#0000e05&@1| |d|o|n|'|t| |w|a|n|t| |a| |p|r|o|t|o|t|y|p|e| |f|o|r| |m|a|i|n|(|)| +0#0000000&@14
@75
@@ -15,6 +17,4 @@
|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
@75
|#+0#e000e06&|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| @4|/+0#0000e05&@1| |s|k|i|p| |t|h|i|s| |f|o|r| |u|n|i|t@1|e|s|t|s| +0#0000000&@24
-@75
-|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c|h|a|r|_|u| |*|s|t|a|r|t|_|d|i|r| |=| |N+0#e000002&|U|L@1|;+0#0000000&| @7|/+0#0000e05&@1| |c|u|r@1|e|n|t| |w|o|r|k|i|n|g| |d|i|r| |o|n| |s|t|a|r|t|u|p| +0#0000000&@1
-@57|7|3|,|1| @9|6|4|%|
+@57|7|1|,|5| @9|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/c_05.dump b/runtime/syntax/testdir/dumps/c_05.dump
index 6871cd0..4d26c2e 100644
--- a/runtime/syntax/testdir/dumps/c_05.dump
+++ b/runtime/syntax/testdir/dumps/c_05.dump
@@ -1,9 +1,11 @@
-|s+0#00e0003#ffffff0|t|a|t|i|c| +0#0000000&|c|h|a|r|_|u| |*|s|t|a|r|t|_|d|i|r| |=| |N+0#e000002&|U|L@1|;+0#0000000&| @7|/+0#0000e05&@1| |c|u|r@1|e|n|t| |w|o|r|k|i|n|g| |d|i|r| |o|n| |s|t|a|r|t|u|p| +0#0000000&@1
+|#+0#e000e06#ffffff0|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| @4|/+0#0000e05&@1| |s|k|i|p| |t|h|i|s| |f|o|r| |u|n|i|t@1|e|s|t|s| +0#0000000&@24
@75
-|s+0#00e0003&|t|a|t|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|h|a|s|_|d|a|s|h|_|c|_|a|r|g| |=| |F|A|L|S|E|;| @40
+|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c|h|a|r|_|u| |*|s|t|a|r|t|_|d|i|r| |=| |N+0#e000002&|U|L@1|;+0#0000000&| @7|/+0#0000e05&@1| |c|u|r@1|e|n|t| |w|o|r|k|i|n|g| |d|i|r| |o|n| |s|t|a|r|t|u|p| +0#0000000&@1
@75
+|s+0#00e0003&|t|a|t|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|h|a|s|_|d|a|s|h|_|c|_|a|r|g| |=| |F|A|L|S|E|;| @40
+> @74
|#+0#e000e06&| |i|f|d|e|f| |V|I|M|D|L@1| +0#0000000&@60
->_@1|d|e|c|l|s|p|e|c|(|d|l@1|e|x|p|o|r|t|)| @53
+|_@1|d|e|c|l|s|p|e|c|(|d|l@1|e|x|p|o|r|t|)| @53
|#+0#e000e06&| |e|n|d|i|f| +0#0000000&@67
@4|i+0#00e0003&|n|t| +0#0000000&@67
|#+0#e000e06&| |i|f|d|e|f| |M|S|W|I|N| +0#0000000&@61
@@ -15,6 +17,4 @@
|{| @73
|#+0#e000e06&|i|f| |d|e|f|i|n|e|d|(|S|T|A|R|T|U|P|T|I|M|E|)| ||@1| |d|e|f|i|n|e|d|(|C|L|E|A|N|_|R|U|N|T|I|M|E|P|A|T|H|)| +0#0000000&@20
@4|i+0#00e0003&|n|t| +0#0000000&@8|i|;| @56
-|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
-@75
-@57|9|1|,|1| @9|8|1|%|
+@57|8|9|,|0|-|1| @7|7|9|%|
diff --git a/runtime/syntax/testdir/dumps/c_06.dump b/runtime/syntax/testdir/dumps/c_06.dump
index 55b9f38..389d6e4 100644
--- a/runtime/syntax/testdir/dumps/c_06.dump
+++ b/runtime/syntax/testdir/dumps/c_06.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@3|i+0#00e0003&|n|t| +0#0000000&@8|i|;| @56
+|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
+@75
@4|/+0#0000e05&|*| +0#0000000&@68
| +0#0000e05&@4|*| |D|o| |a|n|y| |s|y|s|t|e|m|-|s|p|e|c|i|f|i|c| |i|n|i|t|i|a|l|i|s|a|t|i|o|n|s|.| @1|T|h|e|s|e| |c|a|n| |N|O|T| |u|s|e| |I|O|b|u|f@1| |o|r
-| @4|*| |N|a|m|e|B|u|f@1|.| @1|T|h|u|s| |e|m|s|g|2|(|)| |c|a|n@1|o|t| |b|e| |c|a|l@1|e|d|!| +0#0000000&@26
+| @4>*| |N|a|m|e|B|u|f@1|.| @1|T|h|u|s| |e|m|s|g|2|(|)| |c|a|n@1|o|t| |b|e| |c|a|l@1|e|d|!| +0#0000000&@26
| +0#0000e05&@4|*|/| +0#0000000&@67
-@4>m|c|h|_|e|a|r|l|y|_|i|n|i|t|(|)|;| @53
+@4|m|c|h|_|e|a|r|l|y|_|i|n|i|t|(|)|;| @53
@75
@4|/+0#0000e05&@1| |S|o|u|r|c|e| |s|t|a|r|t|u|p| |s|c|r|i|p|t|s|.| +0#0000000&@44
@4|s|o|u|r|c|e|_|s|t|a|r|t|u|p|_|s|c|r|i|p|t|s|(|&|p|a|r|a|m|s|)|;| @38
@@ -15,6 +17,4 @@
| +0#0000e05&@4|*|/| +0#0000000&@67
| +0#0000e05&@3|r|e|t|u|r|n| |m|z|s|c|h|e|m|e|_|m|a|i|n|(|)|;| +0#0000000&@47
|#+0#e000e06&|e|l|s|e| +0#0000000&@69
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v|i|m|_|m|a|i|n|2|(|)|;| @51
-|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
-@57|1|0|9|,|5| @8|9@1|%|
+@57|1|0|7|,|6| @8|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/c_07.dump b/runtime/syntax/testdir/dumps/c_07.dump
new file mode 100644
index 0000000..22be2f8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/c_07.dump
@@ -0,0 +1,20 @@
+|#+0#e000e06#ffffff0|e|l|s|e| +0#0000000&@69
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v|i|m|_|m|a|i|n|2|(|)|;| @51
+|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/c_99.dump b/runtime/syntax/testdir/dumps/c_99.dump
deleted file mode 100644
index 1af9a49..0000000
--- a/runtime/syntax/testdir/dumps/c_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|/+0#0000e05&|*| +0#0000000&@68
-| +0#0000e05&@4|*| |D|o| |a|n|y| |s|y|s|t|e|m|-|s|p|e|c|i|f|i|c| |i|n|i|t|i|a|l|i|s|a|t|i|o|n|s|.| @1|T|h|e|s|e| |c|a|n| |N|O|T| |u|s|e| |I|O|b|u|f@1| |o|r
-| @4|*| |N|a|m|e|B|u|f@1|.| @1|T|h|u|s| |e|m|s|g|2|(|)| |c|a|n@1|o|t| |b|e| |c|a|l@1|e|d|!| +0#0000000&@26
-| +0#0000e05&@4|*|/| +0#0000000&@67
-@4|m|c|h|_|e|a|r|l|y|_|i|n|i|t|(|)|;| @53
-@75
-@4|/+0#0000e05&@1| |S|o|u|r|c|e| |s|t|a|r|t|u|p| |s|c|r|i|p|t|s|.| +0#0000000&@44
-@4|s|o|u|r|c|e|_|s|t|a|r|t|u|p|_|s|c|r|i|p|t|s|(|&|p|a|r|a|m|s|)|;| @38
-@75
-|#+0#e000e06&|i|f| |0| +0#0000000&@69
-| +0#0000e05&@3|/|*| +0#0000000&@68
-| +0#0000e05&@4|*| |N|e|w|e|r| |v|e|r|s|i|o|n| |o|f| |M|z|S|c|h|e|m|e| |(|R|a|c|k|e|t|)| |r|e|q|u|i|r|e| |e|a|r|l|i|e|r| |(|t|r|a|m|p|o|l|i|n|e|d|)| +0#0000000&@3
-| +0#0000e05&@4|*| |i|n|i|t|i|a|l|i|s|a|t|i|o|n| |v|i|a| |s|c|h|e|m|e|_|m|a|i|n|_|s|e|t|u|p|.| +0#0000000&@30
-| +0#0000e05&@4|*|/| +0#0000000&@67
-| +0#0000e05&@3|r|e|t|u|r|n| |m|z|s|c|h|e|m|e|_|m|a|i|n|(|)|;| +0#0000000&@47
-|#+0#e000e06&|e|l|s|e| +0#0000000&@69
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v|i|m|_|m|a|i|n|2|(|)|;| @51
-|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
->}| @73
-@57|1|2|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_01_00.dump b/runtime/syntax/testdir/dumps/dots_01_00.dump
new file mode 100644
index 0000000..c3fe7ba
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_00.dump
@@ -0,0 +1,20 @@
+>.+0&#ffffff0@73|1
+|.@73|2
+|.@73|3
+|.@73|4
+|.@29|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@28|5
+|.@28|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@28|6
+|.@32|r|u|l|e|r|.@35|7
+|.@73|8
+|.@73|9
+|.@72|1|0
+|.@72|1@1
+|.@72|1|2
+|.@72|1|3
+|.@72|1|4
+|.@72|1|5
+|.@72|1|6
+|.@72|1|7
+|.@72|1|8
+|.@72|1|9
+| @56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_01_01.dump b/runtime/syntax/testdir/dumps/dots_01_01.dump
new file mode 100644
index 0000000..dad9942
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_01.dump
@@ -0,0 +1,20 @@
+|.+0&#ffffff0@72|1|4
+|.@72|1|5
+|.@72|1|6
+|.@72|1|7
+|.@72|1|8
+>.@72|1|9
+|.@72|2|0
+|.@72|2|1
+|.@72|2@1
+|.@72|2|3
+|.@72|2|4
+|.@72|2|5
+|.@72|2|6
+|.@72|2|7
+|.@72|2|8
+|.@72|2|9
+|.@72|3|0
+|.@72|3|1
+|.@72|3|2
+| @56|1|9|,|1| @9|3|1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_01_02.dump b/runtime/syntax/testdir/dumps/dots_01_02.dump
new file mode 100644
index 0000000..1710831
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_02.dump
@@ -0,0 +1,20 @@
+|.+0&#ffffff0@72|3|2
+|.@72|3@1
+|.@72|3|4
+|.@72|3|5
+|.@72|3|6
+>.@72|3|7
+|.@72|3|8
+|.@72|3|9
+|.@72|4|0
+|.@72|4|1
+|.@72|4|2
+|.@72|4|3
+|.@72|4@1
+|.@72|4|5
+|.@72|4|6
+|.@72|4|7
+|.@72|4|8
+|.@72|4|9
+|.@72|5|0
+| @56|3|7|,|1| @9|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_01_03.dump b/runtime/syntax/testdir/dumps/dots_01_03.dump
new file mode 100644
index 0000000..e011d4e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_03.dump
@@ -0,0 +1,20 @@
+|.+0&#ffffff0@72|5|0
+|.@72|5|1
+|.@72|5|2
+|.@72|5|3
+|.@72|5|4
+>.@72|5@1
+|.@72|5|6
+|.@72|5|7
+|.@72|5|8
+|.@72|5|9
+|.@72|6|0
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_02_00.dump b/runtime/syntax/testdir/dumps/dots_02_00.dump
new file mode 100644
index 0000000..1e9c10f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2| @73
+|3|.@73
+|4| @73
+|5|.@73
+|6| @73
+|7|.@73
+|8| @73
+|9|.@27|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|0| @72
+|1@1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|1|2| @72
+|1|3|.@29|r|u|l|e|r|.@37
+|1|4| @72
+|1|5|.@72
+|1|6| @72
+|1|7|.@72
+|1|8| @72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_02_01.dump b/runtime/syntax/testdir/dumps/dots_02_01.dump
new file mode 100644
index 0000000..336d6be
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|3|.@29|r|u|l|e|r|.@37
+|1|4| @72
+|1|5|.@72
+|1|6| @72
+|1|7|.@72
+|1|8| @72
+>1|9|.@72
+|2|0| @72
+|2|1|.@72
+|2@1| @72
+|2|3|.@72
+|2|4| @72
+|2|5|.@72
+|2|6| @72
+|2|7|.@72
+|2|8| @72
+|2|9|.@72
+|3|0| @72
+|3|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|0|,|1| @9|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/dots_02_02.dump b/runtime/syntax/testdir/dumps/dots_02_02.dump
new file mode 100644
index 0000000..b43d613
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_02.dump
@@ -0,0 +1,20 @@
+|3+0&#ffffff0|1|.@72
+|3|2| @72
+|3@1|.@72
+|3|4| @72
+|3|5|.@72
+|3|6| @72
+>3|7|.@72
+|3|8| @72
+|3|9|.@72
+|4|0| @72
+|4|1|.@72
+|4|2| @72
+|4|3|.@72
+|4@1| @72
+|4|5|.@72
+|4|6| @72
+|4|7|.@72
+|4|8| @72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|9|,|1| @9|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_02_03.dump b/runtime/syntax/testdir/dumps/dots_02_03.dump
new file mode 100644
index 0000000..3d1d04e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|9|.@72
+|5|0| @72
+|5|1|.@72
+|5|2| @72
+|5|3|.@72
+|5|4| @72
+>5@1|.@72
+|5|6| @72
+|5|7|.@72
+|5|8| @72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_03_00.dump b/runtime/syntax/testdir/dumps/dots_03_00.dump
new file mode 100644
index 0000000..35e038f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3| @73
+|4|.@73
+|5|.@73
+|6| @73
+|7|.@73
+|8|.@73
+|9| @73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|4|.@72
+|1|5| @72
+|1|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|1|7|.@72
+|1|8| @72
+|1|9|.@29|r|u|l|e|r|.@34|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_03_01.dump b/runtime/syntax/testdir/dumps/dots_03_01.dump
new file mode 100644
index 0000000..d1b4945
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|3|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|4|.@72
+|1|5| @72
+|1|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|1|7|.@72
+|1|8| @72
+>1|9|.@29|r|u|l|e|r|.@37
+|2|0|.@72
+|2|1| @72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@72
+|2|6|.@72
+|2|7| @72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|7|,|1| @10|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/dots_03_02.dump b/runtime/syntax/testdir/dumps/dots_03_02.dump
new file mode 100644
index 0000000..56b0065
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_02.dump
@@ -0,0 +1,20 @@
+|3+0&#ffffff0|1|.@72
+|3|2|.@72
+|3@1| @72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+>3|7|.@72
+|3|8|.@72
+|3|9| @72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|3|,|1| @9|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_03_03.dump b/runtime/syntax/testdir/dumps/dots_03_03.dump
new file mode 100644
index 0000000..a4a873a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|9|.@72
+|5|0|.@72
+|5|1| @72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+>5@1|.@72
+|5|6|.@72
+|5|7| @72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_04_00.dump b/runtime/syntax/testdir/dumps/dots_04_00.dump
new file mode 100644
index 0000000..3848d3f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4| @73
+|5|.@73
+|6|.@73
+|7|.@73
+|8| @73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+|1|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_04_01.dump b/runtime/syntax/testdir/dumps/dots_04_01.dump
new file mode 100644
index 0000000..b86ce50
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_01.dump
@@ -0,0 +1,20 @@
+|9+0&#ffffff0|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+>1|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@72
+|2|0| @72
+|2|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@29|r|u|l|e|r|.@37
+|2|6|.@72
+|2|7|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|5|,|1| @10|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/dots_04_02.dump b/runtime/syntax/testdir/dumps/dots_04_02.dump
new file mode 100644
index 0000000..aa50446
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_02.dump
@@ -0,0 +1,20 @@
+|2+0&#ffffff0|5|.@29|r|u|l|e|r|.@37
+|2|6|.@72
+|2|7|.@72
+|2|8| @72
+>2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2| @72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|8|,|1| @10|5|4|%|
diff --git a/runtime/syntax/testdir/dumps/dots_04_03.dump b/runtime/syntax/testdir/dumps/dots_04_03.dump
new file mode 100644
index 0000000..f90875c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1| @72
+>4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2| @72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|2|,|1| @9|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_04_04.dump b/runtime/syntax/testdir/dumps/dots_04_04.dump
new file mode 100644
index 0000000..397d261
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|5|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_05_00.dump b/runtime/syntax/testdir/dumps/dots_05_00.dump
new file mode 100644
index 0000000..0f36067
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5| @73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0| @72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5| @72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_05_01.dump b/runtime/syntax/testdir/dumps/dots_05_01.dump
new file mode 100644
index 0000000..65aea94
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5| @72
+>1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0| @72
+|2|1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5| @72
+|2|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|2|7|.@72
+|2|8|.@72
+|2|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|2@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_05_02.dump b/runtime/syntax/testdir/dumps/dots_05_02.dump
new file mode 100644
index 0000000..fff0e65
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_02.dump
@@ -0,0 +1,20 @@
+|2+0&#ffffff0|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+>3|1|.@29|r|u|l|e|r|.@37
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5| @72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|7|,|1| @10|5@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_05_03.dump b/runtime/syntax/testdir/dumps/dots_05_03.dump
new file mode 100644
index 0000000..2e7337c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+>4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0| @72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1| @72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|0|,|1| @9|8@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_05_04.dump b/runtime/syntax/testdir/dumps/dots_05_04.dump
new file mode 100644
index 0000000..cfa410c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_06_00.dump b/runtime/syntax/testdir/dumps/dots_06_00.dump
new file mode 100644
index 0000000..0f57329
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6| @73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_06_01.dump b/runtime/syntax/testdir/dumps/dots_06_01.dump
new file mode 100644
index 0000000..ad5c871
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+>1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/dots_06_02.dump b/runtime/syntax/testdir/dumps/dots_06_02.dump
new file mode 100644
index 0000000..41845be
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_02.dump
@@ -0,0 +1,20 @@
+|3+0&#ffffff0|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+>3|7|.@29|r|u|l|e|r|.@37
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|7|,|1| @10|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_06_03.dump b/runtime/syntax/testdir/dumps/dots_06_03.dump
new file mode 100644
index 0000000..eb9f846
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+>5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_07_00.dump b/runtime/syntax/testdir/dumps/dots_07_00.dump
new file mode 100644
index 0000000..d0623f4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7| @73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4| @72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_07_01.dump b/runtime/syntax/testdir/dumps/dots_07_01.dump
new file mode 100644
index 0000000..98cd186
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_01.dump
@@ -0,0 +1,20 @@
+|8+0&#ffffff0|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4| @72
+>1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1| @72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|1|4|%|
diff --git a/runtime/syntax/testdir/dumps/dots_07_02.dump b/runtime/syntax/testdir/dumps/dots_07_02.dump
new file mode 100644
index 0000000..719d589
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8| @72
+|2|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5| @72
+|3|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|4|2|%|
diff --git a/runtime/syntax/testdir/dumps/dots_07_03.dump b/runtime/syntax/testdir/dumps/dots_07_03.dump
new file mode 100644
index 0000000..d0cdd0d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@29|r|u|l|e|r|.@37
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9| @72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|6|,|1| @10|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_07_04.dump b/runtime/syntax/testdir/dumps/dots_07_04.dump
new file mode 100644
index 0000000..eae929e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_04.dump
@@ -0,0 +1,20 @@
+|5+0&#ffffff0|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+>5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_08_00.dump b/runtime/syntax/testdir/dumps/dots_08_00.dump
new file mode 100644
index 0000000..eb079df
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8| @73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_08_01.dump b/runtime/syntax/testdir/dumps/dots_08_01.dump
new file mode 100644
index 0000000..d17eb98
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_01.dump
@@ -0,0 +1,20 @@
+|9+0&#ffffff0|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+>1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|1|6|%|
diff --git a/runtime/syntax/testdir/dumps/dots_08_02.dump b/runtime/syntax/testdir/dumps/dots_08_02.dump
new file mode 100644
index 0000000..fc959de
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2| @72
+|3@1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_08_03.dump b/runtime/syntax/testdir/dumps/dots_08_03.dump
new file mode 100644
index 0000000..348a883
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|6|,|1| @10|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/dots_08_04.dump b/runtime/syntax/testdir/dumps/dots_08_04.dump
new file mode 100644
index 0000000..864c59c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_09_00.dump b/runtime/syntax/testdir/dumps/dots_09_00.dump
new file mode 100644
index 0000000..10b63c9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9| @73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_09_01.dump b/runtime/syntax/testdir/dumps/dots_09_01.dump
new file mode 100644
index 0000000..a3792a2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+>1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7| @72
+|2|8|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_09_02.dump b/runtime/syntax/testdir/dumps/dots_09_02.dump
new file mode 100644
index 0000000..3a0f1c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+|4|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|6|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_09_03.dump b/runtime/syntax/testdir/dumps/dots_09_03.dump
new file mode 100644
index 0000000..00202be
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+>5@1|.@29|r|u|l|e|r|.@37
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3| @72
+|~+0#4040ff13&| @73
+| +0#0000000&@56|7|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_10_00.dump b/runtime/syntax/testdir/dumps/dots_10_00.dump
new file mode 100644
index 0000000..1760049
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0| @72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_10_01.dump b/runtime/syntax/testdir/dumps/dots_10_01.dump
new file mode 100644
index 0000000..d7a64b4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0| @72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_10_02.dump b/runtime/syntax/testdir/dumps/dots_10_02.dump
new file mode 100644
index 0000000..a6eae12
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_10_03.dump b/runtime/syntax/testdir/dumps/dots_10_03.dump
new file mode 100644
index 0000000..a0e58b5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@25|w|i|h@1|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|6|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_10_04.dump b/runtime/syntax/testdir/dumps/dots_10_04.dump
new file mode 100644
index 0000000..195e243
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_04.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|1|.@25|w|i|h@1|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0| @72
+|5|1|.@29|r|u|l|e|r|.@37
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|5|,|1| @10|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_10_05.dump b/runtime/syntax/testdir/dumps/dots_10_05.dump
new file mode 100644
index 0000000..2ed226d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_05.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|1|.@29|r|u|l|e|r|.@37
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_11_00.dump b/runtime/syntax/testdir/dumps/dots_11_00.dump
new file mode 100644
index 0000000..c3d7d80
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1| @72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_11_01.dump b/runtime/syntax/testdir/dumps/dots_11_01.dump
new file mode 100644
index 0000000..eb8c9aa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1| @72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_11_02.dump b/runtime/syntax/testdir/dumps/dots_11_02.dump
new file mode 100644
index 0000000..51c79bd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1| @72
+|3|4|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_11_03.dump b/runtime/syntax/testdir/dumps/dots_11_03.dump
new file mode 100644
index 0000000..8d0079f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|4|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1| @72
+|4|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|6|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_11_04.dump b/runtime/syntax/testdir/dumps/dots_11_04.dump
new file mode 100644
index 0000000..b09d07d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_04.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1| @72
+|5|6|.@29|r|u|l|e|r|.@37
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|5|,|1| @10|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_11_05.dump b/runtime/syntax/testdir/dumps/dots_11_05.dump
new file mode 100644
index 0000000..005b9c6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_05.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|6|.@29|r|u|l|e|r|.@37
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_12_00.dump b/runtime/syntax/testdir/dumps/dots_12_00.dump
new file mode 100644
index 0000000..601363c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_12_01.dump b/runtime/syntax/testdir/dumps/dots_12_01.dump
new file mode 100644
index 0000000..223a502
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_12_02.dump b/runtime/syntax/testdir/dumps/dots_12_02.dump
new file mode 100644
index 0000000..39efd9e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|5|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_12_03.dump b/runtime/syntax/testdir/dumps/dots_12_03.dump
new file mode 100644
index 0000000..400a07a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_12_04.dump b/runtime/syntax/testdir/dumps/dots_12_04.dump
new file mode 100644
index 0000000..8041b65
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_04.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_13_00.dump b/runtime/syntax/testdir/dumps/dots_13_00.dump
new file mode 100644
index 0000000..0f11722
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3| @72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_13_01.dump b/runtime/syntax/testdir/dumps/dots_13_01.dump
new file mode 100644
index 0000000..5e5e588
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6| @72
+|2|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_13_02.dump b/runtime/syntax/testdir/dumps/dots_13_02.dump
new file mode 100644
index 0000000..b094b93
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9| @72
+|4|0|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_13_03.dump b/runtime/syntax/testdir/dumps/dots_13_03.dump
new file mode 100644
index 0000000..68db8d9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|0|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2| @72
+|5|3|.@29|r|u|l|e|r|.@37
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_13_04.dump b/runtime/syntax/testdir/dumps/dots_13_04.dump
new file mode 100644
index 0000000..a778894
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|3|.@29|r|u|l|e|r|.@37
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_14_00.dump b/runtime/syntax/testdir/dumps/dots_14_00.dump
new file mode 100644
index 0000000..0964d57
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4| @72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_14_01.dump b/runtime/syntax/testdir/dumps/dots_14_01.dump
new file mode 100644
index 0000000..8942184
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8| @72
+|2|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_14_02.dump b/runtime/syntax/testdir/dumps/dots_14_02.dump
new file mode 100644
index 0000000..7a631f8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/dots_14_03.dump b/runtime/syntax/testdir/dumps/dots_14_03.dump
new file mode 100644
index 0000000..f38ff60
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|3|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+|5|7|.@29|r|u|l|e|r|.@37
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/dots_14_04.dump b/runtime/syntax/testdir/dumps/dots_14_04.dump
new file mode 100644
index 0000000..7ad0b7f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|7|.@29|r|u|l|e|r|.@37
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8|.@72
+|6|9|.@72
+|7|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_15_00.dump b/runtime/syntax/testdir/dumps/dots_15_00.dump
new file mode 100644
index 0000000..2894a87
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5| @72
+|1|6|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_15_01.dump b/runtime/syntax/testdir/dumps/dots_15_01.dump
new file mode 100644
index 0000000..c97e636
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|6|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_15_02.dump b/runtime/syntax/testdir/dumps/dots_15_02.dump
new file mode 100644
index 0000000..31039f4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+|4|6|.@29|r|u|l|e|r|.@37
+|4|7|.@72
+|4|8|.@72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_15_03.dump b/runtime/syntax/testdir/dumps/dots_15_03.dump
new file mode 100644
index 0000000..9ffb78e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|6|.@29|r|u|l|e|r|.@37
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_16_00.dump b/runtime/syntax/testdir/dumps/dots_16_00.dump
new file mode 100644
index 0000000..5e739cb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+|1|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_16_01.dump b/runtime/syntax/testdir/dumps/dots_16_01.dump
new file mode 100644
index 0000000..d3a44bb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2| @72
+|3@1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|4|.@72
+|3|5|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_16_02.dump b/runtime/syntax/testdir/dumps/dots_16_02.dump
new file mode 100644
index 0000000..69b5cd9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0@1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_16_03.dump b/runtime/syntax/testdir/dumps/dots_16_03.dump
new file mode 100644
index 0000000..f872019
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_17_00.dump b/runtime/syntax/testdir/dumps/dots_17_00.dump
new file mode 100644
index 0000000..77b956d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7| @72
+|1|8|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_17_01.dump b/runtime/syntax/testdir/dumps/dots_17_01.dump
new file mode 100644
index 0000000..7f755b9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|8|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4| @72
+|3|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|6|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_17_02.dump b/runtime/syntax/testdir/dumps/dots_17_02.dump
new file mode 100644
index 0000000..911b019
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1| @72
+|5|2|.@30|r|u|l|e|r|.@36
+|5|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_17_03.dump b/runtime/syntax/testdir/dumps/dots_17_03.dump
new file mode 100644
index 0000000..3802678
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_03.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|2|.@30|r|u|l|e|r|.@36
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8| @72
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_18_00.dump b/runtime/syntax/testdir/dumps/dots_18_00.dump
new file mode 100644
index 0000000..7c9fb22
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+|1|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_18_01.dump b/runtime/syntax/testdir/dumps/dots_18_01.dump
new file mode 100644
index 0000000..b134abd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_18_02.dump b/runtime/syntax/testdir/dumps/dots_18_02.dump
new file mode 100644
index 0000000..10fea3b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+|5@1|.@30|r|u|l|e|r|.@33|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_18_03.dump b/runtime/syntax/testdir/dumps/dots_18_03.dump
new file mode 100644
index 0000000..ea90ef4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_03.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0@1|.@30|r|u|l|e|r|.@36
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8|.@72
+|6|9|.@72
+|7|0|.@72
+|7|1|.@72
+|7|2| @72
+|~+0#4040ff13&| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_19_00.dump b/runtime/syntax/testdir/dumps/dots_19_00.dump
new file mode 100644
index 0000000..599db81
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9| @72
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_19_01.dump b/runtime/syntax/testdir/dumps/dots_19_01.dump
new file mode 100644
index 0000000..59034b9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_01.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|0|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8| @72
+@57|2|,|1| @10|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_19_02.dump b/runtime/syntax/testdir/dumps/dots_19_02.dump
new file mode 100644
index 0000000..d38c4a9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|9|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7| @72
+@57|3|,|1| @10|6@1|%|
diff --git a/runtime/syntax/testdir/dumps/dots_19_03.dump b/runtime/syntax/testdir/dumps/dots_19_03.dump
new file mode 100644
index 0000000..be794bb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_03.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|8|.@30|r|u|l|e|r|.@36
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8|.@72
+|6|9|.@72
+|7|0|.@72
+|7|1|.@72
+|7|2|.@72
+|7|3|.@72
+|7|4|.@72
+|7|5|.@72
+|7|6| @72
+@57|4|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/dots_20_00.dump b/runtime/syntax/testdir/dumps/dots_20_00.dump
new file mode 100644
index 0000000..5103c34
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_20_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@28|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@29
+|6|.@27|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@29
+|7|.@31|r|u|l|e|r|.@36
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+| @56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/dots_20_01.dump b/runtime/syntax/testdir/dumps/dots_20_01.dump
new file mode 100644
index 0000000..09c1fcc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_20_01.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+| @56|2|,|1| @10|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/html_01.dump b/runtime/syntax/testdir/dumps/html_01.dump
index 48b11e6..dbc1969 100644
--- a/runtime/syntax/testdir/dumps/html_01.dump
+++ b/runtime/syntax/testdir/dumps/html_01.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|a+0#af5f00255&|b@1|r|>+0#00e0e07&|<|/|a+0#af5f00255&|b@1|r|>+0#00e0e07&| +0#0000000&@61
+|<+0#0000e05#ffffff0|!|-@1| |H|T|M|L| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@52
+|<+0#00e0e07&|a+0#af5f00255&|>+0#00e0e07&|<|/|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|a+0#af5f00255&|b@1|r|>+0#00e0e07&|<|/|a+0#af5f00255&|b@1|r|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|a+0#af5f00255&|d@1|r|e|s@1|>+0#00e0e07&|<|/|a+0#af5f00255&|d@1|r|e|s@1|>+0#00e0e07&| +0#0000000&@55
|<+0#00e0e07&|a+0#af5f00255&|r|e|a|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&|<|/|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&| +0#0000000&@55
+><+0#00e0e07&|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&|<|/|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&| +0#0000000&@55
|<+0#00e0e07&|a+0#af5f00255&|s|i|d|e|>+0#00e0e07&|<|/|a+0#af5f00255&|s|i|d|e|>+0#00e0e07&| +0#0000000&@59
-><+0#00e0e07&|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&|<|/|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07&|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&|<|/|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@59
|<+0#00e0e07&|b+0#af5f00255&|>+0#00e0e07&|b+0#0000000&|r|i|n|g| |a|t@1|e|n|t|i|o|n| |t|o|<+0#00e0e07&|/|b+0#af5f00255&|>+0#00e0e07&| +0#0000000&@49
|<+0#00e0e07&|b+0#af5f00255&|a|s|e|>+0#00e0e07&| +0#0000000&@68
|<+0#00e0e07&|b+0#af5f00255&|d|i|>+0#00e0e07&|<|/|b+0#af5f00255&|d|i|>+0#00e0e07&| +0#0000000&@63
@@ -15,6 +17,4 @@
|<+0#00e0e07&|c+0#af5f00255&|a|n|v|a|s|>+0#00e0e07&|<|/|c+0#af5f00255&|a|n|v|a|s|>+0#00e0e07&| +0#0000000&@57
|<+0#00e0e07&|c+0#af5f00255&|a|p|t|i|o|n|>+0#00e0e07&|<|/|c+0#af5f00255&|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@55
|<+0#00e0e07&|c+0#af5f00255&|i|t|e|>+0#00e0e07&|<|/|c+0#af5f00255&|i|t|e|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&|<|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
-@57|1|9|,|1| @10|9|%|
+@57|1|7|,|1| @10|8|%|
diff --git a/runtime/syntax/testdir/dumps/html_02.dump b/runtime/syntax/testdir/dumps/html_02.dump
index bc55823..16f3cf2 100644
--- a/runtime/syntax/testdir/dumps/html_02.dump
+++ b/runtime/syntax/testdir/dumps/html_02.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07#ffffff0|c+0#af5f00255&|i|t|e|>+0#00e0e07&|<|/|c+0#af5f00255&|i|t|e|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&|<|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
|<+0#00e0e07&|c+0#af5f00255&|o|l|g|r|o|u|p|>+0#00e0e07&|<|/|c+0#af5f00255&|o|l|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@53
|<+0#00e0e07&|d+0#af5f00255&|a|t|a|>+0#00e0e07&|<|/|d+0#af5f00255&|a|t|a|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&|<|/|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&| +0#0000000&@53
+><+0#00e0e07&|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&|<|/|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&| +0#0000000&@53
|<+0#00e0e07&|d+0#af5f00255&@1|>+0#00e0e07&|<|/|d+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
-><+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|d+0#0000000&|e|l|e|t|e|d| |t|e|x|t|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@51
+|<+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|d+0#0000000&|e|l|e|t|e|d| |t|e|x|t|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@51
|<+0#00e0e07&|d+0#af5f00255&|e|t|a|i|l|s|>+0#00e0e07&|<|/|d+0#af5f00255&|e|t|a|i|l|s|>+0#00e0e07&| +0#0000000&@55
|<+0#00e0e07&|d+0#af5f00255&|f|n|>+0#00e0e07&|<|/|d+0#af5f00255&|f|n|>+0#00e0e07&| +0#0000000&@63
|<+0#00e0e07&|d+0#af5f00255&|i|a|l|o|g|>+0#00e0e07&|<|/|d+0#af5f00255&|i|a|l|o|g|>+0#00e0e07&| +0#0000000&@57
@@ -15,6 +17,4 @@
|<+0#00e0e07&|f+0#af5f00255&|i|e|l|d|s|e|t|>+0#00e0e07&|<|/|f+0#af5f00255&|i|e|l|d|s|e|t|>+0#00e0e07&| +0#0000000&@53
|<+0#00e0e07&|f+0#af5f00255&|i|g|c|a|p|t|i|o|n|>+0#00e0e07&|<|/|f+0#af5f00255&|i|g|c|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@49
|<+0#00e0e07&|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&|<|/|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&| +0#0000000&@57
-|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&|<|/|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@57
-|<+0#00e0e07&|f+0#af5f00255&|o|r|m|>+0#00e0e07&|<|/|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@61
-@57|3|7|,|1| @9|2|3|%|
+@57|3|5|,|1| @9|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/html_03.dump b/runtime/syntax/testdir/dumps/html_03.dump
index 4953d71..6883fd4 100644
--- a/runtime/syntax/testdir/dumps/html_03.dump
+++ b/runtime/syntax/testdir/dumps/html_03.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|f+0#af5f00255&|o|r|m|>+0#00e0e07&|<|/|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07#ffffff0|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&|<|/|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&|<|/|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|f+0#af5f00255&|o|r|m|>+0#00e0e07&|<|/|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|h+0#af5f00255&|1|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |1|<+0#00e0e07&|/|h+0#af5f00255&|1|>+0#00e0e07&| +0#0000000&@50
|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |3|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@50
-|<+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |4|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@50
+><+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |4|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@50
|<+0#00e0e07&|h+0#af5f00255&|4|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |4|<+0#00e0e07&|/|h+0#af5f00255&|4|>+0#00e0e07&| +0#0000000&@50
-><+0#00e0e07&|h+0#af5f00255&|5|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |5|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@50
+|<+0#00e0e07&|h+0#af5f00255&|5|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |5|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@50
|<+0#00e0e07&|h+0#af5f00255&|6|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |6|<+0#00e0e07&|/|h+0#af5f00255&|6|>+0#00e0e07&| +0#0000000&@50
|<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&|<|/|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&|<|/|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&| +0#0000000&@57
@@ -15,6 +17,4 @@
|<+0#00e0e07&|i+0#af5f00255&|m|g|>+0#00e0e07&| +0#0000000&@69
|<+0#00e0e07&|i+0#af5f00255&|n|p|u|t|>+0#00e0e07&| +0#0000000&@67
|<+0#00e0e07&|i+0#af5f00255&|n|s|>+0#00e0e07&|<|/|i+0#af5f00255&|n|s|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|k+0#af5f00255&|b|d|>+0#00e0e07&|<|/|k+0#af5f00255&|b|d|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&|<|/|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@59
-@57|5@1|,|1| @9|3|6|%|
+@57|5|3|,|1| @9|3|5|%|
diff --git a/runtime/syntax/testdir/dumps/html_04.dump b/runtime/syntax/testdir/dumps/html_04.dump
index b2416e8..6e4aa7c 100644
--- a/runtime/syntax/testdir/dumps/html_04.dump
+++ b/runtime/syntax/testdir/dumps/html_04.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&|<|/|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07#ffffff0|i+0#af5f00255&|n|s|>+0#00e0e07&|<|/|i+0#af5f00255&|n|s|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|k+0#af5f00255&|b|d|>+0#00e0e07&|<|/|k+0#af5f00255&|b|d|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&|<|/|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@59
|<+0#00e0e07&|l+0#af5f00255&|e|g|e|n|d|>+0#00e0e07&|<|/|l+0#af5f00255&|e|g|e|n|d|>+0#00e0e07&| +0#0000000&@57
|<+0#00e0e07&|l+0#af5f00255&|i|>+0#00e0e07&|<|/|l+0#af5f00255&|i|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|l+0#af5f00255&|i|n|k|>+0#00e0e07&| +0#0000000&@68
+><+0#00e0e07&|l+0#af5f00255&|i|n|k|>+0#00e0e07&| +0#0000000&@68
|<+0#00e0e07&|m+0#af5f00255&|a|i|n|>+0#00e0e07&|<|/|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@61
-><+0#00e0e07&|m+0#af5f00255&|a|p|>+0#00e0e07&|<|/|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|m+0#af5f00255&|a|p|>+0#00e0e07&|<|/|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@63
|<+0#00e0e07&|m+0#af5f00255&|a|r|k|>+0#00e0e07&|<|/|m+0#af5f00255&|a|r|k|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|m+0#af5f00255&|e|n|u|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|m+0#af5f00255&|e|t|a|>+0#00e0e07&| +0#0000000&@68
@@ -15,6 +17,4 @@
|<+0#00e0e07&|o+0#af5f00255&|p|t|g|r|o|u|p|>+0#00e0e07&|<|/|o+0#af5f00255&|p|t|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@53
|<+0#00e0e07&|o+0#af5f00255&|p|t|i|o|n|>+0#00e0e07&|<|/|o+0#af5f00255&|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@57
|<+0#00e0e07&|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&|<|/|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&| +0#0000000&@57
-|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|<|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&|<|/|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@55
-@57|7|3|,|1| @9|5|0|%|
+@57|7|1|,|1| @9|4|8|%|
diff --git a/runtime/syntax/testdir/dumps/html_05.dump b/runtime/syntax/testdir/dumps/html_05.dump
index 20df53e..c643720 100644
--- a/runtime/syntax/testdir/dumps/html_05.dump
+++ b/runtime/syntax/testdir/dumps/html_05.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&|<|/|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@55
+|<+0#00e0e07#ffffff0|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&|<|/|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|<|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&|<|/|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@55
|<+0#00e0e07&|p+0#af5f00255&|r|e|>+0#00e0e07&|p+0#0000000&|r|e|f|o|r|m|a|t@1|e|d| |t|e|x|t|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@46
|<+0#00e0e07&|p+0#af5f00255&|r|o|g|r|e|s@1|>+0#00e0e07&|<|/|p+0#af5f00255&|r|o|g|r|e|s@1|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|q+0#af5f00255&|>+0#00e0e07&|<|/|q+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
+><+0#00e0e07&|q+0#af5f00255&|>+0#00e0e07&|<|/|q+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
|<+0#00e0e07&|r+0#af5f00255&|p|>+0#00e0e07&|<|/|r+0#af5f00255&|p|>+0#00e0e07&| +0#0000000&@65
-><+0#00e0e07&|r+0#af5f00255&|t|>+0#00e0e07&|<|/|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|r+0#af5f00255&|t|>+0#00e0e07&|<|/|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@65
|<+0#00e0e07&|r+0#af5f00255&|u|b|y|>+0#00e0e07&|<|/|r+0#af5f00255&|u|b|y|>+0#00e0e07&| +0#0000000&@61
|<+0#0000e05&|!|-@1| |F|r|e@1|B|S|D| |f|a|i|l|u|r|e| +0#0000000&@54
|<+0#0000e05&|s|>|s|t|r|i|k|e|t|h|r|o|u|g|h|<|/|s|>| +0#0000000&@54
@@ -15,6 +17,4 @@
|<+0#00e0e07&|s+0#af5f00255&|e|l|e|c|t|>+0#00e0e07&|<|/|s+0#af5f00255&|e|l|e|c|t|>+0#00e0e07&| +0#0000000&@57
|<+0#00e0e07&|s+0#af5f00255&|l|o|t|>+0#00e0e07&|<|/|s+0#af5f00255&|l|o|t|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&|<|/|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|s+0#af5f00255&|o|u|r|c|e|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@61
-@57|9|1|,|1| @9|6|3|%|
+@57|8|9|,|1| @9|6|1|%|
diff --git a/runtime/syntax/testdir/dumps/html_06.dump b/runtime/syntax/testdir/dumps/html_06.dump
index d24392f..5696b87 100644
--- a/runtime/syntax/testdir/dumps/html_06.dump
+++ b/runtime/syntax/testdir/dumps/html_06.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07#ffffff0|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&|<|/|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07&|s+0#af5f00255&|o|u|r|c|e|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|s+0#0000000&|t|r|o|n|g| |i|m|p|o|r|t|a|n|c|e|<+0#00e0e07&|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&| +0#0000000&@40
|<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&|<|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|s+0#af5f00255&|u|b|>+0#00e0e07&|<|/|s+0#af5f00255&|u|b|>+0#00e0e07&| +0#0000000&@63
+><+0#00e0e07&|s+0#af5f00255&|u|b|>+0#00e0e07&|<|/|s+0#af5f00255&|u|b|>+0#00e0e07&| +0#0000000&@63
|<+0#00e0e07&|s+0#af5f00255&|u|m@1|a|r|y|>+0#00e0e07&|<|/|s+0#af5f00255&|u|m@1|a|r|y|>+0#00e0e07&| +0#0000000&@55
-><+0#00e0e07&|s+0#af5f00255&|u|p|>+0#00e0e07&|<|/|s+0#af5f00255&|u|p|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|s+0#af5f00255&|u|p|>+0#00e0e07&|<|/|s+0#af5f00255&|u|p|>+0#00e0e07&| +0#0000000&@63
|<+0#00e0e07&|t+0#af5f00255&|a|b|l|e|>+0#00e0e07&|<|/|t+0#af5f00255&|a|b|l|e|>+0#00e0e07&| +0#0000000&@59
|<+0#00e0e07&|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&|<|/|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&| +0#0000000&@59
|<+0#00e0e07&|t+0#af5f00255&|d|>+0#00e0e07&|<|/|t+0#af5f00255&|d|>+0#00e0e07&| +0#0000000&@65
@@ -15,6 +17,4 @@
|<+0#00e0e07&|t+0#af5f00255&|i|m|e|>+0#00e0e07&|<|/|t+0#af5f00255&|i|m|e|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|<|/|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&| +0#0000000&@59
|<+0#00e0e07&|t+0#af5f00255&|r|>+0#00e0e07&|<|/|t+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|t+0#af5f00255&|r|a|c|k|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|u+0#af5f00255&|>+0#00e0e07&|u+0#0000000&|n|a|r|t|i|c|u|l|a|t|e|d| |a|n@1|o|t|a|t|i|o|n|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@43
-@57|1|0|9|,|1| @8|7|6|%|
+@57|1|0|7|,|1| @8|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/html_07.dump b/runtime/syntax/testdir/dumps/html_07.dump
index 8a56d4d..5c57ac4 100644
--- a/runtime/syntax/testdir/dumps/html_07.dump
+++ b/runtime/syntax/testdir/dumps/html_07.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|u+0#af5f00255&|>+0#00e0e07&|u+0#0000000&|n|a|r|t|i|c|u|l|a|t|e|d| |a|n@1|o|t|a|t|i|o|n|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@43
+|<+0#00e0e07#ffffff0|t+0#af5f00255&|r|>+0#00e0e07&|<|/|t+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|t+0#af5f00255&|r|a|c|k|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|u+0#af5f00255&|>+0#00e0e07&|u+0#0000000&|n|a|r|t|i|c|u|l|a|t|e|d| |a|n@1|o|t|a|t|i|o|n|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@43
|<+0#00e0e07&|u+0#af5f00255&|l|>+0#00e0e07&|<|/|u+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@65
|<+0#00e0e07&|v+0#af5f00255&|a|r|>+0#00e0e07&|<|/|v+0#af5f00255&|a|r|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&|<|/|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&| +0#0000000&@59
+><+0#00e0e07&|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&|<|/|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&| +0#0000000&@59
|<+0#00e0e07&|w+0#af5f00255&|b|r|>+0#00e0e07&| +0#0000000&@69
-><+0#00e0e07&|x+0#af5f00255&|m|p|>+0#00e0e07&|<|/|x+0#af5f00255&|m|p|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|x+0#af5f00255&|m|p|>+0#00e0e07&|<|/|x+0#af5f00255&|m|p|>+0#00e0e07&| +0#0000000&@63
@75
|<+0#0000e05&|!|-@1| |D|e|p|r|e|c|a|t|e|d| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@46
|<+0#00e0e07&|a+0#af5f00255&|c|r|o|n|y|m|>+0#00e0e07&|<|/|a+0#af5f00255&|c|r|o|n|y|m|>+0#00e0e07&| +0#0000000&@55
@@ -15,6 +17,4 @@
|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&|<|/|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@53
|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&|<|/|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@55
|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&|<|/|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
-@57|1|2|7|,|1| @8|9|0|%|
+@57|1|2|5|,|1| @8|8@1|%|
diff --git a/runtime/syntax/testdir/dumps/html_08.dump b/runtime/syntax/testdir/dumps/html_08.dump
index 02a68e7..dbae33a 100644
--- a/runtime/syntax/testdir/dumps/html_08.dump
+++ b/runtime/syntax/testdir/dumps/html_08.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07#ffffff0|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&|<|/|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
|<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
|<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&|<|/|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&|<|/|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@63
+><+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&|<|/|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@63
|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|s+0#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@44
-><+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&|<|/|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&|<|/|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
@75
|<+0#0000e05&|!|-@1| |E|x|p|e|r|i|m|e|n|t|a|l| |-| |n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |-@1|>| +0#0000000&@35
|<+0#00e0e07&|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&|<|/|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&| +0#0000000&@57
@@ -15,6 +17,4 @@
|~+0#4040ff13&| @73
|~| @73
|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|4|5|,|1| @8|B|o|t|
+| +0#0000000&@56|1|4|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/html_99.dump b/runtime/syntax/testdir/dumps/html_99.dump
deleted file mode 100644
index 14866b6..0000000
--- a/runtime/syntax/testdir/dumps/html_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&|<|/|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&|<|/|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&|<|/|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@55
-|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&|<|/|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&|<|/|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&|<|/|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|s+0#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@44
-|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&|<|/|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
-@75
-|<+0#0000e05&|!|-@1| |E|x|p|e|r|i|m|e|n|t|a|l| |-| |n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |-@1|>| +0#0000000&@35
-|<+0#00e0e07&|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&|<|/|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&| +0#0000000&@57
-@75
-|<+0#0000e05&|!|-@1| |N|o|t|e|:| |t|h|e|s|e| |d|e|p|r|e|c|a|t|e|d| |e|l|e|m|e|n|t|s| |h|a|v|e| |n|e|v|e|r| |b|e@1|n| |m|a|t|c|h|e|d| |-@1|>| +0#0000000&@10
-|<+0#00e0e07&|i+0#0000000&|m|a|g|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|n+0#0000000&|o|e|m|b|e|d|>+0#00e0e07&| +0#0000000&@65
-><+0#00e0e07&|p+0#0000000&|l|a|i|n|t|e|x|t|>+0#00e0e07&| +0#0000000&@63
-@57|1|5|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_99.dump b/runtime/syntax/testdir/dumps/java_annotations_99.dump
deleted file mode 100644
index 7d158f2..0000000
--- a/runtime/syntax/testdir/dumps/java_annotations_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#e000002#ffffff0@3|o|\| +0#0000000&@68
-| +0#e000002&@3|O|\| +0#0000000&@68
-| +0#e000002&@3|p|"+0#0000000&@2|)+0#e000e06&| +0#0000000&@65
-@4|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|/+0#0000e05&|*|,| |k|i|n|d| |=| |"|n|a|m|e|"|*|/|)+0#e000e06&@1| +0#0000000&@14
-@4|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|M|e|t|h|o|d|"|,| +0#0000000&@43
-@8|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @36
-@8|r|e|d|u|n|d|a|n|t| |=| |!@2|(|1+0#e000002&| +0#0000000&|!|=| |1+0#e000002&|)+0#0000000&|,| @42
-@8|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @36
-@8|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
-| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|n|o|O|p|(|@+0#e000e06&|L|a|b|e|l| +0#00e0e07&|@+0#e000e06&|L|a|b|e|l|(|)| +0#00e0e07&|@+0#e000e06&|L|a|b|e|l|(|"+0#e000002&|d|u|m@1|y|"|)+0#e000e06&| +0#0000000&@22
-| +0#00e0e07&@7|@+0#e000e06&|L|a|b|e|l|(|h+0#00e0e07&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|/+0#0000e05&|*|v|a|l|u|e| |=| |"|@|L|a|b|e|l|"|,|*|/| +0#00e0e07&|k|i|n|d| |=| |"+0#e000002&|n|a|m|e|"|)+0#e000e06&@1| +0#0000000&@10
-| +0#00e0e07&@7|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|P|a|r|a|m|e|t|e|r|"|,| +0#0000000&@36
-| +0#00e0e07&@11|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#00e0e07&| +0#0000000&@32
-| +0#00e0e07&@11|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#00e0e07&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#00e0e07&| +0#0000000&@32
-| +0#00e0e07&@11|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#00e0e07&| |"+0#e000002&|)|{|"|,+0#00e0e07&| |"+0#e000002&|}|(|"| +0#00e0e07&|}|)+0#e000e06&@1| +0#0000000&@33
-| +0#00e0e07&@7|O|b|j|e|c|t| |d|u|m@1|y|)| +0#0000000&@53
-@4|{| @69
-@4|}| @69
->}| @73
-@57|7|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump
new file mode 100644
index 0000000..9cb2182
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s| @51
+|{| @73
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g| @56
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@8|S|t|r|i|n|g| |k+0#00e0e07&|i|n|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @41
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|e|x|t| @55
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|{|"+0#e000002&@1|}+0#0000000&|;| @36
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump
new file mode 100644
index 0000000..32d606a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|e|x|t| @55
+@4|{| @69
+@8>S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|{|"+0#e000002&@1|}+0#0000000&|;| @36
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&| @61
+@8|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| @47
+@8|E|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|,| @44
+@8|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|,| @49
+@4|}|)+0#e000e06&| +0#0000000&@68
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|L|a|b|e|l|s| @53
+@4|{| @69
+@8|L|a|b|e|l|[|]| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @50
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|{+0#0000000&| @40
+@57|1|9|,|3|-|9| @7|2@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump
new file mode 100644
index 0000000..67c0975
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|{+0#0000000&| @40
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| @26
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|,| @23
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|,| @28
+@4|}|)+0#e000e06&| +0#0000000&@68
+@4>@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|L+0#0000000&|a|b|e|l|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@24
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|L|a|b|e|l| @54
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@8|C|l|a|s@1|<|?|>| |t+0#00e0e07&|y|p|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|L|a|b|e|l|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @30
+@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|r+0#00e0e07&|e|d|u|n|d|a|n|t|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|t+0#e000002&|r|u|e|;+0#0000000&| @33
+@8|T|e|x|t| |t+0#00e0e07&|e|x|t|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|e|x|t|;+0#0000000&| @40
+@8|T|a|g| |h+0#00e0e07&|e|a|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|)|;+0#0000000&| @40
+@8|T|a|g| |t+0#00e0e07&|a|i|l|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&@1|,+0#0000000&| |k|i|n|d| |=| |"+0#e000002&@1|)+0#e000e06&|;+0#0000000&| @19
+@4|}| @69
+@75
+@4|/+0#0000e05&|*| |U|s|e| |i|d|e|n|t|i|t|y| |c|a|s|t| |e|x|p|r|e|s@1|i|o|n|s| |t|o| |n|e|s|t| |T|Y|P|E|_|U|S|E| |a|n@1|o|t|a|t|i|o|n|s|.| |*|/| +0#0000000&@5
+@32|@+0#e000e06&|L|a|b|e|l|(| +0#0000000&@35
+@28|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| @38
+@57|3|7|,|2|-|5| @7|5|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump
new file mode 100644
index 0000000..fcc187f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| @38
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|a|"|,+0#0000000&| |"+0#e000002&|a@1|"|,+0#0000000&| |"+0#e000002&|a@2|"|,+0#0000000&| |"+0#e000002&|a@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|a|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|b|"|,+0#0000000&| |"+0#e000002&|b@1|"|,+0#0000000&| |"+0#e000002&|b@2|"|,+0#0000000&| |"+0#e000002&|b@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|b|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|c|"|,+0#0000000&| |"+0#e000002&|c@1|"|,+0#0000000&| |"+0#e000002&|c@2|"|,+0#0000000&| |"+0#e000002&|c@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|c|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|d|"|,+0#0000000&| |"+0#e000002&|d@1|"|,+0#0000000&| |"+0#e000002&|d@2|"|,+0#0000000&| |"+0#e000002&|d@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|d|s|"|,+0#0000000&| @15
+@28>}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|a|b|c|d|"|)+0#e000e06&| +0#0000000&@28
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|P|r|i|m|e|r| |{| |}| @50
+@75
+@4|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#0000000&@2| @44
+| +0#e000002&@3|n|\| +0#0000000&@68
+| +0#e000002&@3|o|\| +0#0000000&@68
+| +0#e000002&@3|O|\| +0#0000000&@68
+| +0#e000002&@3|p|"+0#0000000&@2|)+0#e000e06&| +0#0000000&@65
+@4|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|/+0#0000e05&|*|,| |k|i|n|d| |=| |"|n|a|m|e|"|*|/|)+0#e000e06&@1| +0#0000000&@14
+@4|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|M|e|t|h|o|d|"|,| +0#0000000&@43
+@8|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @35
+@8|r|e|d|u|n|d|a|n|t| |=| |!@2|(|1+0#e000002&| +0#0000000&|!|=| |1+0#e000002&|)+0#0000000&|,| @42
+@8|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @36
+@8|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@57|5@1|,|8|-|2|9| @6|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump
new file mode 100644
index 0000000..635080c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|n+0#00e0e07&|o|O|p|(|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#e000002&|d|u|m@1|y|"|)+0#e000e06&| +0#0000000&@22
+@8|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|/+0#0000e05&|*|v|a|l|u|e| |=| |"|@|L|a|b|e|l|"|,|*|/| +0#0000000&|k|i|n|d| |=| |"+0#e000002&|n|a|m|e|"|)+0#e000e06&@1| +0#0000000&@10
+@8|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|P|a|r|a|m|e|t|e|r|"|,| +0#0000000&@36
+@12|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @31
+@12>h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @32
+@12|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|)|{|"|,+0#0000000&| |"+0#e000002&|}|(|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@33
+@8|O|b|j|e|c|t| |d|u|m@1|y|)+0#00e0e07&| +0#0000000&@53
+@4|{| @69
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|3|,|4|-|1|3| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_comments_02.dump b/runtime/syntax/testdir/dumps/java_comments_02.dump
index 008a3e0..25babc7 100644
--- a/runtime/syntax/testdir/dumps/java_comments_02.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_02.dump
@@ -1,7 +1,7 @@
| +0#0000e05#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| +0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
@4|V|o|i|d| |n|o|O|p|4|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.|<+0#0000e05&|!|-@1| |-@1|>| +0#e000e06&|n|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@33
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.|<|!|-@1| |-@1|>| |n|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@33
| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| +0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
@4>V|o|i|d| |n|o|O|p|5|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
@75
diff --git a/runtime/syntax/testdir/dumps/java_comments_05.dump b/runtime/syntax/testdir/dumps/java_comments_05.dump
new file mode 100644
index 0000000..53c7850
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_comments_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |t+0#e000002&|o|S|t|r|i|n|g| +0#ffffff16#ff404010| +0#0000000#ffffff0@42
+@4|/+0#0000e05&@1| |@+0#0000000&|r|e|p|l|a|c|e| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|"@1|'| +0#0000e05&|r+0#00e0003&|e|p|l|a|c|e|m|e|n|t| +0#0000e05&|=| |"+0#e000002&|\|u|0@1|2@1|\|u|0@1|2@1|"| +0#0000000&@13
+@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|r+0#00e0003&|e|g|e|x| +0#0000e05&|=| |'+0#e000002&|\|b|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| |j+0#e000002&|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g| +0#0000e05&|t+0#00e0003&|y|p|e| +0#0000e05&|=| |l+0#e000002&|i|n|k|p|l|a|i|n| +0#0000e05&
+|:| +0#0000000&@73
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @21
+@4>/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@62
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|9|,|2|-|5| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_comments_99.dump b/runtime/syntax/testdir/dumps/java_comments_99.dump
deleted file mode 100644
index 1efc20e..0000000
--- a/runtime/syntax/testdir/dumps/java_comments_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#ffffff0@4|*| +0#0000000&@68
-| +0#0000e05&@4|*| |@+0#e000e06&|p|a|r|a|m| +0#00e0e07&|a|r|g|s| +0#0000e05&|o|p|t|i|o|n|a|l| |c+0&#ffd7d7255|o|m@1|a|n|d|e|-+0&#ffffff0|l|i|n|e| |a|r|g|u|m|e|n|t|s| +0#ffffff16#ff404010| +0#0000000#ffffff0@22
-| +0#0000e05&@4|*| |@|j+0&#ffd7d7255|l|s| +0&#ffffff0|1|2|.|1|.|4| |I|n|v|o|k|e| |{+0#e000e06&|@|c|o|d|e| |T|e|s|t|.|m|a|i|n|}| +0#0000e05&|*|/| +0#0000000&@28
-@4|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |m+0#e000002&|a|i|n| +0#ffffff16#ff404010@4| +0#0000000#ffffff0@42
-@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| |'+0#e000002&|j|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g|'| +0#0000e05&|:| +0#0000000&@11
-@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| |{| |}| @28
-@4|/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@62
-@75
-@4|/+0#0000e05&|*@1| |{+0#e000e06&|@|r|e|t|u|r|n| |a|n| |e|m|p|t|y| |s|t|r|i|n|g|}| +0#ffffff16#ff404010@2| +0#0000000#ffffff0@38
-| +0#0000e05&@4|*| +0#e000e06&|@|s|e@1| |<+0#00e0e07&|a+0#af5f00255&| +0#00e0e07&|h+0#00e0003&|r|e|f|=+0#00e0e07&|"+0#e000002&|h|t@1|p|s|:|/@1|d|o|c|s|.|o|r|a|c|l|e|.|c|o|m|/|j|a|v|a|s|e|/|s|p|e|c|s|/|j|l|s|/|s|e|2|1|/|h|t|m|l|/|j|l|s
-|-|3|.|h|t|m|l|#|j|l|s|-|3|.|1|0|.|5|"|>+0#00e0e07&|3+8#e000e06&|.|1|0|.|5| |S|t|r|i|n|g| |L|i|t|e|r|a|l|s|<+0#00e0e07&|/|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@28
-| +0#0000e05&@4|*| +0#e000e06&|@|s|e@1| |O+0#00e0e07&|b|j|e|c|t|#|t|o|S|t|r|i|n|g|(|)| +0#0000000&|*+0#e000e06&|/| +0#0000000&@42
-@4|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |t+0#e000002&|o|S|t|r|i|n|g| +0#ffffff16#ff404010| +0#0000000#ffffff0@42
-@4|/+0#0000e05&@1| |@+0#0000000&|r|e|p|l|a|c|e| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|"@1|'| +0#0000e05&|r+0#00e0003&|e|p|l|a|c|e|m|e|n|t| +0#0000e05&|=| |"+0#e000002&|\|u|0@1|2@1|\|u|0@1|2@1|"| +0#0000000&@13
-@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|r+0#00e0003&|e|g|e|x| +0#0000e05&|=| |'+0#e000002&|\|b|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| |j+0#e000002&|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g| +0#0000e05&|t+0#00e0003&|y|p|e| +0#0000e05&|=| |l+0#e000002&|i|n|k|p|l|a|i|n| +0#0000e05&
-|:| +0#0000000&@73
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @21
-@4|/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@62
->}| @73
-@57|9|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump b/runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump
deleted file mode 100644
index b429c81..0000000
--- a/runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|1| |p+0#00e0003&|e|r|m|i|t|s| +0#0000000&|C|1|,| |I|3| |{| |}| @32
-@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|2| |p+0#00e0003&|e|r|m|i|t|s| +0#0000000&|C|1|,| |I|3| |{| |}| @32
-@4|n+0#4040ff13&|o|n|-|s|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|3| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I|1|,| |I|2| |{| |}| @28
-@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|4| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I|3| |{| |}| @43
-@75
-@4|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|1| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|1|,| |I|2| |p+0#00e0003&|e|r|m|i|t|s| +0#0000000&|C|2|,| |C|3| |{| |}| @9
-@4|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|n+0#4040ff13&|o|n|-|s|e|a|l|e|d| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|1| |{| |}| @27
-@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|3| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|1| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|3| |{| |}| @27
-@4|c+0#00e0003&|l|a|s@1| +0#0000000&|C|4| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|2| |{| |}| @47
-@75
-@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|R|(|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|3| |{| |}| @42
-@4|e+0#00e0003&|n|u|m| +0#0000000&|E| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|3| |{| |I|N|S|T|A|N|C|E| |}| @37
-@75
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|1|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|v+0#af5f00255&|a|r| +0#0000000&|v+0#af5f00255&|a|r|)+0#0000000&| |-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @21
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|2|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|T| |v+0#af5f00255&|a|r|)+0#0000000&| |-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @23
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|3|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|v+0#af5f00255&|a|r|)+0#0000000&| |-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @25
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|4|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @27
-@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|<|T|>| |{| |T| |i|(|T| |i|)|;| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|I|<|T|>| |s|e|l|f|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|;+0#0000000&| |}| |}| @5
->}| @73
-@57|4|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_00.dump b/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
index 9596869..4cdbf95 100644
--- a/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
@@ -1,5 +1,5 @@
| +0#0000e05#a8a8a8255@1>/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|o|l|d|e|n|a|b|l|e| |f|o|l|d|c|o|l|u|m|n|=|2| |f|o|l|d|m|e|t|h|o|d|=|s|y|n|t|a|x| +0#0000000&@4
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|m|a|r|k|_|b|r|a|c|e|s|_|i|n|_|p|a|r|e|n|s|_|a|s|_|e|r@1|o|r|s| |=| |1| +0#0000000&@8
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|f|o|l|d|t|e|x|t|_|s|h|o|w|_|f|i|r|s|t|_|o|r|_|s|e|c|o|n|d|_|l|i|n|e| |=| |1| +0#0000000&@5
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|++0#0000e05#a8a8a8255| |+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
| @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52
@@ -8,13 +8,13 @@
| @1| +0#0000000#ffffff0@72
|++0#0000e05#a8a8a8255| |+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{|}|)|;| |}| @28
|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
+| @1|/+0&#ffffff0|*|\@2|*|/| +0#0000000&|{| @63
+|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+|+| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+| @1| +0#0000000#ffffff0@3|}| @67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_01.dump b/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
index f6feccc..074ea05 100644
--- a/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
@@ -1,20 +1,20 @@
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|o|l|d|e|n|a|b|l|e| |f|o|l|d|c|o|l|u|m|n|=|2| |f|o|l|d|m|e|t|h|o|d|=|s|y|n|t|a|x| +0#0000000&@4
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|m|a|r|k|_|b|r|a|c|e|s|_|i|n|_|p|a|r|e|n|s|_|a|s|_|e|r@1|o|r|s| |=| |1| +0#0000000&@8
+|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+|+| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+| @1| +0#0000000#ffffff0@3|}| @67
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
-| @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|F|o|l|d|e|n|a|b|l|e| @48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
-|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
+| @1| +0#0000000#ffffff0@3>v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-@57|1|9|,|1| @9|T|o|p|
+|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
+| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
+|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
+| @1|}+0#0000000#ffffff0| @71
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
+|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
+| @1|/+0&#ffffff0@1| +0#0000000&@70
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
+@57|7|0|,|2|-|5| @7|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_02.dump b/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
index bff7ffc..4df1e69 100644
--- a/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255| |+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
-| @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|F|o|l|d|e|n|a|b|l|e| @48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
-|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| +0#0000000#ffffff0@56|3|7|,|4|-|1| @7|1|4|%|
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |}| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|++0#0000e05#a8a8a8255| >+|-@1| @1|2| |l|i|n|e|s|:| |1|2@1|||.@54
+|~+0#4040ff13#ffffff0| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_03.dump b/runtime/syntax/testdir/dumps/java_enfoldment_03.dump
deleted file mode 100644
index 6e96876..0000000
--- a/runtime/syntax/testdir/dumps/java_enfoldment_03.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255| |+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
-|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| @1|}+0#0000000#ffffff0| @71
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
-|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
-| @1|/+0&#ffffff0@1| +0#0000000&@70
-@57|5@1|,|2|-|1| @7|8|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_04.dump b/runtime/syntax/testdir/dumps/java_enfoldment_04.dump
deleted file mode 100644
index 563a92f..0000000
--- a/runtime/syntax/testdir/dumps/java_enfoldment_04.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| @1|}+0#0000000#ffffff0| @71
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
-|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
-| @1|/+0&#ffffff0@1| +0#0000000&@70
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |}| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |1|2@1|||.@54
-|~+0#4040ff13#ffffff0| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|3|,|2|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_99.dump b/runtime/syntax/testdir/dumps/java_enfoldment_99.dump
deleted file mode 100644
index 771ae98..0000000
--- a/runtime/syntax/testdir/dumps/java_enfoldment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| @1|}+0#0000000#ffffff0| @71
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
-|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
-| @1|/+0&#ffffff0@1| +0#0000000&@70
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |}| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| @1|2| |l|i|n|e|s|:| |1|2@1|||.@54
-| +0#0000000#ffffff0@56|8|6|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_escapes_07.dump b/runtime/syntax/testdir/dumps/java_escapes_07.dump
new file mode 100644
index 0000000..15e168b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_escapes_99.dump b/runtime/syntax/testdir/dumps/java_escapes_99.dump
deleted file mode 100644
index 617317c..0000000
--- a/runtime/syntax/testdir/dumps/java_escapes_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|"+0#e000002&|\+0#e000e06&|2|0@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2@1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|3|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|4|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|5|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|6|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|7|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7@1|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|0@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|2|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3@1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|4|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|5|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|6|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|7|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7@1|"+0#e000002&|,+0#0000000&| @7
-@8|}|)|;| @63
-@4|}| @69
->}| @73
-@57|1|2|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_generics_00.dump b/runtime/syntax/testdir/dumps/java_generics_00.dump
new file mode 100644
index 0000000..0d7c4f9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|1| |T|o|d|o| +0#0000000&@29
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|2| |E|r@1|o|r| +0#0000000&@28
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|m|a|t|h|.|B|i|g|I|n|t|e|g|e|r|;| @46
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|L|o|n|g|F|u|n|c|t|i|o|n|;| @35
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|G+0#0000001#ffff4012|e|n|e|r|i|c|s|T|e|s|t|s|<|T+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r| |&| |C+0#ffffff16#ff404010|o|m|p|a|r|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|T|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |U|>+0#0000001#ffff4012| +0#0000000#ffffff0@10
+|{| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@59
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|T|e|s|t|s|.|y|0|(|)|;| @31
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @16
+@8|.|a|p@1|l|y|(|f+0#00e0e07&| |-|>| +0#0000000&|x+0#00e0e07&| |-|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12|?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_generics_01.dump b/runtime/syntax/testdir/dumps/java_generics_01.dump
new file mode 100644
index 0000000..b5650c7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|T|e|s|t|s|.|y|0|(|)|;| @31
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @16
+@8|.|a|p@1|l|y|(|f+0#00e0e07&| |-|>| +0#0000000&|x+0#00e0e07&| |-|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12>?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@12|:| |x|.|m|u|l|t|i|p|l|y|(|f|.|a|p@1|l|y|(|x|.|s|u|b|t|r|a|c|t|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)@3|;| @11
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|1|>| |Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|y|0|(|)| +0#0000000&@47
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|1|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|)| |-|>| +0#0000000&|f|.|a|p@1|l|y|(| @27
+@20|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|T|1|>|y|0|(|)| @32
+@24|.|a|p@1|l|y|(|f|)@1|;| @39
+@4|}| @69
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|1|,| |T|2|>| |Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|2|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|y|1|(|)| +0#0000000&@39
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|2|>+0#ffffff16#ff404010|,+0#00e0e07#ffffff0| |F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|)| |-|>| +0#0000000&@8
+@12|(+0#00e0e07&|T|1| |x|)| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @18
+@57|1|9|,|4|-|1|3| @6|1|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_02.dump b/runtime/syntax/testdir/dumps/java_generics_02.dump
new file mode 100644
index 0000000..af51ce3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|(+0#00e0e07&|T|1| |x|)| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @18
+@24|.|a|p@1|l|y|(|f|)@1| @40
+@16|.|a|p@1|l|y|(|x|)|;| @48
+@4|}| @69
+@75
+@4>s+0#00e0003&|t|a|t|i|c|<+0#0000000&|T|>| |v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|(|T| |d|u|m@1|y|)| |{| |}| @38
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|a|l|p|h|a|<|T|>| |{| |}| @48
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @11
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|,+0#0000000#ffffff0| @6
+@20|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| @36
+@20|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @33
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@28
+@4|{| @69
+| +0#00e0e07&@7|b+0#00e0003&|o@1|l|e|a|n| +0#00e0e07&|i|s|E|m|p|t|y|(|)|;+0#0000000&| @48
+| +0#00e0e07&@7|E| |p|e@1|k|(|)|;+0#0000000&| @57
+@57|3|7|,|2|-|5| @7|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_03.dump b/runtime/syntax/testdir/dumps/java_generics_03.dump
new file mode 100644
index 0000000..3e4f6c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_03.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@7|E| |p|e@1|k|(|)|;+0#0000000&| @57
+| +0#00e0e07&@7|E| |p|o|p|(|)|;+0#0000000&| @58
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|o|p|A|l@1|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|)|;+0#0000000&| @15
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|o|p|S|o|m|e|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|,| +0#0000000&@15
+| +0#00e0e07&@19|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|i|l|t|e|r|)|;+0#0000000&| @25
+| +0#00e0e07&@7>S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|u|s|h|(|E| |e|l|e|m|e|n|t|)|;+0#0000000&| @37
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|u|s|h|A|l@1|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|e+0#00e0003&|x|t|e|n|d|s| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|)|;+0#0000000&| @13
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|u|s|h|S|o|m|e|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|e+0#00e0003&|x|t|e|n|d|s| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|,| +0#0000000&@13
+| +0#00e0e07&@19|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|i|l|t|e|r|)|;+0#0000000&| @25
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|w|i|n|d|(|C+0#0000001#ffff4012|o|n|s|u|m|e|r|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|S+0#ffffff16#ff404010|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|a|c|t|i|o|n|)|;+0#0000000&| @9
+@4|}| @69
+@75
+@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0@32
+@4|{| @69
+| +0#00e0e07&@7|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)|;+0#0000000&| @54
+| +0#00e0e07&@7|N| |v|a|l|u|e|(|)|;+0#0000000&| @56
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@57|5@1|,|3|-|9| @7|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_04.dump b/runtime/syntax/testdir/dumps/java_generics_04.dump
new file mode 100644
index 0000000..2e02037
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@75
+@4>r+0#00e0003&|e|c|o|r|d| +0#0000000&|D+0#0000001#ffff4012|e|c|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|0|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|H+0#0000001#ffff4012|e|x|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|6|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|O+0#0000001#ffff4012|c|t|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|8+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@57|7|3|,|2|-|5| @7|5@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_05.dump b/runtime/syntax/testdir/dumps/java_generics_05.dump
new file mode 100644
index 0000000..70b814d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|r|o|m|D|e|c|i|m|a|l|(|l+0#00e0003&|o|n|g| +0#00e0e07&|x|,| |i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|)| +0#0000000&@23
+@4|{| @69
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
+@20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|H|e|x|S|t|r|i|n|g|)|;| @13
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
+@24|y+0#00e0e07&| |-|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
+@8|}|;| @64
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
+@4|}| @69
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|l+0#00e0003&|o|n|g| +0#00e0e07&|t|o|D|e|c|i|m|a|l|(|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|x|)| +0#0000000&@36
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@57|9|1|,|6|-|2|1| @6|7|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_06.dump b/runtime/syntax/testdir/dumps/java_generics_06.dump
new file mode 100644
index 0000000..de1c46c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|B+0#0000001#ffff4012|i|n|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |b|)| |-|>| |L|o|n|g|.|t|o|B|i|n|a|r|y|S|t|r|i|n|g|(|b|)|;| @16
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|O+0#0000001#ffff4012|c|t|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |o|)| |-|>| |L|o|n|g|.|t|o|O|c|t|a|l|S|t|r|i|n|g|(|o|)|;| @17
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|H+0#0000001#ffff4012|e|x|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |h|)| |-|>| |L|o|n|g|.|t|o|H|e|x|S|t|r|i|n|g|(|h|)|;| @19
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |L|o|n|g|.|t|o|S|t|r|i|n|g|(|x|.|v|a|l|u|e|(|)@1|;| @26
+@8>}|,| |x|.|r|a|d|i|x|(|)@1|;| @52
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(| +0#0000000&@41
+@16|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| @51
+@4|{| @69
+| +0#00e0e07&@7|S|t|r|i|n|g| |v|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@4|}| @69
+@75
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|N| |=| |0+0#e000002&|,+0#0000000&| |X| |=| |1+0#e000002&|,+0#0000000&| |Y| |=| |2+0#e000002&|;+0#0000000&| @42
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|f| |=| |y+0#00e0e07&|-|>|N+0#0000000&|<|y|.|i|n|t|V|a|l|u|e|(|)|;| @31
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y+0#00e0e07&|-|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@57|1|0|9|,|3|-|9| @6|8|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_07.dump b/runtime/syntax/testdir/dumps/java_generics_07.dump
new file mode 100644
index 0000000..fffbf04
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y+0#00e0e07&|-|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@8|b+0#00e0003&|o@1|l|e|a|n|[+0#0000000&|]| |b@1| |=| |{| @50
+@12|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0||@1|N|>+0#0000001#ffff4012|Y+0#0000000#ffffff0|,| |X| |<| |Y|,| |X| |<|Y|,| |X| |<|(|Y|)|,| |X|<|(|Y|)|,| |(|X|)|<|Y|,| @18
+@12|D|o|u|b|l|e|.|i|s|F|i|n|i|t|e|(|X|<@1|Y|)|,| @40
+@12|X|<|=|Y|,| |X|<|(|i+0#00e0003&|n|t|)+0#0000000&|(|b+0#00e0003&|y|t|e|)+0#0000000&|Y|,| |X|<|~|Y|,| |X|<|-|Y|,| |X|<|+|Y|,| @23
+@8>}|;| @64
+@8|C+0#0000001#ffff4012|l|a|s@1|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|k|l|a|s@1| |=| |G|e|n|e|r|i|c|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @29
+@8|C+0#0000001#ffff4012|l|a|s@1|<| +0#0000000#ffffff0|j+0#ffffff16#ff404010|a|v|a|.|l|a|n|g|.|C|l|a|s@1|<|@+0#e000e06#ffffff0|T|a|g@1|a|b|l|e|(|"+0#e000002&|<|>|"|)+0#e000e06&|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|>+0#ffffff16#ff404010| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@12
+@8|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|$| |[| |]| |[| |]|;| @48
+@8|i+0#af5f00255&|f| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&| |{| |n+0#af5f00255&|e|w| +0#0000000&|G|e|n|e|r|i|c|s|T|e|s|t|s|<|>|(|)|;| |}| @29
+@8|a|l|p|h|a|<|?|>| |a|o|;| @54
+@8|a|l|p|h|a|<|U|>| |a|u|;| @54
+@8|a|l|p|h|a|<|a|l|p|h|a|<|U|>@1| |a@1|u|;| @46
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|o|;| @48
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|U+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|u|;| @48
+@8|Y|0|<|a|l|p|h|a|<|?|>@1| |y|0|a|o|;| @48
+@8|Y|0|<|a|l|p|h|a|<|U|>@1| |y|0|a|u|;| @48
+@4|}| @69
+|}| @73
+@57|1|2|7|,|3|-|9| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_00.dump b/runtime/syntax/testdir/dumps/java_generics_signature_00.dump
new file mode 100644
index 0000000..0b09f31
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|1| |T|o|d|o| +0#0000000&@29
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|2| |E|r@1|o|r| +0#0000000&@28
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|m|a|t|h|.|B|i|g|I|n|t|e|g|e|r|;| @46
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|L|o|n|g|F|u|n|c|t|i|o|n|;| @35
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|G+0#0000001#ffff4012|e|n|e|r|i|c|s|$|T|e|s|t|s|<|T+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r| |&| |C+0#ffffff16#ff404010|o|m|p|a|r|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|T|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |U|>+0#0000001#ffff4012| +0#0000000#ffffff0@9
+|{| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@59
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|y|0|(|)|;| @30
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @15
+@8|.|a|p@1|l|y|(|f| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12|?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_01.dump b/runtime/syntax/testdir/dumps/java_generics_signature_01.dump
new file mode 100644
index 0000000..f6c885e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|y|0|(|)|;| @30
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @15
+@8|.|a|p@1|l|y|(|f| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12>?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@12|:| |x|.|m|u|l|t|i|p|l|y|(|f|.|a|p@1|l|y|(|x|.|s|u|b|t|r|a|c|t|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)@3|;| @11
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|1|>| |Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|y+0#00e0e07&|0|(|)| +0#0000000&@47
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(| @27
+@20|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|>|y|0|(|)| @31
+@24|.|a|p@1|l|y|(|f|)@1|;| @39
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|1|,| |T|2|>| |Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|y+0#00e0e07&|1|(|)| +0#0000000&@39
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|)+0#00e0e07&| |-|>| +0#0000000&@8
+@12|(+0#00e0e07&|T+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @17
+@57|1|9|,|4|-|1|3| @6|1|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_02.dump b/runtime/syntax/testdir/dumps/java_generics_signature_02.dump
new file mode 100644
index 0000000..bfa32c1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|(+0#00e0e07&|T+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @17
+@24|.|a|p@1|l|y|(|f|)@1| @40
+@16|.|a|p@1|l|y|(|x|)|;| @48
+@4|}| @69
+@75
+@4>s+0#00e0003&|t|a|t|i|c|<+0#0000000&|T|>| |v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|(|T| |d|u|m@1|y|)| |{| |}| @38
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|a|l|p|h|a|<|T|>| |{| |}| @48
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @11
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|,+0#0000000#ffffff0| @6
+@20|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| @36
+@20|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @33
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@28
+@4|{| @69
+@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|i+0#00e0e07&|s|E|m|p|t|y|(|)|;+0#0000000&| @48
+@8|E| |p+0#00e0e07&|e@1|k|(|)|;+0#0000000&| @57
+@57|3|7|,|2|-|5| @7|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_03.dump b/runtime/syntax/testdir/dumps/java_generics_signature_03.dump
new file mode 100644
index 0000000..4ddd510
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|E| |p+0#00e0e07&|e@1|k|(|)|;+0#0000000&| @57
+@8|E| |p+0#00e0e07&|o|p|(|)|;+0#0000000&| @58
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|o|p|A|l@1|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|)+0#00e0e07&|;+0#0000000&| @15
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|o|p|S|o|m|e|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|,| @15
+@20|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|i|l|t|e|r|)+0#00e0e07&|;+0#0000000&| @25
+@8>S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|(|E+0#0000000&| |e|l|e|m|e|n|t|)+0#00e0e07&|;+0#0000000&| @37
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|A|l@1|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|)+0#00e0e07&|;+0#0000000&| @13
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|S|o|m|e|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|,| @13
+@20|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|i|l|t|e|r|)+0#00e0e07&|;+0#0000000&| @25
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|w+0#00e0e07&|i|n|d|(|C+0#0000001#ffff4012|o|n|s|u|m|e|r|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|S+0#ffffff16#ff404010|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|c|t|i|o|n|)+0#00e0e07&|;+0#0000000&| @9
+@4|}| @69
+@75
+@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0@32
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)|;+0#0000000&| @54
+@8|N| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @56
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@57|5@1|,|3|-|9| @7|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_04.dump b/runtime/syntax/testdir/dumps/java_generics_signature_04.dump
new file mode 100644
index 0000000..81606f1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@75
+@4>r+0#00e0003&|e|c|o|r|d| +0#0000000&|D+0#0000001#ffff4012|e|c|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|0|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|H+0#0000001#ffff4012|e|x|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|6|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|O+0#0000001#ffff4012|c|t|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|8+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@57|7|3|,|2|-|5| @7|5@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_05.dump b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
new file mode 100644
index 0000000..8c0fe84
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|f+0#00e0e07&|r|o|m|D|e|c|i|m|a|l|(|l+0#00e0003&|o|n|g| +0#0000000&|x|,| |i+0#00e0003&|n|t| +0#0000000&|r|a|d|i|x|)+0#00e0e07&| +0#0000000&@23
+@4|{| @69
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
+@20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|H|e|x|S|t|r|i|n|g|)|;| @13
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
+@24|y| |-+0#00e0e07&|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
+@8|}|;| @64
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|l+0#00e0003&|o|n|g| +0#0000000&|t+0#00e0e07&|o|D|e|c|i|m|a|l|(|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|x|)+0#00e0e07&| +0#0000000&@36
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@57|9|1|,|6|-|2|1| @6|7|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_06.dump b/runtime/syntax/testdir/dumps/java_generics_signature_06.dump
new file mode 100644
index 0000000..c98bd54
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|B+0#0000001#ffff4012|i|n|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |b|)| |-|>| |L|o|n|g|.|t|o|B|i|n|a|r|y|S|t|r|i|n|g|(|b|)|;| @16
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|O+0#0000001#ffff4012|c|t|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |o|)| |-|>| |L|o|n|g|.|t|o|O|c|t|a|l|S|t|r|i|n|g|(|o|)|;| @17
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|H+0#0000001#ffff4012|e|x|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |h|)| |-|>| |L|o|n|g|.|t|o|H|e|x|S|t|r|i|n|g|(|h|)|;| @19
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |L|o|n|g|.|t|o|S|t|r|i|n|g|(|x|.|v|a|l|u|e|(|)@1|;| @26
+@8>}|,| |x|.|r|a|d|i|x|(|)@1|;| @52
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(| +0#0000000&@41
+@16|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| @51
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@4|}| @69
+@75
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|N| |=| |0+0#e000002&|,+0#0000000&| |X| |=| |1+0#e000002&|,+0#0000000&| |Y| |=| |2+0#e000002&|;+0#0000000&| @42
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|f| |=| |y|-+0#00e0e07&|>|N+0#0000000&|<|y|.|i|n|t|V|a|l|u|e|(|)|;| @31
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@57|1|0|9|,|3|-|9| @6|8|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_07.dump b/runtime/syntax/testdir/dumps/java_generics_signature_07.dump
new file mode 100644
index 0000000..fe72261
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@8|b+0#00e0003&|o@1|l|e|a|n|[+0#0000000&|]| |b@1| |=| |{| @50
+@12|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0||@1|N|>+0#0000001#ffff4012|Y+0#0000000#ffffff0|,| |X| |<| |Y|,| |X| |<|Y|,| |X| |<|(|Y|)|,| |X|<|(|Y|)|,| |(|X|)|<|Y|,| @18
+@12|D|o|u|b|l|e|.|i|s|F|i|n|i|t|e|(|X|<@1|Y|)|,| @40
+@12|X|<|=|Y|,| |X|<|(|i+0#00e0003&|n|t|)+0#0000000&|(|b+0#00e0003&|y|t|e|)+0#0000000&|Y|,| |X|<|~|Y|,| |X|<|-|Y|,| |X|<|+|Y|,| @23
+@8>}|;| @64
+@8|C+0#0000001#ffff4012|l|a|s@1|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|k|l|a|s@1| |=| |G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @28
+@8|C+0#0000001#ffff4012|l|a|s@1|<| +0#0000000#ffffff0|j+0#ffffff16#ff404010|a|v|a|.|l|a|n|g|.|C|l|a|s@1|<|@+0#e000e06#ffffff0|T|a|g@1|a|b|l|e|(|"+0#e000002&|<|>|"|)+0#e000e06&|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|>+0#ffffff16#ff404010| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@12
+@8|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|$| |[| |]| |[| |]|;| @48
+@8|i+0#af5f00255&|f| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&| |{| |n+0#af5f00255&|e|w| +0#0000000&|G|e|n|e|r|i|c|s|$|T|e|s|t|s|<|>|(|)|;| |}| @28
+@8|a|l|p|h|a|<|?|>| |a|o|;| @54
+@8|a|l|p|h|a|<|U|>| |a|u|;| @54
+@8|a|l|p|h|a|<|a|l|p|h|a|<|U|>@1| |a@1|u|;| @46
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|o|;| @48
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|U+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|u|;| @48
+@8|Y|0|<|a|l|p|h|a|<|?|>@1| |y|0|a|o|;| @48
+@8|Y|0|<|a|l|p|h|a|<|U|>@1| |y|0|a|u|;| @48
+@4|}| @69
+|}| @73
+@57|1|2|7|,|3|-|9| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
index 7749ef2..5d11fe3 100644
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
@@ -15,6 +15,6 @@
@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
+@8|}| @65
@75
@57|1|2|7|,|3|-|9| @6|8|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump
new file mode 100644
index 0000000..0ff4f9e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|n|a|r|y|O|p|e|r|a|t|o|r|;| @33
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|L|a|m|b|d|a|E|x|p|r|e|s@1|i|o|n|s|$|T|e|s|t|s| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@31
+|{| @73
+@4|<|I|1|,| |C|1|,| |C|2|,| |T|1|,| |T|2|,| |T|3|,| |Z|1|,| |Z|2|,| |Z|3|,| |S|1|,| |S|2|,| |S|3|>| |v+0#00e0003&|o|i|d| +0#0000000&|t+0#00e0e07&|e|s|t|(|)| +0#0000000&@10
+@4|{| @2|/+0#0000e05&@1| |S|c|h|ö|n|f|i|n|k|e|l|'|s| |f|u|n|c|t|i|o|n|s|.| +0#0000000&@39
+@8|I|<|I|1|>| |i| |=| |x| |-+0#00e0e07&|>| +0#0000000&|x|;| @49
+@8|C|<|C|1|,| |C|2|>| |c| |=| |x| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x|;| @40
+@8|T|<|T|1|,| |T|2|,| |T|3|>| |t| |=| |f| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)|.|a|p@1|l|y|(|y|)|;| @13
+@8|Z|<|Z|1|,| |Z|2|,| |Z|3|>| |z| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @13
+@8|S|<|S|1|,| |S|2|,| |S|3|>| |s| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)| @23
+@24|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @31
+@75
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump
new file mode 100644
index 0000000..b5bdac9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|C|<|C|1|,| |C|2|>| |c| |=| |x| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x|;| @40
+@8|T|<|T|1|,| |T|2|,| |T|3|>| |t| |=| |f| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)|.|a|p@1|l|y|(|y|)|;| @13
+@8|Z|<|Z|1|,| |Z|2|,| |Z|3|>| |z| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @13
+@8|S|<|S|1|,| |S|2|,| |S|3|>| |s| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)| @23
+@24|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @31
+> @74
+@8|I|<|I|1|>| |i|0|1| |=| |(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @41
+@8|I|<|I|1|>| |i|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @31
+@8|I|<|I|1|>| |i|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@8|I|<|I|1|>| |i|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @35
+@8|I|<|I|1|>| |i|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @25
+@8|I|<|I|1|>| |i|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @15
+@8|I|<|I|1|>| |i|0|7| |=| |(+0#00e0e07&|I+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @42
+@8|I|<|I|1|>| |i|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @32
+@8|I|<|I|1|>| |i|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @22
+@8|I|<|I|1|>| |i|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|>| |i|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|>| |i|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @16
+@75
+@57|1|9|,|0|-|1| @8|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump
new file mode 100644
index 0000000..a597c2f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|I|<|I|1|[|]|>| |i@1|0|1| |=| |(+0#00e0e07&|I+0#0000000&|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|[|]|>| |i@1|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|[|]|>| |i@1|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @16
+@8|I|<|I|1|[|]|>| |i@1|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @30
+@8>I|<|I|1|[|]|>| |i@1|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @20
+@8|I|<|I|1|[|]|>| |i@1|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @10
+@75
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|1| |=| |(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|,| |v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @13
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @16
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @32
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&@9
+@20|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @19
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @20
+@20|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+@20|v+0#af5f00255&|a|r| +0#0000000&|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @19
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@23
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @32
+@57|3|7|,|3|-|9| @7|2@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump
new file mode 100644
index 0000000..d3750b0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @32
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|7| |=| |(+0#00e0e07&|I+0#0000000&|1| |x|,| |I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @15
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|,| @17
+@20>@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @33
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| @10
+@20|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @20
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|,| @21
+@20|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @37
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+@20|I|1| |x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@23
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|,| @33
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @27
+@75
+@8|R|u|n@1|a|b|l|e| |n|o|O|p| |=| |(+0#00e0e07&|)| |-|>| +0#0000000&|{|}|;| @41
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t| |=| |(+0#00e0e07&|x+0#0000000&|,| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @23
+@57|5@1|,|6|-|2|1| @6|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump
new file mode 100644
index 0000000..c027118
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t| |=| |(+0#00e0e07&|x+0#0000000&|,| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @23
+@8|I|<|I|1|>| |i|d|1| |=| |(+0#00e0e07&|x+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(|x|)|;| @43
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|u|n|c|h|e|c|k|e|d|"|)+0#e000e06&| +0#0000000&|I|<|I|1|>| |i|d|2| |=| @24
+@16|(@1|I|<|I|<|I|1|>@1|)| |(|I|<|?|>|)| |(|F|u|n|c|t|i|o|n|<|I|1|,| @26
+@20|I|1|>| |x|)| |-|>| |x|)|.|a|p@1|l|y|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|0+0#e000002&|)+0#0000000&| |{| @23
+@16>c+0#af5f00255&|a|s|e| +0#0000000&|(@1|i+0#00e0003&|n|t|)+0#0000000&| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(+0#00e0e07&|I+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@16|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| |}|)|;| @21
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|1| |=| |(+0#00e0e07&|x+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(+0#00e0e07&|y+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(|x|)|;| @29
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|2| |=| |s+0#af5f00255&|w|i|t|c|h|(+0#0000000&|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|"+0#e000002&@1|)+0#0000000&| |{| @27
+@24|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|-|>|"|-+0#0000000&|>|"+0#e000002&|(|s|)|-|>|(|s|)|"|;+0#0000000&| @28
+@24|d+0#af5f00255&|e|f|a|u|l|t|-+0#0000000&|>|"+0#e000002&|d|e|f|a|u|l|t|"|;+0#0000000&| |}|)| |{| @26
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|(|"+0#e000002&|-|>|"|)+0#0000000&|-|>|(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&|-|>|(|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&|-|>|(+0#0000000&|x|)|;| @27
+@12|d+0#af5f00255&|e|f|a|u|l|t|-+0#0000000&|>|(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&|-|>|(|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| +0#0000000&@17
+| +0#00e0e07&@15|-|>|(+0#0000000&|x|)|;| @52
+@8|}|;| @64
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|)+0#e000e06&| +0#0000000&@19
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|a|g@1|a|b|l|e|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@57|7|3|,|5|-|1|7| @6|4|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump
new file mode 100644
index 0000000..98ab331
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|a|g@1|a|b|l|e|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| |{| |S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @18
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|)+0#e000e06&| +0#0000000&@19
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e|s| |{| |T|a|g@1|a|b|l|e|[|]| |v|a|l|u|e|(|)|;| |}| @26
+> @74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|<|A|1|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|A|1|,| |A|1|>| |{| |}| @26
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|C|<|A|1|,| |A|2|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|1|>@1| |{| |}| @8
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|T|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&@39
+@16|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>@1|,| @18
+@20|F|u|n|c|t|i|o|n|<|A|2|,| @42
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Z|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>|,| @12
+@20|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |A|2|>|,| @28
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&@39
+@16|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>@1|,| @18
+@20|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |A|2|>|,| @28
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@57|9|1|,|0|-|1| @7|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump
new file mode 100644
index 0000000..5d936ef
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e+0#00e0e07&|c|h|o|(|O+0#0000000&|b|j|e|c|t| |o|)+0#00e0e07&| +0#0000000&|{| |S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|o|)|;| |}| @17
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
+@75
+@8|L|e|t@1|e|r|s| |o|t|h|e|r| |=| |L|e|t@1|e|r|s|.|O|T|H|E|R|;| @36
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|t|h|e|r|)| |{| @50
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a|:| @19
+@24|{| |e|c|h|o|(|a|l|p|h|a|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |b|e|t|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|B|E|T|A| |=@1| |b|e|t|a|:| @22
+@24|{| |e|c|h|o|(|b|e|t|a|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
+@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @11|{| |e|c|h|o|(|o|t|h|e|r|)|;| |}| @30
+@8|}| @65
+@75
+@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|t|h|e|r|)| |{| @45
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a| @16
+@57|1|0|9|,|3|-|9| @6|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
new file mode 100644
index 0000000..0658867
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a| @16
+@24|-|>| |a|l|p|h|a|;| @41
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |b|e|t|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|B|E|T|A| |=@1| |b|e|t|a| @19
+@24|-|>| |b|e|t|a|;| @42
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |o|t|h|e|r|;| @37
+@8>}|)|;| @63
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @51
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @13
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@41
+@20|P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
+@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
+@24|.|t|e|s|t|(|s|t|r|_|)| @39
+@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
+@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
+@8|}| @65
+@75
+@57|1|2|7|,|3|-|9| @6|8|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump
index 2a1fe2a..9c40830 100644
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump
@@ -1,13 +1,9 @@
-| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
-@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
-@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
-@75
+| +0&#ffffff0@74
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @46
@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(| @23
@28|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @32
@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@37
-@20|P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t+0#00e0e07&|e|x|t| |-|>| +0#0000000&@25
+@20>P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
@24|.|t|e|s|t|(|s|t|r|_|)| @39
@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
@@ -16,5 +12,9 @@
@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
@8|}|)|;| @63
@4|}| @69
->}| @73
-@57|1|5|4|,|1| @8|B|o|t|
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4|5|,|6|-|2|1| @5|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_00.dump b/runtime/syntax/testdir/dumps/java_method_references_00.dump
new file mode 100644
index 0000000..72ea3ca
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_01.dump b/runtime/syntax/testdir/dumps/java_method_references_01.dump
new file mode 100644
index 0000000..a1c0395
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| |n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| @25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| |0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|2| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|3| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|4| |=| |"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|5| |=| |i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;| @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| |:+0#00e0e07&@1| +0#0000000&@13
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_02.dump b/runtime/syntax/testdir/dumps/java_method_references_02.dump
new file mode 100644
index 0000000..790c0e2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;| @15
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| +0#0000000&@13
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| +0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|9| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s|a| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| |(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_03.dump b/runtime/syntax/testdir/dumps/java_method_references_03.dump
new file mode 100644
index 0000000..0a3d817
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| |I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s+0#00e0e07&| |-|>| +0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| |S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|2| |=| |i+0#00e0e07&@1| |-|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| |0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| @24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| @22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|t|i|f|1| |=| |s+0#00e0e07&| |-|>| +0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| +0#0000000&|f|3| |=| |C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| +0#0000000&|f|4| |=| |p+0#00e0e07&|c|i| |-|>| +0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| |/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| |C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| |C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&| +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_04.dump b/runtime/syntax/testdir/dumps/java_method_references_04.dump
new file mode 100644
index 0000000..25211f0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| |=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| @43
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @12
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @13
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_05.dump b/runtime/syntax/testdir/dumps/java_method_references_05.dump
new file mode 100644
index 0000000..3ebf3fb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,| @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@57|9|1|,|2|-|5| @7|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_06.dump b/runtime/syntax/testdir/dumps/java_method_references_06.dump
new file mode 100644
index 0000000..f1bd812
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m+0#00e0e07&|h| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @19
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |e|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t+0#00e0e07&|h|a|t| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| +0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| +0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_07.dump b/runtime/syntax/testdir/dumps/java_method_references_07.dump
new file mode 100644
index 0000000..6f5549e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| +0#00e0e07&|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| |T| |o|)| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| |m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| |E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_08.dump b/runtime/syntax/testdir/dumps/java_method_references_08.dump
new file mode 100644
index 0000000..537c5d5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| |j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| @14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(| @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| @32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| |{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_09.dump b/runtime/syntax/testdir/dumps/java_method_references_09.dump
new file mode 100644
index 0000000..d5110b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| @55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| @3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_10.dump b/runtime/syntax/testdir/dumps/java_method_references_10.dump
new file mode 100644
index 0000000..19280b0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @29
+@12|}| @61
+@8|}| @65
+@75
+| +0#00e0e07&@7>s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T| |e|x|t|e|n|d|s| |O|b|j|e|c|t|>| |F|u|n|c|t|i|o|n|<|T+0#0000000&|,+0#00e0e07&| |S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| |s|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| |"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
new file mode 100644
index 0000000..029e661
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
new file mode 100644
index 0000000..13d64f5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| |n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| @25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| |0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|2| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|3| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|4| |=| |"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|5| |=| |i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;| @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| |:+0#00e0e07&@1| +0#0000000&@12
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
new file mode 100644
index 0000000..a223c38
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;| @14
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| +0#0000000&@12
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| +0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|9| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s|a| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| |(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
new file mode 100644
index 0000000..85ea29b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| |I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s| |-+0#00e0e07&|>| +0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| |S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|2| |=| |i@1| |-+0#00e0e07&|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| |0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| @24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| @22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|t|i|f|1| |=| |s| |-+0#00e0e07&|>| +0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| +0#0000000&|f|3| |=| |C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| +0#0000000&|f|4| |=| |p|c|i| |-+0#00e0e07&|>| +0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| |/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| |C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| |C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&| +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
new file mode 100644
index 0000000..5215cb2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| |=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| @42
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @11
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @12
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
new file mode 100644
index 0000000..e508788
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,| @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@57|9|1|,|2|-|5| @7|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
new file mode 100644
index 0000000..a5234ec
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m|h| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @18
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0e07&|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t|h|a|t| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| +0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| +0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
new file mode 100644
index 0000000..535f972
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|i+0#00e0e07&|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| |T| |o|)+0#00e0e07&| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| |m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| |E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
new file mode 100644
index 0000000..537c5d5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| |j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| @14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(| @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| @32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| |{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
new file mode 100644
index 0000000..d5110b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| @55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| @3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
new file mode 100644
index 0000000..7bc18d8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @29
+@12|}| @61
+@8|}| @65
+@75
+@8>s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|O|b|j|e|c|t|>| |F+0#00e0e07&|u|n|c|t|i|o|n|<|T+0#0000000&|,| |S|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| |"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
index 950d878..12d33b0 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
@@ -17,4 +17,4 @@
@4|T|É|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @51
@2|}| @71
@75
-@57|1|9|,|0|-|1| @7|1|7|%|
+@57|1|9|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
index 48d31d1..82d03c6 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
@@ -13,8 +13,8 @@
@2|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@56
@2|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @17
@2|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @10
-@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @10
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @10
@75
@2|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@61
| +0#00e0e07&@1|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
-@57|3|7|,|3| @9|4|2|%|
+@57|3|7|,|3| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
index f388cd9..7858be6 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
@@ -17,4 +17,4 @@
@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
| +0#00e0e07&@1|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@11
@2|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
-@57|5@1|,|3| @9|6|7|%|
+@57|5@1|,|3| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
index 0d9fa98..347fafa 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
@@ -17,4 +17,4 @@
|e+0#00e0003&|n|u|m| +0#0000000&|E|2| @67
|{| @73
@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
-@57|7|3|,|3| @9|9|1|%|
+@57|7|3|,|3| @9|7|8|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump
new file mode 100644
index 0000000..9981776
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @36
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @26
+@75
+| +0#00e0e07&@1|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+|}| @73
+@57|9|1|,|5| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_05.vim
index 1509558..1509558 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_99.vim
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_05.vim
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
deleted file mode 100644
index 204e85a..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
-@2|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @32
-@2|}| @71
-@75
-| +0#00e0e07&@1|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}|
-@75
-@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@37
-| +0#00e0e07&@1|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @5
-|}| @73
-@75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|2| @67
-|{| @73
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
-@2|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @65
-@2|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @57
-@2|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @41
-@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
-@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @36
->}| @73
-@57|9|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump
new file mode 100644
index 0000000..53772c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|2|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@2|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@63
+@2|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @51
+@75
+@2|e+0#00e0003&|n|u|m| +0#0000000&|E| @66
+@2|{| @71
+@4|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @39
+@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|}| @71
+@75
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim
index 1509558..1509558 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_99.vim
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump
new file mode 100644
index 0000000..12d33b0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @39
+@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|}| @71
+> @74
+@2|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@18
+@2|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|É|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@23
+@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ| @53
+@2|{| @71
+@4|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @42
+@2|}| @71
+@75
+@2|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@18
+@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ|s| @52
+@2|{| @71
+@4|T|É|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @51
+@2|}| @71
+@75
+@57|1|9|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim
index 1509558..1509558 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_99.vim
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump
new file mode 100644
index 0000000..9cbda27
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @51
+@2|{| @71
+@4|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @43
+@4|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @35
+@2>}| @71
+@75
+@2|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@62
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @17
+@75
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @23
+@75
+@2|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@56
+@2|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @16
+@2|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @9
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @9
+@75
+@2|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@61
+@2|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
+@57|3|7|,|3| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim
index 1509558..1509558 100644
--- a/runtime/syntax/testdir/dumps/java_methods_style_99.vim
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump
new file mode 100644
index 0000000..33d0921
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@2|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|Ê­@1|$|0|_|(| +0#0000000&@23
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@2>@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @15
+@2|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|Ê­@1|$|1|_|(| +0#0000000&@25
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@2|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @53
+@2|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @25
+@75
+@2|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @22
+@2|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@14
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
+@2|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@11
+@2|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
+@57|5@1|,|3| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim
index 546837c..1509558 100644
--- a/runtime/syntax/testdir/dumps/vim_keymap_99.vim
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim
@@ -1,2 +1,2 @@
" Replace known non-Latin-1 characters.
-%s+[“�]+?+ge
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump
new file mode 100644
index 0000000..2f2b6c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
+@75
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
+@2|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@4
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@2>{| @71
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
+@2|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@2|}| @71
+@75
+@2|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@37
+@2|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|2|$| @66
+|{| @73
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@57|7|3|,|3| @9|7|8|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump
new file mode 100644
index 0000000..08ab720
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @25
+@75
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+|}| @73
+@57|9|1|,|5| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
index 0f154c5..aea76e5 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
@@ -17,4 +17,4 @@
@8|T|É|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @47
@4|}| @69
@75
-@57|1|9|,|0|-|1| @7|1|7|%|
+@57|1|9|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
index ed7c8fb..55410d0 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
@@ -13,8 +13,8 @@
@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @15
@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @8
-@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @8
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @8
@75
@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
| +0#00e0e07&@3|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
-@57|3|7|,|5| @9|4|2|%|
+@57|3|7|,|5| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
index bed45d9..dae4f3c 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
@@ -17,4 +17,4 @@
@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
| +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
-@57|5@1|,|5| @9|6|7|%|
+@57|5@1|,|5| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
index 9eabb63..a3dd3e6 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
@@ -17,4 +17,4 @@
@75
|e+0#00e0003&|n|u|m| +0#0000000&|E|4| @67
|{| @73
-@57|7|3|,|5| @9|9|0|%|
+@57|7|3|,|5| @9|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump
new file mode 100644
index 0000000..6bf8562
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump
@@ -0,0 +1,20 @@
+|{+0&#ffffff0| @73
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+> @74
+@8|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @34
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @24
+@75
+| +0#00e0e07&@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+@57|9|0|,|0|-|1| @7|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_06.dump
new file mode 100644
index 0000000..6dfa528
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_06.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
deleted file mode 100644
index 28fa0bc..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @30
-@4|}| @69
-@75
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&|
-|}| @73
-@75
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @3
-|}| @73
-@75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|4| @67
-|{| @73
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
-@4|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @63
-@4|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @55
-@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
-@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
-@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @34
->}| @73
-@57|9|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump
new file mode 100644
index 0000000..04337ff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|4|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@4|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@61
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @49
+@75
+@4|e+0#00e0003&|n|u|m| +0#0000000&|E| @64
+@4|{| @69
+@8|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+@75
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump
new file mode 100644
index 0000000..aea76e5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+> @74
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|É|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ| @51
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @38
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ|s| @50
+@4|{| @69
+@8|T|É|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @47
+@4|}| @69
+@75
+@57|1|9|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump
new file mode 100644
index 0000000..3473b60
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @49
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @39
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @31
+@4>}| @69
+@75
+@4|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@60
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @15
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @21
+@75
+@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @14
+@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @7
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @7
+@75
+@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@57|3|7|,|5| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump
new file mode 100644
index 0000000..e4ba873
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|Ê­@1|$|0|_|(| +0#0000000&@21
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@4>@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|Ê­@1|$|1|_|(| +0#0000000&@23
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@4|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @51
+@4|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @23
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@12
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@57|5@1|,|5| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump
new file mode 100644
index 0000000..2d3c811
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@4>{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @29
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&
+| |}| @72
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @2
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|4|$| @66
+|{| @73
+@57|7|3|,|5| @9|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump
new file mode 100644
index 0000000..5ce63c7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump
@@ -0,0 +1,20 @@
+|{+0&#ffffff0| @73
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+> @74
+@8|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @33
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @23
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+@57|9|0|,|0|-|1| @7|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump
new file mode 100644
index 0000000..e4569ea
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
index 269034b..9c6b06f 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
@@ -17,4 +17,4 @@
@16|T|É|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @39
@8|}| @65
@75
-@57|1|9|,|0|-|1| @7|1|7|%|
+@57|1|9|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
index e5c7acc..9555abb 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
@@ -13,8 +13,8 @@
@8|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@50
@8|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @11
@8|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @4
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @4
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @4
@75
@8|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@55
| +0#00e0e07&@7|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
-@57|3|7|,|9| @9|4|2|%|
+@57|3|7|,|9| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
index e80c44d..a163e39 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
@@ -17,4 +17,4 @@
@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
| +0#00e0e07&@7|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@5
@8|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
-@57|5@1|,|9| @9|6|7|%|
+@57|5@1|,|9| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
index 8ec6396..29667a0 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@7|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@75
@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
| +0#00e0e07&@7|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_
|(| +0#0000000&@73
-| +0#00e0e07&@23|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| +0#0000000&@6
-@8>{| @65
+| +0#00e0e07&@23>j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| +0#0000000&@6
+@8|{| @65
@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@52
@8|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @26
@8|}| @65
@@ -16,5 +17,4 @@
@1| @73
@75
|e+0#00e0003&|n|u|m| +0#0000000&|E|8| @67
-|{| @73
-@57|7|3|,|9| @9|9|0|%|
+@57|7|2|,|2|5| @8|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump
new file mode 100644
index 0000000..468f1d0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump
@@ -0,0 +1,20 @@
+|e+0#00e0003#ffffff0|n|u|m| +0#0000000&|E|8| @67
+|{| @73
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7>C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @30
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @20
+@75
+@57|8|9|,|9| @9|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_06.dump
new file mode 100644
index 0000000..0361794
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+| +0#00e0e07&@7|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
deleted file mode 100644
index d20fbe1..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @26
-@8|}| @65
-@75
-| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a
-|s@1|;+0#0000000&| |}| @69
-@75
-@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@31
-| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}
-@1| @73
-@75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|8| @67
-|{| @73
-@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
-@8|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @59
-@8|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @51
-@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
-@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @30
->}| @73
-@57|9|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump
new file mode 100644
index 0000000..95cd3e2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|8|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@8|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@57
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @45
+@75
+@8|e+0#00e0003&|n|u|m| +0#0000000&|E| @60
+@8|{| @65
+@16|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @27
+@16|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @27
+@16|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @43
+@16|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @23
+@8|}| @65
+@75
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump
new file mode 100644
index 0000000..9c6b06f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @27
+@16|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @27
+@16|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @43
+@16|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @23
+@8|}| @65
+> @74
+@8|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@12
+@8|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|É|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@17
+@8|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ| @47
+@8|{| @65
+@16|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @30
+@8|}| @65
+@75
+@8|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@12
+@8|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ|s| @46
+@8|{| @65
+@16|T|É|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @39
+@8|}| @65
+@75
+@57|1|9|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump
new file mode 100644
index 0000000..cd42b6d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @45
+@8|{| @65
+@16|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @31
+@16|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @23
+@8>}| @65
+@75
+@8|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@56
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @11
+@75
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @17
+@75
+@8|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@50
+@8|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @10
+@8|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @3
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @3
+@75
+@8|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@55
+@8|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
+@57|3|7|,|9| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump
new file mode 100644
index 0000000..c06f3c3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@8|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|Ê­@1|$|0|_|(| +0#0000000&@17
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@8>@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @9
+@8|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|Ê­@1|$|1|_|(| +0#0000000&@19
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@8|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @47
+@8|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @19
+@75
+@8|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @16
+@8|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@8
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
+@8|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@5
+@8|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@57|5@1|,|9| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump
new file mode 100644
index 0000000..685a6c5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@75
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
+@8|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_
+|(| +0#0000000&@73
+@24>j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@8|{| @65
+@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@52
+@8|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @25
+@8|}| @65
+@75
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l
+|a|s@1|;+0#0000000&| |}| @68
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@31
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&|
+|}| @73
+|}| @73
+@75
+@57|7|2|,|2|5| @8|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump
new file mode 100644
index 0000000..a552de8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|e+0#00e0003&|n|u|m| +0#0000000&|E|8|$| @66
+|{| @73
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16>/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @29
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @19
+@57|8@1|,|1|7| @8|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump
new file mode 100644
index 0000000..73021e9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @19
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_99.dump b/runtime/syntax/testdir/dumps/java_methods_style_99.dump
deleted file mode 100644
index e8962ce..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_style_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#00e0e07#ffffff0@11|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)|;+0#0000000&| @17
-@75
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
-| +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
-@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
-@75
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
-| +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_|(| +0#0000000&@2
-| +0#00e0e07&@11|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| +0#0000000&@18
-@4|{| @69
-@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
-@4|S|t|y|l|e|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @32
-@4|}| @69
-@75
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|S|t|y|l|e|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}|
-@75
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|S|t|y|l|e|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @5
->}| @73
-@57|8|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump
new file mode 100644
index 0000000..06d396f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s| @41
+|{| @73
+@4|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@61
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @49
+@75
+@4|e+0#00e0003&|n|u|m| +0#0000000&|E| @64
+@4|{| @69
+@8|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+@75
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump
new file mode 100644
index 0000000..95bb936
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+> @74
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|É|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ| @51
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @38
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|É|g@1|a|b|l|ɘ|s| @50
+@4|{| @69
+@8|T|É|g@1|a|b|l|ɘ|[|]| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @47
+@4|}| @69
+@75
+@57|1|9|,|0|-|1| @7|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump
new file mode 100644
index 0000000..e379c69
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @49
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|)| +0#0000000&|{| |}| @39
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ+0#00e0e07&|ʭ@1|$|0|_|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @31
+@4>}| @69
+@75
+@4|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@60
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @15
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @21
+@75
+@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @16
+@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @9
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @9
+@75
+@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@57|3|7|,|2|-|5| @7|4|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump
new file mode 100644
index 0000000..aa92f2d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@32|)+0#00e0e07&|;+0#0000000&| @40
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|Ê­@1|$|0|_|(| +0#0000000&@21
+@16|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @24
+@75
+@4>@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+@4|@+0#e000e06&|T|É|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|Ê­@1|$|1|_|(| +0#0000000&@23
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @19
+@75
+@4|v+0#00e0003&|o|i|d| +0#0000000&|A|s|c|i@1|$|2|_|(|)| |{| |}| @51
+@4|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ|ʭ@1|$|2|_|(|U| |u|)| |{| |}| @23
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@12
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @17
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@57|5@1|,|2|-|5| @7|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump
new file mode 100644
index 0000000..e657f31
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@18
+@4>{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|3|,|2|-|5| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[Æ’ÉɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_numbers_05.dump b/runtime/syntax/testdir/dumps/java_numbers_05.dump
new file mode 100644
index 0000000..59e6f1f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x|_|l| |=| |0+0#e000002&|x|f@3|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @20
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t|_|l| |=| |0+0#e000002&|1|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @13
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n|_|l| |=| |0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@1
+@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @35
+@4|}| @69
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_numbers_99.dump b/runtime/syntax/testdir/dumps/java_numbers_99.dump
deleted file mode 100644
index 7637b85..0000000
--- a/runtime/syntax/testdir/dumps/java_numbers_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t| |=| |0+0#e000002&|3|7@1|_|7@3|_|7@3|;+0#0000000&| @31
-@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n| |=| |0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|;+0#0000000&| @4
-@75
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|h|e|x|_|l| |=| |0+0#e000002&|x|7|f@2|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @26
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|o|c|t|_|l| |=| |0+0#e000002&|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @20
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|b|i|n|_|l| |=| |0+0#e000002&|b|0|1@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@2
-@1|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @41
-@75
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|h|e|x|_|l| |=| |0+0#e000002&|x|8|0@2|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @26
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|o|c|t|_|l| |=| |0+0#e000002&|1|0|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @19
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|b|i|n|_|l| |=| |0+0#e000002&|b|1|0@2|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@2
-@1|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @41
-@75
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x|_|l| |=| |0+0#e000002&|x|f@3|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @20
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t|_|l| |=| |0+0#e000002&|1|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @13
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n|_|l| |=| |0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@1
-@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @35
-@4|}| @69
->}| @73
-@57|8@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_string_99.dump b/runtime/syntax/testdir/dumps/java_string_99.dump
deleted file mode 100644
index a401ad6..0000000
--- a/runtime/syntax/testdir/dumps/java_string_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@11|.|"@2| @58
-| +0#e000e06&@11|%|-|1|4|s|\|{|S+0#0000000&|T|R|.|"@2| @48
-| +0#e000e06&@15|A|\|s|\| +0#0000000&@54
-| +0#e000e06&@15|\|{| +0#0000000&|"+0#e000002&|q|u|i|c|k|"| +0#0000000&|}+0#e000e06&| |\| +0#0000000&@44
-| +0#e000e06&@15|b|r|o|w|n|"+0#0000000&@2|}+0#e000e06&|\| +0#0000000&@48
-| +0#e000e06&@11|%|s|\|{| +0#0000000&|f|o|x| |}+0#e000e06&| |\| +0#0000000&@50
-| +0#e000e06&@11|%|-|2|0|s|\|{|S+0#0000000&|T|R|.|"@2| @48
-| +0#e000e06&@15|j|u|m|p|s|\|s|\| +0#0000000&@50
-| +0#e000e06&@15|o|v|e|r| |\| +0#0000000&@52
-| +0#e000e06&@15|t|h|e|\|s|\| +0#0000000&@52
-| +0#e000e06&@15|\|{| +0#0000000&|"+0#e000002&|l|a|z|y|"| +0#0000000&|}+0#e000e06&| |"+0#0000000&@2|}+0#e000e06&|\| +0#0000000&@41
-| +0#e000e06&@11|%|s|\|{| +0#0000000&|d|o|g| |}+0#e000e06&|"+0#0000000&@2|;| @48
-@8|S|t|r|i|n|g| |s|1|3| |=| |S|T|R| @50
-@12|.|"+0#e000e06&|\|"|\|{| +0#0000000&@9|/+0#0000e05&|*| |A| |n|e|s|t|e|d| |c|o|m@1|e|n|t|.| |*|/| +0#0000000&@23
-@8|(@1|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|S|t|r|i|n|g|,| |S|t|r|i|n|g|>|)| |b|a|y| |-|>| |b|a|y|)| @8
-@28|.|a|p@1|l|y|(|w|o@1|f|)| @34
-@12|}+0#e000e06&|\|s|!|\|"@1|;+0#0000000&| @54
-@4|}| @69
->}| @73
-@57|1|0|4|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_switch_01.dump b/runtime/syntax/testdir/dumps/java_switch_01.dump
index 0a76a87..e68c701 100644
--- a/runtime/syntax/testdir/dumps/java_switch_01.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_01.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@7|Y|i|e|l|d|a|b|l|e|<|?|>| |y| |=| |(@1|Y|i|e|l|d|a|b|l|e|<|?|>|)| |(|)| |-|>| |0+0#e000002&|)+0#0000000&|:@1| @23
+@75
@4|y|i|e|l|d|;| @64
@8|(@1|Y|i|e|l|d|a|b|l|e|<|?|>|)| |(|)| |-|>| |0+0#e000002&|)+0#0000000&|.|w|h|e|n|(|)|.|d|e|f|a|u|l|t|_|(|)|.|y|i|e|l|d|(|)|;| @15
@75
-@8|e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
-> @74
+@8>e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
+@75
@8|L|e|t@1|e|r|s| |w|h|e|n| |=| |L|e|t@1|e|r|s|.|O|T|H|E|R|;| @37
@75
@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|w|h|e|n|)| |{| @51
@@ -16,5 +17,4 @@
@12|c+0#af5f00255&|a|s|e| +0#0000000&|A|L|P|H|A| @1|-|>| |L|e|t@1|e|r|s|.|A|L|P|H|A|;| @33
@12|c+0#af5f00255&|a|s|e| +0#0000000&|B|E|T|A| @2|-|>| |L|e|t@1|e|r|s|.|B|E|T|A|;| @34
@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |{| |y+0#af5f00255&|i|e|l|d|(+0#0000000&|L|e|t@1|e|r|s|.|O|T|H|E|R|)|;| |}| @22
-@8|}|)|;| @63
-@57|1|9|,|0|-|1| @7|1|3|%|
+@57|1|8|,|3|-|9| @7|1|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_switch_02.dump b/runtime/syntax/testdir/dumps/java_switch_02.dump
index cf213ed..de7e480 100644
--- a/runtime/syntax/testdir/dumps/java_switch_02.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_02.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|}|)|;| @63
+| +0&#ffffff0@11|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |{| |y+0#af5f00255&|i|e|l|d|(+0#0000000&|L|e|t@1|e|r|s|.|O|T|H|E|R|)|;| |}| @22
+@8|}|)|;| @63
@75
@8|S|t|r|i|n|g| |y+0#af5f00255&|i|e|l|d| +0#0000000&|=| |n+0#e000002&|u|l@1|;+0#0000000&| @46
@75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|y+0#af5f00255&|i|e|l|d|)+0#0000000&| |{| @50
-@8>c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|A|"|:+0#0000000&| |c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|B|"|:+0#0000000&| |{| |e|c|h|o|(|"+0#e000002&|A| |o|r| |B|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
+@8>s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|y+0#af5f00255&|i|e|l|d|)+0#0000000&| |{| @50
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|A|"|:+0#0000000&| |c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|B|"|:+0#0000000&| |{| |e|c|h|o|(|"+0#e000002&|A| |o|r| |B|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
@8|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|:|"|:+0#0000000&| @6|{| |e|c|h|o|(|"+0#e000002&|C|o|l|o|n|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @25
@8|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|s|t|r|.|e|q|u|a|l|s|(|"+0#e000002&@1|)+0#0000000&|:| @29
@20|{| |e|c|h|o|(|"+0#e000002&|<|n|o|n|-|e|m|p|t|y|>|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
@@ -16,5 +17,4 @@
@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|s|t|r|.|e|q|u|a|l|s|(|"+0#e000002&@1|)+0#0000000&| @26
@24|-|>| |"+0#e000002&|<|n|o|n|-|e|m|p|t|y|>|"|;+0#0000000&| @33
@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
-@8|}|)|;| @63
-@57|3|7|,|3|-|9| @7|3|0|%|
+@57|3|6|,|3|-|9| @7|2|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_switch_03.dump b/runtime/syntax/testdir/dumps/java_switch_03.dump
index 7766af3..123a254 100644
--- a/runtime/syntax/testdir/dumps/java_switch_03.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_03.dump
@@ -1,12 +1,13 @@
-| +0&#ffffff0@7|}|)|;| @63
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
+@8|}|)|;| @63
@75
@8|O|b|j|e|c|t| |o| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @42
@75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @54
-@8>c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| @5|{| |e|c|h|o|(|"+0#e000002&|n|u|l@1|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @26
+@8>s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @54
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| @5|{| |e|c|h|o|(|"+0#e000002&|n|u|l@1|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @26
@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s|[|]| |l@1|:| @1|{| |e|c|h|o|(|"+0#e000002&|S|w|i|t|c|h|T|e|s|t|s|$|1|L|e|t@1|e|r|s|[|]|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @4
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|"+0#e000002&|j|a|v|a|.|l|a|n|g|.|O|b|j|e|c|t|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @14
-@8|}|;| @64
+@8|}| @65
@75
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @49
@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1| +0#0000000&@6|-|>| |"+0#e000002&|n|u|l@1|"|;+0#0000000&| @36
@@ -16,5 +17,4 @@
@75
@8|c+0#00e0003&|h|a|r| +0#0000000&|c|h| |=| |'+0#e000002&|c|'|;+0#0000000&| @52
@75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @53
-@57|5@1|,|3|-|9| @7|4|7|%|
+@57|5|4|,|3|-|9| @7|4|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_switch_04.dump b/runtime/syntax/testdir/dumps/java_switch_04.dump
index 38dfe40..a2f1c86 100644
--- a/runtime/syntax/testdir/dumps/java_switch_04.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_04.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @53
+| +0&#ffffff0@74
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @53
@8|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|a|'|:+0#0000000&| @6|{| |e|c|h|o|(|'+0#e000002&|a|'|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
@8|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|b|'|:+0#0000000&| @6|{| |e|c|h|o|(|'+0#e000002&|b|'|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|'+0#e000002&|\+0#e000e06&|u|0@3|'+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @24
-@8|}|;| @64
-> @74
+@8>}| @65
+@75
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @48
@12|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|a|'| +0#0000000&@3|-|>| |'+0#e000002&|a|'|;+0#0000000&| @43
@12|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|b|'| +0#0000000&@3|-|>| |'+0#e000002&|b|'|;+0#0000000&| @43
@@ -16,5 +17,4 @@
@8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&|:| @3|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
@8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&|:| @3|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
-@8|}|;| @64
-@57|7|3|,|0|-|1| @7|6|5|%|
+@57|7|2|,|3|-|9| @7|6|4|%|
diff --git a/runtime/syntax/testdir/dumps/java_switch_05.dump b/runtime/syntax/testdir/dumps/java_switch_05.dump
index 3a25667..15939be 100644
--- a/runtime/syntax/testdir/dumps/java_switch_05.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_05.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|}|;| @64
+| +0&#ffffff0@7|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
+@8|}| @65
@75
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|b|)| |{| @49
@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @34
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @34
-@12>d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @37
+@12>c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @34
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @37
@8|}|)|;| @63
@75
@8|s+0#00e0003&|h|o|r|t| +0#0000000&|s|h| |=| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |2+0#e000002&|;+0#0000000&| @45
@@ -12,9 +13,8 @@
@8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&|:| @2|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @19
@8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&|:| @2|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @19
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @22
-@8|}|;| @64
+@8|}| @65
@75
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|h|)| |{| @48
@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @29
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
-@57|9|1|,|4|-|1|3| @6|8|2|%|
+@57|9|0|,|4|-|1|3| @6|8|1|%|
diff --git a/runtime/syntax/testdir/dumps/java_switch_06.dump b/runtime/syntax/testdir/dumps/java_switch_06.dump
index 9e72cc7..3e3483c 100644
--- a/runtime/syntax/testdir/dumps/java_switch_06.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_06.dump
@@ -1,14 +1,15 @@
-| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @29
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @32
@8|}|)|;| @63
@75
-@8|i+0#00e0003&|n|t| +0#0000000&|i| |=| |2+0#e000002&|;+0#0000000&| @56
-> @74
+@8>i+0#00e0003&|n|t| +0#0000000&|i| |=| |2+0#e000002&|;+0#0000000&| @56
+@75
@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @54
@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|b|0|_@1|0@1|_@2|0@2|:+0#0000000&| |{| |e|c|h|o|(|0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|x|0@2|_@2|0@1|_@1|1|:+0#0000000&| |{| |e|c|h|o|(|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
-@8|}|;| @64
+@8|}| @65
@75
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @49
@12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|_|0|_|0|_|0|_|0| +0#0000000&@1|-|>| |0+0#e000002&|;+0#0000000&| @41
@@ -16,5 +17,4 @@
@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|;+0#0000000&| @44
@8|}|)|;| @63
@4|}| @69
-|}| @73
-@57|1|0|9|,|0|-|1| @6|B|o|t|
+@57|1|0|8|,|3|-|9| @6|9@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_switch_07.dump b/runtime/syntax/testdir/dumps/java_switch_07.dump
new file mode 100644
index 0000000..51f4f8d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_switch_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_switch_99.dump b/runtime/syntax/testdir/dumps/java_switch_99.dump
deleted file mode 100644
index f275382..0000000
--- a/runtime/syntax/testdir/dumps/java_switch_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
-@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @32
-@8|}|)|;| @63
-@75
-@8|i+0#00e0003&|n|t| +0#0000000&|i| |=| |2+0#e000002&|;+0#0000000&| @56
-@75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @54
-@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|b|0|_@1|0@1|_@2|0@2|:+0#0000000&| |{| |e|c|h|o|(|0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
-@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|x|0@2|_@2|0@1|_@1|1|:+0#0000000&| |{| |e|c|h|o|(|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
-@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
-@8|}|;| @64
-@75
-@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @49
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|_|0|_|0|_|0|_|0| +0#0000000&@1|-|>| |0+0#e000002&|;+0#0000000&| @41
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&| +0#0000000&@5|-|>| |1+0#e000002&|;+0#0000000&| @45
-@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|;+0#0000000&| @44
-@8|}|)|;| @63
-@4|}| @69
->}| @73
-@57|1|2@1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_01.dump b/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
index cb57834..b9fff36 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
@@ -17,4 +17,4 @@
@24|n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{@2|}@2|;| @30
@20|}@2|;| @50
@16|}| @57
-@57|1|9|,|1| @9|1|9|%|
+@57|1|9|,|1| @9|1|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
index f557d66..c99fa33 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
@@ -8,7 +8,7 @@
@16|b+0#af5f00255&|r|e|a|k|;+0#0000000&| @52
@12|}| @61
@12|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| |;| @52
-@8|}|;| @64
+@8|}| @65
@4|}| @69
@75
@4|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @30
@@ -17,4 +17,4 @@
@8|d+0#af5f00255&|o| +0#0000000&|{| @62
@12|i+0#af5f00255&|f| +0#0000000&|(|t+0#e000002&|r|u|e|)+0#0000000&| @53
@16|b+0#af5f00255&|r|e|a|k| +0#0000000&|o+0#af5f00255&|u|t|;+0#0000000&| @48
-@57|3|7|,|4|-|1|3| @6|4|6|%|
+@57|3|7|,|4|-|1|3| @6|3|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_03.dump b/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
index e2735a7..8b2a981 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
@@ -2,19 +2,19 @@
@8|}| |w+0#af5f00255&|h|i|l|e| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&|;| @50
|}| @73
@4|}| @69
+|/+0#0000e05&|*|\@2|*|/| +0#0000000&|{| @65
+@8>(|n+0#af5f00255&|e|w| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0@14
+@12|/+0#0000e05&|*@1| +0#0000000&@59
+| +0#0000e05&@12|*| +0#e000e06&|{|@|i|n|h|e|r|i|t|D|o|c|}| |*+0#0000e05&|/| +0#0000000&@43
+@12|p+0#00e0003&|u|b|l|i|c| +0#0000000&|O|b|j|e|c|t| |a|p@1|l|y|(|O|b|j|e|c|t| |o|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|o|;| |}+0#ffffff16#ff404010|;+0#0000000#ffffff0| @18
+@8|}+0#ffffff16#ff404010|)+0#0000000#ffffff0|.|a|p@1|l|y|(| @57
+@8|(|n+0#af5f00255&|e|w| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0@14
+@12|/+0#0000e05&|*@1| +0#e000e06&|{|@|i|n|h|e|r|i|t|D|o|c|}| +0#0000000&@45
+| +0#e000e06&@12|*+0#0000e05&|/| +0#0000000&@59
+@12|p+0#00e0003&|u|b|l|i|c| +0#0000000&|O|b|j|e|c|t| |a|p@1|l|y|(|O|b|j|e|c|t| |o|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|o|;| |}+0#ffffff16#ff404010|;+0#0000000#ffffff0| @18
+@8|}+0#ffffff16#ff404010|)+0#0000000#ffffff0@1|;| @62
+@4|}| @69
@75
-@4>/+0#0000e05&|*@1| +0#0000000&@67
+@4|/+0#0000e05&|*@1| +0#0000000&@67
| +0#0000e05&@4|*| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@54
-| +0#0000e05&@4|*|/| +0#0000000&@67
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @54
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @58
-@4|{| @69
-@4|}| @69
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|3|(|)| |{| @56
-@4|}| @69
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|4|(|)| |{| @56
-@4|/+0#0000e05&|*|/|\|/|\|/|\|*|/| +0#0000000&|;| |}| @56
-@57|5@1|,|2|-|5| @7|7|3|%|
+@57|5@1|,|3|-|9| @7|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_04.dump b/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
index aa0ed17..40fb521 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|/+0#0000e05&|*|/|\|/|\|/|\|*|/| +0#0000000&|;| |}| @56
+| +0#0000e05#ffffff0@4|*| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@54
+| +0#0000e05&@4|*|/| +0#0000000&@67
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @54
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @58
+@4>{| @69
+@4|}| @69
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|3|(|)| |{| @56
+@4|}| @69
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|4|(|)| |{| @56
+@4|/+0#0000e05&|*|/|\|/|\|/|\|*|/| +0#0000000&|;| |}| @56
|}| @73
@75
|/+0#0000e05&|*| +0#0000000&@72
| +0#0000e05&|*| |S|o|m|e| |n|o|t|e|.| +0#0000000&@61
-| +0#0000e05&>*| |{| +0#0000000&@70
-| +0#0000e05&|*| |}| +0#0000000&@70
-| +0#0000e05&|*|/| +0#0000000&@71
-|/+0#0000e05&|*@1| +0#0000000&@71
-| +0#0000e05&|*| +0#e000e06&|A| |s|u|m@1|a|r|y|.| +0#0000000&@61
| +0#0000e05&|*| |{| +0#0000000&@70
| +0#0000e05&|*| |}| +0#0000000&@70
-| +0#0000e05&|*|/| +0#0000000&@71
-|/+0#0000e05&@1| +0#0000000&@72
-|/+0#0000e05&@1| |{| +0#0000000&@70
-|/+0#0000e05&@1| |}| +0#0000000&@70
-@75
-|/+0#0000e05&|*| |1|2@1|||.@67
-@20|*|/| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|U|n|f|o|l|d|e|n|a|b|l|e| |{| @27
-@57|7|3|,|2| @9|9|8|%|
+@57|7|3|,|2|-|5| @7|8|4|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_99.dump b/runtime/syntax/testdir/dumps/java_unfoldment_05.dump
index 9e10ac4..fc59348 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_99.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_05.dump
@@ -1,14 +1,9 @@
-|}+0&#ffffff0| @73
-@75
-|/+0#0000e05&|*| +0#0000000&@72
-| +0#0000e05&|*| |S|o|m|e| |n|o|t|e|.| +0#0000000&@61
-| +0#0000e05&|*| |{| +0#0000000&@70
-| +0#0000e05&|*| |}| +0#0000000&@70
+| +0#0000e05#ffffff0|*| |}| +0#0000000&@70
| +0#0000e05&|*|/| +0#0000000&@71
|/+0#0000e05&|*@1| +0#0000000&@71
| +0#0000e05&|*| +0#e000e06&|A| |s|u|m@1|a|r|y|.| +0#0000000&@61
| +0#0000e05&|*| |{| +0#0000000&@70
-| +0#0000e05&|*| |}| +0#0000000&@70
+| +0#0000e05&>*| |}| +0#0000000&@70
| +0#0000e05&|*|/| +0#0000000&@71
|/+0#0000e05&@1| +0#0000000&@72
|/+0#0000e05&@1| |{| +0#0000000&@70
@@ -16,5 +11,10 @@
@75
|/+0#0000e05&|*| |1|2@1|||.@67
@20|*|/| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|U|n|f|o|l|d|e|n|a|b|l|e| |{| @27
->}| @73
-@57|8|6|,|1| @9|B|o|t|
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|1|,|2| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/markdown_conceal_99.dump b/runtime/syntax/testdir/dumps/markdown_conceal_99.dump
deleted file mode 100644
index d0b6be1..0000000
--- a/runtime/syntax/testdir/dumps/markdown_conceal_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|I+0&#ffffff0|t|a|l|i|c|,| |I|t|a|l|i|c|.| @1|B+0#0000001#ffff4012|o|l|d|,+0#0000000#ffffff0| |B+0#0000001#ffff4012|o|l|d|.+0#0000000#ffffff0| @46
-|B+2&&|o|l|d| |I|t|a|l|i|c|,+0&&| |B+2&&|o|l|d| |I|t|a|l|i|c|.+0&&| @49
-|S+1024&&|t|r|i|k|e|t|h|r|o|u|g|h|,+0&&| |S̶|t̶|r̶|i̶|k̶|e̶|t̶|h̶|r̶|o̶|u̶|g̶|h̶|.| @45
-@75
-@75
-|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
-|<+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|S+1024#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|>+0#00e0e07&|S+1024#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|s+0#af5f00255&|>+0#00e0e07&|.+0#0000000&|<+0#00e0e07&|b+0#af5f00255&|r| +0#00e0e07&|/|>| +0#0000000&@21
-@75
-@75
-@75
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|<|e+0#af5f00255&|m|>+0#00e0e07&|B+2#0000000&|o|l|d| |I|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|<|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+0#0000000&| @36
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|<|e+0#af5f00255&|m|>+0#00e0e07&|B+2#0000000&|o|l|d| |I|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|<|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+0#0000000&|<+0#00e0e07&|b+0#af5f00255&|r| +0#00e0e07&|/|>| +0#0000000&@30
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|B+0#0000001#ffff4012|o|l|d|<+0#00e0e07#ffffff0|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|B+0#0000001#ffff4012|o|l|d|<+0#00e0e07#ffffff0|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+0#0000000&| @29
-|<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|I+0#0000000&|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|I+0#0000000&|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|.+0#0000000&| @41
-> @74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|5|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_02.dump b/runtime/syntax/testdir/dumps/modula2_iso_02.dump
index 6d60233..488b062 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_02.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_02.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+|N+0#00e0e07#ffffff0|E|W| +0#0000000&|D+0#00e0e07&|I|S|P|O|S|E| +0#0000000&@63
+@75
|(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n|s| |*|)| +0#0000000&@53
|A+0#00e0003&|D@1|R|E|S@1| +0#0000000&|B+0#00e0003&|Y|T|E| +0#0000000&|L+0#00e0003&|O|C| +0#0000000&|W+0#00e0003&|O|R|D| +0#0000000&|A+0#00e0003&|D|R| +0#0000000&|C+0#00e0003&|A|S|T| +0#0000000&|T+0#00e0003&|S|I|Z|E| +0#0000000&|S+0#00e0003&|Y|S|T|E|M| +0#0000000&@31
|M+0#00e0003&|A|K|E|A|D|R| +0#0000000&|A+0#00e0003&|D@1|A|D|R| +0#0000000&|S+0#00e0003&|U|B|A|D|R| +0#0000000&|D+0#00e0003&|I|F|A|D|R| +0#0000000&|R+0#00e0003&|O|T|A|T|E| +0#0000000&|S+0#00e0003&|H|I|F|T| +0#0000000&@33
-@75
->(+0#0000e05&|*| |n|o|n|-|s|t|a|n|d|a|r|d| |l|a|n|g|u|a|g|e| |e|x|t|e|n|s|i|o|n|s| |*|)| +0#0000000&@36
+> @74
+|(+0#0000e05&|*| |n|o|n|-|s|t|a|n|d|a|r|d| |l|a|n|g|u|a|g|e| |e|x|t|e|n|s|i|o|n|s| |*|)| +0#0000000&@36
|L+0#00e0003&|O|N|G|C|A|R|D| +0#0000000&|L+0#00e0003&|O|N|G|B|I|T|S|E|T| +0#0000000&@55
@75
|(+0#0000e05&|*| |u|s|e|r| |d|e|f|i|n|e|d| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@44
@@ -16,5 +17,4 @@
|(+0#0000e05&|*| |n|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@52
|0+0#e000002&|F@2|H|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|e|-|4|5|,+0#e000e06&| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@47
@75
-|(+0#0000e05&|*| |o|c|t|a|l| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@54
-@57|3|7|,|1| @9|3|2|%|
+@57|3|6|,|0|-|1| @7|3|1|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_03.dump b/runtime/syntax/testdir/dumps/modula2_iso_03.dump
index b9406da..9207c5f 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_03.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_03.dump
@@ -1,9 +1,10 @@
-|(+0#0000e05#ffffff0|*| |o|c|t|a|l| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@54
+| +0&#ffffff0@74
+|(+0#0000e05&|*| |o|c|t|a|l| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@54
|n| |:+0#e000e06&|=| +0#0000000&|0+0#e000002&|3|7@1|B|;+0#e000e06&| +0#0000000&|c|h| |:+0#e000e06&|=| +0#0000000&|0+0#e000002&|3|7@1|C|;+0#e000e06&| +0#0000000&@50
@75
|(+0#0000e05&|*| |p|r|a|g|m|a|s| |*|)| +0#0000000&@61
-|<+0#e000e06&|*|$|f|o@1|*|>| +0#0000000&@66
-> @74
+><+0#e000e06&|*|$|f|o@1|*|>| +0#0000000&@66
+@75
|(+0#0000e05&|*| |b|l|o|c|k| |c|o|m@1|e|n|t|s| |w|i|t|h| |e|m|p|h|a|s|i|s| |*|)| +0#0000000&@40
|(+0#0000e05&|*| |c+0#e000e06&|o|p|y|r|i|g|h|t| +0#0000e05&|(|c|)| |J|u|r@1|a|s|i|c| |I|n|c|.| +0#0000000&@44
| +0#0000e05&@2|a+0#e000e06&|u|t|h|o|r| +0#0000e05&|F|r|e|d| |F|l|i|n|t|s|t|o|n|e| |S|r|.| +0#0000000&@45
@@ -16,5 +17,4 @@
|(+0#0000e05&|*| |t|e|c|h|n|i|c|a|l| |d|e|b|t| |m|a|r|k|e|r|s| |*|)| +0#0000000&@46
|(+0#0000e05&|*| |T+0#e000e06&|O|D|O|:| +0#0000e05&|.@2| |*|)| +0#0000000&@59
|(+0#0000e05&|*| |F+0#e000e06&|I|X|M|E| +0#0000e05&|*|)| +0#0000000&@63
-|(+0#0000e05&|*| |D+0#e000e06&|E|P|R|E|C|A|T|E|D| +0#0000e05&|*|)| +0#0000000&@58
-@57|5@1|,|0|-|1| @7|5|1|%|
+@57|5|4|,|1| @9|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_04.dump b/runtime/syntax/testdir/dumps/modula2_iso_04.dump
index 98fdc23..5b379c5 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_04.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_04.dump
@@ -1,9 +1,10 @@
-|(+0#0000e05#ffffff0|*| |D+0#e000e06&|E|P|R|E|C|A|T|E|D| +0#0000e05&|*|)| +0#0000000&@58
+|(+0#0000e05#ffffff0|*| |F+0#e000e06&|I|X|M|E| +0#0000e05&|*|)| +0#0000000&@63
+|(+0#0000e05&|*| |D+0#e000e06&|E|P|R|E|C|A|T|E|D| +0#0000e05&|*|)| +0#0000000&@58
@75
|(+0#0000e05&|*| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@58
|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|N+0#00e0e07&|e|w|F|o@1|W|i|t|h|B|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|V+0#af5f00255&|A|R| +0#0000000&|f|o@1|:+0#e000e06&| +0#0000000&|F|o@1|;+0#e000e06&| +0#0000000&|b|a|r| |:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R| +0#0000000&|)+0#e000e06&|;| +0#0000000&@18
-|B+0#af5f00255&|E|G|I|N| +0#0000000&@69
-@2>N+0#00e0e07&|E|W|(+0#e000e06&|f+0#0000000&|o@1|)+0#e000e06&|;| +0#0000000&@63
+>B+0#af5f00255&|E|G|I|N| +0#0000000&@69
+@2|N+0#00e0e07&|E|W|(+0#e000e06&|f+0#0000000&|o@1|)+0#e000e06&|;| +0#0000000&@63
@2|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| |:+0#e000e06&|=| +0#0000000&|b|a|r|;+0#e000e06&| +0#0000000&@56
@2|R+0#af5f00255&|E|T|U|R|N| +0#0000000&@66
|E+0#af5f00255&|N|D| +0#0000000&|S+0#00e0e07&|e|t|B|a|r|;+0#e000e06&| +0#0000000&@63
@@ -16,5 +17,4 @@
@2|E+0#af5f00255&|L|S|E| +0#0000000&@68
@4|R+0#af5f00255&|E|T|U|R|N| +0#0000000&|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| @55
@2|E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
-|E+0#af5f00255&|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
-@57|7|3|,|3| @9|7|0|%|
+@57|7|2|,|1| @9|6|9|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_05.dump b/runtime/syntax/testdir/dumps/modula2_iso_05.dump
index eca4631..fac8919 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_05.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_05.dump
@@ -1,9 +1,10 @@
-|E+0#af5f00255#ffffff0|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
+| +0&#ffffff0@1|E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
+|E+0#af5f00255&|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
@75
|(+0#0000e05&|*| |d|i|s|a|b|l|e|d| |c|o|d|e| |*|)| +0#0000000&@55
|?+0#4040ff13&|<| +0#0000000&@72
-|W+0#4040ff13&|H|I|L|E| |f|o@1| |=| |b|a|r| |D|O| +0#0000000&@56
-| +0#4040ff13&@1>b|a|z|(|b|a|m|,| |b|o@1|)| +0#0000000&@59
+>W+0#4040ff13&|H|I|L|E| |f|o@1| |=| |b|a|r| |D|O| +0#0000000&@56
+| +0#4040ff13&@1|b|a|z|(|b|a|m|,| |b|o@1|)| +0#0000000&@59
|E+0#4040ff13&|N|D| |(|*| |W|H|I|L|E| |*|)|;| +0#0000000&@58
|>+0#4040ff13&|?| +0#0000000&@72
@75
@@ -16,5 +17,4 @@
|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
@75
|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-@57|9|1|,|3| @9|8|9|%|
+@57|9|0|,|1| @9|8@1|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_06.dump b/runtime/syntax/testdir/dumps/modula2_iso_06.dump
index 4074a01..ef5b0fe 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_06.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_06.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
+@75
|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
@75
|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
->b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
+> @74
+|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
@75
|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
@75
@@ -16,5 +17,4 @@
|~| @73
|~| @73
|~| @73
-|~| @73
-| +0#0000000&@56|1|0|9|,|1| @8|B|o|t|
+| +0#0000000&@56|1|0|8|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_99.dump b/runtime/syntax/testdir/dumps/modula2_iso_99.dump
deleted file mode 100644
index e23fb29..0000000
--- a/runtime/syntax/testdir/dumps/modula2_iso_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|@+0#e000e06#ffffff0| +0#0000000&@1|&+0#e000e06&| +0#0000000&@1|~+0#e000e06&| +0#0000000&@67
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
-|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|!+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|\+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@55
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
-@75
-|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
-@75
-|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
-@75
-@75
->E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
-@57|1@1|4|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/modula2_pim_06.dump b/runtime/syntax/testdir/dumps/modula2_pim_06.dump
new file mode 100644
index 0000000..4f865e4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/modula2_pim_06.dump
@@ -0,0 +1,20 @@
+|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
+> @74
+@75
+|E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|9|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/modula2_pim_99.dump b/runtime/syntax/testdir/dumps/modula2_pim_99.dump
deleted file mode 100644
index 7e096a2..0000000
--- a/runtime/syntax/testdir/dumps/modula2_pim_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|&+0#e000e06#ffffff0| +0#0000000&@1|~+0#e000e06&| +0#0000000&@70
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
-|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|!+0#ffffff16#ff404010| +0#0000000#ffffff0@1|@+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|\+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@52
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
-@75
-|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
-@75
-|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
-@75
-@75
->E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
-@57|1@2|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_02.dump b/runtime/syntax/testdir/dumps/modula2_r10_02.dump
index 408872a..285d5eb 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_02.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_02.dump
@@ -1,9 +1,10 @@
-|U+0#00e0003#ffffff0|N|S|A|F|E| +0#0000000&@68
+|(+0#0000e05#ffffff0|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n|s| |*|)| +0#0000000&@53
+|U+0#00e0003&|N|S|A|F|E| +0#0000000&@68
@75
|(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |t|y|p|e|s| |*|)| +0#0000000&@48
|B+0#00e0003&|Y|T|E| +0#0000000&|W+0#00e0003&|O|R|D| +0#0000000&|L+0#00e0003&|O|N|G|W|O|R|D| +0#0000000&|A|D@1|R|E|S@1| |O+0#00e0003&|C|T|E|T|S|E|Q| +0#0000000&@39
-@75
->(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@43
+> @74
+|(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@43
|A+0#00e0003&|D@1| +0#0000000&|S+0#00e0003&|U|B| +0#0000000&|D+0#00e0003&|E|C| +0#0000000&|I+0#00e0003&|N|C| +0#0000000&|S+0#00e0003&|E|T|B|I|T| +0#0000000&|H+0#00e0003&|A|L|T| +0#0000000&@47
@75
|(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n|s| |*|)| +0#0000000&@44
@@ -16,5 +17,4 @@
|f|o@1|b|a|r| |F|o@1|b|a|r| |F|o@1|B|a|r| |f|o@1|_|b|a|r| |f|o@1|0| @41
@75
@75
-|(+0#0000e05&|*| |s|t|r|i|n|g| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@53
-@57|3|7|,|1| @9|2|4|%|
+@57|3|6|,|0|-|1| @7|2|3|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_03.dump b/runtime/syntax/testdir/dumps/modula2_r10_03.dump
index b35c8b0..4d335d2 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_03.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_03.dump
@@ -1,9 +1,10 @@
-|(+0#0000e05#ffffff0|*| |s|t|r|i|n|g| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@53
+| +0&#ffffff0@74
+|(+0#0000e05&|*| |s|t|r|i|n|g| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@53
|s|t|r| |:+0#e000e06&|=| +0#0000000&|"+0#e000002&|f|o@1| |'|b|a|r|'| |b|a|z|"|;+0#e000e06&| +0#0000000&@51
|s|t|r| |:+0#e000e06&|=| +0#0000000&|'+0#e000002&|f|o@1| |"|b|a|r|"| |b|a|z|'|;+0#e000e06&| +0#0000000&@51
@75
-|(+0#0000e05&|*| |n|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@52
->0+0#e000002&|b|0|1@1|0|'|0@1|1@1|'|0|1@1|0|'|0@3|,+0#e000e06&| +0#0000000&|0+0#e000002&|u|0|A|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|0|1|2|3|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|C|A|F|E|'|D|0@1|D| +0#0000000&@26
+>(+0#0000e05&|*| |n|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@52
+|0+0#e000002&|b|0|1@1|0|'|0@1|1@1|'|0|1@1|0|'|0@3|,+0#e000e06&| +0#0000000&|0+0#e000002&|u|0|A|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|0|1|2|3|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|C|A|F|E|'|D|0@1|D| +0#0000000&@26
|1+0#e000002&|'|0@2|'|0@2|.|0@1|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|e|+|1|0|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|4|'|5|6|7|'|8|9|0|e|-|1|'|0@2| +0#0000000&@24
@75
@75
@@ -16,5 +17,4 @@
@75
@75
|(+0#0000e05&|*| |s|i|n|g|l|e| |l|i|n|e| |c|o|m@1|e|n|t| |*|)| +0#0000000&@49
-|!+0#0000e05&| |f|o@1| |b|a|r| |b|a|z| |b|a|m| |b|o@1| | +0#0000000&@52
-@57|5@1|,|1| @9|3|8|%|
+@57|5|4|,|1| @9|3|7|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_04.dump b/runtime/syntax/testdir/dumps/modula2_r10_04.dump
index cd6436c..f0017ff 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_04.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|(+0#0000e05#ffffff0|*| |s|i|n|g|l|e| |l|i|n|e| |c|o|m@1|e|n|t| |*|)| +0#0000000&@49
+|!+0#0000e05&| |f|o@1| |b|a|r| |b|a|z| |b|a|m| |b|o@1| | +0#0000000&@52
+@75
|(+0#0000e05&|*| |b|l|o|c|k| |c|o|m@1|e|n|t|s| |w|i|t|h| |e|m|p|h|a|s|i|s| |*|)| +0#0000000&@40
|(+0#0000e05&|*| |c+0#e000e06&|o|p|y|r|i|g|h|t| +0#0000e05&|(|c|)| |2|0|1|6| |M|o|d|u|l|a|-|2| |F|o|u|n|d|a|t|i|o|n|.| +0#0000000&@32
-| +0#0000e05&@2|a+0#e000e06&|u|t|h|o|r|s| +0#0000e05&|B|.|K|o|w|a|r|s|c|h| |a|n|d| |R|.|S|u|t|c|l|i|f@1|e| +0#0000000&@37
+| +0#0000e05&@2>a+0#e000e06&|u|t|h|o|r|s| +0#0000e05&|B|.|K|o|w|a|r|s|c|h| |a|n|d| |R|.|S|u|t|c|l|i|f@1|e| +0#0000000&@37
| +0#0000e05&@2|l+0#e000e06&|i|c|e|n|s|e| +0#0000e05&|s|e@1| |L|I|C|E|N|S|E| |*|)| +0#0000000&@49
-> @74
+@75
|(+0#0000e05&|*| |p+0#e000e06&|r|e|-|c|o|n|d|i|t|i|o|n|s|:| +0#0000e05&|f|o@1| |b|a|r| |b|a|z| |b|a|m| |b|o@1| |d|o@1|d|l|e| |w|a|h|.| +0#0000000&@24
| +0#0000e05&@2|p+0#e000e06&|o|s|t|-|c|o|n|d|i|t|i|o|n|s|:| +0#0000e05&|f|o@1|d|l|e| |b|a|b@1|l|e| |b|o|z|o| |b|i|m| |b|a|m| |d|a|n|g|.| +0#0000000&@22
| +0#0000e05&@2|e+0#e000e06&|r@1|o|r|-|c|o|n|d|i|t|i|o|n|s|:| +0#0000e05&|d|a|d|a| |j|i|n|g|l|e| |j|u|n|g|l|e| |b|o|g@1|l|e| |d|e@1| |b|o@1|.| |*|)| +0#0000000&@16
@@ -15,6 +17,4 @@
@75
|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|M+0#af5f00255&|O|D|]+0#e000e06&| +0#0000000&|m+0#00e0e07&|o|d|u|l|u|s| +0#0000000&|(+0#e000e06&| +0#0000000&|n|,+0#e000e06&| +0#0000000&|m| |:+0#e000e06&| +0#0000000&|I|N|T|6|4| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|I|N|T|6|4|;+0#e000e06&| +0#0000000&@25
@75
-|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|R+0#af5f00255&|E|T|A|I|N|]+0#e000e06&| +0#0000000&|R+0#00e0e07&|e|t|a|i|n| +0#0000000&|(+0#e000e06&| +0#0000000&|f|o@1| |:+0#e000e06&| +0#0000000&|F|o@1| |)+0#e000e06&|;| +0#0000000&@34
-@75
-@57|7|3|,|0|-|1| @7|5|2|%|
+@57|7|1|,|4| @9|5|1|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_05.dump b/runtime/syntax/testdir/dumps/modula2_r10_05.dump
index 2a8ae0c..6e1ac94 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_05.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_05.dump
@@ -1,9 +1,11 @@
| +0&#ffffff0@74
-|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|L+0#00e0e07&|E|N|G|T|H|]+0#e000e06&| +0#0000000&|l+0#00e0e07&|e|n|g|t|h| +0#0000000&|(+0#e000e06&| +0#0000000&|s|t|r| |:+0#e000e06&| +0#0000000&|S|t|r|i|n|g| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|L+0#00e0003&|O|N|G|C|A|R|D|;+0#e000e06&| +0#0000000&@20
+|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|R+0#af5f00255&|E|T|A|I|N|]+0#e000e06&| +0#0000000&|R+0#00e0e07&|e|t|a|i|n| +0#0000000&|(+0#e000e06&| +0#0000000&|f|o@1| |:+0#e000e06&| +0#0000000&|F|o@1| |)+0#e000e06&|;| +0#0000000&@34
@75
+|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|L+0#00e0e07&|E|N|G|T|H|]+0#e000e06&| +0#0000000&|l+0#00e0e07&|e|n|g|t|h| +0#0000000&|(+0#e000e06&| +0#0000000&|s|t|r| |:+0#e000e06&| +0#0000000&|S|t|r|i|n|g| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|L+0#00e0003&|O|N|G|C|A|R|D|;+0#e000e06&| +0#0000000&@20
@75
+> @74
|(+0#0000e05&|*| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@58
->P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|N+0#00e0e07&|e|w|F|o@1|W|i|t|h|B|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|V+0#af5f00255&|A|R| +0#0000000&|f|o@1|:+0#e000e06&| +0#0000000&|F|o@1|;+0#e000e06&| +0#0000000&|b|a|r| |:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R| +0#0000000&|)+0#e000e06&|;| +0#0000000&@18
+|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|N+0#00e0e07&|e|w|F|o@1|W|i|t|h|B|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|V+0#af5f00255&|A|R| +0#0000000&|f|o@1|:+0#e000e06&| +0#0000000&|F|o@1|;+0#e000e06&| +0#0000000&|b|a|r| |:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R| +0#0000000&|)+0#e000e06&|;| +0#0000000&@18
|B+0#af5f00255&|E|G|I|N| +0#0000000&@69
@2|N+0#af5f00255&|E|W|(+0#e000e06&|f+0#0000000&|o@1|)+0#e000e06&|;| +0#0000000&@63
@2|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| |:+0#e000e06&|=| +0#0000000&|b|a|r|;+0#e000e06&| +0#0000000&@56
@@ -15,6 +17,4 @@
|(+0#0000e05&|*| |f|u|n|c|t|i|o|n|s| |*|)| +0#0000000&@59
|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|f|o@1| |:+0#e000e06&| +0#0000000&|F|o@1| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R|;+0#e000e06&| +0#0000000&@36
|B+0#af5f00255&|E|G|I|N| +0#0000000&@69
-@2|I+0#af5f00255&|F| +0#0000000&|f|o@1| |=+0#e000e06&| +0#0000000&|N+0#e000002&|I|L| +0#0000000&|T+0#af5f00255&|H|E|N| +0#0000000&@55
-@4|U+0#00e0003&|N|S|A|F|E|.+0#e000e06&|H+0#00e0003&|A|L|T| +0#0000000&@59
-@57|9|1|,|1| @9|6@1|%|
+@57|8|9|,|0|-|1| @7|6|5|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_06.dump b/runtime/syntax/testdir/dumps/modula2_r10_06.dump
index 68af55c..f28e65a 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_06.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_06.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@3|U+0#00e0003&|N|S|A|F|E|.+0#e000e06&|H+0#00e0003&|A|L|T| +0#0000000&@59
+|B+0#af5f00255#ffffff0|E|G|I|N| +0#0000000&@69
+@2|I+0#af5f00255&|F| +0#0000000&|f|o@1| |=+0#e000e06&| +0#0000000&|N+0#e000002&|I|L| +0#0000000&|T+0#af5f00255&|H|E|N| +0#0000000&@55
+@4|U+0#00e0003&|N|S|A|F|E|.+0#e000e06&|H+0#00e0003&|A|L|T| +0#0000000&@59
@2|E+0#af5f00255&|L|S|E| +0#0000000&@68
@4|R+0#af5f00255&|E|T|U|R|N| +0#0000000&|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| @55
-@2|E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
+@2>E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
|E+0#af5f00255&|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
-> @74
+@75
@75
|(+0#0000e05&|*| |t|e|c|h|n|i|c|a|l| |d|e|b|t| |*|)| +0#0000000&@54
|T+0#af5f00255&|O| +0#0000000&|D+0#af5f00255&|O| +0#0000000&|(+0#e000e06&| +0#0000000&|1+0#e000002&|2|3|4|,+0#e000e06&| +0#0000000&|W|e|i|g|h|t|.+0#e000e06&|M+0#0000000&|a|j|o|r| |)+0#e000e06&| +0#0000000&|(+0#0000e05&|*| |f|o@1| |*|)| +0#0000000&@36
@@ -15,6 +17,4 @@
|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|S+0#00e0e07&|e|t|B|a|b|a| +0#0000000&|<+0#e000e06&|*|D|E|P|R|E|C|A|T|E|D|*|>| +0#0000000&|(+0#e000e06&| +0#0000000&|n| |:+0#e000e06&| +0#0000000&|C+0#00e0003&|A|R|D|I|N|A|L| +0#0000000&|)+0#e000e06&|;| +0#0000000&@24
@75
@75
-|(+0#0000e05&|*| |d|i|s|a|b|l|e|d| |c|o|d|e| |*|)| +0#0000000&@55
-|?+0#4040ff13&|<| +0#0000000&@72
-@57|1|0|9|,|0|-|1| @6|8|1|%|
+@57|1|0|7|,|3| @8|7|9|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_07.dump b/runtime/syntax/testdir/dumps/modula2_r10_07.dump
index 8f061fd..1b172da 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_07.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_07.dump
@@ -1,9 +1,11 @@
-|?+0#4040ff13#ffffff0|<| +0#0000000&@72
+| +0&#ffffff0@74
+|(+0#0000e05&|*| |d|i|s|a|b|l|e|d| |c|o|d|e| |*|)| +0#0000000&@55
+|?+0#4040ff13&|<| +0#0000000&@72
|W+0#4040ff13&|H|I|L|E| |f|o@1| |=| |b|a|r| |D|O| +0#0000000&@56
| +0#4040ff13&@1|b|a|z|(|b|a|m|,| |b|o@1|)| +0#0000000&@59
-|E+0#4040ff13&|N|D| |(|*| |W|H|I|L|E| |*|)|;| +0#0000000&@58
+>E+0#4040ff13&|N|D| |(|*| |W|H|I|L|E| |*|)|;| +0#0000000&@58
|>+0#4040ff13&|?| +0#0000000&@72
-> @74
+@75
@75
|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|~+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@58
@@ -15,6 +17,4 @@
|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
@75
|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@57|1|2|7|,|0|-|1| @6|9|5|%|
+@57|1|2|5|,|1| @8|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_08.dump b/runtime/syntax/testdir/dumps/modula2_r10_08.dump
new file mode 100644
index 0000000..2eb82c1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/modula2_r10_08.dump
@@ -0,0 +1,20 @@
+|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
+> @74
+@75
+|(+0#0000e05&|*| |m|o|d|u|l|e| |e|n|d| |*|)| +0#0000000&@58
+|E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4|3|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_99.dump b/runtime/syntax/testdir/dumps/modula2_r10_99.dump
deleted file mode 100644
index 067fb47..0000000
--- a/runtime/syntax/testdir/dumps/modula2_r10_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
-|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|~+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@58
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
-@75
-|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
-@75
-|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
-@75
-@75
-|(+0#0000e05&|*| |m|o|d|u|l|e| |e|n|d| |*|)| +0#0000000&@58
->E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
-@57|1|4|6|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/progress_comments_00.dump b/runtime/syntax/testdir/dumps/progress_comments_00.dump
new file mode 100644
index 0000000..d0cff21
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/progress_comments_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0|*| +0#0000000&@72
+| +0#0000e05&|*| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |f|i|l|e|t|y|p|e|=|p|r|o|g|r|e|s@1| +0#0000000&@35
+| +0#0000e05&|*|/| +0#0000000&@71
+@75
+|d+0#af5f00255&|e|f|i|n|e| +0#0000000&|v+0#af5f00255&|a|r|i|a|b|l|e| +0#0000000&|c|u|s|t|o|m|e|r|_|n|a|m|e| |a+0#af5f00255&|s| +0#0000000&|c+0#af5f00255&|h|a|r|a|c|t|e|r| +0#0000000&|n+0#af5f00255&|o|-|u|n|d|o|.| +0#0000000&@23
+@75
+|/+0#0000e05&|*| |T|h|e| |t|e|s|t| |s|e|t|u|p| |a|b|o|v|e| |i|s| |a|n| |e|x|a|m|p|l|e| |o|f| |a| |m|u|l|t|i|-|l|i|n|e| |c|o|m@1|e|n|t|.| +0#0000000&@12
+|T+0#0000e05&|h|i|s| |i|s| |t|o@1|;| |t|h|e| |l|e|a|d|i|n|g| |*| |a|n|d| |l|e|f|t|-|h|a|n|d| |a|l|i|g|n|m|e|n|t| |a|r|e| |n|o|t| |r|e|q|u|i|r|e|d|.| |*|/| +0#0000000&@3
+|f+0#af5f00255&|o|r| +0#0000000&|e+0#af5f00255&|a|c|h| +0#0000000&|c|u|s|t|o|m|e|r| |n+0#af5f00255&|o|-|l|o|c|k| +0#0000000&@49
+@4|w+0#af5f00255&|h|e|r|e| +0#0000000&|c|u|s|t|o|m|e|r|.+0#af5f00255&|c+0#0000000&|u|s|t|o|m|e|r|_|i|d| |=+0#af5f00255&| +0#0000000&|1+0#e000002&|2|3|4|5| +0#0000000&@36
+|:+0#af5f00255&| +0#0000000&@73
+@4|a+0#af5f00255&|s@1|i|g|n| +0#0000000&|c|u|s|t|_|n|a|m|e| |=+0#af5f00255&| +0#0000000&|c|u|s|t|o|m|e|r|.+0#af5f00255&|c+0#0000000&|u|s|t|o|m|e|r|_|n|a|m|e|.+0#af5f00255&| +0#0000000&|/+0#0000e05&|*| |C|o|m@1|e|n|t|s| |c|a|n| |a|l|s|o| |a|p@1|e|a|r| +0#0000000&
+| +0#0000e05&@49|a|t| |t|h|e| |e|n|d| |o|f| |a| |l|i|n|e|.| |*|/| +0#0000000&
+|e+0#af5f00255&|n|d|.| +0#0000000&|/+0#0000e05&|*| |f|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |*|/| +0#0000000&@46
+@75
+|/+0#0000e05&|*| |C|o|m@1|e|n|t|s| |c|a|n| |b|e| |/|*| |n|e|s|t|e|d| |*|/|.| |H|e|r|e|'|s| |t|h|e| |s|a|m|e| |q|u|e|r|y| |a|s| |a|b|o|v|e|,| |b|u|t| +0#0000000&@6
+|c+0#0000e05&|o|m@1|e|n|t|e|d| |o|u|t| |t|h|i|s| |t|i|m|e|:| +0#0000000&@50
+@75
+|f+0#0000e05&|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |n|o|-|l|o|c|k| +0#0000000&@49
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/progress_comments_01.dump b/runtime/syntax/testdir/dumps/progress_comments_01.dump
new file mode 100644
index 0000000..11dc103
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/progress_comments_01.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|n|d|.| +0#0000000&|/+0#0000e05&|*| |f|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |*|/| +0#0000000&@46
+@75
+|/+0#0000e05&|*| |C|o|m@1|e|n|t|s| |c|a|n| |b|e| |/|*| |n|e|s|t|e|d| |*|/|.| |H|e|r|e|'|s| |t|h|e| |s|a|m|e| |q|u|e|r|y| |a|s| |a|b|o|v|e|,| |b|u|t| +0#0000000&@6
+|c+0#0000e05&|o|m@1|e|n|t|e|d| |o|u|t| |t|h|i|s| |t|i|m|e|:| +0#0000000&@50
+@75
+>f+0#0000e05&|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |n|o|-|l|o|c|k| +0#0000000&@49
+| +0#0000e05&@3|w|h|e|r|e| |c|u|s|t|o|m|e|r|.|c|u|s|t|o|m|e|r|_|i|d| |=| |1|2|3|4|5| +0#0000000&@36
+|:+0#0000e05&| +0#0000000&@73
+| +0#0000e05&@3|a|s@1|i|g|n| |c|u|s|t|_|n|a|m|e| |=| |c|u|s|t|o|m|e|r|.|c|u|s|t|o|m|e|r|_|n|a|m|e|.| |/|*| |C|o|m@1|e|n|t|s| |c|a|n| |a|l|s|o| |a|p@1|e|a|r| +0#0000000&
+| +0#0000e05&@49|a|t| |t|h|e| |e|n|d| |o|f| |a| |l|i|n|e|.| |*|/| +0#0000000&
+|e+0#0000e05&|n|d|.| |/|*| |f|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |*|/| +0#0000000&@46
+@75
+|T+0#0000001#ffff4012|O|D|O|:+0#0000e05#ffffff0| |N|o|t|e| |t|h|a|t| |/|*|/| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |c|o|m@1|e|n|t|,| |b|e|c|a|u|s|e| |i|t| |a|c|t|u|a|l@1|y| |s|t|a|r|t|s| |a| +0#0000000&
+|n+0#0000e05&|e|w| |c|o|m@1|e|n|t| |w|h|o|s|e| |f|i|r|s|t| |c|h|a|r|a|c|t|e|r| |i|s| |a| |'|/|'|.| |N|o|w| |w|e| |n|e@1|d| |t|w|o| |e|n|d|-|c|o|m@1|e|n|t| +0#0000000&@3
+|m+0#0000e05&|a|r|k|e|r|s| |t|o| |r|e|t|u|r|n| |t|o| |a|c|t|u|a|l| |c|o|d|e|.| |*|/| |*|/| +0#0000000&@35
+@75
+|d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&|c|u|s|t|o|m|e|r|_|n|a|m|e|.+0#af5f00255&| +0#0000000&@52
+@75
+|/+0#0000e05&@1| |T|h|i|s| |i|s| |t|h|e| |s|i|n|g|l|e|-|l|i|n|e| |c|o|m@1|e|n|t| |s|y|n|t|a|x|.| +0#0000000&@32
+@57|1|9|,|1| @9|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/progress_comments_02.dump b/runtime/syntax/testdir/dumps/progress_comments_02.dump
new file mode 100644
index 0000000..1967476
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/progress_comments_02.dump
@@ -0,0 +1,20 @@
+|/+0#0000e05#ffffff0@1| |T|h|i|s| |i|s| |t|h|e| |s|i|n|g|l|e|-|l|i|n|e| |c|o|m@1|e|n|t| |s|y|n|t|a|x|.| +0#0000000&@32
+@75
+|/+0#0000e05&@1|N|o| |s|p|a|c|e| |i|s| |r|e|q|u|i|r|e|d| |a|f|t|e|r| |t|h|e| |s|l|a|s|h|e|s|.| |A|l|s|o|,| |a| |/|*| |h|e|r|e| |d|o|e|s| |n|o|t| |b|e|g|i|n| |a| +0#0000000&
+|/+0#0000e05&@1|n|e|w| |b|l|o|c|k| |c|o|m@1|e|n|t|.| +0#0000000&@54
+@75
+>f+0#af5f00255&|o|r| +0#0000000&|e+0#af5f00255&|a|c|h| +0#0000000&|s|u|p@1|l|i|e|r| |n+0#af5f00255&|o|-|l|o|c|k|:| +0#0000000&@48
+@4|/+0#0000e05&|*| |H|o|w|e|v|e|r|,| |a| |b|l|o|c|k| |c|o|m@1|e|n|t| |c|a|n| |e|n|d| |i|n|s|i|d|e| |(|w|h|a|t| |l|o@1|k|s| |l|i|k|e|)| |a| +0#0000000&@8
+| +0#0000e05&@6|s|i|n|g|l|e|-|l|i|n|e| |c|o|m@1|e|n|t|,| |b|e|c|a|u|s|e| |t|h|e| |s|l|a|s|h|e|s| |a|r|e| |j|u|s|t| |t|e|x|t| |a|s| |f|a|r| |a|s| |t|h|e
+| @6|/@1| |b|l|o|c|k| |c|o|m@1|e|n|t| |i|s| |c|o|n|c|e|r|n|e|d|.| |*|/| +0#0000000&@34
+@4|d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&|s|u|p@1|l|i|e|r|.+0#af5f00255&| +0#0000000&@53
+@75
+@4|/+0#0000e05&@1| |T+0#0000001#ffff4012|O|D|O|:+0#0000e05#ffffff0| |O|b|s|e|r|v|e| |t|h|a|t| |t+0#0000001#ffff4012|o|d|o| +0#0000e05#ffffff0|h|i|g|h|l|i|g|h|t|i|n|g| |w|o|r|k|s| |i|n| |l|i|n|e| |c|o|m@1|e|n|t|s| |t|o@1|.| +0#0000000&@3
+|e+0#af5f00255&|n|d|.| +0#0000000&@70
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_01_99.dump b/runtime/syntax/testdir/dumps/sh_01_99.dump
deleted file mode 100644
index 687677e..0000000
--- a/runtime/syntax/testdir/dumps/sh_01_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0|!| |/|b|i|n|/|d|a|s|h| +0#0000000&@62
-|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|'+0#af5f00255&|A+0#e000002&|=|B|'+0#af5f00255&|`+0#e000e06&| +0#0000000&@55
-|p+0#af5f00255&|r|i|n|t|e|n|v| +0#0000000&|A| @64
->e+0#af5f00255&|c|h|o| +0#e000002&|a| |`+0#e000e06&|#+0#0000e05&|f|o@1|`+0#e000e06&| +0#0000000&|b| @59
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|:+0#0000000&|r|e|d|r|a|w| @49|4|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/sh_02_01.dump b/runtime/syntax/testdir/dumps/sh_02_01.dump
index 20930c8..2c09615 100644
--- a/runtime/syntax/testdir/dumps/sh_02_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_02_01.dump
@@ -1,9 +1,10 @@
-|e+0#af5f00255#ffffff0|s|a|c| +0#0000000&@70
+|#+0#0000e05#ffffff0| |c|o|m@1|e|n|t| +0#0000000&@65
+|e+0#af5f00255&|s|a|c| +0#0000000&@70
@75
|#+0#0000e05&| |J|u|l| |2|6|,| |2|0|1|8|:| |w|h|y| |i|s|n|'|t| |`|.@1|`| |b|e|i|n|g| |t|e|r|m|i|n|a|t|e|d| |p|r|o|p|e|r|l|y|?| +0#0000000&@17
|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|a@2|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&@60
->#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
+>c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|a@2|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&@60
+|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@8|b@2|)+0#af5f00255&| +0#0000000&@1|c+0#00e0e07&@2|=+0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|d@2||+0#af5f00255&|c+0#e000e06&|u|t| |-|b|4|-|`| +0#0000000&@36
@8|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|t+0#e000002&|e|s|t|"+0#af5f00255&| +0#0000000&@55
|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@@ -16,5 +17,4 @@
|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|$+0#e000e06&|V|A|R| +0#0000000&|a|b|c| @59
|s+0#af5f00255&|e|t| +0#00e0e07&@3|$+0#e000e06&|V|A|R| +0#00e0e07&|a|b|c| +0#0000000&@59
|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|9|,|1| @9|B|o|t|
+| +0#0000000&@56|1|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_02_99.dump b/runtime/syntax/testdir/dumps/sh_02_99.dump
deleted file mode 100644
index a9902dd..0000000
--- a/runtime/syntax/testdir/dumps/sh_02_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|a|||b|||c|)+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|a|b|c| |;+0#af5f00255&@1| +0#0000000&@48
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-|e+0#af5f00255&|s|a|c| +0#0000000&@70
-@75
-|#+0#0000e05&| |J|u|l| |2|6|,| |2|0|1|8|:| |w|h|y| |i|s|n|'|t| |`|.@1|`| |b|e|i|n|g| |t|e|r|m|i|n|a|t|e|d| |p|r|o|p|e|r|l|y|?| +0#0000000&@17
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|a@2|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&@60
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@8|b@2|)+0#af5f00255&| +0#0000000&@1|c+0#00e0e07&@2|=+0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|d@2||+0#af5f00255&|c+0#e000e06&|u|t| |-|b|4|-|`| +0#0000000&@36
-@8|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|t+0#e000002&|e|s|t|"+0#af5f00255&| +0#0000000&@55
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@8|;+0#af5f00255&@1| +0#0000000&@64
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@8|e+0#af5f00255&|s|a|c| +0#0000000&@62
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-|e+0#af5f00255&|c|h|o| +0#e000002&@2|$+0#e000e06&|V|A|R| +0#e000002&|a|b|c| +0#0000000&@59
-|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|$+0#e000e06&|V|A|R| +0#0000000&|a|b|c| @59
->s+0#af5f00255&|e|t| +0#00e0e07&@3|$+0#e000e06&|V|A|R| +0#00e0e07&|a|b|c| +0#0000000&@59
-@57|3|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_03_01.dump b/runtime/syntax/testdir/dumps/sh_03_01.dump
index 1dc4664..3ac5b4b 100644
--- a/runtime/syntax/testdir/dumps/sh_03_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_03_01.dump
@@ -1,9 +1,10 @@
-|#+0#0000e05#ffffff0| |T|h|i|s| |g|e|t|s| |m|a|r|k|e|d| |a|s| |a|n| |e|r@1|o|r| +0#0000000&@44
+| +0&#ffffff0@74
+|#+0#0000e05&| |T|h|i|s| |g|e|t|s| |m|a|r|k|e|d| |a|s| |a|n| |e|r@1|o|r| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|+|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@7|#+0#0000e05&| |:|+| |s|e@1|m|s| |t|o| |w|o|r|k| |f|o|r| |k|s|h|
|a|s| |w|e|l@1| |a|s| |b|a|s|h| +0#0000000&@59
|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@7|#+0#0000e05&| |:|-| |i|s| |k|s|h| |a|n|d| |b|a|s|h| +0#0000000&@6
-@75
->#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
+> @74
+|#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|+|$|{|V|a|r|i|a|b|l|e|C|:|=|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|+|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@5|#+0#0000e05&| |:|+| |s|e@1|m|s| |t|o| |w|o|r|k| |f|o|r| |k|s|h|
@@ -16,5 +17,4 @@
|:+0#0000e05&| +0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@39
@75
|#+0#0000e05&| |A|n|o|t|h|e|r| |t|e|s|t| +0#0000000&@60
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3| +0#0000000&@6
-@57|1|9|,|1| @9|8|7|%|
+@57|1|8|,|0|-|1| @7|8|1|%|
diff --git a/runtime/syntax/testdir/dumps/sh_03_02.dump b/runtime/syntax/testdir/dumps/sh_03_02.dump
new file mode 100644
index 0000000..6d03697
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_03_02.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |A|n|o|t|h|e|r| |t|e|s|t| +0#0000000&@60
+|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3| +0#0000000&@6
+@7|:+0#0000e05&| +0#0000000&@7|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3
+> +0#0000000&@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3@1|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_03_99.dump b/runtime/syntax/testdir/dumps/sh_03_99.dump
deleted file mode 100644
index 3d796c6..0000000
--- a/runtime/syntax/testdir/dumps/sh_03_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@7|#+0#0000e05&| |:|-| |i|s| |k|s|h| |a|n|d| |b|a|s|h| +0#0000000&@6
-@75
-|#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|+|$|{|V|a|r|i|a|b|l|e|C|:|=|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|+|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@5|#+0#0000e05&| |:|+| |s|e@1|m|s| |t|o| |w|o|r|k| |f|o|r| |k|s|h|
-|a|s| |w|e|l@1| |a|s| |b|a|s|h| +0#0000000&@59
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@1|#+0#0000e05&| |:|-| |i|s| |k|s|h| |a|n|d| |b|a|s|h| +0#0000000&@10
-@75
-|#+0#0000e05&| |T|h|e|s|e| |a|r|e| |O|K| +0#0000000&@60
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@41
-|:+0#0000e05&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@39
-|:+0#0000e05&| +0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@39
-@75
-|#+0#0000e05&| |A|n|o|t|h|e|r| |t|e|s|t| +0#0000000&@60
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3| +0#0000000&@6
-@7|:+0#0000e05&| +0#0000000&@7|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3
-> +0#0000000&@74
-|~+0#4040ff13&| @73
-| +0#0000000&@56|3@1|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_04_99.dump b/runtime/syntax/testdir/dumps/sh_04_99.dump
deleted file mode 100644
index 54ea81a..0000000
--- a/runtime/syntax/testdir/dumps/sh_04_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|5|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|}+0#0000000&|}+0#e000e06&@1| +0#0000000&@8
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|5|:+0#af5f00255&|-|$+0#e000e06&|V|a|r|6|}@1|}+0#0000000&|}+0#e000e06&@1| +0#0000000&@6
-@75
-|#+0#0000e05&| |T|h|e|s|e| |a|r|e| |O|K| +0#0000000&@60
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|{+0#0000000&|V|a|r|3|:|=|e|n|g|}|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@24
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&|}+0#0000000&|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@15
-@75
-|#+0#0000e05&| |T|h|i|s| |g|e|t|s| |m|a|r|k|e|d| |a|s| |a|n| |e|r@1|o|r| |t|o@1| +0#0000000&@40
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|{+0#0000000&|V|a|r|3|:|=|e|n|g|}|}+0#e000e06&@1| +0#0000000&@33
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&|}+0#0000000&|}+0#e000e06&@1| +0#0000000&@24
-@75
-|#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@41
-|:+0#0000e05&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@39
-@75
-|#+0#0000e05&| |F|i|r|s|t| |l|i|n|e| |i|s| |O|K| |e|x|c|e|p|t| |i|t|s| |m|i|s@1|i|n|g| |a| |c|l|o|s|i|n|g| |"|}|"|,| +0#0000000&@22
-|#+0#0000e05&| |s|o| |s|e|c|o|n|d| |l|i|n|e| |s|h|o|u|l|d| |h|a|v|e| |s|o|m|e| |e|r@1|o|r| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@22
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&|}+0#0000000&|}+0#e000e06&| +0#0000000&@18
->V+0#ffffff16#ff404010|a|r|i|a|b|l|e|=|$+0#e000e06#ffffff0|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|{+0#0000000&|V|a|r|3|:|=|e|n|g|}|}+0#e000e06&| +0#0000000&@27
-@57|2|7|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_05_02.dump b/runtime/syntax/testdir/dumps/sh_05_02.dump
index d4e7f9a..afcdd6f 100644
--- a/runtime/syntax/testdir/dumps/sh_05_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_02.dump
@@ -1,4 +1,5 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|`+0#e000e06&|i|d| |-|n|g| ||+0#af5f00255&| +0#e000e06&|w|c| |-|c|`| +0#0000000&@48
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|`+0#e000e06&|i|d| |-|n|g|`| +0#0000000&@56
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|`+0#e000e06&|i|d| |-|n|g| ||+0#af5f00255&| +0#e000e06&|w|c| |-|c|`| +0#0000000&@48
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
|#+0#0000e05&@74
@@ -16,5 +17,4 @@
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
-@57|3|7|,|1| @10|9|%|
+@57|3|7|,|1| @10|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_03.dump b/runtime/syntax/testdir/dumps/sh_05_03.dump
index 2e369d8..a9cdad6 100644
--- a/runtime/syntax/testdir/dumps/sh_05_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_03.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
-|#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
->[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
@@ -16,5 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|e+0#0000000&|n|g|3|}+0#e000e06&| +0#0000000&@47
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|++0#af5f00255&|e+0#0000000&|n|g|3|}+0#e000e06&| +0#0000000&@47
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|=+0#af5f00255&|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
-@57|5@1|,|1| @9|1|3|%|
+@57|5|4|,|1| @9|1|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_04.dump b/runtime/syntax/testdir/dumps/sh_05_04.dump
index 27c821a..adfd7f9 100644
--- a/runtime/syntax/testdir/dumps/sh_05_04.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_04.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|=+0#af5f00255&|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|++0#af5f00255&|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|=+0#af5f00255&|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+>V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|++0#af5f00255&|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
@75
|#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
@@ -16,5 +17,4 @@
@75
|#+0#0000e05&| |C|a|s|e| |2|b| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@32
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
-@57|7|3|,|1| @9|1|8|%|
+@57|7|2|,|1| @9|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_05.dump b/runtime/syntax/testdir/dumps/sh_05_05.dump
index 1eb0229..be0ac6e 100644
--- a/runtime/syntax/testdir/dumps/sh_05_05.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_05.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-> @74
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
|#+0#0000e05&| |C|a|s|e| |2|c| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@32
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
@@ -16,5 +17,4 @@
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
-@57|9|1|,|0|-|1| @7|2|4|%|
+@57|9|0|,|1| @9|2|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_06.dump b/runtime/syntax/testdir/dumps/sh_05_06.dump
index 46c4de0..9b912d2 100644
--- a/runtime/syntax/testdir/dumps/sh_05_06.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_06.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
-|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
->[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&| +0#0000000&@42
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&| +0#0000000&@42
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&| +0#0000000&@42
@@ -16,5 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@57|1|0|9|,|1| @8|2|9|%|
+@57|1|0|8|,|1| @8|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_07.dump b/runtime/syntax/testdir/dumps/sh_05_07.dump
index e1dc4ed..68a289b 100644
--- a/runtime/syntax/testdir/dumps/sh_05_07.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_07.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
|#+0#0000e05&@74
@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
+>#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| |T|h|e| |s|a|m|e| |w|i|t|h| |o|n|e| |n|e|s|t|e|t| |$|{|}| |l|e|v|e|l| +0#0000000&@38
->#+0#0000e05&| |C|a|s|e| |1|a| |w|i|t|h| |c|o|n|s|t|a|n|t|s| +0#0000000&@50
+|#+0#0000e05&| |C|a|s|e| |1|a| |w|i|t|h| |c|o|n|s|t|a|n|t|s| +0#0000000&@50
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|e+0#0000000&|n|g|1|}+0#e000e06&@1| +0#0000000&@37
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|e+0#0000000&|n|g|2|}+0#e000e06&@1| +0#0000000&@37
@@ -15,6 +17,4 @@
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
-@57|1|2|7|,|1| @8|3|4|%|
+@57|1|2|5|,|1| @8|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_08.dump b/runtime/syntax/testdir/dumps/sh_05_08.dump
index dc77a9f..8ca73f9 100644
--- a/runtime/syntax/testdir/dumps/sh_05_08.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_08.dump
@@ -1,9 +1,11 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
-|#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
+>#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
@@ -15,6 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-@57|1|4|5|,|1| @8|3|9|%|
+@57|1|4|3|,|1| @8|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_09.dump b/runtime/syntax/testdir/dumps/sh_05_09.dump
index 944d7e3..d65302d 100644
--- a/runtime/syntax/testdir/dumps/sh_05_09.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_09.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
|#+0#0000e05&| |C|a|s|e| |2|b| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@32
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
+>V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
@@ -15,6 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
-|#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-@57|1|6|3|,|1| @8|4@1|%|
+@57|1|6|1|,|1| @8|4|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_10.dump b/runtime/syntax/testdir/dumps/sh_05_10.dump
index 43639c8..46b5680 100644
--- a/runtime/syntax/testdir/dumps/sh_05_10.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_10.dump
@@ -1,9 +1,11 @@
-|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
+>V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
->e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
@@ -15,6 +17,4 @@
@75
|#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
-@57|1|8|1|,|1| @8|4|9|%|
+@57|1|7|9|,|1| @8|4|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_11.dump b/runtime/syntax/testdir/dumps/sh_05_11.dump
index 2ba00e3..ef496d1 100644
--- a/runtime/syntax/testdir/dumps/sh_05_11.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_11.dump
@@ -1,9 +1,11 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
->#+0#0000e05&@74
+|#+0#0000e05&@74
@5| +0#0000000&@69
|#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| |T|h|e| |s|a|m|e| |w|i|t|h| |t|w|o| |n|e|s|t|e|t| |$|{|}| |l|e|v|e|l| +0#0000000&@38
@@ -15,6 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|e+0#0000000&|n|g|3|}+0#e000e06&@2| +0#0000000&@28
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
-|#+0#0000e05&| |C|a|s|e| |1|b| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@33
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-@57|1|9@1|,|1| @8|5|4|%|
+@57|1|9|7|,|1| @8|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_12.dump b/runtime/syntax/testdir/dumps/sh_05_12.dump
index 2300b7d..48b312d 100644
--- a/runtime/syntax/testdir/dumps/sh_05_12.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_12.dump
@@ -1,9 +1,12 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |1|b| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@33
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
+>V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-> @74
+@75
|#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
@@ -14,7 +17,4 @@
@75
|#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-@57|2|1|7|,|0|-|1| @6|5|9|%|
+@57|2|1|4|,|1| @8|5|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_13.dump b/runtime/syntax/testdir/dumps/sh_05_13.dump
index 71e0e78..da79761 100644
--- a/runtime/syntax/testdir/dumps/sh_05_13.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_13.dump
@@ -1,9 +1,12 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
|#+0#0000e05&| |C|a|s|e| |2|b| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@32
->[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
@@ -14,7 +17,4 @@
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-@57|2|3|5|,|1| @8|6|4|%|
+@57|2|3|2|,|1| @8|6|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_14.dump b/runtime/syntax/testdir/dumps/sh_05_14.dump
index d16e2e0..82da979 100644
--- a/runtime/syntax/testdir/dumps/sh_05_14.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_14.dump
@@ -1,9 +1,12 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
+> @74
|#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
@@ -14,7 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-@57|2|5|3|,|1| @8|6|9|%|
+@57|2|5|0|,|0|-|1| @6|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_15.dump b/runtime/syntax/testdir/dumps/sh_05_15.dump
index c9abc7c..6c4e887 100644
--- a/runtime/syntax/testdir/dumps/sh_05_15.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_15.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@74
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
|#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
@@ -14,7 +17,4 @@
|#+0#0000e05&| |T|h|e| |s|a|m|e| |w|i|t|h| |t|h|r|e@1| |n|e|s|t|e|t| |$|{|}| |l|e|v|e|l| +0#0000000&@36
|#+0#0000e05&| |C|a|s|e| |1|a| |w|i|t|h| |c|o|n|s|t|a|n|t|s| +0#0000000&@50
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|e+0#0000000&|n|g|1|}+0#e000e06&@3| +0#0000000&@19
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|e+0#0000000&|n|g|2|}+0#e000e06&@3| +0#0000000&@19
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
-@57|2|7|1|,|1| @8|7|4|%|
+@57|2|6|8|,|1| @8|7|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_16.dump b/runtime/syntax/testdir/dumps/sh_05_16.dump
index 198e0b7..784dade 100644
--- a/runtime/syntax/testdir/dumps/sh_05_16.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_16.dump
@@ -1,9 +1,13 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|e+0#0000000&|n|g|1|}+0#e000e06&@3| +0#0000000&@19
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|e+0#0000000&|n|g|2|}+0#e000e06&@3| +0#0000000&@19
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
|#+0#0000e05&| |C|a|s|e| |1|b| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@33
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
@@ -13,8 +17,4 @@
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-@57|2|8|9|,|1| @8|7|9|%|
+@57|2|8|5|,|1| @8|7|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_17.dump b/runtime/syntax/testdir/dumps/sh_05_17.dump
index b282e4d..e64f01a 100644
--- a/runtime/syntax/testdir/dumps/sh_05_17.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_17.dump
@@ -1,9 +1,13 @@
-| +0&#ffffff0@74
-|#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
+>#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
@@ -13,8 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-|#+0#0000e05&| |C|a|s|e| |2|c| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@32
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-@57|3|0|7|,|1| @8|8|5|%|
+@57|3|0|3|,|1| @8|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_18.dump b/runtime/syntax/testdir/dumps/sh_05_18.dump
index ef1e618..bd8516b 100644
--- a/runtime/syntax/testdir/dumps/sh_05_18.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_18.dump
@@ -1,9 +1,13 @@
-|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
+|#+0#0000e05&| |C|a|s|e| |2|c| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@32
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
->e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
|#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
@@ -13,8 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@3| +0#0000000&@17
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
-|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
-@57|3|2|5|,|1| @8|9|0|%|
+@57|3|2|1|,|1| @8|8@1|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_19.dump b/runtime/syntax/testdir/dumps/sh_05_19.dump
index 05b9e3d..f2ceecc 100644
--- a/runtime/syntax/testdir/dumps/sh_05_19.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_19.dump
@@ -1,9 +1,13 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
+>V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
->#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
+|#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@7
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@7
@@ -12,9 +16,5 @@
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
@75
@75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |T|h|i|s| |i|s| |a|l|s|o| |a|l@1|o|w|e|d|:| +0#0000000&@51
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|B|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|C|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|D|=+0#af5f00255&|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@11
-@57|3|4|3|,|1| @8|9|4|%|
+|#+0#0000e05&@71|@+0#4040ff13&@2
+| +0#0000000&@56|3@1|9|,|1| @8|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_20.dump b/runtime/syntax/testdir/dumps/sh_05_20.dump
index 5316887..1c6647a 100644
--- a/runtime/syntax/testdir/dumps/sh_05_20.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_20.dump
@@ -1,9 +1,15 @@
|#+0#0000e05#ffffff0@74
@5| +0#0000000&@69
|#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| |T|h|i|s| |i|s| |a|l|s|o| |a|l@1|o|w|e|d|:| +0#0000000&@51
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|B|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|C|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|D|=+0#af5f00255&|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@11
+> @74
+|#+0#0000e05&@74
+@5| +0#0000000&@69
+|#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |f|o|r| |t|h|e| |s|h|:| +0#0000000&@25
|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|}+0#e000e06&| +0#0000000&@50
->V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|O+0#0000000&|K|}+0#e000e06&| +0#0000000&@48
+|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|O+0#0000000&|K|}+0#e000e06&| +0#0000000&@48
|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|'|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|"|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
@@ -11,10 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|:+0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@38
@75
|#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |a|l|s|o| |f|o|r| |k|s|h|:| +0#0000000&@23
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|}+0#e000e06&| +0#0000000&@40
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|,| |t|o@1|:| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@27
-@75
-|#+0#0000e05&| |W|h|a|t| |h|a|p@1|e|n|s| |w|i|t|h| |$|{|#|i|d|e|n|t|i|f|i|e|r|[|*|]|}|:| +0#0000000&@36
-|V+0#00e0e07&|a|r|i|a|b|l|e|5|=+0#0000000&|$+0#e000e06&|{|#|i|d|e|n|t|i|f|i|e|r|[|*+0#0000000&|]+0#e000e06&|}| +0#0000000&@47
-|~+0#4040ff13&| @73
-| +0#0000000&@56|3|6|1|,|1| @8|B|o|t|
+@57|3|5|6|,|0|-|1| @6|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/sh_05_21.dump b/runtime/syntax/testdir/dumps/sh_05_21.dump
new file mode 100644
index 0000000..25a9ab8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_05_21.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |a|l|s|o| |f|o|r| |k|s|h|:| +0#0000000&@23
+|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|}+0#e000e06&| +0#0000000&@40
+|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|,| |t|o@1|:| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@27
+@75
+|#+0#0000e05&| |W|h|a|t| |h|a|p@1|e|n|s| |w|i|t|h| |$|{|#|i|d|e|n|t|i|f|i|e|r|[|*|]|}|:| +0#0000000&@36
+>V+0#00e0e07&|a|r|i|a|b|l|e|5|=+0#0000000&|$+0#e000e06&|{|#|i|d|e|n|t|i|f|i|e|r|[|*+0#0000000&|]+0#e000e06&|}| +0#0000000&@47
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_05_99.dump b/runtime/syntax/testdir/dumps/sh_05_99.dump
deleted file mode 100644
index c3d20b5..0000000
--- a/runtime/syntax/testdir/dumps/sh_05_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |f|o|r| |t|h|e| |s|h|:| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|}+0#e000e06&| +0#0000000&@50
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|O+0#0000000&|K|}+0#e000e06&| +0#0000000&@48
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|'|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|"|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|$|S|H|E|L@1|}| +0#0000000&@39
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|:+0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@38
-@75
-|#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |a|l|s|o| |f|o|r| |k|s|h|:| +0#0000000&@23
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|}+0#e000e06&| +0#0000000&@40
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|,| |t|o@1|:| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@27
-@75
-|#+0#0000e05&| |W|h|a|t| |h|a|p@1|e|n|s| |w|i|t|h| |$|{|#|i|d|e|n|t|i|f|i|e|r|[|*|]|}|:| +0#0000000&@36
->V+0#00e0e07&|a|r|i|a|b|l|e|5|=+0#0000000&|$+0#e000e06&|{|#|i|d|e|n|t|i|f|i|e|r|[|*+0#0000000&|]+0#e000e06&|}| +0#0000000&@47
-@57|3|7|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_06_01.dump b/runtime/syntax/testdir/dumps/sh_06_01.dump
index e71380e..5eea543 100644
--- a/runtime/syntax/testdir/dumps/sh_06_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_06_01.dump
@@ -1,9 +1,11 @@
-|#+0#0000e05#ffffff0| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
+|U+0#00e0e07#ffffff0|s|a|g|e| |(|)| |{| +0#0000000&@64
+@75
+|#+0#0000e05&| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
|V+0#00e0e07&|a|r|i|a|b|l|e|N|a|m|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|B|a|s|i|c|C|o|n|f|i|g|N|a|m|e|}|_+0#e000002&|*|"+0#af5f00255&| +0#0000000&@39
@75
-|#+0#0000e05&| |E|c|h|o| |s|o|m|e| |k|s|h| |s|p|e|c|i|a|l| |v|a|r|i|a|b|l|e|s| +0#0000000&@41
+>#+0#0000e05&| |E|c|h|o| |s|o|m|e| |k|s|h| |s|p|e|c|i|a|l| |v|a|r|i|a|b|l|e|s| +0#0000000&@41
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|C+0#e000002&|D|P|A|T|H|=|"+0#af5f00255&|$+0#e000e06&|{|C|D|P|A|T|H|}| +0#0000000&@51
-> @74
+@75
|#+0#0000e05&| |G|e|t| |a|l|s|o| |a| |s|h|o|r|t| |d|e|s|c|r|i|p|t|i|o|n| |o|f| |t|h|e| |b|a|c|k|u|p|t|y|p|e|/|m|e|t|h|o|d| +0#0000000&@19
|e+0#af5f00255&|v|a|l| +0#0000000&|B+0#00e0e07&|a|c|k|u|p|M|e|t|h|o|d|=+0#0000000&|\+0#e000e06&|$|m+0#0000000&|e|s@1|0|9|$+0#e000e06&|{|B|a|c|k|u|p|T|y|p|e|}|B+0#0000000&| @34
@75
@@ -15,6 +17,4 @@
|#+0#0000e05&| |I|f| |w|e| |h|a|v|e| |m|o|r|e| |t|h|e| |5|3| |c|h|a|r|a|c|t|e|r|s| |i|n| |t|h|e| |v|a|r|i|a|b|l|e|s| |b|e|l|o|w| |s|p|l|i|t| |t|h|e|m| |u|p| +0#0000000&@2
|#+0#0000e05&| |i|n|t|o| |s|e|v|e|r|a|l| |l|i|n|e|s| |a|n|d| |a|d@1| |3| |t|a|b|s| |b|e|f|o|r|e| |t|h|e|m| +0#0000000&@27
|f+0#af5f00255&|o|r| +0#0000000&|V|a|r|i|a|b|l|e| |i+0#af5f00255&|n| +0#0000000&|D|e|f|a|u|l|t|E|x|c|l|u|d|e| |D|e|f|a|u|l|t|F|i|n|d|O|p|t|i|o|n| |D|o|N|o|t|B|a|c|k|u|p|L|i|s|t| @10
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|e+0#af5f00255&|v|a|l| +0#0000000&|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|\+0#e000e06&|$@1|V|a|r|i|a|b|l|e| +0#0000000&@45
-@57|1|9|,|0|-|1| @7|2|5|%|
+@57|1|7|,|1| @9|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/sh_06_02.dump b/runtime/syntax/testdir/dumps/sh_06_02.dump
index 029ba13..0177aff 100644
--- a/runtime/syntax/testdir/dumps/sh_06_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_06_02.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@3|e+0#af5f00255&|v|a|l| +0#0000000&|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|\+0#e000e06&|$@1|V|a|r|i|a|b|l|e| +0#0000000&@45
+|f+0#af5f00255#ffffff0|o|r| +0#0000000&|V|a|r|i|a|b|l|e| |i+0#af5f00255&|n| +0#0000000&|D|e|f|a|u|l|t|E|x|c|l|u|d|e| |D|e|f|a|u|l|t|F|i|n|d|O|p|t|i|o|n| |D|o|N|o|t|B|a|c|k|u|p|L|i|s|t| @10
+|d+0#af5f00255&|o| +0#0000000&@72
+@4|e+0#af5f00255&|v|a|l| +0#0000000&|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|\+0#e000e06&|$@1|V|a|r|i|a|b|l|e| +0#0000000&@45
@4|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|V|a|r|V|a|l|u|e| +0#e000002&||+0#af5f00255&| +0#e000e06&|F|o|l|d|S| |5+0#e000002&|3| +0#e000e06&||+0#af5f00255&| +0#e000e06&|s+0#af5f00255&|e|d| +0#e000e06&|"+0#af5f00255&|2+0#e000002&|,|\+0#e000e06&@1|$|s|/+0#e000002&|^|/|$+0#e000e06&|T|a|b|$|T|a|b|$|T|a|b|/+0#e000002&|"+0#af5f00255&|`+0#e000e06&| +0#0000000&@3
@4|e+0#af5f00255&|v|a|l| +0#0000000&|$+0#e000e06&|V|a|r|i|a|b|l|e|=+0#af5f00255&|\+0#e000e06&|$|V+0#0000000&|a|r|V|a|l|u|e| @45
-|d+0#af5f00255&|o|n|e| +0#0000000&@70
+>d+0#af5f00255&|o|n|e| +0#0000000&@70
@75
->e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&| +0#0000000&@68
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&| +0#0000000&@68
|U+0#e000002&|s|a|g|e|:| @1|$+0#e000e06&|S|c|r|i|p|t|N|a|m|e| +0#e000002&|[|-|O|p|t|i|o|n|s|]| +0#0000000&@44
@75
|O+0#e000002&|p|t|i|o|n|s| |L|i|s|t|:| +0#0000000&@61
@@ -15,6 +17,4 @@
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |U|s|a|g|e| +0#0000000&@58
@75
@75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-@57|3|7|,|1| @9|5|8|%|
+@57|3|5|,|1| @9|5@1|%|
diff --git a/runtime/syntax/testdir/dumps/sh_06_03.dump b/runtime/syntax/testdir/dumps/sh_06_03.dump
index 2f22cde..b4b3a5c 100644
--- a/runtime/syntax/testdir/dumps/sh_06_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_06_03.dump
@@ -1,9 +1,12 @@
-|#+0#0000e05#ffffff0| +0#0000000&@73
-|#+0#0000e05&| |C|r|e|a|t|e| |a| |b|a|c|k|u|p| |u|s|i|n|g| |f|b|a|c|k|u|p|/|f|r|e|c|o|v|e|r| +0#0000000&@34
+| +0&#ffffff0@74
+|#+0#0000e05&@74
+@5| +0#0000000&@69
|#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| |C|r|e|a|t|e| |a| |b|a|c|k|u|p| |u|s|i|n|g| |f|b|a|c|k|u|p|/|f|r|e|c|o|v|e|r| +0#0000000&@34
+>#+0#0000e05&| +0#0000000&@73
|E+0#00e0e07&|x|e|c|u|t|e|F|b|a|c|k|u|p| |(|)| |{| +0#0000000&|#+0#0000e05&| |T|E|S|T|I|N|G| +0#0000000&@45
@75
->[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|D|e|b|u|g|S|c|r|i|p|t|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&@3|&+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|-+0#e000e06&|x| +0#00e0e07&||+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|++0#e000e06&|x| +0#0000000&@33
+|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|D|e|b|u|g|S|c|r|i|p|t|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&@3|&+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|-+0#e000e06&|x| +0#00e0e07&||+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|++0#e000e06&|x| +0#0000000&@33
@75
|c+0#af5f00255&|d| +0#0000000&|$+0#e000e06&|c|w|d| +0#0000000&@67
@75
@@ -14,7 +17,4 @@
@5| +0#0000000&@69
|#+0#0000e05&| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
|a|i|n| |#| +0#0000000&@69
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-@57|5@1|,|1| @9|8|9|%|
+@57|5|2|,|1| @9|8|5|%|
diff --git a/runtime/syntax/testdir/dumps/sh_06_04.dump b/runtime/syntax/testdir/dumps/sh_06_04.dump
new file mode 100644
index 0000000..ceb72b7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_06_04.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
+|a|i|n| |#| +0#0000000&@69
+|#+0#0000e05&@74
+@5| +0#0000000&@69
+|#+0#0000e05&| +0#0000000&@73
+>#+0#0000e05&| |H|e|r|e| |i|s| |t|h|e| |h|e|a|r|t| |o|f| |t|h|i|s| |s|c|r|i|p|t|:| +0#0000000&@39
+|#+0#0000e05&| +0#0000000&@73
+|U|s|a|g|e| @69
+@75
+|#+0#0000e05&| |A|n|d| |e|x|i|t| +0#0000000&@64
+|E|x|i|t| |$+0#e000e06&|R|e|s|u|l|t| +0#0000000&@62
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_06_99.dump b/runtime/syntax/testdir/dumps/sh_06_99.dump
deleted file mode 100644
index b347aad..0000000
--- a/runtime/syntax/testdir/dumps/sh_06_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|c+0#af5f00255&|d| +0#0000000&|$+0#e000e06&|c|w|d| +0#0000000&@67
-@75
-|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |E|x|e|c|u|t|e|F|b|a|c|k|u|p| +0#0000000&@49
-@75
-@75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
-|a|i|n| |#| +0#0000000&@69
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |H|e|r|e| |i|s| |t|h|e| |h|e|a|r|t| |o|f| |t|h|i|s| |s|c|r|i|p|t|:| +0#0000000&@39
-|#+0#0000e05&| +0#0000000&@73
-|U|s|a|g|e| @69
-@75
-|#+0#0000e05&| |A|n|d| |e|x|i|t| +0#0000000&@64
->E|x|i|t| |$+0#e000e06&|R|e|s|u|l|t| +0#0000000&@62
-@57|7|1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_07_01.dump b/runtime/syntax/testdir/dumps/sh_07_01.dump
index 07b0693..dfacae8 100644
--- a/runtime/syntax/testdir/dumps/sh_07_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_01.dump
@@ -1,9 +1,13 @@
-|F+0#00e0e07#ffffff0|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
+|#+0#0000e05#ffffff0| |T|h|i|s| |'|f|o|r| |V|a|r|,| |d|o|,| |d|o|n|e|'| |i|s| |a| |v|e|r|y| |h|a|n|d|y| |s|o|l|u|t|i|o|n| |A|N|D| |n|o| |r|e|a|l| |r|e|p|l|a|c|e|m|e|n|t
+| | +0#0000000&@73
+|#+0#0000e05&| |a|v|a|i|l|a|b|l|e|!| +0#0000000&@62
+|#+0#0000e05&| +0#0000000&@73
+|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
@75
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|*|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o|n|e|\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@49
@75
->f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
+|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
|d+0#af5f00255&|o| +0#0000000&@72
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|d+0#af5f00255&|o|n|e| +0#0000000&@70
@@ -13,8 +17,4 @@
@75
|#+0#0000e05&@74
@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|*| +0#0000000&@46
-|#+0#0000e05&| +0#0000000&@73
-|F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| |{| +0#0000000&@60
-@57|1|9|,|1| @9|1|7|%|
+@57|1|6|,|1| @9|1|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_07_02.dump b/runtime/syntax/testdir/dumps/sh_07_02.dump
index 8e36dde..48e9fbb 100644
--- a/runtime/syntax/testdir/dumps/sh_07_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_02.dump
@@ -1,9 +1,15 @@
-| +0&#ffffff0@74
+|#+0#0000e05#ffffff0@74
+@5| +0#0000000&@69
+|#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|*| +0#0000000&@46
+|#+0#0000e05&| +0#0000000&@73
+>F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| |{| +0#0000000&@60
+@75
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|2|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|*| +0#0000000&@61
|d+0#af5f00255&|o| +0#0000000&@72
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
->d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
+|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
@75
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|2| +0#0000000&@54
@75
@@ -11,10 +17,4 @@
@5| +0#0000000&@69
|#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|@|.| |W|o|r|k|s| |t|h|e| |s|a|m|e| |w|a|y| |a|s| |$|*| +0#0000000&@20
-|#+0#0000e05&| +0#0000000&@73
-|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| |{| +0#0000000&@60
-@75
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|3|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|@| +0#0000000&@61
-|d+0#af5f00255&|o| +0#0000000&@72
-@57|3|7|,|1| @9|4|1|%|
+@57|3|1|,|1| @9|3|4|%|
diff --git a/runtime/syntax/testdir/dumps/sh_07_03.dump b/runtime/syntax/testdir/dumps/sh_07_03.dump
index 4c8ba62..999952e 100644
--- a/runtime/syntax/testdir/dumps/sh_07_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_03.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
+|#+0#0000e05#ffffff0| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|@|.| |W|o|r|k|s| |t|h|e| |s|a|m|e| |w|a|y| |a|s| |$|*| +0#0000000&@20
+|#+0#0000e05&| +0#0000000&@73
+|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| |{| +0#0000000&@60
+@75
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|3|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
+>f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|@| +0#0000000&@61
+|d+0#af5f00255&|o| +0#0000000&@72
+@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
@75
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|3| +0#0000000&@54
@75
->#+0#0000e05&@74
+|#+0#0000e05&@74
@5| +0#0000000&@69
|#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |"|$|@|"|.| |S|p|e|c|i|a|l| |c|a|s|e|.| |W|o|r|k|s| |l|i|k|e| |"|$|1|"| |"|$|2|"| |.@2| +0#0000000&@4
|#+0#0000e05&| +0#0000000&@73
|F+0#00e0e07&|u|n|c|t|i|o|n|4| |(|)| |{| +0#0000000&@60
@75
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|4|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|@|"+0#af5f00255&| +0#0000000&@59
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
-|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
-@75
-|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
-@57|5@1|,|1| @9|6|5|%|
+@57|4|8|,|1| @9|5|6|%|
diff --git a/runtime/syntax/testdir/dumps/sh_07_04.dump b/runtime/syntax/testdir/dumps/sh_07_04.dump
index 4aabca2..d9eea10 100644
--- a/runtime/syntax/testdir/dumps/sh_07_04.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_04.dump
@@ -1,20 +1,20 @@
-|#+0#0000e05#ffffff0@74
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|4|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
+|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|@|"+0#af5f00255&| +0#0000000&@59
+|d+0#af5f00255&|o| +0#0000000&@72
+@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
+>d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
+@75
+|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
+@75
+@75
+|#+0#0000e05&@74
@5| +0#0000000&@69
|#+0#0000e05&| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
|a|i|n| |#| +0#0000000&@69
|#+0#0000e05&@74
@5| +0#0000000&@69
->#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| +0#0000000&@73
|#+0#0000e05&| |H|e|r|e| |i|s| |t|h|e| |h|e|a|r|t| |o|f| |t|h|i|s| |s|c|r|i|p|t|:| +0#0000000&@39
|#+0#0000e05&| +0#0000000&@73
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|P+0#e000002&|r|o|c|e|s@1|i|n|g| |t|h|e| |f|o|l@1|o|w|i|n|g| |c|o|m@1|a|n|d| |l|i|n|e| |a|r|g|u|m|e|n|t|s|:| |$+0#e000e06&|{|*|:+0#af5f00255&|-|n+0#0000000&|o|n|e|}+0#e000e06&|"+0#af5f00255&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|S+0#e000002&|c|r|i|p|t|:| @3|f|o|r| |l|o@1|p| |o|u|t|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@24
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
-|d+0#af5f00255&|o|n|e| +0#0000000&|;| |e+0#af5f00255&|c|h|o| +0#0000000&@63
-@75
-|#+0#0000e05&| |S|a|m|e| |a|s| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
-|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-|F|u|n|c|t|i|o|n|2| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-@57|7|3|,|1| @9|8|9|%|
+@57|6|5|,|1| @9|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/sh_07_99.dump b/runtime/syntax/testdir/dumps/sh_07_05.dump
index 3a4d61d..a3aac77 100644
--- a/runtime/syntax/testdir/dumps/sh_07_99.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_05.dump
@@ -3,7 +3,7 @@
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|S+0#e000002&|c|r|i|p|t|:| @3|f|o|r| |l|o@1|p| |o|u|t|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@24
|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
|d+0#af5f00255&|o| +0#0000000&@72
-@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
+@4>[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|d+0#af5f00255&|o|n|e| +0#0000000&|;| |e+0#af5f00255&|c|h|o| +0#0000000&@63
@75
|#+0#0000e05&| |S|a|m|e| |a|s| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
@@ -16,5 +16,5 @@
|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&|'+0#af5f00255&|-+0#e000002&|g|e| |1| |-|a| |2| |-|g|e|'+0#af5f00255&| +0#0000000&@24
|F|u|n|c|t|i|o|n|1| @65
@75
->e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
-@57|9|3|,|1| @9|B|o|t|
+|e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
+@57|8|0|,|5| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_08_02.dump b/runtime/syntax/testdir/dumps/sh_08_02.dump
index b3289ec..b57af0b 100644
--- a/runtime/syntax/testdir/dumps/sh_08_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_08_02.dump
@@ -1,9 +1,10 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|t|o@1|}+0#e000e06&| +0#0000000&@23
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
@75
|#+0#0000e05&| |C|a|s|e| |1|d|.| |M|o|r|e| |V|a|r|i|a|b|l|e|s| |a|n|d| |C|o|n|s|t|a|n|t|s|.| |S|t|a|r|t|i|n|g| |w|i|t|h| |a| |V|a|r|i|a|b|l|e|.| +0#0000000&@8
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|`|d|a|t|e|`|"+0#af5f00255&| +0#e000002&|&+0#0000000&@1| |u+0#af5f00255&|n|s|e|t| +0#00e0e07&|V|a|r|i|a|b|l|e|A| +0#0000000&@28
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@44
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
+>V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@44
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
@@ -16,5 +17,4 @@
|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@20
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
@75
-|#+0#0000e05&| |C|a|s|e| |1|x|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| +0#0000000&@46
-@57|3|7|,|1| @9|4|9|%|
+@57|3|6|,|1| @9|4|7|%|
diff --git a/runtime/syntax/testdir/dumps/sh_08_03.dump b/runtime/syntax/testdir/dumps/sh_08_03.dump
index 08ebadf..5426188 100644
--- a/runtime/syntax/testdir/dumps/sh_08_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_08_03.dump
@@ -1,9 +1,10 @@
-|#+0#0000e05#ffffff0| |C|a|s|e| |1|x|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| +0#0000000&@46
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |1|x|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| +0#0000000&@46
|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|`|d|a|t|e|`|"+0#af5f00255&| +0#e000002&|&+0#0000000&@1| |u+0#af5f00255&|n|s|e|t| +0#00e0e07&|V|a|r|i|a|b|l|e|A| +0#0000000&@28
|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t|}+0#e000e06&| +0#0000000&@44
|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t|}+0#e000e06&| +0#0000000&@38
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@35
->:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@28
+>:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@35
+|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@28
|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@28
@75
|#+0#0000e05&| |C|a|s|e| |1|y|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| |a|n|d| |w|i|t|h|o|u|t| |t|h|e| |'|:|'| |i|n| |t|h|e| |p|a|r|a|m|e|t|e|r| |s|u|b|s|t|i|t|u|t
@@ -15,6 +16,5 @@
|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@29
|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@29
@75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-@57|5@1|,|1| @9|7|5|%|
+|#+0#0000e05&@71|@+0#4040ff13&@2
+| +0#0000000&@56|5|4|,|1| @9|7|3|%|
diff --git a/runtime/syntax/testdir/dumps/sh_08_04.dump b/runtime/syntax/testdir/dumps/sh_08_04.dump
index 6f77aaf..dbdc472 100644
--- a/runtime/syntax/testdir/dumps/sh_08_04.dump
+++ b/runtime/syntax/testdir/dumps/sh_08_04.dump
@@ -1,9 +1,12 @@
-|#+0#0000e05#ffffff0| |T|h|i|s| |a|r|e| |v|a|l|i|d| |u|s|a|g|e|s| |f|o|r| |$|{|V|a|r|:|?|}| |i|n| |k|s|h|!| +0#0000000&@30
+|#+0#0000e05#ffffff0@74
+@5| +0#0000000&@69
|#+0#0000e05&| +0#0000000&@73
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@26
+|#+0#0000e05&| |T|h|i|s| |a|r|e| |v|a|l|i|d| |u|s|a|g|e|s| |f|o|r| |$|{|V|a|r|:|?|}| |i|n| |k|s|h|!| +0#0000000&@30
+|#+0#0000e05&| +0#0000000&@73
+>V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@26
|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@14
@75
->:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@34
+|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@34
|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@22
@75
|e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
@@ -14,7 +17,4 @@
@8|e+0#af5f00255&|x|i|t| +0#0000000&|1+0#e000002&| +0#0000000&@60
|f+0#af5f00255&|i| +0#0000000&@72
|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|3|,|1| @9|B|o|t|
+| +0#0000000&@56|7|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_08_99.dump b/runtime/syntax/testdir/dumps/sh_08_99.dump
deleted file mode 100644
index 26007b1..0000000
--- a/runtime/syntax/testdir/dumps/sh_08_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |T|h|i|s| |a|r|e| |v|a|l|i|d| |u|s|a|g|e|s| |f|o|r| |$|{|V|a|r|:|?|}| |i|n| |k|s|h|!| +0#0000000&@30
-|#+0#0000e05&| +0#0000000&@73
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@26
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@14
-@75
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@34
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@22
-@75
-|e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
-@75
-|#+0#0000e05&| |M|i|c|h|a|e|l| |S|o|u|l|i|e|r| +0#0000000&@57
-|i+0#af5f00255&|f| |[| +0#0000000&|$+0#e000e06&|#| +0#0000000&|-+0#af5f00255&|n|e| +0#0000000&|1+0#e000002&| +0#0000000&|]+0#af5f00255&|;| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@53
-@8|e+0#af5f00255&|c|h|o| +0#e000002&|w|h|a|t|e|v|e|r| +0#0000000&@53
-@8|e+0#af5f00255&|x|i|t| +0#0000000&|1+0#e000002&| +0#0000000&@60
->f+0#af5f00255&|i| +0#0000000&@72
-@57|8|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_09_99.dump b/runtime/syntax/testdir/dumps/sh_09_99.dump
deleted file mode 100644
index b97cfa3..0000000
--- a/runtime/syntax/testdir/dumps/sh_09_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0|!|/|b|i|n|/|d|a|s|h| +0#0000000&@63
-|#+0#0000e05&| |T|e|s|t| |f|i|l|e| |f|o|r| |v|i|m| |t|h|e| |c|h|e|c|k| |(|)| |s|u|b|s|h|e|l@1|s| +0#0000000&@32
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|1| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@50
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|}| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@48
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|-|.+0#0000000&|}+0#e000e06&| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |s+0#af5f00255&|e|d| +0#0000000&|-+0#e000e06&|e| +0#0000000&|'+0#af5f00255&|s+0#e000002&|!|$|!|/|!|'+0#af5f00255&| +0#0000000&|-+0#e000e06&|e| +0#0000000&|'+0#af5f00255&|s+0#e000002&|!|/@1|*|$|!|/|!|'+0#af5f00255&| +0#0000000&@20
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|+|.+0#0000000&|}+0#e000e06&| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|=|.+0#0000000&|}+0#e000e06&| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|?|}+0#e000e06&| @1|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|H|O|M|E| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@47
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|H|O|M|E|}| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|H|O|M|E|}| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@52
-|(|(+0#e000e06&|n+0#00e0e07&|=+0#0000000&|1+0#e000002&|+|2|)+0#e000e06&|)+0#ffffff16#ff404010| +0#0000000#ffffff0@65
->l+0#af5f00255&|e|t| +0#0000000&|n+0#00e0e07&|=+0#0000000&|1+0#e000002&|++0#0000000&|2+0#e000002&| +0#0000000&@65
-|:|r|e|d|r|a|w| @49|1|9|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/sh_10_99.dump b/runtime/syntax/testdir/dumps/sh_10_99.dump
deleted file mode 100644
index f97ea32..0000000
--- a/runtime/syntax/testdir/dumps/sh_10_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|p+0#af5f00255&|r|i|n|t|f| +0#0000000&|'+0#af5f00255&|%+0#e000002&|s|'+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |t|w|e|l|v|e| @6|}|"+0#af5f00255&| +0#0000000&@24
-@8|u+0#00e0e07&|n|l|u|c|k|y|=+0#0000000&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |t|h|i|r|t|e@1|n| +0#0000000&@36
-|}+0#e000e06&| +0#0000000&@73
-@8|t+0#af5f00255&|y|p|e|s|e|t| +0#0000000&|n+0#00e0e07&|o|t|a|f|l|o|a|t|=+0#0000000&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |n|o|t|a|n|u|m|b|e|r| @5|}| +0#0000000&@17
-@8|p+0#af5f00255&|r|i|n|t| +0#e000002&|$+0#e000e06&|u|n|l|u|c|k|y| +0#e000002&|$+0#e000e06&|n|o|t|a|n|u|m|b|e|r| +0#0000000&@40
-@8|$+0#e000e06&|{|||e+0#af5f00255&|c|h|o| +0#e000002&|f|o@1|}+0#e000e06&| +0#0000000&@54
-@8|$+0#e000e06&|{|||e+0#af5f00255&|c|h|o| +0#e000002&|b|a|r| +0#0000000&@55
-|}+0#e000e06&| +0#0000000&@73
-|f+0#af5f00255&|i| +0#0000000&@72
-@75
-|#+0#0000e05&| |=@5| +0#0000000&@66
-|#+0#0000e05&| |S|h|a|r|e|d|-|s|t|a|t|e| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n|s| |u|s|i|n|g| |t|h|e| |s|y|n|t|a|x| |$|{|<|f|i|l|e|;|}| +0#0000000&@11
-|#+0#0000e05&| |a|r|e| |o|n|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |k|s|h|9|3|,| |n|o|t| |m|k|s|h|.| +0#0000000&@34
-|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{| +0#0000000&@67
-| +0#e000e06&@7|p+0#af5f00255&|r|i|n|t|f| +0#e000e06&|%|s| |s|t|r| +0#0000000&@53
-|}+0#e000e06&| +0#e000002&|>+0#af5f00255&| +0#0000000&|/|t|m|p|/|s|t|r|f|i|l|e| @58
-|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{|<+0#af5f00255&|/+0#e000e06&|t|m|p|/|s|t|r|f|i|l|e|;|}| +0#0000000&@52
-@75
->e+0#af5f00255&|x|i|t| +0#0000000&|0+0#e000002&| +0#0000000&@68
-@57|4|9|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/sh_11_01.dump b/runtime/syntax/testdir/dumps/sh_11_01.dump
new file mode 100644
index 0000000..083e422
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_11_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&@67
+@4|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&@63
+@2|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |p|a|r|e|n| |e|r@1|o|r|!| +0#0000000&@56
+@75
+>f+0#af5f00255&|i| +0#0000000&@72
+@75
+|~+0#4040ff13&| @73
+|~| @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/sh_11_99.dump b/runtime/syntax/testdir/dumps/sh_11_99.dump
deleted file mode 100644
index 9612dab..0000000
--- a/runtime/syntax/testdir/dumps/sh_11_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|#+0#0000e05&| |I|s@1|u|e| |#|9|6|2| +0#0000000&@62
-@75
-|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&@69
-@2|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&@65
-|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |o|k| +0#0000000&@68
-@75
-|i+0#af5f00255&|f| |t|r|u|e|;| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@61
-@75
-@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |o|k| +0#0000000&@54
-@75
-@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |o|k| +0#0000000&@52
-@75
-@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&@67
-@4|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&@63
-@2|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |p|a|r|e|n| |e|r@1|o|r|!| +0#0000000&@56
-@75
-|f+0#af5f00255&|i| +0#0000000&@72
-> @74
-@57|2|0|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_00.dump b/runtime/syntax/testdir/dumps/vim9_comment_00.dump
index 46d283f..de9798d 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_00.dump
@@ -13,7 +13,7 @@
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
|d+0#af5f00255&|e|f|!| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@64
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@75
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_01.dump b/runtime/syntax/testdir/dumps/vim9_comment_01.dump
index d596208..736d47d 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_01.dump
@@ -1,16 +1,16 @@
| +0&#ffffff0@74
|d+0#af5f00255&|e|f|!| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@64
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
> @74
|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|-+0#af5f00255&|c+0#e000e06&|o|u|n|t| +0#0000000&|F|o@1|C|o|m@1|a|n|d| |{+0#e000e06&| +0#0000000&@47
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
|}+0#e000e06&| +0#0000000&@73
@75
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
|}+0#e000e06&| +0#0000000&@73
@75
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_03.dump b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
index 0e424ab..8a0fda8 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
@@ -5,7 +5,7 @@
|#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
> @74
|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
+@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
@18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
@75
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_99.dump b/runtime/syntax/testdir/dumps/vim9_comment_99.dump
deleted file mode 100644
index bed55bc..0000000
--- a/runtime/syntax/testdir/dumps/vim9_comment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|:|F|o@1| @70
-@6|#+0#0000e05&|\| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |c|o|m@1|e|n|t| +0#0000000&@40
-@6|\+0#e000e06&| +0#0000000&|a|r|g|1| @62
-@6|#+0#0000e05&|\| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |c|o|m@1|e|n|t| +0#0000000&@40
-@6|\+0#e000e06&| +0#0000000&|a|r|g|2| @62
-@75
-@75
-|#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
-@75
-|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
-@18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-@75
-|#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1@1|3|0|7| |a|n|d| |#|1@1|5|6|0| +0#0000000&@48
-@75
->#+0#0000e05&| |T|h|i|s| |i|s| |w|h|a|t| |w|e| |c|a|l@1| |"| |b|l|a|h| +0#0000000&@45
-@57|6|4|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump
new file mode 100644
index 0000000..d681dcf
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_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| |E|x| |c|o|m@1|a|n|d|s| +0#0000000&@56
+@75
+|#+0#0000e05&| |S|T|A|R|T| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@55
+|:|@| @72
+|:|@+0#e000e06&@1| +0#0000000&@71
+|:|N|e|x|t| @69
+|:|X| @72
+|#+0#0000e05&| |E|N|D| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@57
+@75
+|:|h+0#af5f00255&|e|l|p| +0#0000000&@69
+@1|:|h+0#af5f00255&|e|l|p| +0#0000000&@68
+|:| |h+0#af5f00255&|e|l|p| +0#0000000&@68
+@1|:| |h+0#af5f00255&|e|l|p| +0#0000000&@67
+@75
+|:|2+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+|:|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+|:|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@63
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump
new file mode 100644
index 0000000..58ba6ab
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0| |h+0#af5f00255&|e|l|p| +0#0000000&@68
+@1|:| |h+0#af5f00255&|e|l|p| +0#0000000&@67
+@75
+|:|2+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+|:|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+>:|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@63
+|:|a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@66
+|:|a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@64
+|:|a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@65
+|:|a+0#af5f00255&|l@1| +0#0000000&@70
+|:|a+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|a|d@1| +0#0000000&@67
+|:|a+0#af5f00255&|r|g|d|e|d|u|p|e| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|d|e|l|e|t|e| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|d|o| +0#0000000&@68
+|:|a+0#af5f00255&|r|g|e|d|i|t| +0#0000000&@66
+|:|a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@65
+@57|1|9|,|1| @10|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump
new file mode 100644
index 0000000..3f62aaa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@65
+|:|a+0#af5f00255&|r|g|s| +0#0000000&@69
+|:|a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@65
+|:|a+0#af5f00255&|s|c|i@1| +0#0000000&@68
+|:|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| @62
+>:|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @62
+|:|a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@66
+|:|b+0#af5f00255&|a|d@1| +0#0000000&@69
+|:|b+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|b+0#af5f00255&|a|l|t| +0#0000000&@69
+|:|b+0#af5f00255&|d|e|l|e|t|e| +0#0000000&@66
+|:|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@61
+|:|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@61
+|:|b+0#af5f00255&|e|l|o|w|r|i|g|h|t| +0#0000000&@63
+|:|b+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|b+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@64
+|:|b+0#af5f00255&|n|e|x|t| +0#0000000&@68
+@57|3|7|,|1| @10|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump
new file mode 100644
index 0000000..1109775
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|b+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|b+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@65
+|:|b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|b+0#af5f00255&|r|e|a|k| +0#0000000&@68
+>:|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@65
+|:|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@65
+|:|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@64
+|:|b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|b+0#af5f00255&|r|o|w|s|e| +0#0000000&@67
+|:|b+0#af5f00255&|u|f|d|o| +0#0000000&@68
+|:|b+0#af5f00255&|u|f@1|e|r| +0#0000000&@67
+|:|b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@66
+|:|b+0#af5f00255&|u|n|l|o|a|d| +0#0000000&@66
+|:|b+0#af5f00255&|w|i|p|e|o|u|t| +0#0000000&@65
+|:|c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@66
+|:|c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@65
+|:|c+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
+|:|c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
+@57|5@1|,|1| @10|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump
new file mode 100644
index 0000000..085cec5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
+|:|c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@65
+|:|c+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
+|:|c+0#af5f00255&|a|f|t|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|a|l@1| +0#0000000&@69
+>:|c+0#af5f00255&|a|t|c|h| +0#0000000&@68
+|:|c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@66
+|:|c+0#af5f00255&|b|e|l|o|w| +0#0000000&@67
+|:|c+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@66
+|:|c+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:|c+0#af5f00255&@1| +0#0000000&@71
+|:|c+0#af5f00255&@1|l|o|s|e| +0#0000000&@67
+|:|c+0#af5f00255&|d| +0#0000000&@71
+|:|c+0#af5f00255&|d|o| +0#0000000&@70
+|:|c+0#af5f00255&|e|n|t|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|e|x|p|r| +0#0000000&@68
+|:|c+0#af5f00255&|f|d|o| +0#0000000&@69
+|:|c+0#af5f00255&|f|i|l|e| +0#0000000&@68
+|:|c+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+@57|7|3|,|1| @10|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump
new file mode 100644
index 0000000..f8e1f28
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@63
+|:|c+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@65
+|:|c+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@65
+|:|c+0#af5f00255&|h|a|n|g|e|s| +0#0000000&@66
+>:|c+0#af5f00255&|h|d|i|r| +0#0000000&@68
+|:|c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@64
+|:|c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@64
+|:|c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
+|:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
+|:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
+|:|c+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@63
+|:|c+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
+|:|c+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|c+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+@57|9|1|,|1| @10|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump
new file mode 100644
index 0000000..6e027fa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|c+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|c+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
+|:|c+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
+>:|c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
+|:|c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|c+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|c+0#af5f00255&|o|l|d|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@62
+|:|c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@65
+|:|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&@66
+|:|c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@65
+|:|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@66
+|:|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@65
+|:|c+0#af5f00255&|o|p|e|n| +0#0000000&@68
+|:|c+0#af5f00255&|o|p|y| +0#0000000&@69
+|:|c+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+@57|1|0|9|,|1| @9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump
new file mode 100644
index 0000000..f608f04
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+|:|c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|c+0#af5f00255&|q|u|i|t| +0#0000000&@68
+|:|c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|c+0#af5f00255&|s|c|o|p|e| +0#0000000&@67
+>:|c+0#af5f00255&|s|t|a|g| +0#0000000&@68
+|:|c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@64
+|:|c+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|c+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|c+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@66
+|:|d+0#af5f00255&|e|b|u|g| +0#0000000&@68
+|:|d+0#af5f00255&|e|b|u|g@1|r|e@1|d|y| +0#0000000&@62
+|:|d+0#af5f00255&|e|f| +0#0000000&@70
+|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
+|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
+|:|d+0#af5f00255&|e|f|e|r| +0#0000000&@68
+|:|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
+|:|d+0#af5f00255&|e|l|e|t|e| +0#0000000&@67
+|:|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@62
+@57|1|2|7|,|1| @8|1|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump
new file mode 100644
index 0000000..f1bf864
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@62
+|:|d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@65
+|:|d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@64
+>:|d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@64
+|:|d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@65
+|:|d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@63
+|:|d+0#af5f00255&|i|g|r|a|p|h|s| +0#0000000&@65
+|:|d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@62
+|:|d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@62
+|:|d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&@66
+|:|d+0#af5f00255&|j|u|m|p| +0#0000000&@68
+|:|d+0#af5f00255&|l| +0#0000000&@71
+|:|d+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@64
+|:|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+|:|d+0#af5f00255&|p| +0#0000000&@71
+@57|1|4|5|,|1| @8|1@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump
new file mode 100644
index 0000000..b2ede40
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|d+0#af5f00255&|p| +0#0000000&@71
+|:|d+0#af5f00255&|r|o|p| +0#0000000&@69
+|:|d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+|:|d+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@66
+>:|e+0#af5f00255&|c|h|o| +0#0000000&@69
+|:|e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@62
+|:|e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@66
+|:|e+0#af5f00255&|c|h|o|h|l| +0#0000000&@67
+|:|e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@66
+|:|e+0#af5f00255&|c|h|o|n| +0#0000000&@68
+|:|e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@63
+|:|e+0#af5f00255&|d|i|t| +0#0000000&@69
+|:|e+0#af5f00255&|l|s|e| +0#0000000&@69
+|:|e+0#af5f00255&|l|s|e|i|f| +0#0000000&@67
+|:|e+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
+|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
+|:|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
+@57|1|6|3|,|1| @8|1|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump
new file mode 100644
index 0000000..adebc5c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@66
+|:|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@62
+|:|e+0#af5f00255&|n|d|i|f| +0#0000000&@68
+>:|e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@61
+|:|e+0#af5f00255&|n|d|t|r|y| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@65
+|:|e+0#af5f00255&|n|e|w| +0#0000000&@69
+|:|e+0#af5f00255&|n|u|m| +0#0000000&@69
+|:|e+0#af5f00255&|v|a|l| +0#0000000&@69
+|:|e+0#af5f00255&|x| +0#0000000&@71
+|:|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@66
+|:|e+0#af5f00255&|x|i|t| +0#0000000&@69
+|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
+|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
+|:|e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@66
+|:|f+0#af5f00255&|i|l|e| +0#0000000&@69
+|:|f+0#af5f00255&|i|l|e|s| +0#0000000&@68
+@57|1|8|1|,|1| @8|1|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
new file mode 100644
index 0000000..5664d9f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|f+0#af5f00255&|i|l|e|s| +0#0000000&@68
+|:|f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@65
+|:|f+0#af5f00255&|i|l|t|e|r| +0#0000000&@67
+|:|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
+|:|f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@66
+>:|f+0#af5f00255&|i|n|d| +0#0000000&@69
+|:|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@67
+|:|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
+|:|f+0#af5f00255&|i|x|d|e|l| +0#0000000&@67
+|:|f+0#af5f00255&|o|l|d| +0#0000000&@69
+|:|f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@64
+|:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
+|:|f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@63
+|:|f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@65
+|:|f+0#af5f00255&|o|r| +0#0000000&@70
+|:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@65
+|:|g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@62
+|:|g+0#af5f00255&|o|t|o| +0#0000000&@69
+|:|g+0#af5f00255&|r|e|p| +0#0000000&@69
+@57|1|9@1|,|1| @8|1|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump
new file mode 100644
index 0000000..c6a778d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|g+0#af5f00255&|r|e|p| +0#0000000&@69
+|:|g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@66
+|:|g+0#af5f00255&|u|i| +0#0000000&@70
+|:|g+0#af5f00255&|v|i|m| +0#0000000&@69
+|:|h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@65
+>:|h+0#af5f00255&|e|l|p| +0#0000000&@69
+|:|h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@64
+|:|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@65
+|:|h+0#af5f00255&|i|d|e| +0#0000000&@69
+|:|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@64
+|:|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@66
+|:|h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@63
+|:|i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@66
+|:|i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@65
+|:|i+0#af5f00255&|f| +0#0000000&@71
+|:|i+0#af5f00255&|j|u|m|p| +0#0000000&@68
+|:|i+0#af5f00255&|l|i|s|t| +0#0000000&@68
+@57|2|1|7|,|1| @8|1|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump
new file mode 100644
index 0000000..273be39
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|i+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|i+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|i+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
+>:|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
+|:|i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@64
+|:|i+0#af5f00255&|n|t|r|o| +0#0000000&@68
+|:|i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+|:|i+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@64
+|:|i+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|i+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|j+0#af5f00255&|o|i|n| +0#0000000&@69
+|:|j+0#af5f00255&|u|m|p|s| +0#0000000&@68
+|:|k+0#af5f00255&| +0#0000000&@72
+|:|k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@66
+@57|2|3|5|,|1| @8|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump
new file mode 100644
index 0000000..22125b7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@66
+|:|k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@64
+|:|k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@64
+|:|k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@61
+|:|l+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
+>:|l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
+|:|l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@65
+|:|l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
+|:|l+0#af5f00255&|a|f|t|e|r| +0#0000000&@67
+|:|l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@65
+|:|l+0#af5f00255&|a|s|t| +0#0000000&@69
+|:|l+0#af5f00255&|a|t|e|r| +0#0000000&@68
+|:|l+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@66
+|:|l+0#af5f00255&|b|e|l|o|w| +0#0000000&@67
+|:|l+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@66
+|:|l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:|l+0#af5f00255&|c|d| +0#0000000&@70
+|:|l+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
+|:|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+@57|2|5|3|,|1| @8|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump
new file mode 100644
index 0000000..bf6bb90
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+|:|l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
+|:|l+0#af5f00255&|d|o| +0#0000000&@70
+|:|l+0#af5f00255&|e|f|t| +0#0000000&@69
+|:|l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@64
+>:|l+0#af5f00255&|e|g|a|c|y| +0#0000000&@67
+|:|l+0#af5f00255&|e|x|p|r| +0#0000000&@68
+|:|l+0#af5f00255&|f|d|o| +0#0000000&@69
+|:|l+0#af5f00255&|f|i|l|e| +0#0000000&@68
+|:|l+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|l+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@63
+|:|l+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@65
+|:|l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@65
+|:|l+0#af5f00255&|g|r|e|p| +0#0000000&@68
+|:|l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@65
+|:|l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@64
+|:|l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
+|:|l+0#af5f00255&|i|s|t| +0#0000000&@69
+|:|l+0#af5f00255&@1| +0#0000000&@71
+@57|2|7|1|,|1| @8|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump
new file mode 100644
index 0000000..39040dc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&@1| +0#0000000&@71
+|:|l+0#af5f00255&@1|a|s|t| +0#0000000&@68
+|:|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
+|:|l+0#af5f00255&|m|a|k|e| +0#0000000&@68
+|:|l+0#af5f00255&|m|a|p| +0#0000000&@69
+>:|l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|l+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+|:|l+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|l+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|l+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
+|:|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
+|:|l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|#+0#0000e05&| |:|l|o|a|d|k|e|y|m|a|p| |#| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@33
+|:|l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@65
+|:|l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@64
+|:|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@66
+|:|l+0#af5f00255&|o|l|d|e|r| +0#0000000&@67
+|:|l+0#af5f00255&|o|p|e|n| +0#0000000&@68
+|:|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+@57|2|8|9|,|1| @8|2|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump
new file mode 100644
index 0000000..0caa855
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+|:|l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|l+0#af5f00255&|s| +0#0000000&@71
+|:|l+0#af5f00255&|t|a|g| +0#0000000&@69
+>:|l+0#af5f00255&|u|a| +0#0000000&@70
+|:|l+0#af5f00255&|u|a|d|o| +0#0000000&@68
+|:|l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@66
+|:|l+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@65
+|:|l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@62
+|:|l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@66
+|:|m+0#af5f00255&|a|k|e| +0#0000000&@69
+|:|m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@65
+|:|m+0#af5f00255&|a|p| +0#0000000&@70
+|:|m+0#af5f00255&|a|r|k| +0#0000000&@69
+|:|m+0#af5f00255&|a|r|k|s| +0#0000000&@68
+|:|m+0#af5f00255&|a|t|c|h| +0#0000000&@68
+|:|m+0#af5f00255&|e|n|u| +0#0000000&@69
+@57|3|0|7|,|1| @8|2|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump
new file mode 100644
index 0000000..cd568a5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|m+0#af5f00255&|e|n|u| +0#0000000&@69
+|:|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@60
+|:|m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@65
+|:|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
+|:|m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@64
+>:|m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@66
+|:|m+0#af5f00255&|k|v|i|e|w| +0#0000000&@67
+|:|m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@66
+|:|m+0#af5f00255&|o|v|e| +0#0000000&@69
+|:|m+0#af5f00255&|z|f|i|l|e| +0#0000000&@67
+|:|m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@65
+|:|n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@66
+|:|n+0#af5f00255&|b|k|e|y| +0#0000000&@68
+|:|n+0#af5f00255&|b|s|t|a|r|t| +0#0000000&@66
+|:|n+0#af5f00255&|e|w| +0#0000000&@70
+|:|n+0#af5f00255&|e|x|t| +0#0000000&@69
+|:|n+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
+@57|3|2|5|,|1| @8|2|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump
new file mode 100644
index 0000000..d0d4e5d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@65
+|:|n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@64
+|:|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+|:|n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@63
+>:|n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@63
+|:|n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@66
+|:|n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@65
+|:|n+0#af5f00255&|o|r|m|a|l| +0#0000000&@67
+|:|n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@63
+|:|n+0#af5f00255&|u|m|b|e|r| +0#0000000&@67
+|:|n+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|n+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|o+0#af5f00255&|l|d|f|i|l|e|s| +0#0000000&@65
+|:|o+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|o+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|o+0#af5f00255&|n|l|y| +0#0000000&@69
+|:|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+@57|3|4|3|,|1| @8|2|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump
new file mode 100644
index 0000000..387c0b4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
+|:|o+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+>:|o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@64
+|:|p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@66
+|:|p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@62
+|:|p+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+|:|p+0#af5f00255&|e|d|i|t| +0#0000000&@68
+|:|p+0#af5f00255&|e|r|l| +0#0000000&@69
+|:|p+0#af5f00255&|e|r|l|d|o| +0#0000000&@67
+|:|p+0#af5f00255&|o|p| +0#0000000&@70
+|:|p+0#af5f00255&|o|p|u|p| +0#0000000&@68
+|:|p+0#af5f00255&@1|o|p| +0#0000000&@69
+|:|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
+|:|p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@65
+|:|p+0#af5f00255&|r|i|n|t| +0#0000000&@68
+|:|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@66
+@57|3|6|1|,|1| @8|2|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump
new file mode 100644
index 0000000..b79a1e6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@66
+|:|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@66
+|:|p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@63
+|:|p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@63
+|:|p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+>:|p+0#af5f00255&|t|a|g| +0#0000000&@69
+|:|p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@66
+|:|p+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
+|:|p+0#af5f00255&|t|l|a|s|t| +0#0000000&@67
+|:|p+0#af5f00255&|t|n|e|x|t| +0#0000000&@67
+|:|p+0#af5f00255&|t|N|e|x|t| +0#0000000&@67
+|:|p+0#af5f00255&|t|p|r|e|v|i|o|u|s| +0#0000000&@63
+|:|p+0#af5f00255&|t|r|e|w|i|n|d| +0#0000000&@65
+|:|p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@65
+|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
+|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
+|:|p+0#af5f00255&|u|t| +0#0000000&@70
+|:|p+0#af5f00255&|w|d| +0#0000000&@70
+|:|p+0#af5f00255&|y|3| +0#0000000&@70
+@57|3|7|9|,|1| @8|3|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump
new file mode 100644
index 0000000..b6248da
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|p+0#af5f00255&|y|3| +0#0000000&@70
+|:|p+0#af5f00255&|y|3|d|o| +0#0000000&@68
+|:|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
+|:|p+0#af5f00255&|y|d|o| +0#0000000&@69
+|:|p+0#af5f00255&|y|f|i|l|e| +0#0000000&@67
+>:|p+0#af5f00255&|y|t|h|o|n| +0#0000000&@67
+|:|p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@66
+|:|p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@66
+|:|p+0#af5f00255&|y|x| +0#0000000&@70
+|:|p+0#af5f00255&|y|x|d|o| +0#0000000&@68
+|:|p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@66
+|:|q+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|q+0#af5f00255&|u|i|t| +0#0000000&@69
+|:|q+0#af5f00255&|u|i|t|a|l@1| +0#0000000&@66
+|:|r+0#af5f00255&|e|a|d| +0#0000000&@69
+|:|r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@66
+|:|r+0#af5f00255&|e|d|i|r| +0#0000000&@68
+|:|r+0#af5f00255&|e|d|o| +0#0000000&@69
+|:|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
+@57|3|9|7|,|1| @8|3|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump
new file mode 100644
index 0000000..039284c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
+|:|r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@61
+|:|r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@60
+|:|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
+|:|r+0#af5f00255&|e|s|i|z|e| +0#0000000&@67
+>:|r+0#af5f00255&|e|t|a|b| +0#0000000&@68
+|:|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@67
+|:|r+0#af5f00255&|e|w|i|n|d| +0#0000000&@67
+|:|r+0#af5f00255&|i|g|h|t| +0#0000000&@68
+|:|r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@63
+|:|r+0#af5f00255&|u|b|y| +0#0000000&@69
+|:|r+0#af5f00255&|u|b|y|d|o| +0#0000000&@67
+|:|r+0#af5f00255&|u|b|y|f|i|l|e| +0#0000000&@65
+|:|r+0#af5f00255&|u|n|d|o| +0#0000000&@68
+|:|r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@66
+|:|r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
+|:|s+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@66
+|:|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
+@57|4|1|5|,|1| @8|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump
new file mode 100644
index 0000000..0995e43
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
+|:|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
+|:|s+0#af5f00255&|b|a|l@1| +0#0000000&@68
+|:|s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@66
+|:|s+0#af5f00255&|b|l|a|s|t| +0#0000000&@67
+>:|s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@63
+|:|s+0#af5f00255&|b|n|e|x|t| +0#0000000&@67
+|:|s+0#af5f00255&|b|N|e|x|t| +0#0000000&@67
+|:|s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@63
+|:|s+0#af5f00255&|b|r|e|w|i|n|d| +0#0000000&@65
+|:|s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@59
+|:|s+0#af5f00255&|c|r|i|p|t|n|a|m|e|s| +0#0000000&@62
+|:|s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@60
+|:|s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
+|:|s+0#af5f00255&|e|t| +0#0000000&@70
+|:|s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@62
+|:|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@64
+|:|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
+@57|4|3@1|,|1| @8|3|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump
new file mode 100644
index 0000000..cb1c9d2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
+|:|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
+|:|s+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|s+0#af5f00255&|h|e|l@1| +0#0000000&@68
+|:|s+0#af5f00255&|i|g|n| +0#0000000&@69
+>:|s+0#af5f00255&|i|l|e|n|t| +0#0000000&@67
+|:|s+0#af5f00255&|i|m|a|l|t| +0#0000000&@67
+|:|s+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|s+0#af5f00255&|l|e@1|p| +0#0000000&@68
+|:|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@67
+|:|s+0#af5f00255&|m|a|g|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|s+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|s+0#af5f00255&|m|i|l|e| +0#0000000&@68
+|:|s+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+@57|4|5|1|,|1| @8|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump
new file mode 100644
index 0000000..3d40709
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|s+0#af5f00255&|o|r|t| +0#0000000&@69
+|:|s+0#af5f00255&|o|u|r|c|e| +0#0000000&@67
+|:|s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@64
+>:|s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@62
+|:|s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@63
+|:|s+0#af5f00255&|p|l|i|t| +0#0000000&@68
+|:|s+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|s+0#af5f00255&|t|a|g| +0#0000000&@69
+|:|s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@60
+|:|s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@62
+|:|s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@61
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+@57|4|6|9|,|1| @8|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump
new file mode 100644
index 0000000..42e8ed3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
+|:|s+0#af5f00255&|t|o|p| +0#0000000&@69
+|:|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
+>:|s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@65
+|:|s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@63
+|:|s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@66
+|:|s+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@66
+|:|s+0#af5f00255&|v|i|e|w| +0#0000000&@68
+|:|s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@65
+|:|s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@65
+|:|s+0#af5f00255&|y|n|t|a|x| +0#0000000&@67
+|:|s+0#af5f00255&|y|n|t|i|m|e| +0#0000000&@66
+|:|t+0#af5f00255&|a|b| +0#0000000&@70
+|:|t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@65
+|:|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
+@57|4|8|7|,|1| @8|3|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump
new file mode 100644
index 0000000..d501862
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@65
+|:|t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@66
+>:|t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|n|e|w| +0#0000000&@67
+|:|t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@62
+|:|t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@64
+|:|t+0#af5f00255&|a|b|s| +0#0000000&@69
+|:|t+0#af5f00255&|a|g| +0#0000000&@70
+|:|t+0#af5f00255&|a|g|s| +0#0000000&@69
+|:|t+0#af5f00255&|c|d| +0#0000000&@70
+|:|t+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
+|:|t+0#af5f00255&|c|l| +0#0000000&@70
+|:|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
+@57|5|0|5|,|1| @8|4|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump
new file mode 100644
index 0000000..a4fe905
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@66
+|:|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
+|:|t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@65
+|:|t+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+>:|t+0#af5f00255&|h|r|o|w| +0#0000000&@68
+|:|t+0#af5f00255&|j|u|m|p| +0#0000000&@68
+|:|t+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|t+0#af5f00255&|l|m|e|n|u| +0#0000000&@67
+|:|t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@63
+|:|t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@65
+|:|t+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|t+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|t+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|t+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@66
+|:|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+@57|5|2|3|,|1| @8|4|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump
new file mode 100644
index 0000000..1d8015a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|r|y| +0#0000000&@70
+|:|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
+|:|t+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+>:|t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|t+0#af5f00255&|y|p|e| +0#0000000&@69
+|:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
+|:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
+|:|u+0#af5f00255&|n|d|o| +0#0000000&@69
+|:|u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@65
+|:|u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@65
+|:|u+0#af5f00255&|n|h|i|d|e| +0#0000000&@67
+|:|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&@64
+|:|u+0#af5f00255&|n|m|a|p| +0#0000000&@68
+|:|u+0#af5f00255&|n|m|e|n|u| +0#0000000&@67
+|:|u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@65
+|:|u+0#af5f00255&|p|d|a|t|e| +0#0000000&@67
+|:|v+0#af5f00255&|a|r| +0#0000000&@70
+@57|5|4|1|,|1| @8|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump
new file mode 100644
index 0000000..d4daaca
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|v+0#af5f00255&|a|r| +0#0000000&@70
+|:|v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
+|:|v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@61
+>:|v+0#af5f00255&|i|e|w| +0#0000000&@69
+|:|v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@66
+|#+0#0000e05&| |:|v|i|m|9|s|c|r|i|p|t| +0#0000000&@61
+|:|v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@66
+|:|v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@63
+|:|v+0#af5f00255&|i|s|u|a|l| +0#0000000&@67
+|:|v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@66
+|:|v+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|v+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|v+0#af5f00255&|n|e|w| +0#0000000&@69
+|:|v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+@57|5@1|9|,|1| @8|4|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump
new file mode 100644
index 0000000..499f3da
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|w+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|w+0#af5f00255&|h|i|l|e| +0#0000000&@68
+>:|w+0#af5f00255&|i|n|c|m|d| +0#0000000&@67
+|:|w+0#af5f00255&|i|n|d|o| +0#0000000&@68
+|:|w+0#af5f00255&|i|n|p|o|s| +0#0000000&@67
+|:|w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@66
+|:|w+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|w+0#af5f00255&|q| +0#0000000&@71
+|:|w+0#af5f00255&|q|a|l@1| +0#0000000&@68
+|:|w+0#af5f00255&|r|i|t|e| +0#0000000&@68
+|:|w+0#af5f00255&|u|n|d|o| +0#0000000&@68
+|:|w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
+|:|x+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|x+0#af5f00255&|m|a|p| +0#0000000&@69
+@57|5|7@1|,|1| @8|4|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump
new file mode 100644
index 0000000..7ac1072
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|x+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|x+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+>:|x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@65
+|:|x+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|y+0#af5f00255&|a|n|k| +0#0000000&@69
+|:|z+0#af5f00255&| +0#0000000&@72
+@75
+|F|o@1|(+0#e000e06&|)||+0#0000000&|h+0#af5f00255&|e|l|p| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&|||h+0#af5f00255&|e|l|p| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)||+0#0000000&| |h+0#af5f00255&|e|l|p| +0#0000000&@63
+@75
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |2+0#af5f00255&|m|a|t|c|h| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |3+0#af5f00255&|m|a|t|c|h| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@56
+@57|5|9|5|,|1| @8|4|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump
new file mode 100644
index 0000000..259d457
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|l@1| +0#0000000&@63
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|a|d@1| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|e|d|u|p|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|e|l|e|t|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|e|d|i|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|s| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|s|c|i@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| ||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @41
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+@57|6|1|3|,|1| @8|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump
new file mode 100644
index 0000000..3fb5032
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|d@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l|t| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|d|e|l|e|t|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|l|o|w|r|i|g|h|t| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@58
+@57|6|3|1|,|1| @8|5|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump
new file mode 100644
index 0000000..9431275
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|o|w|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f|d|o| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|n|l|o|a|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|w|i|p|e|o|u|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|o|v|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|f|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@59
+@57|6|4|9|,|1| @8|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump
new file mode 100644
index 0000000..da8635d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|l|o|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&@1| +0#0000000&@64
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&@1|l|o|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d|o| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|n|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|x|p|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e|s| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|d|i|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@57
+@57|6@1|7|,|1| @8|5|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump
new file mode 100644
index 0000000..6c4b4c9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|o|s|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|w|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+@57|6|8|5|,|1| @8|5|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump
new file mode 100644
index 0000000..ec8610e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|d|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@58
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|e|n| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|y| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|q|u|i|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|c|o|p|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@57
+@57|7|0|3|,|1| @8|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump
new file mode 100644
index 0000000..7e09720
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g@1|r|e@1|d|y| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|e|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|e|t|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@57
+@57|7|2|1|,|1| @8|5|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump
new file mode 100644
index 0000000..f9fd2c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|g|r|a|p|h|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@55
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|j|u|m|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|p| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|r|o|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|p|l|i|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@55
+@57|7|3|9|,|1| @8|6|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump
new file mode 100644
index 0000000..e2bded9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|h|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|n| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e|i|f| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@60
+@57|7|5|7|,|1| @8|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
new file mode 100644
index 0000000..4687bc4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|e|w| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|u|m| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|i|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|s| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|d| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@60
+@57|7@1|5|,|1| @8|6|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
new file mode 100644
index 0000000..0d4ee69
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|r|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|x|d|e|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@57
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|o|t|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|u|i| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|v|i|m| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@57
+@57|7|9|3|,|1| @8|6|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump
new file mode 100644
index 0000000..ed46723
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|d|e| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|f| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|j|u|m|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|l|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+@57|8|1@1|,|1| @8|6@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump
new file mode 100644
index 0000000..7a519ee
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|r|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@59
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|o|i|n| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|u|m|p|s| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|b|o|v|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@58
+@57|8|2|9|,|1| @8|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump
new file mode 100644
index 0000000..c6e9fbe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|s|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|t|e|r| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|l|o|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|d| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|h|d|i|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|l|o|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|d|o| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|g|a|c|y| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@62
+@57|8|4|7|,|1| @8|6|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump
new file mode 100644
index 0000000..0069011
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@58
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|i|s|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|k|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|w|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@61
+@57|8|6|5|,|1| @8|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump
new file mode 100644
index 0000000..2222220
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+>#+0#0000e05&| |F|o@1|(|)| ||| |l|o|a|d|k|e|y|m|a|p| |#| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@26
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|l|d|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|p|e|n| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|s| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|t|a|g| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@59
+@57|8@1|3|,|1| @8|7|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump
new file mode 100644
index 0000000..4e38fbc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@59
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|k|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|v|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k|s| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|t|c|h| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|e|x|r|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@60
+@57|9|0|1|,|1| @8|7|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump
new file mode 100644
index 0000000..413a19e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@59
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|k|e|y| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|s|t|a|r|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|w| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|x|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@58
+@57|9|1|9|,|1| @8|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump
new file mode 100644
index 0000000..4a48f67
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|m|a|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|l|d|f|i|l|e|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|l|y| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@55
+@57|9|3|7|,|1| @8|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump
new file mode 100644
index 0000000..904af14
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|d|i|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l|d|o| +0#0000000&@60
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p|u|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&@1|o|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|i|n|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|a|g| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@60
+@57|9|5@1|,|1| @8|7|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump
new file mode 100644
index 0000000..13bf876
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|l|a|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|n|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|N|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|p|r|e|v|i|o|u|s| +0#0000000&@56
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|r|e|w|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|t| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|w|d| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@59
+@57|9|7|3|,|1| @8|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump
new file mode 100644
index 0000000..1566106
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|a|l@1| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t|a|l@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|a|d| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|i|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|s|i|z|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|a|b| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@60
+@57|9@1|1|,|1| @8|8|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump
new file mode 100644
index 0000000..252e0db
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|d|o| +0#0000000&@60
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|v|e|a|s| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|a|l@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|l|a|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|n|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@60
+@57|1|0@1|9|,|1| @7|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump
new file mode 100644
index 0000000..ea46840
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|r|e|w|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@52
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|n|a|m|e|s| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|n|d| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|h|e|l@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|g|n| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|l|e|n|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|m|a|l|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|a|s|t| +0#0000000&@61
+@57|1|0|2|7|,|1| @7|8|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump
new file mode 100644
index 0000000..3ca8140
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p|!| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|g|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|r|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|u|r|c|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@57
+@57|1|0|4|5|,|1| @7|8|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump
new file mode 100644
index 0000000..361e7a8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|l|i|t| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|g| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|j|u|m|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@59
+@57|1|0|6|3|,|1| @7|8|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump
new file mode 100644
index 0000000..c643b3a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|v|i|e|w| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|a|x| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|i|m|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@59
+@57|1|0|8|1|,|1| @7|8|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump
new file mode 100644
index 0000000..d024fa5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@57
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|s| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g|s| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|d| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|h|d|i|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|j|u|m|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@61
+@57|1|0|9@1|,|1| @7|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump
new file mode 100644
index 0000000..10f3bcc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|y| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|y|p|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@54
+@57|1@2|7|,|1| @7|9|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump
new file mode 100644
index 0000000..890f79f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@58
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|h|i|d|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|a|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|e|n|u| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|p|d|a|t|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@59
+|#+0#0000e05&| |c|a|l@1| |F|o@1|(|)| ||| |v|i|m|9|s|c|r|i|p|t| +0#0000000&@49
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@59
+@57|1@1|3|5|,|1| @7|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump
new file mode 100644
index 0000000..11db98b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|s|u|a|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|e|w| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|s|p|l|i|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|r|i|t|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@61
+@57|1@1|5|3|,|1| @7|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump
new file mode 100644
index 0000000..3640a53
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q|a|l@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|u|n|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+@57|1@1|7|1|,|1| @7|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump
new file mode 100644
index 0000000..465500e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@65
+@75
+@75
+>#+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |o|n|l|y| +0#0000000&@54
+@75
+|:|P|r|i|n|t| @68
+|:+0#af5f00255&|a|p@1|e|n|d| +0#0000000&@67
+| +0#e000002&@3|t|e|x|t| +0#0000000&@66
+|.+0#af5f00255&| +0#0000000&@73
+|:+0#af5f00255&|c|h|a|n|g|e| +0#0000000&@67
+| +0#e000002&@3|t|e|x|t| +0#0000000&@66
+|.+0#af5f00255&| +0#0000000&@73
+|:+0#af5f00255&|i|n|s|e|r|t| +0#0000000&@67
+| +0#e000002&@3|t|e|x|t| +0#0000000&@66
+|.+0#af5f00255&| +0#0000000&@73
+|:|k+0#af5f00255&| +0#0000000&@72
+|:|l+0#af5f00255&|e|t| +0#0000000&@70
+@57|1@1|8|9|,|1| @7|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump
new file mode 100644
index 0000000..0292dd4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&|e|t| +0#0000000&@70
+|:|m+0#af5f00255&|o|d|e| +0#0000000&@69
+|:|o+0#af5f00255&|p|e|n| +0#0000000&@69
+|:|t+0#af5f00255&| +0#0000000&@72
+|:|u+0#af5f00255&|n|l|e|t| +0#0000000&@68
+>:|x+0#af5f00255&|i|t| +0#0000000&@70
+@75
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @60
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e| +0#0000000&@60
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i|n|s|e|r|t| @60
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&| +0#0000000&@65
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|t| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@62
+@57|1|2|0|7|,|1| @7|9@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump
new file mode 100644
index 0000000..1e90095
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|e|n| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&| +0#0000000&@65
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|e|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|5|,|0|-|1| @5|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump
index ef9f580..b36eb62 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump
@@ -10,11 +10,11 @@
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@75
|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
|}+0#e000e06&| +0#0000000&@73
@75
@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
index 72a7dfb..1fd26e6 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
@@ -1,11 +1,11 @@
|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@68
@75
|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
|}+0#e000e06&| +0#0000000&@73
> @74
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
|}+0#e000e06&| +0#0000000&@73
|~+0#4040ff13&| @73
|~| @73
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump
deleted file mode 100644
index efaf53b..0000000
--- a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|t|r|u|e| +0#0000000&@20
-@75
-|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump
new file mode 100644
index 0000000..04f643d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_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| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t| |e|r@1|o|r|s| +0#0000000&@29
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump
new file mode 100644
index 0000000..cb7caf5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+>e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+@57|1|9|,|1| @9|5|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump
new file mode 100644
index 0000000..e74df67
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&| +0#0000000&@54
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@50
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|5| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump
new file mode 100644
index 0000000..b6ed490
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_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| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t|s| +0#0000000&@35
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump
new file mode 100644
index 0000000..6cb37d1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+>e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+@57|1|9|,|1| @9|5|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump
new file mode 100644
index 0000000..7df9e8f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&| +0#0000000&@54
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@50
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|5| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump
index d1bc96c..9e6247a 100644
--- a/runtime/syntax/testdir/dumps/vim9_keymap_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump
@@ -1,10 +1,10 @@
>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
@75
-|#+0#0000e05&| |V|i|m| |K|e|y|m|a|p| |f|i|l|e| |f|o|r| |s|y|n|t|a|x| |t|e|s|t|i|n|g| +0#0000000&@38
+|#+0#0000e05&| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| +0#0000000&@49
@75
|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
@75
-|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@45
@75
|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@64
@75
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump
index 1d0823f..1d0823f 100644
--- a/runtime/syntax/testdir/dumps/vim9_keymap_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
index 191b9f2..9708525 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
@@ -10,11 +10,11 @@
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@75
|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
|}+0#e000e06&| +0#0000000&@73
@75
@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
index ef54148..bde4dbc 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
@@ -1,11 +1,11 @@
|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@68
@75
|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
|}+0#e000e06&| +0#0000000&@73
> @74
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
|}+0#e000e06&| +0#0000000&@73
|~+0#4040ff13&| @73
|~| @73
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump
deleted file mode 100644
index c384e74..0000000
--- a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|f|a|l|s|e| +0#0000000&@19
-@75
-|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_99.dump b/runtime/syntax/testdir/dumps/vim9_keymap_99.dump
deleted file mode 100644
index 8afcbba..0000000
--- a/runtime/syntax/testdir/dumps/vim9_keymap_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-@2|#+0#0000e05&| |A|n|o|t|h|e|r| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@50
-@75
-|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
-|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
-@75
-|#+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| +0#0000000&@65
-@75
-|#+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@43
-|\|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@14|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-|"| |“| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
-@1|e|n|t| +0#0000000&@70
->:| |#| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-@57|2|6|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
deleted file mode 100644
index 27ff90e..0000000
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|(+0#e000e06&|'+0#e000002&|v|i|m|9|s|c|r|i|p|t|'|)+0#e000e06&| +0#0000000&@53
-@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
-@2|s+0#af5f00255&|o|u|r|c|e| +0#0000000&|f|o@1|.+0#af5f00255&|v|i|m| +0#0000000&@58
-@2|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@66
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-|v+0#af5f00255&|i|m|9|s|c|r|i|p|t| +0#0000000&|n+0#e000e06&|o|c|l|e|a|r| +0#0000000&@56
-@75
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-@1|#+0#0000e05&| |s|t|r|i|n|g| |o|n|l|y| |r|e|c|o|g|n|i|s|e|d| |w|i|t|h| |l|e|a|d|i|n|g| |c|h|a|r| +0#0000000&@31
-@1>"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@57
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|6|,|2| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
deleted file mode 100644
index fe339c4..0000000
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |"| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"|H|"| ||| |s|e|t| |f|d|m|=|s|y|n|t|a|x|-
-|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&|n+0#e000e06&|o|c|l|e|a|r| +0#0000000&@56
-@75
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-@1|#+0#0000e05&| |s|t|r|i|n|g| |o|n|l|y| |r|e|c|o|g|n|i|s|e|d| |w|i|t|h| |l|e|a|d|i|n|g| |c|h|a|r| +0#0000000&@31
-@1>"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@57
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|7|,|2| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim9_shebang_99.dump b/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
deleted file mode 100644
index 71f543e..0000000
--- a/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
-|v+0#af5f00255&|i|m|9|s|c|r|i|p|t| +0#0000000&@64
-@75
-|#+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
-@75
-|#+0#0000e05&| |j|u|s|t| |a| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@53
->#+0#0000e05&|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_comment_03.dump b/runtime/syntax/testdir/dumps/vim_comment_03.dump
index 2d40f6c..70c9519 100644
--- a/runtime/syntax/testdir/dumps/vim_comment_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_03.dump
@@ -2,7 +2,7 @@
|"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
@75
|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
+@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
@18>\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
@75
diff --git a/runtime/syntax/testdir/dumps/vim_comment_99.dump b/runtime/syntax/testdir/dumps/vim_comment_99.dump
deleted file mode 100644
index bb1fbb0..0000000
--- a/runtime/syntax/testdir/dumps/vim_comment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
-@75
-|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
-@18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-@75
-|"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1@1|3|0|7| |a|n|d| |#|1@1|5|6|0| +0#0000000&@48
-@75
-|"+0#0000e05&| |T|h|i|s| |i|s| |w|h|a|t| |w|e| |c|a|l@1| |"| |b|l|a|h| +0#0000000&@45
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#| |#|9|5|8|7| +0#0000000&@59
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|C|o|m@1|e|n|t|T|i|t|l|e|(+0#e000e06&|)| +0#0000000&@56
-| +0#0000e05&@1|#| |T|i|t|l|e|:| |.@2| +0#0000000&@60
->e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@57|6|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump b/runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump
deleted file mode 100644
index 7622ebf..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|a+0#af5f00255#ffffff0|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| |f|o@1|b|a|r| @41
-|c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| |c|f|o@1|b|a|r| @38
-|i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @38
-@75
-|n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| |f|o@1|b|a|r| @44
-|c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| |c|f|o@1|b|a|r| @41
-|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @41
-@75
-|a+0#af5f00255&|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| |f|o@1|b|a|r| @41
-|c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| |c|f|o@1|b|a|r| @38
-|i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @38
-@75
-|u+0#af5f00255&|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| @53
-|c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| @51
-|i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| @51
-@75
-|a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@58
-|c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@57
->i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@57
-@57|2|5|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump b/runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump
deleted file mode 100644
index 1e07f5b..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|a|u|g|r|o|u|p| |c|o|m@1|a|n|d| +0#0000000&@52
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|f|o@1| @63
-@2|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@41
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @63
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|f|o@1| ||| |a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @38
-|a+0#af5f00255&|u|g|r|o|u|p|!| +0#0000000&|f|o@1| @62
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|!|@|#|$|%|^|&|*|(|)|_|+| @54
-@2|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@41
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @63
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|!|@|#|$|%|^|&|*|(|)|_|+| ||| |a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @29
-|a+0#af5f00255&|u|g|r|o|u|p|!| +0#0000000&|!|@|#|$|%|^|&|*|(|)|_|+| @53
-@75
-|"+0#0000e05&| |l|i|s|t| |g|r|o|u|p|s| +0#0000000&@61
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&@67
-> @74
-@57|1|9|,|0|-|1| @7|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump b/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
deleted file mode 100644
index c3fefeb..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |b|e|h|a|v|e| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@62
-|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@62
-@75
-|b+0#af5f00255&|e|h|a|v|e|!| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@61
->b+0#af5f00255&|e|h|a|v|e|!| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@61
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_00.dump b/runtime/syntax/testdir/dumps/vim_ex_call_00.dump
new file mode 100644
index 0000000..117f159
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|c|a|l@1| |c|o|m@1|a|n|d| +0#0000000&@55
+@75
+@75
+|"+0#0000e05&| |f|u|n|c|t|i|o|n|s| |f|o|r| |w|h|i|c|h| |t|h|e|r|e| |a|r|e| |s|a|m|e|-|n|a|m|e|d| |E|x| |c|o|m@1|a|n|d|s| +0#0000000&@20
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|s+0#00e0e07&|a|v|e|,+0#0000000&| |t+0#00e0e07&|i|t|l|e|,+0#0000000&| |i+0#00e0e07&|n|i|t|d|i|r|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|)+0#e000e06&| +0#0000000&@32
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|a|l@1|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|h|d|i|r|(+0#e000e06&|d+0#00e0e07&|i|r|)+0#e000e06&| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|m+0#00e0e07&|s|g|,+0#0000000&| |c+0#00e0e07&|h|o|i|c|e|s|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|,+0#0000000&| |t+0#00e0e07&|y|p|e|)+0#e000e06&| +0#0000000&@33
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|p|y|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|d+0#00e0e07&|e|l|e|t|e|(+0#e000e06&|f+0#00e0e07&|n|a|m|e|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|v|a|l|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|x|e|c|u|t|e|(+0#e000e06&|c+0#00e0e07&|o|m@1|a|n|d|)+0#e000e06&| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|u|n|c|t|i|o|n|(+0#e000e06&|n+0#00e0e07&|a|m|e|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@40
+|c+0#af5f00255&|a|l@1| +0#0000000&|i+0#00e0e07&|n|s|e|r|t|(+0#e000e06&|o+0#00e0e07&|b|j|e|c|t|,+0#0000000&| |i+0#00e0e07&|t|e|m|,+0#0000000&| |i+0#00e0e07&|d|x|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|j+0#00e0e07&|o|i|n|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |s+0#00e0e07&|e|p|)+0#e000e06&| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|e+0#00e0e07&|x|p|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|t|a|r|t|,+0#0000000&| |c+0#00e0e07&|o|u|n|t|)+0#e000e06&| +0#0000000&@39
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_01.dump b/runtime/syntax/testdir/dumps/vim_ex_call_01.dump
new file mode 100644
index 0000000..a32e79e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_01.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|u|n|c|t|i|o|n|(+0#e000e06&|n+0#00e0e07&|a|m|e|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@40
+|c+0#af5f00255&|a|l@1| +0#0000000&|i+0#00e0e07&|n|s|e|r|t|(+0#e000e06&|o+0#00e0e07&|b|j|e|c|t|,+0#0000000&| |i+0#00e0e07&|t|e|m|,+0#0000000&| |i+0#00e0e07&|d|x|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|j+0#00e0e07&|o|i|n|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |s+0#00e0e07&|e|p|)+0#e000e06&| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|e+0#00e0e07&|x|p|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|t|a|r|t|,+0#0000000&| |c+0#00e0e07&|o|u|n|t|)+0#e000e06&| +0#0000000&@39
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|o|d|e|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|o|r|t|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |h+0#00e0e07&|o|w|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|p|l|i|t|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|,+0#0000000&| |p+0#00e0e07&|a|t@1|e|r|n|,+0#0000000&| |k+0#00e0e07&|e@1|p|e|m|p|t|y|)+0#e000e06&| +0#0000000&@36
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@37
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|w|a|p|n|a|m|e|(+0#e000e06&|b+0#00e0e07&|u|f|)+0#e000e06&| +0#0000000&@56
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|b+0#00e0e07&|r|o|w|s|e| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|a|v|e|,+0#0000000&| |t+0#00e0e07&|i|t|l|e|,+0#0000000&| |i+0#00e0e07&|n|i|t|d|i|r|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|)+0#e000e06&| +0#0000000&@31
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|a|l@1| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@43
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|h|d|i|r| +0#0000000&|(+0#e000e06&|d+0#00e0e07&|i|r|)+0#e000e06&| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m| +0#0000000&|(+0#e000e06&|m+0#00e0e07&|s|g|,+0#0000000&| |c+0#00e0e07&|h|o|i|c|e|s|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|,+0#0000000&| |t+0#00e0e07&|y|p|e|)+0#e000e06&| +0#0000000&@32
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|p|y| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|d+0#00e0e07&|e|l|e|t|e| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|n|a|m|e|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|v|a|l| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@56
+@57|1|9|,|1| @9|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_02.dump b/runtime/syntax/testdir/dumps/vim_ex_call_02.dump
new file mode 100644
index 0000000..7306304
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_02.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|e+0#00e0e07&|v|a|l| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|x|e|c|u|t|e| +0#0000000&|(+0#e000e06&|c+0#00e0e07&|o|m@1|a|n|d|)+0#e000e06&| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|i|l|t|e|r| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|(+0#e000e06&|n+0#00e0e07&|a|m|e|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@39
+|c+0#af5f00255&|a|l@1| +0#0000000&|i+0#00e0e07&|n|s|e|r|t| +0#0000000&|(+0#e000e06&|o+0#00e0e07&|b|j|e|c|t|,+0#0000000&| |i+0#00e0e07&|t|e|m|,+0#0000000&| |i+0#00e0e07&|d|x|)+0#e000e06&| +0#0000000&@43
+>c+0#af5f00255&|a|l@1| +0#0000000&|j+0#00e0e07&|o|i|n| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |s+0#00e0e07&|e|p|)+0#e000e06&| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|t|a|r|t|,+0#0000000&| |c+0#00e0e07&|o|u|n|t|)+0#e000e06&| +0#0000000&@38
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|o|d|e| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|o|r|t| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |h+0#00e0e07&|o|w|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@47
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|p|l|i|t| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|,+0#0000000&| |p+0#00e0e07&|a|t@1|e|r|n|,+0#0000000&| |k+0#00e0e07&|e@1|p|e|m|p|t|y|)+0#e000e06&| +0#0000000&@35
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@36
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|w|a|p|n|a|m|e| +0#0000000&|(+0#e000e06&|b+0#00e0e07&|u|f|)+0#e000e06&| +0#0000000&@55
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@64
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|r|g|1|)+0#e000e06&| +0#0000000&@60
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|r|g|1|,+0#0000000&| |a+0#00e0e07&|r|g|2|)+0#e000e06&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|r+0#00e0e07&|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|a|l@1|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@39
+@57|3|7|,|1| @9|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_03.dump b/runtime/syntax/testdir/dumps/vim_ex_call_03.dump
new file mode 100644
index 0000000..857f319
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_03.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|r+0#00e0e07&|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|a|l@1|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@39
+>l+0#af5f00255&|e|t| +0#0000000&|r+0#00e0e07&|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|a|l@1| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@38
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump b/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump
deleted file mode 100644
index 39e47c1..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|c|a|t|c|h| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|"+0#0000e05&| |:|h|e|l|p| |:|c|a|t|c|h| +0#0000000&@60
-@75
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|:|I|n|t|e|r@1|u|p|t|$|/+0#e000e06&| +0#0000000&@8|"+0#0000e05&| |c|a|t|c|h| |i|n|t|e|r@1|u|p|t|s| |(|C|T|R|L|-|C|)| +0#0000000&@15
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|\+0#e000e06&|%|(|(+0#0000000&|\|a|\|+|)|\+0#e000e06&|)|\+0#0000000&|=|:|E|/+0#e000e06&| +0#0000000&@4|"+0#0000e05&| |c|a|t|c|h| |a|l@1| |V|i|m| |e|r@1|o|r|s| +0#0000000&@20
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|\+0#e000e06&|%|(|(+0#0000000&|\|a|\|+|)|\+0#e000e06&|)|\+0#0000000&|=|:|/+0#e000e06&| +0#0000000&@5|"+0#0000e05&| |c|a|t|c|h| |e|r@1|o|r|s| |a|n|d| |i|n|t|e|r@1|u|p|t|s| +0#0000000&@13
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|(|w|r|i|t|e|)|:|/+0#e000e06&| +0#0000000&@11|"+0#0000e05&| |c|a|t|c|h| |a|l@1| |e|r@1|o|r|s| |i|n| |:|w|r|i|t|e| +0#0000000&@14
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|\+0#e000e06&|%|(|(+0#0000000&|\|a|\|+|)|\+0#e000e06&|)|\+0#0000000&|=|:|E|1|2|3|:|/+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|a|t|c|h| |e|r@1|o|r| |E|1|2|3| +0#0000000&@24
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|m+0#0000000&|y|-|e|x|c|e|p|t|i|o|n|/+0#e000e06&| +0#0000000&@11|"+0#0000e05&| |c|a|t|c|h| |u|s|e|r| |e|x|c|e|p|t|i|o|n| +0#0000000&@20
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|.+0#0000000&|*|/+0#e000e06&| +0#0000000&@21|"+0#0000e05&| |c|a|t|c|h| |e|v|e|r|y|t|h|i|n|g| +0#0000000&@24
-|c+0#af5f00255&|a|t|c|h| +0#0000000&@26|"+0#0000e05&| |s|a|m|e| |a|s| |/|.|*|/| +0#0000000&@28
-@75
-|"+0#0000e05&| |:|h|e|l|p| |:|t|r|y| +0#0000000&@62
-@75
-|t+0#af5f00255&|r|y| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&|1+0#e000002&|0@1| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|:|I|n|t|e|r@1|u|p|t|$|/+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@24
->t+0#af5f00255&|r|y| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|(|e|d|i|t|)|:|E|\|d|\|+|/+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|r@1|o|r|"| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@13
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|7|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_99.dump b/runtime/syntax/testdir/dumps/vim_ex_command_99.dump
deleted file mode 100644
index 96cfa16..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_command_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|c|o|m@1|a|n|d| |c|o|m@1|a|n|d| +0#0000000&@52
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|4|1|3|5| +0#0000000&@60
-@75
->c+0#af5f00255&|o|m| +0#0000000&|F|o@1| |c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|y|s|t|e|m|(+0#0000000&|'+0#e000002&|l|s|'|)+0#0000000&| @49
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump
index f280535..fa7c153 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump
@@ -13,8 +13,8 @@
|:|c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@64
|:|c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@64
|:|c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
-|:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
|:|c+0#af5f00255&|l|a|s|t| +0#0000000&@68
|:|c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@63
|:|c+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
@57|9|1|,|1| @10|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump
index 1e7b7b5..d17f509 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|c+0#af5f00255&|l|i|s|t| +0#0000000&@68
-|:|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
+|:+0&#ffffff0|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
|:|c+0#af5f00255&|m|a|p| +0#0000000&@69
|:|c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
|:|c+0#af5f00255&|m|e|n|u| +0#0000000&@68
->:|c+0#af5f00255&|n|e|x|t| +0#0000000&@68
-|:|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|n|e|x|t| +0#0000000&@68
+>:|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
|:|c+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
|:|c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
|:|c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
@@ -17,4 +16,5 @@
|:|c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@65
|:|c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@65
|:|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@66
+|:|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
@57|1|0|9|,|1| @9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump
index e5f9736..f35762b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@66
-|:|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
+|:+0&#ffffff0|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
|:|c+0#af5f00255&|o|p|e|n| +0#0000000&@68
|:|c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
|:|c+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
->:|c+0#af5f00255&|q|u|i|t| +0#0000000&@68
-|:|c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|c+0#af5f00255&|q|u|i|t| +0#0000000&@68
+>:|c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
|:|c+0#af5f00255&|s|c|o|p|e| +0#0000000&@67
|:|c+0#af5f00255&|s|t|a|g| +0#0000000&@68
|:|c+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
@@ -17,4 +16,5 @@
|:|d+0#af5f00255&|e|f| +0#0000000&@70
|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
|:|d+0#af5f00255&|e|f|e|r| +0#0000000&@68
+|:|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
@57|1|2|7|,|1| @8|1|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump
index 2f41043..49fabab 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|d+0#af5f00255&|e|f|e|r| +0#0000000&@68
-|:|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
+|:+0&#ffffff0|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
|:|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@62
|:|d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@65
|:|d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@63
->:|d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@66
-|:|d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@66
+>:|d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@66
|:|d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@64
|:|d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@66
|:|d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@64
@@ -17,4 +16,5 @@
|:|d+0#af5f00255&|l|i|s|t| +0#0000000&@68
|:|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
|:|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@64
+|:|d+0#af5f00255&|p| +0#0000000&@71
@57|1|4|5|,|1| @8|1@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump
index ffe0524..b38d066 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@64
-|:|d+0#af5f00255&|p| +0#0000000&@71
+|:+0&#ffffff0|d+0#af5f00255&|p| +0#0000000&@71
|:|d+0#af5f00255&|r|o|p| +0#0000000&@69
|:|d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
|:|d+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
->:|e+0#af5f00255&|d|i|t| +0#0000000&@69
-|:|e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@66
+|:|e+0#af5f00255&|d|i|t| +0#0000000&@69
+>:|e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@66
|:|e+0#af5f00255&|c|h|o| +0#0000000&@69
|:|e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@62
|:|e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@66
@@ -15,6 +14,7 @@
|:|e+0#af5f00255&|l|s|e| +0#0000000&@69
|:|e+0#af5f00255&|l|s|e|i|f| +0#0000000&@67
|:|e+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
|:|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|i|f| +0#0000000&@68
+|:|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
@57|1|6|3|,|1| @8|1|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump
index 22b28eb..3fb760c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump
@@ -1,15 +1,12 @@
-|:+0&#ffffff0|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
-|:|e+0#af5f00255&|n|d|i|f| +0#0000000&@68
-|:|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
+|:+0&#ffffff0|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
|:|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@62
|:|e+0#af5f00255&|n|d|t|r|y| +0#0000000&@67
->:|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@65
+|:|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@65
|:|e+0#af5f00255&|n|e|w| +0#0000000&@69
-|:|e+0#af5f00255&|v|a|l| +0#0000000&@69
+>:|e+0#af5f00255&|v|a|l| +0#0000000&@69
|:|e+0#af5f00255&|x| +0#0000000&@71
|:|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@66
|:|e+0#af5f00255&|x|i|t| +0#0000000&@69
-|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
|:|e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@66
|:|f+0#af5f00255&|i|l|e| +0#0000000&@69
|:|f+0#af5f00255&|i|l|e|s| +0#0000000&@68
@@ -17,4 +14,7 @@
|:|f+0#af5f00255&|i|l|t|e|r| +0#0000000&@67
|:|f+0#af5f00255&|i|n|d| +0#0000000&@69
|:|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
+|:|f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@66
+|:|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@67
+|:|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
@57|1|8|1|,|1| @8|1|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
index 7b9a19f..fda4e8f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
-|:|f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@66
-|:|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@67
-|:|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
+|:+0&#ffffff0|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
|:|f+0#af5f00255&|i|x|d|e|l| +0#0000000&@67
->:|f+0#af5f00255&|o|l|d| +0#0000000&@69
+|:|f+0#af5f00255&|o|l|d| +0#0000000&@69
|:|f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@64
|:|f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@63
-|:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
+>:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
|:|f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@65
|:|f+0#af5f00255&|o|r| +0#0000000&@70
|:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@65
@@ -17,4 +14,7 @@
|:|g+0#af5f00255&|u|i| +0#0000000&@70
|:|g+0#af5f00255&|v|i|m| +0#0000000&@69
|:|h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p| +0#0000000&@69
+|:|h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@64
+|:|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
@57|1|9@1|,|1| @8|1|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump
index 03c5b96..3cbc546 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@65
-|:|h+0#af5f00255&|e|l|p| +0#0000000&@69
-|:|h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@64
-|:|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
+|:+0&#ffffff0|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
|:|h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@65
->:|h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@65
|:|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@64
|:|h+0#af5f00255&|i|d|e| +0#0000000&@69
-|:|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@66
+>:|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@66
|:|h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@63
|:+0#af5f00255&|i|n|s|e|r|t| +0#0000000&@67
| +0#e000002&@3|t|e|x|t| +0#0000000&@66
@@ -17,4 +14,7 @@
|:|i+0#af5f00255&|j|u|m|p| +0#0000000&@68
|:|i+0#af5f00255&|l|i|s|t| +0#0000000&@68
|:|i+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|i+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
@57|2|1|7|,|1| @8|1|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump
index 5671882..cc114cf 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|i+0#af5f00255&|m|a|p| +0#0000000&@69
-|:|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-|:|i+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
+|:+0&#ffffff0|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
|:|i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
->:|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
+|:|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
|:|i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
|:|i+0#af5f00255&|n|t|r|o| +0#0000000&@68
-|:|i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+>:|i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
|:|i+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
|:|i+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
|:|i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@64
@@ -17,4 +14,7 @@
|:|k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@66
|:|k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@64
|:|k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@64
+|:|k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@61
+|:|l+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
@57|2|3|5|,|1| @8|1|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump
index 1442dfd..9834f72 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@64
-|:|k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@61
-|:|l+0#af5f00255&|N|e|x|t| +0#0000000&@68
-|:|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
+|:+0&#ffffff0|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
|:|l+0#af5f00255&|i|s|t| +0#0000000&@69
->:|l+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
+|:|l+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
|:|l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@65
|:|l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
-|:|l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
+>:|l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
|:|l+0#af5f00255&|a|f|t|e|r| +0#0000000&@67
|:|l+0#af5f00255&|a|s|t| +0#0000000&@69
|:|l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@65
@@ -17,4 +14,7 @@
|:|l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
|:|l+0#af5f00255&|c|d| +0#0000000&@70
|:|l+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-@57|2|5|3|,|1| @8|2|1|%|
+|:|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+|:|l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
+|:|l+0#af5f00255&|d|o| +0#0000000&@70
+@57|2|5|3|,|1| @8|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump
index d72931b..97c287a 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|l+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-|:|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
-|:|l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
-|:|l+0#af5f00255&|d|o| +0#0000000&@70
+|:+0&#ffffff0|l+0#af5f00255&|d|o| +0#0000000&@70
|:|l+0#af5f00255&|f|d|o| +0#0000000&@69
->:|l+0#af5f00255&|e|f|t| +0#0000000&@69
+|:|l+0#af5f00255&|e|f|t| +0#0000000&@69
|:|l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@64
|:|l+0#af5f00255&|e|g|a|c|y| +0#0000000&@67
-|:|l+0#af5f00255&|e|t| +0#0000000&@70
+>:|l+0#af5f00255&|e|t| +0#0000000&@70
|:|l+0#af5f00255&|e|x|p|r| +0#0000000&@68
|:|l+0#af5f00255&|f|i|l|e| +0#0000000&@68
|:|l+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
@@ -17,4 +14,7 @@
|:|l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@65
|:|l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@64
|:|l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
+|:|l+0#af5f00255&@1| +0#0000000&@71
+|:|l+0#af5f00255&@1|a|s|t| +0#0000000&@68
+|:|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
@57|2|7|1|,|1| @8|2@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump
index 31d88a6..cd1fb67 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump
@@ -1,15 +1,12 @@
-|:+0&#ffffff0|l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
-|:|l+0#af5f00255&@1| +0#0000000&@71
-|:|l+0#af5f00255&@1|a|s|t| +0#0000000&@68
-|:|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
+|:+0&#ffffff0|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
|:|l+0#af5f00255&|m|a|k|e| +0#0000000&@68
->:|l+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|l+0#af5f00255&|m|a|p| +0#0000000&@69
|:|l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
|:|l+0#af5f00255&|n|e|x|t| +0#0000000&@68
-|:|l+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+>:|l+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
|:|l+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
|:|l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
-|:|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@63
+|"+0#0000e05&| |:|l|o|a|d|k|e|y|m|a|p| |"| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@33
|:|l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@65
|:|l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@64
|:|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@66
@@ -17,4 +14,7 @@
|:|l+0#af5f00255&|o|p|e|n| +0#0000000&@68
|:|l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
|:|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
-@57|2|8|9|,|1| @8|2|4|%|
+|:|l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|l+0#af5f00255&|s| +0#0000000&@71
+|:|l+0#af5f00255&|t|a|g| +0#0000000&@69
+@57|2|8|9|,|1| @8|2|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump
index 58d654d..38631f0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump
@@ -1,20 +1,20 @@
-|:+0&#ffffff0|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
-|:|l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
-|:|l+0#af5f00255&|s| +0#0000000&@71
-|:|l+0#af5f00255&|t|a|g| +0#0000000&@69
+|:+0&#ffffff0|l+0#af5f00255&|t|a|g| +0#0000000&@69
|:|l+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
->:|l+0#af5f00255&|u|a| +0#0000000&@70
+|:|l+0#af5f00255&|u|a| +0#0000000&@70
|:|l+0#af5f00255&|u|a|d|o| +0#0000000&@68
|:|l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@66
-|:|l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@65
+>:|l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@65
|:|l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@62
|:|l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@66
|:|m+0#af5f00255&|o|v|e| +0#0000000&@69
|:|m+0#af5f00255&|a|r|k| +0#0000000&@69
|:|m+0#af5f00255&|a|k|e| +0#0000000&@69
-|"+0#0000e05&| |r|e|q|u|i|r|e|s| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| |t|o| |d|i|s|t|i|n|g|u|i|s|h| |f|r|o|m| |m|a|p|(|)| +0#0000000&@18
|:|m+0#af5f00255&|a|p| +0#0000000&@70
|:|m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@65
|:|m+0#af5f00255&|a|r|k|s| +0#0000000&@68
|:|m+0#af5f00255&|a|t|c|h| +0#0000000&@68
+|:|m+0#af5f00255&|e|n|u| +0#0000000&@69
+|:|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@60
+|:|m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@65
+|:|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
@57|3|0|7|,|1| @8|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump
index a2539b5..87e4bbe 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|m+0#af5f00255&|a|t|c|h| +0#0000000&@68
-|:|m+0#af5f00255&|e|n|u| +0#0000000&@69
-|:|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@60
-|:|m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@65
-|:|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
->:|m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@64
+|:+0&#ffffff0|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
+|:|m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@64
|:|m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@66
|:|m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@66
|:|m+0#af5f00255&|k|v|i|e|w| +0#0000000&@67
-|:|m+0#af5f00255&|o|d|e| +0#0000000&@69
+>:|m+0#af5f00255&|o|d|e| +0#0000000&@69
|:|m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@65
|:|m+0#af5f00255&|z|f|i|l|e| +0#0000000&@67
|:|n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@66
@@ -17,4 +13,8 @@
|:|n+0#af5f00255&|e|w| +0#0000000&@70
|:|n+0#af5f00255&|m|a|p| +0#0000000&@69
|:|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-@57|3|2|5|,|1| @8|2|7|%|
+|:|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@65
+|:|n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@64
+|:|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+@57|3|2|5|,|1| @8|2|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump
index b7f7203..595230c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-|:|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@65
-|:|n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@64
-|:|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
->:|n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@66
+|:+0&#ffffff0|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+|:|n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@66
|:|n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@63
|:|n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@63
|:|n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@65
-|:|n+0#af5f00255&|o|r|m|a|l| +0#0000000&@67
+>:|n+0#af5f00255&|o|r|m|a|l| +0#0000000&@67
|:|n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@63
|:|n+0#af5f00255&|u|m|b|e|r| +0#0000000&@67
|:|n+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
@@ -17,4 +13,8 @@
|:|o+0#af5f00255&|m|a|p| +0#0000000&@69
|:|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
|:|o+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|o+0#af5f00255&|n|l|y| +0#0000000&@69
+|:|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
@57|3|4|3|,|1| @8|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump
index cedd6ab..a78314f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|o+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|o+0#af5f00255&|n|l|y| +0#0000000&@69
-|:|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
-|:|o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-|:|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
->:|o+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:+0&#ffffff0|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
+|:|o+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
|:|o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
|:|o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@64
|:|p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@66
-|:|p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@62
+>:|p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@62
|:|p+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
|:|p+0#af5f00255&|e|d|i|t| +0#0000000&@68
|:|p+0#af5f00255&|e|r|l| +0#0000000&@69
@@ -17,4 +13,8 @@
|:|p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@63
|:|p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@63
|:|p+0#af5f00255&|e|r|l|d|o| +0#0000000&@67
-@57|3|6|1|,|1| @8|3|0|%|
+|:|p+0#af5f00255&|o|p| +0#0000000&@70
+|:|p+0#af5f00255&|o|p|u|p| +0#0000000&@68
+|:|p+0#af5f00255&@1|o|p| +0#0000000&@69
+|:|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
+@57|3|6|1|,|1| @8|2|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump
index b81c5ee..41608a3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|p+0#af5f00255&|e|r|l|d|o| +0#0000000&@67
-|:|p+0#af5f00255&|o|p| +0#0000000&@70
-|:|p+0#af5f00255&|o|p|u|p| +0#0000000&@68
-|:|p+0#af5f00255&@1|o|p| +0#0000000&@69
-|:|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
->:|p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@65
+|:+0&#ffffff0|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
+|:|p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@65
|:|p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
|:|p+0#af5f00255&|t|a|g| +0#0000000&@69
|:|p+0#af5f00255&|t|N|e|x|t| +0#0000000&@67
-|:|p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@66
+>:|p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@66
|:|p+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
|:|p+0#af5f00255&|t|l|a|s|t| +0#0000000&@67
|:|p+0#af5f00255&|t|n|e|x|t| +0#0000000&@67
@@ -17,4 +13,8 @@
|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
|:|p+0#af5f00255&|u|t| +0#0000000&@70
|:|p+0#af5f00255&|w|d| +0#0000000&@70
+|:|p+0#af5f00255&|y|3| +0#0000000&@70
+|:|p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@66
+|:|p+0#af5f00255&|y|3|d|o| +0#0000000&@68
+|:|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
@57|3|7|9|,|1| @8|3|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump
index 5007492..b9bd8ba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|p+0#af5f00255&|w|d| +0#0000000&@70
-|:|p+0#af5f00255&|y|3| +0#0000000&@70
-|:|p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@66
-|:|p+0#af5f00255&|y|3|d|o| +0#0000000&@68
-|:|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
->:|p+0#af5f00255&|y|t|h|o|n| +0#0000000&@67
+|:+0&#ffffff0|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
+|:|p+0#af5f00255&|y|t|h|o|n| +0#0000000&@67
|:|p+0#af5f00255&|y|d|o| +0#0000000&@69
|:|p+0#af5f00255&|y|f|i|l|e| +0#0000000&@67
|:|p+0#af5f00255&|y|x| +0#0000000&@70
-|:|p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@66
+>:|p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@66
|:|p+0#af5f00255&|y|x|d|o| +0#0000000&@68
|:|p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@66
|:|q+0#af5f00255&|u|i|t| +0#0000000&@69
@@ -17,4 +13,8 @@
|:|r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@66
|:|r+0#af5f00255&|e|d|o| +0#0000000&@69
|:|r+0#af5f00255&|e|d|i|r| +0#0000000&@68
-@57|3|9|7|,|1| @8|3@1|%|
+|:|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
+|:|r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@61
+|:|r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@60
+|:|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
+@57|3|9|7|,|1| @8|3|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump
index 6baf838..0efa896 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|r+0#af5f00255&|e|d|i|r| +0#0000000&@68
-|:|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
-|:|r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@61
-|:|r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@60
-|:|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
->:|r+0#af5f00255&|e|s|i|z|e| +0#0000000&@67
+|:+0&#ffffff0|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
+|:|r+0#af5f00255&|e|s|i|z|e| +0#0000000&@67
|:|r+0#af5f00255&|e|t|a|b| +0#0000000&@68
|:|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@67
|:|r+0#af5f00255&|e|w|i|n|d| +0#0000000&@67
-|:|r+0#af5f00255&|i|g|h|t| +0#0000000&@68
+>:|r+0#af5f00255&|i|g|h|t| +0#0000000&@68
|:|r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@63
|:|r+0#af5f00255&|u|b|y| +0#0000000&@69
|:|r+0#af5f00255&|u|b|y|d|o| +0#0000000&@67
@@ -17,4 +13,8 @@
|:|r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
|:|s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@63
|:|s+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@66
+|:|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
+|:|s+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
@57|4|1|5|,|1| @8|3|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump
index 4c937c2..d066eba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|N|e|x|t| +0#0000000&@68
-|:|s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@66
-|:|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
-|:|s+0#af5f00255&|a|l@1| +0#0000000&@69
-|:|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
->:|s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:+0&#ffffff0|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
+|:|s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
|:|s+0#af5f00255&|b|N|e|x|t| +0#0000000&@67
|:|s+0#af5f00255&|b|a|l@1| +0#0000000&@68
|:|s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@66
-|:|s+0#af5f00255&|b|l|a|s|t| +0#0000000&@67
+>:|s+0#af5f00255&|b|l|a|s|t| +0#0000000&@67
|:|s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@63
|:|s+0#af5f00255&|b|n|e|x|t| +0#0000000&@67
|:|s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@63
@@ -17,4 +13,8 @@
|:|s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@60
|:|s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
|:|s+0#af5f00255&|e|t| +0#0000000&@70
-@57|4|3@1|,|1| @8|3|6|%|
+|:|s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@62
+|:|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@64
+|:|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
+|:|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
+@57|4|3@1|,|1| @8|3|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump
index 6b40f2c..3875533 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|e|t| +0#0000000&@70
-|:|s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@62
-|:|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@64
-|:|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
-|:|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
->:|s+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:+0&#ffffff0|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
+|:|s+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
|:|s+0#af5f00255&|h|e|l@1| +0#0000000&@68
|:|s+0#af5f00255&|i|m|a|l|t| +0#0000000&@67
|:|s+0#af5f00255&|i|g|n| +0#0000000&@69
-|:|s+0#af5f00255&|i|l|e|n|t| +0#0000000&@67
+>:|s+0#af5f00255&|i|l|e|n|t| +0#0000000&@67
|:|s+0#af5f00255&|l|e@1|p| +0#0000000&@68
|:|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@67
|:|s+0#af5f00255&|l|a|s|t| +0#0000000&@68
@@ -17,4 +13,8 @@
|:|s+0#af5f00255&|m|e|n|u| +0#0000000&@68
|:|s+0#af5f00255&|m|i|l|e| +0#0000000&@68
|:|s+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|s+0#af5f00255&|o|r|t| +0#0000000&@69
@57|4|5|1|,|1| @8|3|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump
index f388e4f..0d8a2d2 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|n|e|x|t| +0#0000000&@68
-|:|s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@65
-|:|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
-|:|s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-|:|s+0#af5f00255&|o|r|t| +0#0000000&@69
->:|s+0#af5f00255&|o|u|r|c|e| +0#0000000&@67
+|:+0&#ffffff0|s+0#af5f00255&|o|r|t| +0#0000000&@69
+|:|s+0#af5f00255&|o|u|r|c|e| +0#0000000&@67
|:|s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@64
|:|s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@64
|:|s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@64
-|:|s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@64
+>:|s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@64
|:|s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@62
|:|s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@64
|:|s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@63
@@ -17,4 +13,8 @@
|:|s+0#af5f00255&|t|o|p| +0#0000000&@69
|:|s+0#af5f00255&|t|a|g| +0#0000000&@69
|:|s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@62
-@57|4|6|9|,|1| @8|3|9|%|
+|:|s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@60
+|:|s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@61
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
+@57|4|6|9|,|1| @8|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump
index c2bba89..448d363 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@62
-|:|s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@60
-|:|s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@61
-|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
-|:|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
->:|s+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
+|:+0&#ffffff0|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
+|:|s+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
|:|s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@65
|:|s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@66
|:|s+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
-|:|s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+>:|s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
|:|s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@66
|:|s+0#af5f00255&|v|i|e|w| +0#0000000&@68
|:|s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@65
@@ -17,4 +13,8 @@
|:|t+0#af5f00255&| +0#0000000&@72
|:|t+0#af5f00255&|N|e|x|t| +0#0000000&@68
|:|t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@65
+|:|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
@57|4|8|7|,|1| @8|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump
index f575c6f..add5257 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@66
-|:|t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@65
-|:|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
-|:|t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@66
-|:|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
->:|t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@65
+|:+0&#ffffff0|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@65
|:|t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@66
|:|t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@66
|:|t+0#af5f00255&|a|b|n|e|w| +0#0000000&@67
-|:|t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@66
+>:|t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@66
|:|t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@66
|:|t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@62
|:|t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@64
@@ -17,4 +13,8 @@
|:|t+0#af5f00255&|a|g|s| +0#0000000&@69
|:|t+0#af5f00255&|c|d| +0#0000000&@70
|:|t+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-@57|5|0|5|,|1| @8|4|2|%|
+|:|t+0#af5f00255&|c|l| +0#0000000&@70
+|:|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@66
+|:|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
+@57|5|0|5|,|1| @8|4|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump
index 261cf89..d5e29e4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|t+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-|:|t+0#af5f00255&|c|l| +0#0000000&@70
-|:|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
-|:|t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@66
-|:|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
->:|t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@65
+|:+0&#ffffff0|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
+|:|t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@65
|:|t+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
|:|t+0#af5f00255&|h|r|o|w| +0#0000000&@68
|:|t+0#af5f00255&|j|u|m|p| +0#0000000&@68
-|:|t+0#af5f00255&|l|a|s|t| +0#0000000&@68
+>:|t+0#af5f00255&|l|a|s|t| +0#0000000&@68
|:|t+0#af5f00255&|l|m|e|n|u| +0#0000000&@67
|:|t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@63
|:|t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@65
@@ -17,4 +13,8 @@
|:|t+0#af5f00255&|n|e|x|t| +0#0000000&@68
|:|t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
|:|t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@66
+|:|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|r|y| +0#0000000&@70
+|:|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
@57|5|2|3|,|1| @8|4|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump
index d00225d..89aa266 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@66
-|:|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
-|:|t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
-|:|t+0#af5f00255&|r|y| +0#0000000&@70
-|:|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
->:|t+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:+0&#ffffff0|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
+|:|t+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
|:|t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
|:|u+0#af5f00255&|n|d|o| +0#0000000&@69
|:|u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@65
-|:|u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@65
+>:|u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@65
|:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
|:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
|:|u+0#af5f00255&|n|h|i|d|e| +0#0000000&@67
@@ -17,4 +13,8 @@
|:|u+0#af5f00255&|n|m|e|n|u| +0#0000000&@67
|:|u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@65
|:|u+0#af5f00255&|p|d|a|t|e| +0#0000000&@67
-@57|5|4|1|,|1| @8|4|5|%|
+|:|v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@61
+|:|v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
+@57|5|4|1|,|1| @8|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump
index 3711988..6aab2b3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump
@@ -1,15 +1,9 @@
-|:+0&#ffffff0|u+0#af5f00255&|p|d|a|t|e| +0#0000000&@67
-|:|v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@61
-|:|v+0#af5f00255&|a|r| +0#0000000&@70
-|:|v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@66
-|:|v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@66
->:|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
+|:+0&#ffffff0|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
|:|v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@66
-|"+0#0000e05&| |:|v|i|m|9|s|c|r|i|p|t| +0#0000000&@61
|:|v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@66
|:|v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@63
|:|v+0#af5f00255&|i|s|u|a|l| +0#0000000&@67
-|:|v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@66
+>:|v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@66
|:|v+0#af5f00255&|i|e|w| +0#0000000&@69
|:|v+0#af5f00255&|m|a|p| +0#0000000&@69
|:|v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
@@ -17,4 +11,10 @@
|:|v+0#af5f00255&|n|e|w| +0#0000000&@69
|:|v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
|:|v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-@57|5@1|9|,|1| @8|4|7|%|
+|:|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|w+0#af5f00255&|i|n|d|o| +0#0000000&@68
+|:|w+0#af5f00255&|r|i|t|e| +0#0000000&@68
+|:|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
+@57|5@1|9|,|1| @8|4|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump
index 25eecd9..9e2f45d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump
@@ -1,15 +1,9 @@
-|:+0&#ffffff0|v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-|:|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
-|:|v+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
-|:|v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
-|:|w+0#af5f00255&|i|n|d|o| +0#0000000&@68
->:|w+0#af5f00255&|r|i|t|e| +0#0000000&@68
-|:|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:+0&#ffffff0|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
|:|w+0#af5f00255&|a|l@1| +0#0000000&@69
|:|w+0#af5f00255&|h|i|l|e| +0#0000000&@68
|:|w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@66
|:|w+0#af5f00255&|i|n|c|m|d| +0#0000000&@67
-|:|w+0#af5f00255&|i|n|p|o|s| +0#0000000&@67
+>:|w+0#af5f00255&|i|n|p|o|s| +0#0000000&@67
|:|w+0#af5f00255&|n|e|x|t| +0#0000000&@68
|:|w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
|:|w+0#af5f00255&|q| +0#0000000&@71
@@ -17,4 +11,10 @@
|:|w+0#af5f00255&|u|n|d|o| +0#0000000&@68
|:|w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
|:|x+0#af5f00255&|i|t| +0#0000000&@70
-@57|5|7@1|,|1| @8|4|8|%|
+|:|x+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|x+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|x+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@65
+|:|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+@57|5|7@1|,|1| @8|4|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
index 1339b80..6b423d0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
@@ -1,15 +1,9 @@
-|:+0&#ffffff0|x+0#af5f00255&|i|t| +0#0000000&@70
-|:|x+0#af5f00255&|a|l@1| +0#0000000&@69
-|:|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-|:|x+0#af5f00255&|m|a|p| +0#0000000&@69
-|:|x+0#af5f00255&|m|e|n|u| +0#0000000&@68
->:|x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@65
-|:|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:+0&#ffffff0|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
|:|x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
|:|x+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
|:|x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
|:|y+0#af5f00255&|a|n|k| +0#0000000&@69
-|:|z+0#af5f00255&| +0#0000000&@72
+>:|z+0#af5f00255&| +0#0000000&@72
@75
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)||+0#0000000&|h+0#af5f00255&|e|l|p| +0#0000000&@59
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@57
@@ -17,4 +11,10 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)||+0#0000000&| |h+0#af5f00255&|e|l|p| +0#0000000&@58
@75
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |2+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
-@57|5|9|5|,|1| @8|5|0|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |3+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
+|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @55
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
+@57|5|9|5|,|1| @8|4|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump
index 2c442cb..ced1b52 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |2+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |3+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
-|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @55
-@4|t|e|x|t| @66
->.+0#af5f00255&| +0#0000000&@73
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|l@1| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|s| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|a|d@1| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|e|d|u|p|e| +0#0000000&@52
@@ -17,4 +11,10 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|e|d|i|t| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|o| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@52
-@57|6|1|3|,|1| @8|5|1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|s|c|i@1| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| ||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @36
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+@57|6|1|3|,|1| @8|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump
index fcc0eb0..c8fa150 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|s|c|i@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| ||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @36
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|N|e|x|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l@1| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|d@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l|t| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l|t| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|d|e|l|e|t|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@49
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@49
@@ -17,4 +11,10 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|l|a|s|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@52
-@57|6|3|1|,|1| @8|5|3|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@53
+@57|6|3|1|,|1| @8|5|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
index 816aed4..2b0c603 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|o|w|s|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|n|l|o|a|d| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|w|i|p|e|o|u|t| +0#0000000&@53
|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
@@ -17,4 +11,10 @@
@4|t|e|x|t| @66
|.+0#af5f00255&| +0#0000000&@73
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@56
-@57|6|4|9|,|1| @8|5|4|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
+@57|6|4|9|,|1| @8|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump
index 4e7a780..83f1290 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|l@1| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|l|o|w| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
@@ -17,4 +11,10 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&@1|l|o|s|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d| +0#0000000&@59
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d|o| +0#0000000&@58
-@57|6@1|7|,|1| @8|5|6|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|n|t|e|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|x|p|r| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|l|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
+@57|6@1|7|,|1| @8|5@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump
index 51f5a8c..0fba9d4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d|o| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|d|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|n|t|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|x|p|r| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|l|e| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e|s| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|d|i|r| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|i|s|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|o|s|e| +0#0000000&@56
-@57|6|8|5|,|1| @8|5|7|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+@57|6|8|5|,|1| @8|5|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump
index 35d89fb..d494887 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|o|s|e| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|x|t| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|y| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|d|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@50
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|s|t| +0#0000000&@56
-@57|7|0|3|,|1| @8|5|9|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|e|n| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|q|u|i|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|c|o|p|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@56
+@57|7|0|3|,|1| @8|5|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump
index a4c2e52..9179c26 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|e|n| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|q|u|i|t| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|c|o|p|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|e|t|e| +0#0000000&@55
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|e|t|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g@1|r|e@1|d|y| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|e|r| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@51
-@57|7|2|1|,|1| @8|6|0|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@54
+@57|7|2|1|,|1| @8|5|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump
index f9fb600..7394fba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|g|r|a|p|h|s| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@50
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|j|u|m|p| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l| +0#0000000&@59
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l|i|s|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|p| +0#0000000&@59
-@57|7|3|9|,|1| @8|6|2|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|r|o|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@50
+@57|7|3|9|,|1| @8|6|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump
index 12db3d0..6e0b583 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|p| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|r|o|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@50
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|h|l| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|n| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@51
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e|i|f| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@56
-@57|7|5|7|,|1| @8|6|3|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|e|w| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@54
+@57|7|5|7|,|1| @8|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
index fd68f59..e8b1090 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|e|w| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|i|t| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|s| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|t|e|r| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|d| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@54
-@57|7@1|5|,|1| @8|6|5|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|r|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|x|d|e|l| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
+@57|7@1|5|,|1| @8|6|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump
index 34a09b1..bac0a9c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|r|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|x|d|e|l| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|o|t|o| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|u|i| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|v|i|m| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@57
-@57|7|9|3|,|1| @8|6@1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|d|e| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@51
+|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+@57|7|9|3|,|1| @8|6|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
index 25f608e..6d71599 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|d|e| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@51
-|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+|"+0#0000e05#ffffff0| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i|n|s|e|r|t| @55
@4|t|e|x|t| @66
|.+0#af5f00255&| +0#0000000&@73
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|f| +0#0000000&@59
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|j|u|m|p| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|l|i|s|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p| +0#0000000&@57
-@57|8|1@1|,|1| @8|6|8|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|p|o|r|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|r|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+@57|8|1@1|,|1| @8|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump
index 662461b..d5fe918 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|p|o|r|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|r|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|o|i|n| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|u|m|p|s| +0#0000000&@56
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|u|m|p|s| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&| +0#0000000&@60
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@52
-@57|8|2|9|,|1| @8|6|9|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|i|s|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
+@57|8|2|9|,|1| @8|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump
index 48dcb9c..b66d1b7 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|i|s|t| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|s|t| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|t|e|r| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|l|o|w| +0#0000000&@55
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|l|o|w| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|d| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-@57|8|4|7|,|1| @8|7|1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|d|o| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|g|a|c|y| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|t| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@56
+@57|8|4|7|,|1| @8|7|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump
index 6952669..08980e1 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|d|o| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|g|a|c|y| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|l|e| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@53
-@57|8|6|5|,|1| @8|7|3|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|a|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|i|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|k|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
+@57|8|6|5|,|1| @8|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump
index 3f47c96..c2052da 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|a|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|i|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|k|e| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@51
+|"+0#0000e05&| |c|a|l@1| |F|o@1|(|)| ||| |l|o|a|d|k|e|y|m|a|p| |"| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@21
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|l|d|e|r| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|p|e|n| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
-@57|8@1|3|,|1| @8|7|4|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|s| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|t|a|g| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@50
+@57|8@1|3|,|1| @8|7|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump
index 01a8246..529c91d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|s| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|t|a|g| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@50
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|v|e| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|k|e| +0#0000000&@57
-|"+0#0000e05&| |r|e|q|u|i|r|e|s| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| |t|o| |d|i|s|t|i|n|g|u|i|s|h| |f|r|o|m| |m|a|p|(|)| +0#0000000&@18
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p| +0#0000000&@58
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k|s| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|t|c|h| +0#0000000&@56
-@57|9|0|1|,|1| @8|7|6|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|e|x|r|c| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@53
+@57|9|0|1|,|1| @8|7|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump
index 0fb8f18..6b12992 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|t|c|h| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@48
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|e|x|r|c| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|f|i|l|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|k|e|y| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|s|t|a|r|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|x|t| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|x|t| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|w| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-@57|9|1|9|,|1| @8|7@1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|m|a|l| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@51
+@57|9|1|9|,|1| @8|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump
index 810f100..1a03dbb 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@52
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|m|a|l| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|l|d|f|i|l|e|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|e|n| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|e|n| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|e|n|u| +0#0000000&@56
-@57|9|3|7|,|1| @8|7|9|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|l|y| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
+@57|9|3|7|,|1| @8|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump
index 80238a6..76f4d20 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|l|y| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|d|i|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|i|n|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l|d|o| +0#0000000&@55
-@57|9|5@1|,|1| @8|8|0|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p|u|p| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&@1|o|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|a|g| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|N|e|x|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
+@57|9|5@1|,|1| @8|7|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump
index 67137ba..b511392 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l|d|o| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p|u|p| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&@1|o|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|a|g| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|N|e|x|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|l|a|s|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|n|e|x|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|p|r|e|v|i|o|u|s| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|r|e|w|i|n|d| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|t| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|w|d| +0#0000000&@58
-@57|9|7|3|,|1| @8|8|2|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@56
+@57|9|7|3|,|1| @8|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump
index 361f834..1c4f533 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|w|d| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|d|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t|a|l@1| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|a|d| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|a|d| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|o| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|i|r| +0#0000000&@56
-@57|9@1|1|,|1| @8|8|3|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|s|i|z|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|a|b| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@51
+@57|9@1|1|,|1| @8|8|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump
index ba57541..7401899 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|i|r| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@48
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@52
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|s|i|z|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|a|b| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|d|o| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|f|i|l|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|N|e|x|t| +0#0000000&@56
-@57|1|0@1|9|,|1| @7|8|5|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|l@1| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|v|e|a|s| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|a|l@1| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|l|a|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@51
+@57|1|0@1|9|,|1| @7|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump
index 031d9c4..a59f4a1 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|v|e|a|s| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|a|l@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|l|a|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|n|e|x|t| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|r|e|w|i|n|d| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|n|a|m|e|s| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@47
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@47
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@48
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&@58
-@57|1|0|2|7|,|1| @7|8|6|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|n|d| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|h|e|l@1| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|m|a|l|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|g|n| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|l|e|n|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@56
+@57|1|0|2|7|,|1| @7|8|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump
index 1d24fd5..67e9545 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|n|d| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|h|e|l@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|m|a|l|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|g|n| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|l|e|n|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p|!| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|a|s|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|g|i|c| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|e|n|u| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|i|l|e| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|e|x|t| +0#0000000&@56
-@57|1|0|4|5|,|1| @7|8@1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|r|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|u|r|c|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@50
+@57|1|0|4|5|,|1| @7|8|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump
index 920861c..1299076 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|r|t| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|u|r|c|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@50
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|l|i|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|g| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@50
-@57|1|0|6|3|,|1| @7|8|9|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@54
+@57|1|0|6|3|,|1| @7|8@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump
index 9733757..0818013 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@48
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@51
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|v|i|e|w| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|a|x| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|i|m|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&| +0#0000000&@60
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|N|e|x|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@54
-@57|1|0|8|1|,|1| @7|9|1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|w| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@54
+@57|1|0|8|1|,|1| @7|8|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump
index f278eb5..62ca86d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|w| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@50
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|s| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g| +0#0000000&@58
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g|s| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|d| +0#0000000&@58
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-@57|1|0|9@1|,|1| @7|9|2|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|j|u|m|p| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@55
+@57|1|0|9@1|,|1| @7|9|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump
index 933f7a0..c81c02c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|j|u|m|p| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|e|n|u| +0#0000000&@56
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|e|n|u| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|e|x|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@54
-@57|1@2|7|,|1| @7|9|4|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|y| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
+@57|1@2|7|,|1| @7|9|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump
index f93ac7c..249c967 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|y| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|h|i|d|e| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|e|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|a|p| +0#0000000&@56
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|a|p| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|e|n|u| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|p|d|a|t|e| +0#0000000&@55
-@57|1@1|3|5|,|1| @7|9|6|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|s|u|a|l| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@57
+@57|1@1|3|5|,|1| @7|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump
index bf3df8d..11a5bc3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|p|d|a|t|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@54
-|"+0#0000e05&| |c|a|l@1| |F|o@1|(|)| ||| |v|i|m|9|s|c|r|i|p|t| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|s|u|a|l| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@57
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p| +0#0000000&@57
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|e|n|u| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|e|w| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-@57|1@1|5|3|,|1| @7|9|7|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|r|i|t|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|N|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|a|l@1| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
+@57|1@1|5|3|,|1| @7|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump
index 0e96806..9dfb7f5 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|d|o| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|r|i|t|e| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q| +0#0000000&@59
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q|a|l@1| +0#0000000&@56
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|u|n|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@58
-@57|1@1|7|1|,|1| @7|9@1|%|
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@60
+@75
+@57|1@1|7|1|,|1| @7|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump
index cfb1298..6dd455c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@60
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1@1|8|9|,|1| @7|B|o|t|
+| +0&#ffffff0@74
+@75
+|"+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |o|n|l|y| +0#0000000&@56
+@75
+|:|a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@65
+>:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
+|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
+|:|d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@62
+|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
+|:|e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@61
+|:|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@66
+|:|e+0#af5f00255&|n|u|m| +0#0000000&@69
+|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
+|:|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
+|:|i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@64
+|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|t+0#af5f00255&|y|p|e| +0#0000000&@69
+|:|v+0#af5f00255&|a|r| +0#0000000&@70
+@57|1@1|8|9|,|1| @7|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_67.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_67.dump
new file mode 100644
index 0000000..e276a66
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_67.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|v+0#af5f00255&|a|r| +0#0000000&@70
+@75
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@56
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|u|m| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|y|p|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@63
+@75
+|~+0#4040ff13&| @73
+| +0#0000000&@56|1|2|0|7|,|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_68.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_68.dump
new file mode 100644
index 0000000..7e1be8b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_68.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|1|,|0|-|1| @5|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_99.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_99.dump
deleted file mode 100644
index 2c0e2ec..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q|a|l@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|u|n|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@60
-@57|1@1|9|5|,|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump
new file mode 100644
index 0000000..2dc2425
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+@75
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
+| +0#0000e05&@1>#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|3| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump
deleted file mode 100644
index 90edc97..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|t|r|u|e| +0#0000000&@20
-@75
-|"+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_05.dump b/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
index 2db207b..28b3259 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
+|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@55
@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
@75
->"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
+> @74
+|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
@75
|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@31
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@@ -16,5 +17,4 @@
@75
@75
|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-@57|9|1|,|1| @9|9|4|%|
+@57|9|0|,|0|-|1| @7|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_06.dump b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
new file mode 100644
index 0000000..723aade
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@64
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@56
+>e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|8|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_99.dump
deleted file mode 100644
index 9b4249f..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@31
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@66
-@4|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| @62
-@4|y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @63
-@4|z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@52
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
-| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
-@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@56
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-> @74
-@57|1|0|9|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
index 2cfdcd4..a186346 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
@@ -1,20 +1,20 @@
-|"+0#0000e05#ffffff0| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@53
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r| @1|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)| |#| |c|o|m@1|e|n|t|-@41
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r| |#| |c|o|m@1|e|n|t|-@33
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f|!| |F|o@1|(|)|:| |n|u|m|b|e|r|-@42
-| +0#0000000#ffffff0@74
+| +0&#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |g|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
| +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |s|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
+>++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
| +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |f|o@1|#|b|a|r|#|F|o@1|(|)|:| |n|u|m|b|e|r|-@35
| +0#0000000#ffffff0@74
|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |s|:|l|s|(|)|-@50
-| +0#0000000#ffffff0@56|3|7|,|1| @9|2|7|%|
+| +0#0000000#ffffff0@74
+@75
+|"+0#0000e05&| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@60
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
+| +0#0000000#ffffff0@74
+@57|5|1|,|1| @9|4|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
index 6673415..58faca0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |s|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |f|u|n|c|(|d|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,| |f|u|n|c|,| |b|o@1|l|,| |f|u|n|c|(|n|u|m|b|e|r|,|
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
+> @74
+|"+0#0000e05&| |:|e|n|d@1|e|f| |t|r|a|i|l|i|n|g| +0#0000000&@56
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |f|o@1|#|b|a|r|#|F|o@1|(|)|:| |n|u|m|b|e|r|-@35
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |s|:|l|s|(|)|-@50
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
@75
-|"+0#0000e05&| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@60
+|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|x|:| |b|o@1|l|,| |y| |=| |4|2|,| |z|:| |s|t|r|i|n|g| |=| |"|z|e|d|"|)|-@17
| +0#0000000#ffffff0@74
-@57|5@1|,|1| @9|4@1|%|
+@57|7|8|,|0|-|1| @7|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
index d2f047b..4a2f2aa 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |f|u|n|c|(|d|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,| |f|u|n|c|,| |b|o@1|l|,| |f|u|n|c|(|n|u|m|b|e|r|,|
+@75
+|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
+> @74
+|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
@75
-|"+0#0000e05&| |:|e|n|d@1|e|f| |t|r|a|i|l|i|n|g| +0#0000000&@56
+|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
@75
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
| +0#0000000#ffffff0@74
-@75
-@57|7|3|,|1| @9|6|2|%|
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
+| +0#0000000#ffffff0@74
+@57|1|0|5|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump
deleted file mode 100644
index e2decdb..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-> @74
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|x|:| |b|o@1|l|,| |y| |=| |4|2|,| |z|:| |s|t|r|i|n|g| |=| |"|z|e|d|"|)|-@17
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@57|9|1|,|0|-|1| @7|8|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump
deleted file mode 100644
index 2997eb8..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
->++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-| +0#0000000&@56|1|0|9|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump
deleted file mode 100644
index b11b61e..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|2|7|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump
deleted file mode 100644
index 3020a24..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-> +0#0000000#ffffff0@74
-@57|1|3|0|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
index 9f6d437..5180ea3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
@@ -2,7 +2,7 @@
|#+0#0000e05&| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@46
@75
|c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
-@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @52
+@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@52
@75
@4|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|)| +0#0000000&@61
@8|d+0#af5f00255&|e|f| +0#0000000&|N|a|m|e|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@48
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
new file mode 100644
index 0000000..a3d1c36
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+@75
+@8|t+0#af5f00255&|h|i|s|.|n+0#0000000&|a|m|e| |=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
+@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
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|e|s|t|.|n|e|w|(+0#e000e06&|)| +0#0000000&@59
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump
deleted file mode 100644
index 15c078a..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@46
-@75
-|c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
-@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @52
-@75
-@4|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|)| +0#0000000&@61
-@8|d+0#af5f00255&|e|f| +0#0000000&|N|a|m|e|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@48
-@12|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|G|i|v|e|N|a|m|e|(+0#e000e06&|)| +0#0000000&@43
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|a|n|y|"| +0#0000000&@46
-@12|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@51
-@75
-@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|G|i|v|e|N|a|m|e|(+0#e000e06&|)| +0#0000000&@45
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@75
-@8|t+0#af5f00255&|h|i|s|.|n+0#0000000&|a|m|e| |=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
-@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
->e+0#af5f00255&|c|h|o| +0#0000000&|T|e|s|t|.|n|e|w|(+0#e000e06&|)| +0#0000000&@59
-@57|2|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
index 3bcaccc..452fa61 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
@@ -4,7 +4,7 @@
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1|c+0#af5f00255#ffffff0|l|a|s@1| +0#0000000&|T|e|s|t| @62
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @50
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@50
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|++0#0000e05#a8a8a8255| |+|-@1| |1@1| |l|i|n|e|s|:| |d|e|f| |n|e|w|(|)|-@49
| @1|e+0#af5f00255#ffffff0|n|d|c|l|a|s@1| +0#0000000&@64
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump
deleted file mode 100644
index 84a08f8..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#a8a8a8255@1|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@62
-| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@44
-| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |'|f|'| +0#0000000&@29
-| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|c+0#af5f00255#ffffff0|l|a|s@1| +0#0000000&|T|e|s|t| @62
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @50
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| |1@1| |l|i|n|e|s|:| |d|e|f| |n|e|w|(|)|-@49
-| @1|e+0#af5f00255#ffffff0|n|d|c|l|a|s@1| +0#0000000&@64
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1>e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|T|e|s|t|.|n|e|w|(+0#e000e06&|)| +0#0000000&@57
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2@1|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_echo_02.dump b/runtime/syntax/testdir/dumps/vim_ex_echo_02.dump
new file mode 100644
index 0000000..47be35b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_echo_02.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|'+0#e000002&|e|n|d|'|:+0#0000000&| |1+0#e000002&|2|3|}+0#e000e06&| +0#0000000&@52
+@75
+|i+0#af5f00255&|f| +0#0000000&|1+0#e000002&|2|3| +0#0000000&@68
+@8|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|o@1|.+0#af5f00255&|e+0#00e0e07&|n|d|)+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|l|s|e| +0#0000000&@70
+@8>e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@56
+|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|2|-|9| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_echo_99.dump b/runtime/syntax/testdir/dumps/vim_ex_echo_99.dump
deleted file mode 100644
index db81b40..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_echo_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@4|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|4+0#e000002&|2| +0#0000000&@64
-@75
-|"+0#0000e05&| |:|e|c|h|o| |w|i|t|h|o|u|t| |{|e|x|p|r|}| +0#0000000&@52
-|e+0#af5f00255&|c|h|o||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@58
-@75
-|"+0#0000e05&| |t|r|a|i|l|i|n|g| |c|o|m@1|e|n|t| |n|e@1|d|s| ||| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@52
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|9@1|8|7| |(|p|a|r|e|n|t|h|e|s|i|s|e|d| |a|r|g|u|m|e|n|t| |-| |n|o|t| |a| |f|u|n|c|t|i|o|n| |c|a|l@1|)| +0#0000000&@14
-@75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|'+0#e000002&|e|n|d|'|:+0#0000000&| |1+0#e000002&|2|3|}+0#e000e06&| +0#0000000&@52
-@75
-|i+0#af5f00255&|f| +0#0000000&|1+0#e000002&|2|3| +0#0000000&@68
-@8|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|o@1|.+0#af5f00255&|e+0#00e0e07&|n|d|)+0#e000e06&| +0#0000000&@52
-|e+0#af5f00255&|l|s|e| +0#0000000&@70
-@8|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@56
->e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@57|3|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_execute_99.dump b/runtime/syntax/testdir/dumps/vim_ex_execute_99.dump
deleted file mode 100644
index afc498c..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_execute_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|"+0#e000002&|F|o@1|(|)|"| +0#0000000&@59
-@75
-|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@67
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|c|a|l@1|"| +0#0000000&@60
-@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&@59
-@75
-|"+0#0000e05&| |:|e|x|e|c|u|t|e| |w|i|t|h|o|u|t| |{|e|x|p|r|}| +0#0000000&@49
-|e+0#af5f00255&|x|e|c|u|t|e||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@55
-@75
-|"+0#0000e05&| |t|r|a|i|l|i|n|g| |c|o|m@1|e|n|t| |n|e@1|d|s| ||| +0#0000000&@48
-|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|9@1|8|7| |(|p|a|r|e|n|t|h|e|s|i|s|e|d| |a|r|g|u|m|e|n|t| |-| |n|o|t| |a| |f|u|n|c|t|i|o|n| |c|a|l@1|)| +0#0000000&@14
-@75
-|"+0#0000e05&| +0#0000000&|F+0#0000001#ffff4012|I|X|M|E|:+0#e000e06#ffffff0| +0#0000e05&|e|x|e|c|u|t|e| |i|s| |e|x| |c|o|m@1|a|n|d| |n|o|t| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n| +0#0000000&@23
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|'+0#e000002&|a|r|g|'|:+0#0000000&| |"+0#e000002&|c|a|l@1| |F|o@1|(|)|"|}+0#e000e06&| +0#0000000&@43
->e+0#00e0e07&|x|e|c|u|t|e| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|o@1|.+0#af5f00255&|a+0#00e0e07&|r|g|)+0#e000e06&| +0#0000000&@57
-@57|4|1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
new file mode 100644
index 0000000..37d13e7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |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#0000000&|a|r| @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#0000000&|a|r| @55
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
deleted file mode 100644
index b00e2ac..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@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
-@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
-|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#0000000&|a|r| @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#0000000&|a|r| @55
-> @74
-@57|1|8|2|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump
new file mode 100644
index 0000000..04f6fd2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|f|u|n|c|t|i|o|n| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t| |e|r@1|o|r|s| +0#0000000&@30
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump
new file mode 100644
index 0000000..3e5b4bd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+>d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+@57|1|9|,|1| @9|5|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump
new file mode 100644
index 0000000..0d9de4b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&|-+0#af5f00255&|>|r+0#00e0e07&|e|v|e|r|s|e|(+0#e000e06&|)| +0#0000000&@43
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@48
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|d|e|l|f|u|n|c|t|i|o|n| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|'+0#e000002&| +0#0000000&@43
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|3| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump
new file mode 100644
index 0000000..f8c0ccc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|f|u|n|c|t|i|o|n| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t|s| +0#0000000&@36
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump
new file mode 100644
index 0000000..326a249
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+>d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+@57|1|9|,|1| @9|5|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump
new file mode 100644
index 0000000..8dcb0b9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&|-+0#af5f00255&|>|r+0#00e0e07&|e|v|e|r|s|e|(+0#e000e06&|)| +0#0000000&@43
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@48
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|d|e|l|f|u|n|c|t|i|o|n| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|'+0#e000002&| +0#0000000&@43
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|3| @9|B|o|t|
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 17e220f..0144e3c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
@@ -1,15 +1,9 @@
| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o|{|"|o|"|}|(|)|-@42
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|o|{|"|o|"|}|(|)|-@38
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|{|"|o|"|}|{|"|o|"|}|(|)|-@34
-| +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
|"+0#0000e05&| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@53
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| @1|-@44
-| +0#0000000#ffffff0@74
+> +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |"| |c|o|m@1|e|n|t|-@36
| +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)|-@45
@@ -17,4 +11,10 @@
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |g|:|F|o@1|(|)|-@44
| +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|F|o@1|(|)|-@44
-| +0#0000000#ffffff0@56|3|7|,|1| @9|1|4|%|
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
+| +0#0000000#ffffff0@74
+|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
+@57|4|7|,|0|-|1| @7|1|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
index b229e6c..dd8a282 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| @1|-@44
+|"+0#0000e05#ffffff0| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |"| |c|o|m@1|e|n|t|-@36
+@75
+|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
+> @74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)|-@45
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |g|:|F|o@1|(|)|-@44
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|F|o@1|(|)|-@44
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
| +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |c|l|o|s|u|r|e|-@38
| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
-@57|5@1|,|0|-|1| @7|2@1|%|
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
+| +0#0000000#ffffff0@56|7|8|,|0|-|1| @7|3|7|%|
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 d9aa1c9..fb05a00 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
| +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
->++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
+> +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |c|l|o|s|u|r|e|-@37
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
+@75
+|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
-| +0#0000000#ffffff0@56|7|3|,|1| @9|3|2|%|
+@57|1@1|2|,|0|-|1| @6|5|3|%|
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 989c504..88ca355 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
+@75
+|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
+> @74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
+|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |c|l|o|s|u|r|e|-@38
+|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
+@75
+|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
-| +0#0000000#ffffff0@74
-@57|9|1|,|1| @9|4|2|%|
+@57|1|4|3|,|0|-|1| @6|7|4|%|
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 f6619c2..a2f73a0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |c|l|o|s|u|r|e|-@37
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
-| +0#0000000#ffffff0@74
@75
-|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
+|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
@75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+|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#0000000&|a|r| @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#0000000&|a|r| @55
+@75
+@75
+|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@56|1|0|9|,|1| @8|5|2|%|
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+| +0#0000000#ffffff0@56|1|8|0|,|1| @8|9|1|%|
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 8e84214..7a93653 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
-> @74
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+> +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@57|1|2|7|,|0|-|1| @6|6|3|%|
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|1|9|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
deleted file mode 100644
index fb482ff..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-@57|1|4|5|,|3|-|1| @6|7|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
deleted file mode 100644
index 4b6a2d2..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@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#0000000&|a|r| @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#0000000&|a|r| @55
-@57|1|6|3|,|7|-|1| @6|7|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
deleted file mode 100644
index 2e986c4..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+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#0000000&|a|r| @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#0000000&|a|r| @55
-@75
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@57|1|8|1|,|1| @8|9|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
deleted file mode 100644
index 174e250..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9@1|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
deleted file mode 100644
index d68f8a1..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2|1|7|,|5|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump
deleted file mode 100644
index 04aa4ba..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-@75
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-> +0#0000000#ffffff0@74
-@57|2@1|3|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump
new file mode 100644
index 0000000..e60a277
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|F|u|n|D|(+0#e000e06&|)| +0#0000000&@55
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|A|(+0#e000e06&|)| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|B|(+0#e000e06&|)| +0#0000000&@63
+>e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|C|(+0#e000e06&|)| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump
deleted file mode 100644
index 6ef83ef..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|d+0#af5f00255&|e|f| +0#0000000&|D|o|F|u|n|C|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@50
-@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@54
-@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
-@75
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|F|u|n|C|(+0#e000e06&|)| +0#0000000&@55
-|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|u|n|D|(+0#e000e06&|)| +0#0000000&@59
-@4|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|D|o|F|u|n|D|(+0#e000e06&|)| +0#0000000&@53
-@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|.@3|"| +0#0000000&@53
-@4|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@59
-@75
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|F|u|n|D|(+0#e000e06&|)| +0#0000000&@55
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|A|(+0#e000e06&|)| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|B|(+0#e000e06&|)| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|C|(+0#e000e06&|)| +0#0000000&@63
->e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@63
-@57|3|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump
deleted file mode 100644
index ad1fc05..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|i|m| |:|d|e|f| |a|n|d| |:|f|u|n|c|t|i|o|n| |c|o|m@1|a|n|d|s| |(|n|e|s|t|e|d|)| +0#0000000&@30
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |'|f|'| +0#0000000&@29
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |d|e|f| |F|u|n|A|(|)|:| |s|t|r|i|n|g|-@40
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |d|e|f| |F|u|n|B|(|)|:| |s|t|r|i|n|g|-@40
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|u|n|C|(|)|-@43
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|u|n|D|(|)|-@43
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|A|(+0#e000e06&|)| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|B|(+0#e000e06&|)| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|C|(+0#e000e06&|)| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1>e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@61
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|4|0|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
new file mode 100644
index 0000000..5d45c19
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@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&|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
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|7| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump
deleted file mode 100644
index dbd86d4..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@58
-@75
-|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@64
-@6|\+0#e000e06&| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
-@6|\+0#e000e06&| +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&@45
-@75
-|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&|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&|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
-@57|5@1|,|7| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump
new file mode 100644
index 0000000..d7bfb6b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |V|i|m| |:|l|e|t| |h|e|r|e|d|o|c| |c|o|m@1|a|n|d| +0#0000000&@46
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"+0#e000002&|h|"| +0#0000000&@29
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|l|=|9@1| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@27
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@55
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |t|r|i|m| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump
new file mode 100644
index 0000000..623dc27
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |t|r|i|m| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| >l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|1| +0#0000000&@65
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|2| +0#0000000&@65
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|1| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|2| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@57
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+@57|1|9|,|1| @10|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump
new file mode 100644
index 0000000..9135666
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump
@@ -0,0 +1,20 @@
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1>l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|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#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@59
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|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&@45
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+@57|3|7|,|3| @9|1|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump
new file mode 100644
index 0000000..4bd2857
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |n|o| |i|n|t|e|r|p|o|l|a|t|i|o|n| |(|e|s|c|a|p|e|d| |{| |a|n|d| |}|)| +0#0000000&@36
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| >l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|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#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|5@1|,|1| @9|2|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump
new file mode 100644
index 0000000..b763e64
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|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&@45
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |n|o| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@54
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |0|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |1|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@55
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |0|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |1|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|7|3|,|0|-|1| @7|3|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump
new file mode 100644
index 0000000..e7b8a55
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{|1| |+| |0|}| +0#0000000&@59
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{|1| |+| |1|}| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{|1| |+| |0|}| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{|1| |+| |1|}| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r| |m|u|s|t| |n|o|t| |b|e| |f|o|l@1|o|w|e|d| |b|y| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@25
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |E+0#e000002#ffffff0|N|D| | +0#0000000&@68
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|9|1|,|0|-|1| @7|4|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump
new file mode 100644
index 0000000..6ed3eb5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"| |E|N|D| |"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0|E|N|D| | +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|E|N|D| | +0#0000000&@66
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| | +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r| |m|u|s|t| |b|e| |v|e|r|t|i|c|a|l@1|y| |a|l|i|g|n|e|d| |w|i|t|h| |:|l|e|t| |(|i|f| |p|r|e|c|e|d|e|d| |b|y| |w|h|i|t|e|s|p
+| +0&#a8a8a8255@1|a+0&#ffffff0|c|e|)| +0#0000000&@68
+@57|1|0|9|,|0|-|1| @6|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump
new file mode 100644
index 0000000..85bb2f3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r| |m|u|s|t| |b|e| |v|e|r|t|i|c|a|l@1|y| |a|l|i|g|n|e|d| |w|i|t|h| |:|l|e|t| |(|i|f| |p|r|e|c|e|d|e|d| |b|y| |w|h|i|t|e|s|p
+| +0&#a8a8a8255@1|a+0&#ffffff0|c|e|)| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@44
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1>E|N|D| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| +0#0000000&@65
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |E+0#e000002#ffffff0|N|D| | +0#0000000&@68
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+@57|1|2|5|,|3| @8|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump
new file mode 100644
index 0000000..16149fe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| +0#0000000&@65
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1>"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@41
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| | +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@4|E|N|D| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@41
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@4|E|N|D| | +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+@57|1|4|3|,|3| @8|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump
new file mode 100644
index 0000000..fbb7d9d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@41
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |E+0#e000002#ffffff0|N|D| | +0#0000000&@68
+||+0#0000e05#a8a8a8255| >E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0|E|N|D| +0#0000000&@68
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@2|E|N|D| +0#0000000&@66
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r|s| +0#0000000&@59
+@57|1|6|1|,|1| @8|8|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
new file mode 100644
index 0000000..93db587
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r|s| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@48
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| >!+0#e000e06#ffffff0|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@47
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |0+0#e000e06#ffffff0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |A|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@47
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+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#af5f00255&|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+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
new file mode 100644
index 0000000..f63b3b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
@@ -0,0 +1,20 @@
+| +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#af5f00255&|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
+| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e|1| @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> +0#0000000#ffffff0@72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|6|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump
new file mode 100644
index 0000000..bda8d79
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| +0#0000000&@49
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+@75
+|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@64
+@75
+|"+0#0000e05&| |L|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@60
+@75
+@2|"+0#0000e05&| |A|n|o|t|h|e|r| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@50
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
+@75
+|"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
+|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
+|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
+|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_99.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump
index 1b27d57..2fb05a7 100644
--- a/runtime/syntax/testdir/dumps/vim_keymap_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| @56
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| @2
+|'+0&#ffffff0|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
@75
+|"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
+|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
+|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
+><+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
+|x|a|d|e|c|i|m|a|l| +0#0000000&@65
@75
-@46| +0#0000000&@28
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| @4
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| @50| +0#0000000&@14
-@75
-|"+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| @30| +0#0000000&@12
+|"+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@43
|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@15|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
|n|t| +0#0000000&@72
|\|"| |“| @26|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
-@1|e|n|t| | +0#0000000&@69
->:| |"| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
@1|e|n|t| +0#0000000&@70
-@57|2|7|,|1| @9|B|o|t|
+|:| |"| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
+@1|e|n|t| +0#0000000&@70
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump
new file mode 100644
index 0000000..6649475
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| |(|a|f|t|e|r| |"+0#e000002&|||"|)+0#0000e05&| +0#0000000&@37
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&||| |l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@51
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+@75
+|~+0#4040ff13&| @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_ex_loadkeymap_after_colon_00.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump
new file mode 100644
index 0000000..f0e5adc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| |(|a|f|t|e|r| |"+0#e000002&|:|"|)+0#0000e05&| +0#0000000&@37
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+@75
+|:|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@63
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+@75
+|~+0#4040ff13&| @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_ex_map_00.dump b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
index 371c1ce..763e641 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
@@ -5,9 +5,6 @@
|m+0#af5f00255&|a|p| +0#0000000&@71
|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| @63
@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
|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
@@ -17,4 +14,7 @@
|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
+@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 7b43533..0d9edd4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_01.dump
@@ -1,12 +1,9 @@
-|v+0#af5f00255#ffffff0|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
+|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
|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
+|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
-@75
+> @74
@75
|"+0#0000e05&| |:|h|e|l|p| |m|a|p|-|b|a|r| +0#0000000&@59
@75
@@ -17,4 +14,7 @@
|"+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
-@57|1|9|,|1| @9|1|9|%|
+|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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_02.dump b/runtime/syntax/testdir/dumps/vim_ex_map_02.dump
index c598781..58ec003 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_02.dump
@@ -1,12 +1,9 @@
| +0&#ffffff0@74
-|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
|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |R|H|S| +0#0000000&@59
-> @74
+@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&@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
@75
@@ -17,4 +14,7 @@
|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
-@57|3|7|,|0|-|1| @7|4|5|%|
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_03.dump b/runtime/syntax/testdir/dumps/vim_ex_map_03.dump
index 4ad6e82..62966be 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_03.dump
@@ -1,12 +1,9 @@
-| +0&#ffffff0@1|\+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
+| +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
-> @74
+@75
|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
+@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
@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
@@ -17,4 +14,7 @@
@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
-@57|5@1|,|0|-|1| @7|7|2|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|l|e|a|r|"| +0#0000000&@62
+@75
+@75
+@57|5@1|,|3| @9|5|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_04.dump b/runtime/syntax/testdir/dumps/vim_ex_map_04.dump
index 254fc91..7f12539 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@1|"+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
+| +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
@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
-|"+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
+>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
-@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|7|3|,|0|-|1| @7|9|8|%|
+|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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_99.dump b/runtime/syntax/testdir/dumps/vim_ex_map_05.dump
index 37ee7cf..4bb04c0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_05.dump
@@ -1,7 +1,9 @@
-| +0&#ffffff0@74
+| +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
-|"+0#0000e05&| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59
@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
@@ -15,6 +17,4 @@
|"+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
-@57|8|7|,|1| @9|B|o|t|
+@57|9|1|,|0|-|1| @7|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_06.dump b/runtime/syntax/testdir/dumps/vim_ex_map_06.dump
new file mode 100644
index 0000000..35e9022
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_06.dump
@@ -0,0 +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
+|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|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_match_00.dump b/runtime/syntax/testdir/dumps/vim_ex_match_00.dump
new file mode 100644
index 0000000..c36d37f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_match_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|m|a|t|c|h|,| |:|2|m|a|t|c|h| |a|n|d| |:|3|m|a|t|c|h| |c|o|m@1|a|n|d|s| +0#0000000&@32
+@75
+|m+0#af5f00255&|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@54
+|m+0#af5f00255&|a|t|c|h| +0#0000000&@69
+|m+0#af5f00255&|a|t|c|h| +0#0000000&|n+0#00e0003&|o|n|e| +0#0000000&@64
+@75
+|2+0#af5f00255&|m|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@53
+|2+0#af5f00255&|m|a|t|c|h| +0#0000000&@68
+|2+0#af5f00255&|m|a|t|c|h| +0#0000000&|n+0#00e0003&|o|n|e| +0#0000000&@63
+@75
+|3+0#af5f00255&|m|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@53
+|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@68
+|3+0#af5f00255&|m|a|t|c|h| +0#0000000&|n+0#00e0003&|o|n|e| +0#0000000&@63
+@75
+@75
+|"+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
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@43
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_match_01.dump b/runtime/syntax/testdir/dumps/vim_ex_match_01.dump
new file mode 100644
index 0000000..815ed68
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_match_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@75
+|"+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
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@44
+>c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@43
+@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|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@52
+@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@42
+@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@41
+|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|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@52
+@2|m+0#af5f00255&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@47
+| +0#0000e05&@1|#| |E|r@1|o|r|:| |b|a|d| |:|m|a|t|c|h| |c|o|m@1|a|n|d| |-| |t|r|a|i|l|i|n|g| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@23
+@2|m+0#af5f00255&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@46
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@57|1|9|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump
index 2ef89ec..2ba8749 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
+| +0&#ffffff0@7|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
@75
|a+0#af5f00255&|n| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|1+0#e000002&|0|.|3@1|0| +0#0000000&|&+0#e000e06&|F|i|l|e|.|&|C|l|o|s|e|<|T|a|b|>|:|c|l|o|s|e| +0#0000000&|:|i|f| |w|i|n|h|e|i|g|h|t|(|2|)| |<| |0| |&@1| |t|a|b|p|a|g|e|w
|i|n@1|r|(|2|)| |=@1| |0| |<+0#e000e06&|B|a|r|>| +0#0000000&@56
-@8|\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |e|n|e|w| |<+0#e000e06&|B|a|r|>| +0#0000000&@44
-@8>\+0#e000e06&| +0#0000000&|e|l|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@54
+@8>\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |e|n|e|w| |<+0#e000e06&|B|a|r|>| +0#0000000&@44
+@8|\+0#e000e06&| +0#0000000&|e|l|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@54
@8|\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |c|l|o|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@43
@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
@75
@@ -16,5 +17,4 @@
@8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
@8|\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |c|l|o|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@43
@8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
-@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
-@57|5@1|,|2|-|9| @7|7|1|%|
+@57|5|4|,|2|-|9| @7|7|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
index ad079e6..7bc4ebd 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@7|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
+@75
@75
|"+0#0000e05&| |p|o|p|u|p| |m|e|n|u|s| +0#0000000&@61
-|p+0#af5f00255&|o|p|u|p| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
+>p+0#af5f00255&|o|p|u|p| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
|p+0#af5f00255&|o|p|u|p|!| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
-> @74
+@75
@75
|"+0#0000e05&| |I|s@1|u|e| |#|1|4|2|3|0| +0#0000000&@60
@75
@@ -15,6 +17,4 @@
@12|H|i|s|t|o|r|y|J|u|m|p|(+0#e000e06&|r+0#00e0e07&|e|s|.+0#af5f00255&|t+0#00e0e07&|e|x|t|)+0#e000e06&| +0#0000000&@41
@8|}+0#e000e06&|)| +0#0000000&@64
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|p+0#af5f00255&|o|p|u|p|\+0#e000e06&|.|F|i|l|t|e|r|M|e|n|u|<|T|a|b|>|F|i|l|t|e|r|(|)|<|C|R|>| +0#0000000&@40
-@57|7|3|,|0|-|1| @7|9|8|%|
+@57|7|1|,|1| @9|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_05.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_05.dump
new file mode 100644
index 0000000..4d9e9cc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_05.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@68
+@75
+|p+0#af5f00255&|o|p|u|p|\+0#e000e06&|.|F|i|l|t|e|r|M|e|n|u|<|T|a|b|>|F|i|l|t|e|r|(|)|<|C|R|>| +0#0000000&@40
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|7|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_99.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_99.dump
deleted file mode 100644
index 80608b7..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |p|o|p|u|p| |m|e|n|u|s| +0#0000000&@61
-|p+0#af5f00255&|o|p|u|p| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
-|p+0#af5f00255&|o|p|u|p|!| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|4|2|3|0| +0#0000000&@60
-@75
-|"+0#0000e05&| |a| |m|e|n|u| |i|t|e|m| |n|a|m|e| |c|a|n@1|o|t| |s|t|a|r|t| |w|i|t|h| |'|.|'| +0#0000000&@34
-@75
-|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|d+0#af5f00255&|e|f| +0#0000000&|H|i|s|t|o|r|y|J|u|m|p|M|e|n|u|(+0#e000e06&|)| +0#0000000&@46
-@4|p+0#af5f00255&|o|p|u|p|.|F+0#0000000&|i|l|t|e|r|M|e|n|u|(+0#e000e06&|"+0#e000002&|J|u|m|p| |h|i|s|t|o|r|y|"|,+0#0000000&| |d+0#00e0e07&|i|r|_|h|i|s|t|,+0#0000000&| @28
-@8|(+0#e000e06&|r+0#00e0e07&|e|s|,+0#0000000&| |_+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@53
-@12|H|i|s|t|o|r|y|J|u|m|p|(+0#e000e06&|r+0#00e0e07&|e|s|.+0#af5f00255&|t+0#00e0e07&|e|x|t|)+0#e000e06&| +0#0000000&@41
-@8|}+0#e000e06&|)| +0#0000000&@64
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|p+0#af5f00255&|o|p|u|p|\+0#e000e06&|.|F|i|l|t|e|r|M|e|n|u|<|T|a|b|>|F|i|l|t|e|r|(|)|<|C|R|>| +0#0000000&@40
-> @74
-@57|8|7|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump b/runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump
new file mode 100644
index 0000000..06d85e9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@54
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|1|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump b/runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump
deleted file mode 100644
index 7f6ccfc..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|m+0#af5f00255#ffffff0|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@61
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|o+0#0000000&@1|\+0#e000e06&| |b+0#0000000&|a|r| @57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|u+0#0000000&|b|a|r| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
-@75
-|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@61
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|o+0#0000000&@1|\+0#e000e06&| |b+0#0000000&|a|r| @57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|u+0#0000000&|b|a|r||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@75
-|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@61
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|o+0#0000000&@1|\+0#e000e06&| |b+0#0000000&|a|r| @57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|u+0#0000000&|b|a|r| @60
-@6|\+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@54
-> @74
-@57|5|1|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump
new file mode 100644
index 0000000..5bf3cf1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+@75
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
+| +0#0000e05&@1>#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|3| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump
deleted file mode 100644
index 8559c6c..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|f|a|l|s|e| +0#0000000&@19
-@75
-|"+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_00.dump b/runtime/syntax/testdir/dumps/vim_ex_set_00.dump
new file mode 100644
index 0000000..3f0471b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|s|e|t| |c|o|m@1|a|n|d| +0#0000000&@56
+@75
+|s+0#af5f00255&|e|t| +0#0000000&@71
+|s+0#af5f00255&|e|t|!| +0#0000000&@70
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@67
+|s+0#af5f00255&|e|t|!| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@66
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|e|r|m|c|a|p| +0#0000000&@63
+|s+0#af5f00255&|e|t|!| +0#0000000&|t+0#e000e06&|e|r|m|c|a|p| +0#0000000&@62
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|?| +0#0000000&@64
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h| +0#0000000&@65
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|n+0#e000e06&|o|a|l@1|o|w|r|e|v|i|n|s| +0#0000000&@57
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1|o|w|r|e|v|i|n|s|!| +0#0000000&@58
+|s+0#af5f00255&|e|t| +0#0000000&|i+0#e000e06&|n|v|a|l@1|o|w|r|e|v|i|n|s| +0#0000000&@56
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&| +0#0000000&@64
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&|v|i| +0#0000000&@62
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_01.dump b/runtime/syntax/testdir/dumps/vim_ex_set_01.dump
new file mode 100644
index 0000000..012170e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1|o|w|r|e|v|i|n|s|!| +0#0000000&@58
+|s+0#af5f00255&|e|t| +0#0000000&|i+0#e000e06&|n|v|a|l@1|o|w|r|e|v|i|n|s| +0#0000000&@56
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&| +0#0000000&@64
+>s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&|v|i| +0#0000000&@62
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&|v|i|m| +0#0000000&@61
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1|&| +0#0000000&@66
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|=+0#af5f00255&|1+0#0000000&|2|8| @61
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|:+0#af5f00255&|1+0#0000000&|2|8| @61
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h| +0#0000000&|=+0#af5f00255&|1+0#0000000&|2|8| @60
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h| +0#0000000&|:+0#af5f00255&|1+0#0000000&|2|8| @60
+@75
+|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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_02.dump b/runtime/syntax/testdir/dumps/vim_ex_set_02.dump
new file mode 100644
index 0000000..d6328d2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_02.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|-+0#af5f00255&|=|9+0#0000000&|6| @61
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|a|c|k|s|p|a|c|e|++0#af5f00255&|=|n+0#0000000&|o|s|t|o|p| @53
+|s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|a|c|k|s|p|a|c|e|^+0#af5f00255&|=|n+0#0000000&|o|s|t|o|p| @53
+|s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|a|c|k|s|p|a|c|e|-+0#af5f00255&|=|n+0#0000000&|o|s|t|o|p| @53
+> @74
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|i| +0#0000000&|n+0#e000e06&|o|s|i| +0#0000000&|s+0#e000e06&|w|=+0#af5f00255&|3+0#0000000&| |t+0#e000e06&|w|=+0#af5f00255&|3+0#0000000&| @53
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|<|t+0#e000e06&|_|#|4|>+0#0000000&|=|^|[|O|t| |"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@51
+|s+0#af5f00255&|e|t| +0#0000000&|<|M|-|b|>|=|^|[|b| @2|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@51
+@75
+|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&|a+0#e000e06&|u|t|o|r|e|a|d| +0#0000000&@57
+|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&|n+0#e000e06&|o|a|u|t|o|r|e|a|d| +0#0000000&@54
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|u|t|o|r|e|a|d|<| +0#0000000&@61
+@75
+@75
+|"+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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_03.dump b/runtime/syntax/testdir/dumps/vim_ex_set_03.dump
new file mode 100644
index 0000000..fb013bc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_03.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |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|e| |o
+|n|e| +0#0000000&@72
+|"+0#0000e05&| |f|e|w|e|r| |l|a|y|e|r| |o|f| |b|a|c|k|s|l|a|s|h|.| |A| |f|e|w| |e|x|a|m|p|l|e|s|:| +0#0000000&@31
+|s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|\| |f|i|l|e| @5|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e| |f|i|l|e|"| +0#0000000&@22
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|m|a|k|e|p|r|g|=+0#af5f00255&|'+0#e000002&|m|a|k|e| |f|i|l|e|'| +0#0000000&@3|"+0#0000e05&| |(|s|a|m|e| |a|s| |a|b|o|v|e|)| +0#0000000&@29
+>s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|\@2| |f|i|l|e| @3|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e|\| |f|i|l|e|"| +0#0000000&@21
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|\| |/|u|s|r|/|t|a|g|s| @3|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s|"| +0#0000e05&|a|n|d| |"+0#e000002&|/|u|s|r|/|t|a|g|s|"| +0#0000000&@11
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|\@2| |f|i|l|e| @6|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s| |f|i|l|e|"| +0#0000000&@22
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|a|g|s|=+0#af5f00255&|'+0#e000002&|t|a|g|s|\| |f|i|l|e|'| +0#0000000&@5|"+0#0000e05&| |(|s|a|m|e| |a|s| |a|b|o|v|e|)| +0#0000000&@29
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|,+0#e000e06&|f+0#0000000&|i|l|e| @6|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e|,|f|i|l|e|"| +0#0000000&@22
+|s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|\@1|,+0#e000e06&|f+0#0000000&|i|l|e| @4|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e|\|,|f|i|l|e|"| +0#0000000&@21
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|,+0#e000e06&|f+0#0000000&|i|l|e| @9|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s|"| +0#0000e05&|a|n|d| |"+0#e000002&|f|i|l|e|"| +0#0000000&@16
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|\@1|,+0#e000e06&|f+0#0000000&|i|l|e| @7|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s|,|f|i|l|e|"| +0#0000000&@22
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|a|g|s|=+0#af5f00255&|'+0#e000002&|t|a|g|s|\|,|f|i|l|e|'| +0#0000000&@5|"+0#0000e05&| |(|s|a|m|e| |a|s| |a|b|o|v|e|)| +0#0000000&@29
+@75
+|"+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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_04.dump b/runtime/syntax/testdir/dumps/vim_ex_set_04.dump
new file mode 100644
index 0000000..6280f6a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_04.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |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
+|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|||s+0#af5f00255&|e|t| +0#0000000&|i+0#e000e06&|c|o|n|s|t|r|i|n|g|=+0#af5f00255&|t+0#0000000&|h|e|r|e| @35
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|d+0#e000e06&|i|r|=+0#af5f00255&|\+0#0000000&@1|m|a|c|h|i|n|e|\|p|a|t|h| @5|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|\@1|m|a|c|h|i|n|e|\|p|a|t|h|"| +0#0000000&@17
+|s+0#af5f00255&|e|t| +0#0000000&|d+0#e000e06&|i|r|=+0#af5f00255&|\+0#0000000&@3|m|a|c|h|i|n|e|\@1|p|a|t|h| @2|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|\@1|m|a|c|h|i|n|e|\|p|a|t|h|"| +0#0000000&@17
+>s+0#af5f00255&|e|t| +0#0000000&|d+0#e000e06&|i|r|=+0#af5f00255&|\+0#0000000&@1|p|a|t|h|\@1|f|i|l|e| @7|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|\@1|p|a|t|h|\|f|i|l|e|"| +0#0000e05&|(|w|r|o|n|g|!|)| +0#0000000&@11
+@75
+@75
+|"+0#0000e05&| |:|h|e|l|p| |:|s|e|t|_|e|n|v| +0#0000000&@58
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|e|r|m|=+0#af5f00255&|$+0#e000e06&|T|E|R|M|.+0#0000000&|n|e|w| @56
+|s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|/+0#0000000&|u|s|r|/|$+0#e000e06&|I|N|C|L|U|D|E|,|$|H|O|M|E|/+0#0000000&|i|n|c|l|u|d|e|,+0#e000e06&|.+0#0000000&| @36
+@75
+@75
+|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |:|s|e|t| |a|n|d| |o|p|t|i|o|n| |v|a|l|u|e|s| +0#0000000&@40
+@75
+|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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_05.dump b/runtime/syntax/testdir/dumps/vim_ex_set_05.dump
new file mode 100644
index 0000000..3f67529
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+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
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&| +0#0000000&@61
+@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&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @60
+> @74
+|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|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump b/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump
deleted file mode 100644
index 4fc3d5e..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|s|l|e@1|p| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|s+0#af5f00255&|l|e@1|p| +0#0000000&@7|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |o|n|e| |s|e|c|o|n|d| +0#0000000&@39
-|5+0#e000002&| +0#0000000&|s+0#af5f00255&|l|e@1|p| +0#0000000&@5|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |f|i|v|e| |s|e|c|o|n|d|s| +0#0000000&@37
-|s+0#af5f00255&|l|e@1|p| +0#0000000&|1+0#e000002&|0@1|m| +0#0000000&@2|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
-|1+0#e000002&|0@1| +0#0000000&|s+0#af5f00255&|l|e@1|p| +0#0000000&|m+0#e000002&| +0#0000000&@1|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
-@75
-|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@6|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |o|n|e| |s|e|c|o|n|d| +0#0000000&@39
-|5+0#e000002&| +0#0000000&|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@4|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |f|i|v|e| |s|e|c|o|n|d|s| +0#0000000&@37
-|s+0#af5f00255&|l|e@1|p|!| +0#0000000&|1+0#e000002&|0@1|m| +0#0000000&@1|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
->1+0#e000002&|0@1| +0#0000000&|s+0#af5f00255&|l|e@1|p|!| +0#0000000&|m+0#e000002&| +0#0000000&|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1@1|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
new file mode 100644
index 0000000..f19c40e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
@@ -0,0 +1,20 @@
+|d+0#af5f00255#ffffff0|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|)| +0#0000000&@64
+@2|s|t|r|[|s|]| @66
+@2|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@66
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4@1|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
deleted file mode 100644
index 6864a4a..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| +0#0000000&|F+0#0000001#ffff4012|I|X|M|E|:+0#e000e06#ffffff0| +0#0000e05&|t|r|a|i|l|i|n|g| |c|o|m@1|e|n|t|,| |n|o| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@34
-|s+0#af5f00255&|"+0#0000000&| |c|o|m@1|e|n|t| @64
-|s+0#af5f00255&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@61
-@75
-|s+0#af5f00255&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@63
-|s+0#af5f00255&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@60
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|3|8@1|3| +0#0000000&@60
-@75
-|s|t|r|[|s|]| @68
-|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@68
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|)| +0#0000000&@64
-@2|s|t|r|[|s|]| @66
-@2|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@66
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-> @74
-@57|1|4@1|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
index 800e4a7..bef158c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+| +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&|\| |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
@@ -16,5 +17,4 @@
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
-@57|1|9|,|7| @10|8|%|
+@57|1|8|,|7| @10|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
index 54d8734..3ff2aba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
+| +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
-> @74
+@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @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
@@ -16,5 +17,4 @@
| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b| +0#0000000&@53
| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@57|3|7|,|0|-|1| @7|1|9|%|
+@57|3|6|,|7| @9|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
index f0a2481..59d9562 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+| +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&@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
@@ -16,5 +17,4 @@
@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|5@1|,|7| @9|3|1|%|
+@57|5|4|,|7| @9|3|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
index 2298efb..4022b48 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
+| +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&|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
@@ -16,5 +17,4 @@
@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|7|3|,|7| @9|4|2|%|
+@57|7|2|,|7| @9|4|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
index 66a6b73..c4c4994 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
+| +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
-@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@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
@@ -16,5 +17,4 @@
@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|9|1|,|7| @9|5|3|%|
+@57|9|0|,|7| @9|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
index 12c1fbe..6c5e4ce 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|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&|\| |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
@@ -16,5 +17,4 @@
@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|0|9|,|7| @8|6|5|%|
+@57|1|0|8|,|7| @8|6|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
index d7d1055..2f66e98 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|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#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
@@ -16,5 +17,4 @@
@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+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
-@57|1|2|7|,|7| @8|7|6|%|
+@57|1|2|6|,|7| @8|7|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
index 4042d33..db2d97b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
@@ -1,9 +1,10 @@
-|s+0#af5f00255#ffffff0|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
+| +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|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
@@ -16,5 +17,4 @@
@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|1|4|5|,|1| @8|8|7|%|
+@57|1|4@1|,|1| @8|8|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
index 5240e4e..6295921 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+| +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
+@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
@@ -16,5 +17,4 @@
@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#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#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|1|6|3|,|7| @8|9@1|%|
+@57|1|6|2|,|7| @8|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
new file mode 100644
index 0000000..c33c082
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
@@ -0,0 +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
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|7@1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
deleted file mode 100644
index c06ac66..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+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#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#0000000&| @25
-@4|"+0#0000e05&| |.@2| +0#0000000&@65
-@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-@2|"+0#0000e05&| |.@2| +0#0000000&@67
->e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@57|1|7@1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump b/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump
deleted file mode 100644
index b53fff4..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|t|h|r|o|w| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|"+0#0000e05&| |:|h|e|l|p| |:|t|h|r|o|w| +0#0000000&@60
-@75
->t+0#af5f00255&|r|y| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&|"+0#e000002&|o@1|p|s|"| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|o@1|/+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|a|u|g|h|t|"| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@17
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump b/runtime/syntax/testdir/dumps/vim_expr_01.dump
index 383c730..f1a7330 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_01.dump
@@ -1,10 +1,13 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| |\|f| |\|n| |\|r| |\|t| |\@1
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6| +0#e000002&|-| |\+0#e000e06&|3|1| +0#e000002&|-| |\+0#e000e06&|3| +0#e000002&|-| |\+0#e000e06&|x|1|f| +0#e000002&|-| |\+0#e000e06&|x|f| +0#e000002&|-| |\+0#e000e06&|X|1|F| +0#e000002&|-| |\+0#e000e06&|X|F| +0#e000002&|-| |\+0#e000e06&|u|0|2|a|4| +0#e000002&|-| |\+0#e000e06&|U|0@4|2|a|4| +0#e000002&|-| |\+0#e000e06&|b
+| +0#e000002&|-| |\+0#e000e06&|e| +0#e000002&|-| |\+0#e000e06&|f| +0#e000002&|-| |\+0#e000e06&|n| +0#e000002&|-| |\+0#e000e06&|r| +0#e000002&|-| |\+0#e000e06&|t| +0#e000002&|-| |\+0#e000e06&@1| +0#e000002&|-| |\+0#e000e06&|"| +0#e000002&|-| |\+0#e000e06&|<|C|-|W|>|"+0#e000002&| +0#0000000&@29
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| |\|f| |\|n| |\|r| |\|t| |\@1
| |\|"| |\|<|C|-|W|>|'| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| |\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| |\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| |\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
+>e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| |\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| |\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| |\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
@75
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|a|>|"+0#e000002&| +0#0000000&@61
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|a|>|"+0#e000002&| +0#0000000&@60
->e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|"+0#e000002&| +0#0000000&@60
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|>+0#e000002&|"| +0#0000000&@60
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|>+0#e000002&|"| +0#0000000&@59
@@ -14,7 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|D|o|n|'@1|t| |h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|'| +0#0000000&@22
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|D|o|n|'|t| |h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|"| +0#0000000&@23
|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| |'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| |"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
-@57|1|9|,|1| @9|2|4|%|
+@57|1|5|,|1| @9|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump b/runtime/syntax/testdir/dumps/vim_expr_02.dump
index 97a621d..516a691 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_02.dump
@@ -1,9 +1,13 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |N|u|m|b|e|r| +0#0000000&@66
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| |'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| |"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
+@75
+>"+0#0000e05&| |N|u|m|b|e|r| +0#0000000&@66
@75
|"+0#0000e05&| |H|e|x|a|d|e|c|i|m|a|l| +0#0000000&@61
|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|x|F@1| +0#0000000&@64
->e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|X|F@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|X|F@1| +0#0000000&@64
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|x|F@1| +0#0000000&@64
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|X|F@1| +0#0000000&@64
@75
@@ -13,8 +17,4 @@
@75
|"+0#0000e05&| |O|c|t|a|l| +0#0000000&@67
|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|3|7@1| +0#0000000&@64
-|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
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
-@57|3|7|,|1| @9|5|8|%|
+@57|3@1|,|1| @9|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump b/runtime/syntax/testdir/dumps/vim_expr_03.dump
index 41f062f..5300116 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_03.dump
@@ -1,9 +1,13 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|O|3|7@1| +0#0000000&@63
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&@1|0+0#e000002&|3|7@1| +0#0000000&@64
+|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
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
+>e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|O|3|7@1| +0#0000000&@63
@75
|"+0#0000e05&| |B|i|n|a|r|y| +0#0000000&@66
|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|b|1@7| +0#0000000&@58
->e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|b|1@7| +0#0000000&@58
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|B|1@7| +0#0000000&@58
@75
@@ -13,8 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&|5+0#e000002&@1|.|0| +0#0000000&@65
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|.|1|2|3| +0#0000000&@63
|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@61
-|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
-|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
-@57|5@1|,|1| @9|9|2|%|
+@57|5|1|,|1| @9|8|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_04.dump b/runtime/syntax/testdir/dumps/vim_expr_04.dump
new file mode 100644
index 0000000..4cb0891
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_04.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@61
+|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
+|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
+>e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|E|D|0|1|5|D|A|F| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|.|E|D|0|1|.|5|D|A|F| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|.|0@1|.|E|D|.|0|1|.|5|D|.|A|F| +0#0000000&@50
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6|9|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_99.dump b/runtime/syntax/testdir/dumps/vim_expr_99.dump
deleted file mode 100644
index e9ba266..0000000
--- a/runtime/syntax/testdir/dumps/vim_expr_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&@1|0+0#e000002&|b|1@7| +0#0000000&@58
-|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|b|1@7| +0#0000000&@58
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|B|1@7| +0#0000000&@58
-@75
-|"+0#0000e05&| |F|l|o|a|t| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|2|3|.|4|5|6| +0#0000000&@62
-|e+0#af5f00255&|c|h|o| +0#0000000&|++0#af5f00255&|0+0#e000002&|.|0@2|1| +0#0000000&@62
-|e+0#af5f00255&|c|h|o| +0#0000000&|5+0#e000002&@1|.|0| +0#0000000&@65
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|.|1|2|3| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@61
-|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
-|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
-|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|E|D|0|1|5|D|A|F| +0#0000000&@55
-|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|.|E|D|0|1|.|5|D|A|F| +0#0000000&@53
->e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|.|0@1|.|E|D|.|0|1|.|5|D|.|A|F| +0#0000000&@50
-@57|7|2|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_09.dump b/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
new file mode 100644
index 0000000..d7fc77d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
@@ -0,0 +1,20 @@
+|<+0#e000e06#ffffff0|s|f|i|l|e|>| +0#0000000&@67
+|<+0#e000e06&|s|t|a|c|k|>| +0#0000000&@67
+|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&@66
+|<+0#e000e06&|s|l|n|u|m|>| +0#0000000&@67
+|<+0#e000e06&|s|f|l|n|u|m|>| +0#0000000&@66
+><+0#e000e06&|c|l|i|e|n|t|>| +0#0000000&@66
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|6|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_99.dump b/runtime/syntax/testdir/dumps/vim_key_notation_99.dump
deleted file mode 100644
index 67dac5f..0000000
--- a/runtime/syntax/testdir/dumps/vim_key_notation_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#e000e06#ffffff0|I|g|n|o|r|e|>| +0#0000000&@66
-|<+0#e000e06&|C|m|d|>| +0#0000000&@69
-|<+0#e000e06&|S|c|r|i|p|t|C|m|d|>| +0#0000000&@63
-|<+0#e000e06&|F|o|c|u|s|G|a|i|n|e|d|>| +0#0000000&@61
-|<+0#e000e06&|F|o|c|u|s|L|o|s|t|>| +0#0000000&@63
-@75
-|<+0#e000e06&|c|w|o|r|d|>| +0#0000000&@67
-|<+0#e000e06&|c|W|O|R|D|>| +0#0000000&@67
-|<+0#e000e06&|c|e|x|p|r|>| +0#0000000&@67
-|<+0#e000e06&|c|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|a|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|a|b|u|f|>| +0#0000000&@68
-|<+0#e000e06&|a|m|a|t|c|h|>| +0#0000000&@66
-|<+0#e000e06&|s|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|s|t|a|c|k|>| +0#0000000&@67
-|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&@66
-|<+0#e000e06&|s|l|n|u|m|>| +0#0000000&@67
-|<+0#e000e06&|s|f|l|n|u|m|>| +0#0000000&@66
-><+0#e000e06&|c|l|i|e|n|t|>| +0#0000000&@66
-@57|1|6|3|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_00.dump b/runtime/syntax/testdir/dumps/vim_keymap_00.dump
deleted file mode 100644
index 2c43e3d..0000000
--- a/runtime/syntax/testdir/dumps/vim_keymap_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
->"+0#0000e05#ffffff0| |V|i|m| |K|e|y|m|a|p| |f|i|l|e| |f|o|r| |s|y|n|t|a|x| |t|e|s|t|i|n|g| @38
-@75
-@75
-@46| +0#0000000&@28
-@75
-@75
-|"+0#0000e05&| +0#0000000&|M+0#e000e06&|a|i|n|t|a|i|n|e|r|:| +0#0000e05&@2|D|o|u|g| |K|e|a|r|n|s| |<|d|o|u|g|k|e|a|r|n|s|@|g|m|a|i|l|.|c|o|m|>| @24
-@60| +0#0000000&@14
-|"+0#0000e05&| +0#0000000&|L+0#e000e06&|a|s|t| |C|h|a|n|g|e|d|:| +0#0000e05&|2|0|2|3| |N|o|v| |2|1| @47
-@75
-@75
-@46| +0#0000000&@28
-@75
-@75
-@75
-@75
-|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
-@75
-|@+0#4040ff13&@2| @71
-| +0#0000000&@56|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_01.dump b/runtime/syntax/testdir/dumps/vim_keymap_01.dump
deleted file mode 100644
index a07bfc4..0000000
--- a/runtime/syntax/testdir/dumps/vim_keymap_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-@75
-|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| @38| +0#0000000&@15
-|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| @10| +0#0000000&@22
-@75
->"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| @56
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| @2
-@75
-@75
-@46| +0#0000000&@28
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| @4
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| @50| +0#0000000&@14
-@75
-|"+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| @30| +0#0000000&@12
-|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@15|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-@57|1|9|,|1| @9|8|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_99.vim b/runtime/syntax/testdir/dumps/vim_keymap_04.vim
index 546837c..546837c 100644
--- a/runtime/syntax/testdir/dumps/vim9_keymap_99.vim
+++ b/runtime/syntax/testdir/dumps/vim_keymap_04.vim
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
deleted file mode 100644
index 3e2c83d..0000000
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&|)| +0#0000000&@66
-@75
-|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#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#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
-@75
-|l+0#af5f00255&|e|t| +0#0000000&|a+0#00e0e07&|r@1|a|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|[| @61
-@6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|1+0#e000002&|,+0#0000000&| @64
-@6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|2+0#e000002&|,+0#0000000&| @64
-@6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@65
-@6>\+0#e000e06&|]+0#0000000&| @66
-@57|4|9|,|7| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_new_99.dump b/runtime/syntax/testdir/dumps/vim_new_99.dump
deleted file mode 100644
index a9fe50f..0000000
--- a/runtime/syntax/testdir/dumps/vim_new_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
-@75
-|#+0#0000e05&| |V|i|m| |:|n|e|w| |c|o|m@1|a|n|d| |a|n|d| |c|l|a|s@1| |c|o|n|s|t|r|u|c|t|o|r|s|.| +0#0000000&@32
-|c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
-@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|)| +0#0000000&@57
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|O|t|h|e|r|(+0#e000e06&|)| +0#0000000&@52
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|y|e|t|a|n|o|t|h|e|r|(+0#e000e06&|)| +0#0000000&@47
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
-@75
-|T|e|s|t|.+0#af5f00255&|n+0#0000000&|e|w|(+0#e000e06&|)| +0#0000000&@64
-|T|e|s|t|.+0#af5f00255&|n+0#0000000&|e|w|O|t|h|e|r|(+0#e000e06&|)| +0#0000000&@59
-|T|e|s|t|.+0#af5f00255&|n+0#0000000&|e|w|y|e|t|a|n|o|t|h|e|r|(+0#e000e06&|)| +0#0000000&@54
-|n+0#af5f00255&|e|w| +0#0000000&@71
->q+0#af5f00255&|u|i|t| +0#0000000&@70
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|7|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_00.dump b/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
index 8089fc1..00c6cb4 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
@@ -4,8 +4,8 @@
@75
|#+0#0000e05&| |V|i|m| |||b|u|i|l|t|i|n|-|o|b|j|e|c|t|-|m|e|t|h|o|d|s||| |a|n|d| |n|a|m|e|s|a|k|e| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n|s|.| +0#0000000&@12
|c+0#af5f00255&|l|a|s@1| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t| @55
-@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |a|n|y| @47
-@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |a|n|y| @47
+@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@47
+@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@47
@75
@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|,+0#0000000&| |b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@43
@16|t+0#af5f00255&|h|i|s|.|a| +0#0000000&|=+0#af5f00255&| +0#0000000&|a+0#af5f00255&| +0#0000000&@48
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_02.dump b/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
index 7fd4942..d1c24f1 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
@@ -9,9 +9,9 @@
@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@67
@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b|o@1|l| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s|t|r|i|n|g| |=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|1| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@32
|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&@24
|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_03.dump b/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
new file mode 100644
index 0000000..538ba4f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n|e|w|(+0#e000e06&|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|2|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|p+0#0000000&|a|i|r|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@44
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|2|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&@45
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|2|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|2| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&@51
+>e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&@27
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_99.dump b/runtime/syntax/testdir/dumps/vim_object_methods_99.dump
deleted file mode 100644
index b69bf91..0000000
--- a/runtime/syntax/testdir/dumps/vim_object_methods_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|d+0#af5f00255&|e|f| +0#0000000&|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@46
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0e07&|h|i|s|.+0#af5f00255&|n+0#0000000&|a|m|e| @42
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@67
-@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b|o@1|l| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s|t|r|i|n|g| |=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|1| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@32
-|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
-@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n|e|w|(+0#e000e06&|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|2|:+0#0000000&| |b|o@1|l| |=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|p+0#0000000&|a|i|r|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@44
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|2|:+0#0000000&| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&@45
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|2|:+0#0000000&| |s|t|r|i|n|g| |=+0#af5f00255&| +0#0000000&|p|a|i|r|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&@42
-|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|2| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&@51
-|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&@44
->e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&@27
-@57|5|6|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_shebang_99.dump b/runtime/syntax/testdir/dumps/vim_shebang_99.dump
deleted file mode 100644
index 0102412..0000000
--- a/runtime/syntax/testdir/dumps/vim_shebang_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
-@75
-|"+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
-@75
->#+0#ffffff16#ff404010|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000#ffffff0@53
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_99.dump b/runtime/syntax/testdir/dumps/vim_variables_99.dump
deleted file mode 100644
index 003603e..0000000
--- a/runtime/syntax/testdir/dumps/vim_variables_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|.+0#e000002#ffffff0@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|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&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|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&@47
-|.+0#e000002&@2| +0#0000000&@71
-|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
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @61
-@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|x|p|r| @59
-|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-@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|x|p|r| @52
->e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-@57|1|3|8|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_00.dump b/runtime/syntax/testdir/dumps/yaml.yaml_00.dump
deleted file mode 100644
index 3b8fd81..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-><+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&| +0#0000000&@68
-|<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@68
-|<+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&@52
-|<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|~+0#e000e06&|/|D|r|o|p|b|o|x|/|c|p@1|/|v|i|m|/|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|t|e|s|t|d|i|r|/|i|n|p|u|t|/|y|a|m|l|.|y|a|m|l|.|h|t|m|l|<+0#00e0e07&|/|t+0#af5f00255&|i|t|l|e
-|>+0#00e0e07&| +0#0000000&@73
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|G|e|n|e|r|a|t|o|r|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|V|i|m|/|9|.|1|"|>+0#00e0e07&| +0#0000000&@33
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|p|l|u|g|i|n|-|v|e|r|s|i|o|n|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|v|i|m|9|.|0|_|v|2|"|>+0#00e0e07&| +0#0000000&@26
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|s|y|n|t|a|x|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|y|a|m|l|"|>+0#00e0e07&| +0#0000000&@39
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|s|e|t@1|i|n|g|s|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|u|s|e|_|c|s@1|,|n|o|_|f|o|l|d|c|o|l|u|m|n|,|e|x|p|a|n|d|_|t|a|b|s|,|p|r|e|_|w|r|a|p|,|p
-|r|e|v|e|n|t|_|c|o|p|y|=|,|u|s|e|_|i|n|p|u|t|_|f|o|r|_|p|c|=|n|o|n|e|"|>+0#00e0e07&| +0#0000000&@38
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|c|o|l|o|r|s|c|h|e|m|e|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|l|a|n|d|s|c|a|p|e|"|>+0#00e0e07&| +0#0000000&@29
-|<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#0000e05&|!|-@1| +0#0000000&@70
-|p+0#af5f00255&|r|e| +0#0000000&|{+0#00e0e07&| +0#0000000&|w+0#00e0003&|h|i|t|e|-|s|p|a|c|e|:+0#0000000&| |p+0#e000002&|r|e|-|w|r|a|p|;+0#0000000&| |f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |m+0#e000002&|o|n|o|s|p|a|c|e|;+0#0000000&| |c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@5|;+0#0000000&| |b+0#00e0003&|a|c|k|g|r
-|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@5|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@52
-|b+0#af5f00255&|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |m+0#e000002&|o|n|o|s|p|a|c|e|;+0#0000000&| |c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@5|;+0#0000000&| |b+0#00e0003&|a|c|k|g|r|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@5|;+0#0000000&| |}+0#00e0e07&
-|*+0#af5f00255&| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|s|i|z|e|:+0#0000000&| |1+0#e000002&|e|m|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@53
-|.+0#00e0e07&|I|d|e|n|t|i|f|i|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|8|7|d|7|f@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@43
-@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_01.dump b/runtime/syntax/testdir/dumps/yaml.yaml_01.dump
deleted file mode 100644
index 027a3c3..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|b+0#af5f00255#ffffff0|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |m+0#e000002&|o|n|o|s|p|a|c|e|;+0#0000000&| |c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@5|;+0#0000000&| |b+0#00e0003&|a|c|k|g|r|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@5|;+0#0000000&| |}+0#00e0e07&
-|*+0#af5f00255&| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|s|i|z|e|:+0#0000000&| |1+0#e000002&|e|m|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@53
-|.+0#00e0e07&|I|d|e|n|t|i|f|i|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|8|7|d|7|f@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@43
-|.+0#00e0e07&|S|t|a|t|e|m|e|n|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|5|f|d|7|0@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@44
-|.+0#00e0e07&|P|r|e|P|r|o|c| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@1|a|f@2|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@46
->.+0#00e0e07&|T|y|p|e| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@1|5|f@2|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@49
-|.+0#00e0e07&|S|p|e|c|i|a|l|C|h|a|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@1|8|7|0@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@42
-|.+0#00e0e07&|C|o|m@1|e|n|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|7|6|7|6|7|6|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@46
-|.+0#00e0e07&|S|t|r|i|n|g| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@1|a|f|5|f|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@47
-|.+0#00e0e07&|N|u|m|b|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|5|f|d|7|f@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@47
-|.+0#00e0e07&|F|l|o|a|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|5|f@2|a|f|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@48
-|.+0#00e0e07&|C|o|n|s|t|a|n|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|8|7|a|f@2|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@45
-|.+0#00e0e07&|S|p|e|c|i|a|l| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|d|7|a|f|0@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@46
-|-+0#0000e05&@1|>| +0#0000000&@71
-|<+0#00e0e07&|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@66
-|<+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
-|<+0#00e0e07&|p+0#af5f00255&|r|e| +0#00e0e07&|i+0#00e0003&|d|=+0#00e0e07&|'+0#e000002&|v|i|m|C|o|d|e|E|l|e|m|e|n|t|'|>+0#00e0e07&| +0#0000000&@49
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|%+0#0000000&|Y|A|M|L|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|.|2|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@6
-@57|1|9|,|1| @10|9|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_02.dump b/runtime/syntax/testdir/dumps/yaml.yaml_02.dump
deleted file mode 100644
index b0037c8..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_02.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|%+0#0000000&|T|A|G|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|!+0#0000000&@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@4|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|t+0#0000000&|a|g|:|y|a|m|l|.|o|r|g|,|2|0@1|2|:|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |s|e|c|o|n|d|a|r
-|y| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@55
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|%+0#0000000&|T|A|G|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|!+0#0000000&|y|a|m|l|!|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|t+0#0000000&|a|g|:|y|a|m|l|.|o|r|g|,|2|0@1|2|:|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |n|a|m|e|d| |t|a
-|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|P|r|e|P|r|o|c|"|>+0#00e0e07&|-+0#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@42
-><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|!+0#0000000&|s|t|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1
-|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|0+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |p|r|i|m|a|r|y| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@1
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|!+0#0000000&@1|s|t|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s
-@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|0+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@3|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |s|e|c|o|n|d|a|r|y| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|!+0#0000000&|y|a|m|l|!|s|t|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&
-|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|0+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |n|a|m|e|d| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@3
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|P|r|e|P|r|o|c|"|>+0#00e0e07&|-+0#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@42
-@75
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|o@1|l|e|a|n|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|f+0#0000000&|a|l|s|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&
-|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|t+0#0000000&|r|u|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|F+0#0000000&|A|L|S|E|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o
-|@+0#4040ff13&@2| @71
-| +0#0000000&@56|3|7|,|1| @9|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_03.dump b/runtime/syntax/testdir/dumps/yaml.yaml_03.dump
deleted file mode 100644
index d16656d..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_03.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|i+0#0000000&|n|f|i|n|i|t|y|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|i|n|f|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o
-|a|t|"|>+0#00e0e07&|-+0#0000000&|.|I|n|f|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|++0#0000000&|.|I|N|F|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/
-|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|n+0#0000000&|o|t| |a| |n|u|m|b|e|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|n|a|n|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&
-|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|N|a|N|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|N|A|N|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&
-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@67
-> @74
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|p+0#0000000&|l|a|i|n| |s|t|r|i|n|g|s|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|a| |b| |c| @34
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|a| |*| |b| |&+0#e000e06&|a|m|p|;| +0#0000000&|c| |@| |d|#| |e| |:| |f|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m
-@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@51
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|{@1| |f|(|'| |'|)| |}@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#|8|2|3|4
-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|d+0#0000000&|o|u|b|l|e| |q|u|o|t|e|d| |s|t|r|i|n|g|s|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&
-|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@66
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-|@+0#4040ff13&@2| @71
-| +0#0000000&@56|5@1|,|0|-|1| @7|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_04.dump b/runtime/syntax/testdir/dumps/yaml.yaml_04.dump
deleted file mode 100644
index 6a3aecf..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_04.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |f|o|l|d|e|d| |s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&
-|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|g|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@34
-@2|f|o@1| @69
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@52
-@75
-@4><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|n+0#0000000&|u|l@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@45
-@75
-@2|&+0#e000e06&|q|u|o|t|;|q+0#0000000&|u|x|&+0#e000e06&|q|u|o|t|;| +0#0000000&@57
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |l|i|t|e|r|a|l| |s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&
-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&||+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@36
-@2|f|o@1| @69
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@52
-@75
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|n+0#0000000&|u|l@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@45
-@75
-@57|7|3|,|5| @9|4|5|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_05.dump b/runtime/syntax/testdir/dumps/yaml.yaml_05.dump
deleted file mode 100644
index c94413e..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_05.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |l|i|t|e|r|a|l| |s
-|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&||+0#0000000&|+|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<
-|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@36
-@6|f|o@1| @65
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@48
-@2><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&||+0#0000000&|-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a
-|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#|1@1|5|1|7|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@47
-@6|f|o@1| |&+0#e000e06&|q|u|o|t|;|\+0#0000000&|&+0#e000e06&|q|u|o|t|;| +0#0000000&@51
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@48
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |i|n|d|e|n|t|a|t|i|o|n| |i|n|d|i|c|a|t|o|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e
-|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@60
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |f|o|l|d|e|d| |s|t
-|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|g|t|;|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n
-|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@34
-@5|f|o@1| @66
-@5|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@49
-@57|9|1|,|3| @9|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_06.dump b/runtime/syntax/testdir/dumps/yaml.yaml_06.dump
deleted file mode 100644
index dcd2e6a..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_06.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|e+0#0000000&|m|p|t|y| |m|a|p@1|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a
-|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|}|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@40
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |s|e|q|u|e|n|c|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a
-|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|f+0#0000000&|o@1|,| |b|a|r|,| |b|a|z|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n
-|>+0#00e0e07&| +0#0000000&@73
-@2><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |m|a|p@1|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n
-|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l
-|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|r|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&
-|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|q|u|x|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|}+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@22
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@3|f|o@1| @67
-@4|b|a|r| @67
-@4|b|a|z| @67
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|d+0#0000000&|o|u|b|l|e| |q|u|o|t|e|d| |<+0#00e0e07&|/|s+0#af5f00255&|p
-|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|C|h|a|r|"|>+0#00e0e07&|\+0#0000000&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&| +0#0000000&|s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p
-|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@47
-@4|f|o@1| @67
-@4|b|a|r| @67
-@57|1|0|9|,|3| @8|6|9|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_07.dump b/runtime/syntax/testdir/dumps/yaml.yaml_07.dump
deleted file mode 100644
index 6ba7ff1..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_07.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |c|o|l@1|e|c|t|i|o|n|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&
-|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a
-|n|>+0#00e0e07&| +0#0000000&@72
-@4|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|{|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1
-|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@52
-@6><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|'+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@48
-@8|q|u|x|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |n|o|t| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@20
-@6|'|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@28
-@4|}|]|}|]| @66
-@75
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|e+0#0000000&|x|p|l|i|c|i|t| |m|a|p@1|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p
-|a|n|>+0#00e0e07&| +0#0000000&@71
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|o@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|r|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|o@1| @5
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|r| @34
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|z| @5
-@57|1|2|7|,|7| @8|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_08.dump b/runtime/syntax/testdir/dumps/yaml.yaml_08.dump
deleted file mode 100644
index e2d7018..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_08.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|o|n|e| @36
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|2+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@10
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|3+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@21
-@8|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|t|h|r|e@1| @30
-@6><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&
-|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|4+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i
-|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|o|u|r|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&
-|5+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|i|v|e|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@35
-@8|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|6+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@39
-@8|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|7+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|s+0#0000000&|e|v|e|n|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|}+0#0000000&@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@12
-@75
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|m+0#0000000&|a|p@1|i|n|g| |m|e|r|g|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|&+0#e000e06&|a|m|p|;|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@47
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|z| @1
-@57|1|4|5|,|7| @8|9|2|%|
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_99.dump b/runtime/syntax/testdir/dumps/yaml.yaml_99.dump
deleted file mode 100644
index 7467b76..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|&+0#e000e06&|a|m|p|;|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@45
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i
-|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@62
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|q+0#0000000&|u|x|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@5
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|l|t|;|&|l|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&
-|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T
-|y|p|e|"|>+0#00e0e07&|*+0#0000000&|b|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@28
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|l|t|;|&|l|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p
-|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|q+0#0000000&|u
-|x|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|{|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|l|t|;|&|l|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1
-|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|}+0#0000000&|]|}|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@23
-|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@68
-|<+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#0000e05&|!|-@1| |v|i|m|:| |s|e|t| |f|o|l|d|m|e|t|h|o|d|=|m|a|n|u|a|l| |:| |-@1|>| +0#0000000&@37
-@57|1|6|2|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/yaml_01.dump b/runtime/syntax/testdir/dumps/yaml_01.dump
index ae84e98..bbef58c 100644
--- a/runtime/syntax/testdir/dumps/yaml_01.dump
+++ b/runtime/syntax/testdir/dumps/yaml_01.dump
@@ -11,10 +11,10 @@
@75
|p+0#00e0e07&|l|a|i|n| |s|t|r|i|n|g|s|:+0#e000e06&| +0#0000000&@60
@2|-+0#af5f00255&| +0#0000000&|a| |b| |c| @65
-@2|-+0#af5f00255&| +0#0000000&|a| |*| |b| |&| |c| |@| |d|#| |e| |:| |f| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@40
+@2|-+0#af5f00255&| +0#0000000&|a|:|b| |&| |c| |@| |d|#| |e| |*| |f| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@42
@2|-+0#af5f00255&| +0#0000000&|{@1| |f|(|'| |'|)| |}@1| +0#0000e05&|#|8|2|3|4| +0#0000000&@52
|d+0#00e0e07&|o|u|b|l|e| |q|u|o|t|e|d| |s|t|r|i|n|g|s|:+0#e000e06&| +0#0000000&@52
@2|-+0#af5f00255&| +0#0000000&|"+0#e000002&@1| +0#0000000&@68
@2|-+0#af5f00255&| +0#0000000&|"+0#e000002&|a| |b| |c|"|:+0#e000e06&| +0#0000000&|"+0#e000002&|d| |e| |f|"| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@44
@2|-+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&@2|"|\|a|\|b|\|f|\|n|\|r|\|t|\|v|\|0|\|_|\| |\|N|\|L|\|P|\|x|4|1|\|u|0@1|4|1|\|U|0@5|4|1|"+0#e000002&| +0#0000000&@18
-@57|1|9|,|1| @9|1|2|%|
+@57|1|9|,|1| @9|1@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_03.dump b/runtime/syntax/testdir/dumps/yaml_03.dump
index 4d1466e..2ca0df0 100644
--- a/runtime/syntax/testdir/dumps/yaml_03.dump
+++ b/runtime/syntax/testdir/dumps/yaml_03.dump
@@ -17,4 +17,4 @@
@5|b|a|r|:| |1| @63
@2|-+0#af5f00255&| +0#0000000&|b+0#00e0e07&|l|o|c|k| |l|i|t|e|r|a|l| |s|t|r|i|n|g|:+0#e000e06&| +0#0000000&||+0#e000e06&|1|-| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@35
@5|f|o@1| @66
-@57|5@1|,|7| @9|4|5|%|
+@57|5@1|,|7| @9|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_04.dump b/runtime/syntax/testdir/dumps/yaml_04.dump
index 2503470..3eda526 100644
--- a/runtime/syntax/testdir/dumps/yaml_04.dump
+++ b/runtime/syntax/testdir/dumps/yaml_04.dump
@@ -17,4 +17,4 @@
| +0#e000002&@3|f|o@1| +0#0000000&@67
| +0#e000002&@3|b|a|r| +0#0000000&@67
| +0#e000002&@3|b|a|z|"| +0#0000000&@66
-@57|7|3|,|0|-|1| @7|6|2|%|
+@57|7|3|,|0|-|1| @7|6|1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_05.dump b/runtime/syntax/testdir/dumps/yaml_05.dump
index d64c48b..570bdc0 100644
--- a/runtime/syntax/testdir/dumps/yaml_05.dump
+++ b/runtime/syntax/testdir/dumps/yaml_05.dump
@@ -6,9 +6,10 @@
@2>i+0#00e0e07&|n|s|i|d|e| |b|l|o|c|k| |m|a|p@1|i|n|g|:+0#e000e06&| +0#0000000&@51
@4|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|{+0#e000e06&|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z|}+0#e000e06&| +0#0000000&@55
@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|[+0#e000e06&|"+0#e000002&|f|o@1|"|:+0#e000e06&| +0#0000000&|{+0#e000e06&|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|q|u|x|}+0#e000e06&|]| +0#0000000&@46
-@2|f+0#00e0e07&|l|o|w| |c|o|l@1|e|c|t|i|o|n|:+0#e000e06&| +0#0000000&|[+0#e000e06&|f+0#0000000&|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@41
+@2|f+0#00e0e07&|l|o|w|:|c|o|l@1|e|c|t|i|o|n|:+0#e000e06&| +0#0000000&|[+0#e000e06&|f+0#0000000&|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@41
@4|,| |{+0#e000e06&|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@50
-@6|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|'+0#e000002&| +0#0000000&@62
+@6|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&@64
+@6|'+0#e000002&| +0#0000000&@67
| +0#e000002&@7|q|u|x| |#| |n|o|t| |c|o|m@1|e|n|t| +0#0000000&@49
| +0#e000002&@5|'| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
@4|}+0#e000e06&|]|}|]| +0#0000000&@66
@@ -16,5 +17,4 @@
|e+0#00e0e07&|x|p|l|i|c|i|t| |m|a|p@1|i|n|g|:+0#e000e06&| +0#0000000&@57
@2|?+0#e000e06&| +0#0000000&|f|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
@2|:+0#e000e06&| +0#0000000&|b|a|r| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
-@2|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
-@57|9|1|,|3| @9|7|8|%|
+@57|9|1|,|3| @9|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_06.dump b/runtime/syntax/testdir/dumps/yaml_06.dump
index f6c83c2..30ea7ff 100644
--- a/runtime/syntax/testdir/dumps/yaml_06.dump
+++ b/runtime/syntax/testdir/dumps/yaml_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
+| +0&#ffffff0@1|:+0#e000e06&| +0#0000000&|b|a|r| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
+@2|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
@4|-+0#af5f00255&| +0#0000000&|b|a|r| @65
@2|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|b|a|z| @65
@4|-+0#af5f00255&| +0#0000000&|q|u|x| @65
-@2|?+0#e000e06&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@61
-@2>:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
+@2>?+0#e000e06&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@61
+@2|:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
@4|:+0#e000e06&| +0#0000000&|o|n|e| @65
@4|?+0#e000e06&| +0#0000000&|2+0#e000002&| +0#0000000&@67
@4|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|?+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@63
@8|:+0#e000e06&| +0#0000000&|t|h|r|e@1| @59
@6|-+0#af5f00255&| +0#0000000&|{+0#e000e06&|?|4+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|o|u|r|,| |?+0#e000e06&| +0#0000000&|5+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|i|v|e|,| |?+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@33
@8|6+0#00e0e07&|:+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@54
-@8|{+0#e000e06&|7+0#00e0e07&|:+0#e000e06&|s+0#0000000&|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
+@8|{+0#e000e06&|7+0#0000000&|:|s|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
@75
|m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
@2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
@2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
-@57|1|0|9|,|3| @8|9|5|%|
+@57|1|0|9|,|3| @8|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_07.dump b/runtime/syntax/testdir/dumps/yaml_07.dump
index a21684f..ff6d9a2 100644
--- a/runtime/syntax/testdir/dumps/yaml_07.dump
+++ b/runtime/syntax/testdir/dumps/yaml_07.dump
@@ -1,13 +1,9 @@
-| +0&#ffffff0@74
-|m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
-@2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
-@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
-@2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4><+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
+| +0&#ffffff0@1|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
+@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
@4|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|&+0#00e0003&|b|a|r| +0#0000000&@61
@6|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|]+0#e000e06&| +0#0000000&@57
@4|q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&@66
-@6|<+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
+@6><+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
@2|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|{+0#e000e06&|<@1|:| +0#0000000&|*+0#00e0003&|f|o@1|,+0#0000000&| |q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{|<@1| +0#0000000&|:+0#e000e06&| +0#0000000&|*+0#00e0003&|f|o@1|}+0#e000e06&|]|}| +0#0000000&@37
|~+0#4040ff13&| @73
|~| @73
@@ -17,4 +13,8 @@
|~| @73
|~| @73
|~| @73
-| +0#0000000&@56|1|2|7|,|5| @8|B|o|t|
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|7|,|7| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/yaml_99.dump b/runtime/syntax/testdir/dumps/yaml_99.dump
deleted file mode 100644
index e81b373..0000000
--- a/runtime/syntax/testdir/dumps/yaml_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
-@4|:+0#e000e06&| +0#0000000&|o|n|e| @65
-@4|?+0#e000e06&| +0#0000000&|2+0#e000002&| +0#0000000&@67
-@4|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|?+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@63
-@8|:+0#e000e06&| +0#0000000&|t|h|r|e@1| @59
-@6|-+0#af5f00255&| +0#0000000&|{+0#e000e06&|?|4+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|o|u|r|,| |?+0#e000e06&| +0#0000000&|5+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|i|v|e|,| |?+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@33
-@8|6+0#00e0e07&|:+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@54
-@8|{+0#e000e06&|7+0#00e0e07&|:+0#e000e06&|s+0#0000000&|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
-@75
-|m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
-@2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
-@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
-@2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
-@4|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|&+0#00e0003&|b|a|r| +0#0000000&@61
-@6|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|]+0#e000e06&| +0#0000000&@57
-@4|q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&@66
-@6|<+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
-@2>b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|{+0#e000e06&|<@1|:| +0#0000000&|*+0#00e0003&|f|o@1|,+0#0000000&| |q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{|<@1| +0#0000000&|:+0#e000e06&| +0#0000000&|*+0#00e0003&|f|o@1|}+0#e000e06&|]|}| +0#0000000&@37
-@57|1|2|7|,|3| @8|B|o|t|
diff --git a/runtime/syntax/testdir/input/java_annotations_signature.java b/runtime/syntax/testdir/input/java_annotations_signature.java
new file mode 100644
index 0000000..8236218
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_annotations_signature.java
@@ -0,0 +1,78 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+class Annotations$Tests
+{
+ @Target(ElementType.TYPE_USE)
+ @interface Tag
+ {
+ String value() default "";
+ String kind() default "";
+ }
+
+ @Target(ElementType.TYPE_USE)
+ @interface Text
+ {
+ String[] value() default {""};
+ }
+
+ @Target({
+ ElementType.METHOD,
+ ElementType.PARAMETER,
+ ElementType.TYPE,
+ })
+ @interface Labels
+ {
+ Label[] value();
+ }
+
+ @java.lang.annotation.Target({
+ java.lang.annotation.ElementType.METHOD,
+ java.lang.annotation.ElementType.PARAMETER,
+ java.lang.annotation.ElementType.TYPE,
+ })
+ @java.lang.annotation.Repeatable(Labels.class)
+ @interface Label
+ {
+ String value() default "";
+ Class<?> type() default Label.class;
+ boolean redundant() default true;
+ Text text() default @Text;
+ Tag head() default @Tag();
+ Tag tail() default @Tag(value = "", kind = "");
+ }
+
+ /* Use identity cast expressions to nest TYPE_USE annotations. */
+ @Label(
+ (@Text({
+ (@Text({ "a", "aa", "aaa", "aaaa", }) String) "as",
+ (@Text({ "b", "bb", "bbb", "bbbb", }) String) "bs",
+ (@Text({ "c", "cc", "ccc", "cccc", }) String) "cs",
+ (@Text({ "d", "dd", "ddd", "dddd", }) String) "ds",
+ }) String) "abcd")
+ interface Primer { }
+
+ @Label @Label() @Label("""
+ n\
+ o\
+ O\
+ p""")
+ @Label(head = @Tag(value = "@Label"/*, kind = "name"*/))
+ @Label(// value = "Method",
+ type = Annotations$Tests.class,
+ redundant = !!!(1 != 1),
+ head = @Tag(value = "@Label"),
+ text = @Text({ "})", "({" }))
+ static void noOp(@Label @Label() @Label("dummy")
+ @Label(head = @Tag(/*value = "@Label",*/ kind = "name"))
+ @Label(// value = "Parameter",
+ type = Annotations$Tests.class,
+ head = @Tag(value = "@Label"),
+ text = @Text({ "){", "}(" }))
+ Object dummy)
+ {
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_enfoldment.java b/runtime/syntax/testdir/input/java_enfoldment.java
index b534122..a1d8822 100644
--- a/runtime/syntax/testdir/input/java_enfoldment.java
+++ b/runtime/syntax/testdir/input/java_enfoldment.java
@@ -1,5 +1,5 @@
// VIM_TEST_SETUP setlocal foldenable foldcolumn=2 foldmethod=syntax
-// VIM_TEST_SETUP let g:java_mark_braces_in_parens_as_errors = 1
+// VIM_TEST_SETUP let g:java_foldtext_show_first_or_second_line = 1
@SuppressWarnings({
"""
@@ -39,7 +39,7 @@ class FoldingTests {
break;
}
default: ;
- };
+ }
}
{ Object bb = ((Object) new byte[]{}); }
@@ -51,6 +51,18 @@ out: {
} while (false);
}
}
+/*\\\*/ {
+ (new java.util.function.Function<Object, Object>() {
+ /**
+ * {@inheritDoc} */
+ public Object apply(Object o) { return o; };
+ }).apply(
+ (new java.util.function.Function<Object, Object>() {
+ /** {@inheritDoc}
+ */
+ public Object apply(Object o) { return o; };
+ }));
+ }
/**
* No operation.
diff --git a/runtime/syntax/testdir/input/java_generics.java b/runtime/syntax/testdir/input/java_generics.java
new file mode 100644
index 0000000..c9b001a
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_generics.java
@@ -0,0 +1,140 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+// VIM_TEST_SETUP hi link javaGenericsC1 Todo
+// VIM_TEST_SETUP hi link javaGenericsC2 Error
+
+import java.math.BigInteger;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.LongFunction;
+import java.util.function.Predicate;
+
+class GenericsTests<T extends Number & Comparable<? super T>, U>
+{ // JDK 21+.
+ static final Function<Function<Object, Object>, Object> PARTIAL =
+ GenericsTests.y0();
+ static final Function<BigInteger, BigInteger> FACTORIAL_2000 =
+ GenericsTests.<BigInteger, BigInteger>y1()
+ .apply(f -> x -> (x.compareTo(BigInteger.ONE) < 1)
+ ? BigInteger.ONE
+ : x.multiply(f.apply(x.subtract(BigInteger.ONE))));
+
+ static <T1> Y0<T1> y0()
+ {
+ return (Function<T1, T1> f) -> f.apply(
+ GenericsTests.<T1>y0()
+ .apply(f));
+ }
+
+ static <T1, T2> Y1<T1, T2> y1()
+ {
+ return (Function<Function<T1, T2>, Function<T1, T2>> f) ->
+ (T1 x) -> f.apply(GenericsTests.<T1, T2>y1()
+ .apply(f))
+ .apply(x);
+ }
+
+ static<T> void noOp(T dummy) { }
+
+ interface alpha<T> { }
+
+ interface Y0<T1> extends Function<Function<T1, T1>, T1> { }
+
+ interface Y1<T1, T2> extends Function<Function<Function<T1, T2>,
+ Function<T1, T2>>,
+ Function<T1, T2>> { }
+
+ interface Stackable<E> extends Iterable<E>
+ {
+ boolean isEmpty();
+ E peek();
+ E pop();
+ Stackable<E> popAll(Stackable<? super E> elements);
+ Stackable<E> popSome(Stackable<? super E> elements,
+ Predicate<? super E> filter);
+ Stackable<E> push(E element);
+ Stackable<E> pushAll(Iterable<? extends E> elements);
+ Stackable<E> pushSome(Iterable<? extends E> elements,
+ Predicate<? super E> filter);
+ Stackable<E> wind(Consumer<? super Stackable<E>> action);
+ }
+
+ sealed interface Num<N extends Number>
+ {
+ int radix();
+ N value();
+ }
+
+ record Bin<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 2; }
+ }
+
+ record Dec<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 10; }
+ }
+
+ record Hex<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 16; }
+ }
+
+ record Oct<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 8; }
+ }
+
+ static Num<Long> fromDecimal(long x, int radix)
+ {
+ record Pair(LongFunction<Num<Long>> a,
+ LongFunction<String> b) { }
+ final Pair p = switch (radix) {
+ case 2 -> new Pair(Bin::new, Long::toBinaryString);
+ case 8 -> new Pair(Oct::new, Long::toOctalString);
+ case 16 -> new Pair(Hex::new, Long::toHexString);
+ default -> new Pair(Dec::new,
+ y -> Long.toString(y));
+ };
+ return p.a().apply(Long.parseLong(p.b().apply(x), radix));
+ }
+
+ static long toDecimal(Num<Long> x)
+ {
+ return Long.parseLong(switch (x) {
+ case Bin<?>(Long b) -> Long.toBinaryString(b);
+ case Oct<?>(Long o) -> Long.toOctalString(o);
+ case Hex<?>(Long h) -> Long.toHexString(h);
+ default -> Long.toString(x.value());
+ }, x.radix());
+ }
+
+ @java.lang.annotation.Target(
+ java.lang.annotation.ElementType.TYPE_USE)
+ @interface Taggable
+ {
+ String value() default "";
+ }
+
+ {
+ int N = 0, X = 1, Y = 2;
+ Predicate<T> f = y->N<y.intValue();
+ Predicate<T> g = y->X<N&&(Integer)y>N;
+ boolean[] bb = {
+ X<N||N>Y, X < Y, X <Y, X <(Y), X<(Y), (X)<Y,
+ Double.isFinite(X<<Y),
+ X<=Y, X<(int)(byte)Y, X<~Y, X<-Y, X<+Y,
+ };
+ Class<?> klass = GenericsTests.class;
+ Class< java.lang.Class<@Taggable("<>")int[][]> [] [] >
+ [ ] [ ] $ [ ] [ ];
+ if (false) { new GenericsTests<>(); }
+ alpha<?> ao;
+ alpha<U> au;
+ alpha<alpha<U>> aau;
+ alpha<Y0<?>> ay0o;
+ alpha<Y0<U>> ay0u;
+ Y0<alpha<?>> y0ao;
+ Y0<alpha<U>> y0au;
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_generics_signature.java b/runtime/syntax/testdir/input/java_generics_signature.java
new file mode 100644
index 0000000..505e70e
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_generics_signature.java
@@ -0,0 +1,140 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+// VIM_TEST_SETUP hi link javaGenericsC1 Todo
+// VIM_TEST_SETUP hi link javaGenericsC2 Error
+import java.math.BigInteger;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.LongFunction;
+import java.util.function.Predicate;
+
+class Generics$Tests<T extends Number & Comparable<? super T>, U>
+{ // JDK 21+.
+ static final Function<Function<Object, Object>, Object> PARTIAL =
+ Generics$Tests.y0();
+ static final Function<BigInteger, BigInteger> FACTORIAL_2000 =
+ Generics$Tests.<BigInteger, BigInteger>y1()
+ .apply(f -> x -> (x.compareTo(BigInteger.ONE) < 1)
+ ? BigInteger.ONE
+ : x.multiply(f.apply(x.subtract(BigInteger.ONE))));
+
+ static <T1> Y0<T1> y0()
+ {
+ return (Function<T1, T1> f) -> f.apply(
+ Generics$Tests.<T1>y0()
+ .apply(f));
+ }
+
+ static <T1, T2> Y1<T1, T2> y1()
+ {
+ return (Function<Function<T1, T2>, Function<T1, T2>> f) ->
+ (T1 x) -> f.apply(Generics$Tests.<T1, T2>y1()
+ .apply(f))
+ .apply(x);
+ }
+
+ static<T> void noOp(T dummy) { }
+
+ interface alpha<T> { }
+
+ interface Y0<T1> extends Function<Function<T1, T1>, T1> { }
+
+ interface Y1<T1, T2> extends Function<Function<Function<T1, T2>,
+ Function<T1, T2>>,
+ Function<T1, T2>> { }
+
+ interface Stackable<E> extends Iterable<E>
+ {
+ boolean isEmpty();
+ E peek();
+ E pop();
+ Stackable<E> popAll(Stackable<? super E> elements);
+ Stackable<E> popSome(Stackable<? super E> elements,
+ Predicate<? super E> filter);
+ Stackable<E> push(E element);
+ Stackable<E> pushAll(Iterable<? extends E> elements);
+ Stackable<E> pushSome(Iterable<? extends E> elements,
+ Predicate<? super E> filter);
+ Stackable<E> wind(Consumer<? super Stackable<E>> action);
+ }
+
+ sealed interface Num<N extends Number>
+ {
+ int radix();
+ N value();
+ }
+
+ record Bin<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 2; }
+ }
+
+ record Dec<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 10; }
+ }
+
+ record Hex<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 16; }
+ }
+
+ record Oct<N extends Number>(N value) implements Num<N>
+ {
+ public int radix() { return 8; }
+ }
+
+ static Num<Long> fromDecimal(long x, int radix)
+ {
+ record Pair(LongFunction<Num<Long>> a,
+ LongFunction<String> b) { }
+ final Pair p = switch (radix) {
+ case 2 -> new Pair(Bin::new, Long::toBinaryString);
+ case 8 -> new Pair(Oct::new, Long::toOctalString);
+ case 16 -> new Pair(Hex::new, Long::toHexString);
+ default -> new Pair(Dec::new,
+ y -> Long.toString(y));
+ };
+ return p.a().apply(Long.parseLong(p.b().apply(x), radix));
+ }
+
+ static long toDecimal(Num<Long> x)
+ {
+ return Long.parseLong(switch (x) {
+ case Bin<?>(Long b) -> Long.toBinaryString(b);
+ case Oct<?>(Long o) -> Long.toOctalString(o);
+ case Hex<?>(Long h) -> Long.toHexString(h);
+ default -> Long.toString(x.value());
+ }, x.radix());
+ }
+
+ @java.lang.annotation.Target(
+ java.lang.annotation.ElementType.TYPE_USE)
+ @interface Taggable
+ {
+ String value() default "";
+ }
+
+ {
+ int N = 0, X = 1, Y = 2;
+ Predicate<T> f = y->N<y.intValue();
+ Predicate<T> g = y->X<N&&(Integer)y>N;
+ boolean[] bb = {
+ X<N||N>Y, X < Y, X <Y, X <(Y), X<(Y), (X)<Y,
+ Double.isFinite(X<<Y),
+ X<=Y, X<(int)(byte)Y, X<~Y, X<-Y, X<+Y,
+ };
+ Class<?> klass = Generics$Tests.class;
+ Class< java.lang.Class<@Taggable("<>")int[][]> [] [] >
+ [ ] [ ] $ [ ] [ ];
+ if (false) { new Generics$Tests<>(); }
+ alpha<?> ao;
+ alpha<U> au;
+ alpha<alpha<U>> aau;
+ alpha<Y0<?>> ay0o;
+ alpha<Y0<U>> ay0u;
+ Y0<alpha<?>> y0ao;
+ Y0<alpha<U>> y0au;
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_lambda_expressions.java b/runtime/syntax/testdir/input/java_lambda_expressions.java
index 75f5af4..95531f9 100644
--- a/runtime/syntax/testdir/input/java_lambda_expressions.java
+++ b/runtime/syntax/testdir/input/java_lambda_expressions.java
@@ -136,7 +136,7 @@ class LambdaExpressionsTests // JDK 21+.
case String str_ -> str_;
}): { echo(str); break; }
case null: default: { echo("Other"); }
- };
+ }
echo(switch (null) {
case String str when !"<empty>".equals(
diff --git a/runtime/syntax/testdir/input/java_lambda_expressions_signature.java b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
new file mode 100644
index 0000000..0d89e9c
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
@@ -0,0 +1,154 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+
+import java.lang.annotation.ElementType;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+class LambdaExpressions$Tests // JDK 21+.
+{
+ <I1, C1, C2, T1, T2, T3, Z1, Z2, Z3, S1, S2, S3> void test()
+ { // Schönfinkel's functions.
+ I<I1> i = x -> x;
+ C<C1, C2> c = x -> y -> x;
+ T<T1, T2, T3> t = f -> y -> x -> f.apply(x).apply(y);
+ Z<Z1, Z2, Z3> z = f -> g -> x -> f.apply(g.apply(x));
+ S<S1, S2, S3> s = f -> g -> x -> f.apply(x)
+ .apply(g.apply(x));
+
+ I<I1> i01 = (var x) -> x;
+ I<I1> i02 = (@Taggable var x) -> x;
+ I<I1> i03 = (@Taggable @Taggable var x) -> x;
+ I<I1> i04 = (final var x) -> x;
+ I<I1> i05 = (@Taggable final var x) -> x;
+ I<I1> i06 = (@Taggable @Taggable final var x) -> x;
+ I<I1> i07 = (I1 x) -> x;
+ I<I1> i08 = (@Taggable I1 x) -> x;
+ I<I1> i09 = (@Taggable @Taggable I1 x) -> x;
+ I<I1> i10 = (final I1 x) -> x;
+ I<I1> i11 = (@Taggable final I1 x) -> x;
+ I<I1> i12 = (@Taggable @Taggable final I1 x) -> x;
+
+ I<I1[]> ii01 = (I1... x) -> x;
+ I<I1[]> ii02 = (@Taggable I1... x) -> x;
+ I<I1[]> ii03 = (@Taggable @Taggable I1... x) -> x;
+ I<I1[]> ii04 = (final I1... x) -> x;
+ I<I1[]> ii05 = (@Taggable final I1... x) -> x;
+ I<I1[]> ii06 = (@Taggable @Taggable final I1... x) -> x;
+
+ BinaryOperator<I1> leftConst01 = (var x, var y) -> x;
+ BinaryOperator<I1> leftConst02 = (@Taggable var x,
+ @Taggable var y) -> x;
+ BinaryOperator<I1> leftConst03 = (@Taggable @Taggable var
+ x, @Taggable @Taggable var y) -> x;
+ BinaryOperator<I1> leftConst04 = (final var x,
+ final var y) -> x;
+ BinaryOperator<I1> leftConst05 = (@Taggable final
+ var x, @Taggable final var y) -> x;
+ BinaryOperator<I1> leftConst06 = (@Taggable
+ @Taggable final var x,
+ @Taggable
+ @Taggable final var y) -> x;
+ BinaryOperator<I1> leftConst07 = (I1 x, I1 y) -> x;
+ BinaryOperator<I1> leftConst08 = (@Taggable I1 x,
+ @Taggable I1 y) -> x;
+ BinaryOperator<I1> leftConst09 = (@Taggable @Taggable I1
+ x, @Taggable @Taggable I1 y) -> x;
+ BinaryOperator<I1> leftConst10 = (final I1 x,
+ final I1 y) -> x;
+ BinaryOperator<I1> leftConst11 = (@Taggable final
+ I1 x, @Taggable final I1 y) -> x;
+ BinaryOperator<I1> leftConst12 = (@Taggable
+ @Taggable final I1 x,
+ @Taggable
+ @Taggable final I1 y) -> x;
+
+ Runnable noOp = () -> {};
+ BinaryOperator<I1> leftConst = (x, y) -> x;
+ I<I1> id1 = (x) -> (x);
+ @SuppressWarnings("unchecked") I<I1> id2 =
+ ((I<I<I1>>) (I<?>) (Function<I1,
+ I1> x) -> x).apply(switch (0) {
+ case ((int) (byte) 1) -> (I1 x) -> x;
+ default -> (@Taggable I1 x) -> x; });
+ C<C1, C2> const1 = (x) -> (y) -> (x);
+ C<C1, C2> const2 = switch(switch ("") {
+ case "->"->"(s)->(s)";
+ default->"default"; }) {
+ case ("->")->(var x)->(var y)->(x);
+ default->(@Taggable var x)->(@Taggable var y)
+ ->(x);
+ };
+ }
+
+ @java.lang.annotation.Target(ElementType.PARAMETER)
+ @java.lang.annotation.Repeatable(Taggables.class)
+ @interface Taggable { String[] value() default ""; }
+
+ @java.lang.annotation.Target(ElementType.PARAMETER)
+ @interface Taggables { Taggable[] value(); }
+
+ interface I<A1> extends Function<A1, A1> { }
+ interface C<A1, A2> extends Function<A1, Function<A2, A1>> { }
+ interface T<A1, A2, A3> extends
+ Function<Function<A1, Function<A2, A3>>,
+ Function<A2,
+ Function<A1, A3>>> { }
+ interface Z<A1, A2, A3> extends Function<Function<A2, A3>,
+ Function<Function<A1, A2>,
+ Function<A1, A3>>> { }
+ interface S<A1, A2, A3> extends
+ Function<Function<A1, Function<A2, A3>>,
+ Function<Function<A1, A2>,
+ Function<A1, A3>>> { }
+
+ static void echo(Object o) { System.out.println(o); }
+
+ static {
+ enum Letters { OTHER, ALPHA, BETA }
+
+ Letters other = Letters.OTHER;
+
+ switch (other) {
+ case Letters alpha when Letters.ALPHA == alpha:
+ { echo(alpha); break; }
+ case Letters beta when Letters.BETA == beta:
+ { echo(beta); break; }
+ default: { echo(other); }
+ }
+
+ echo(switch (other) {
+ case Letters alpha when Letters.ALPHA == alpha
+ -> alpha;
+ case Letters beta when Letters.BETA == beta
+ -> beta;
+ default -> other;
+ });
+
+ switch (null) {
+ case String str when !"<empty>".equals(switch (str) {
+ case String str_ when
+ Predicate.<String>not(text ->
+ !text.isEmpty())
+ .test(str_)
+ -> "<empty>";
+ case String str_ -> str_;
+ }): { echo(str); break; }
+ case null: default: { echo("Other"); }
+ }
+
+ echo(switch (null) {
+ case String str when !"<empty>".equals(
+ switch (str) {
+ case String str_ when
+ Predicate.<String>not(text ->
+ !text.isEmpty())
+ .test(str_)
+ -> "<empty>";
+ case String str_ -> str_;
+ }) -> str;
+ case null, default -> "Other";
+ });
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_method_references.java b/runtime/syntax/testdir/input/java_method_references.java
new file mode 100644
index 0000000..d9cdf42
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_method_references.java
@@ -0,0 +1,186 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+
+
+import java.lang.invoke.MethodHandle;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.IntFunction;
+import java.util.function.IntSupplier;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.ToIntFunction;
+import java.util.function.UnaryOperator;
+
+class MethodReferencesTests
+{
+ static {
+ // Primary :: [TypeArguments] Identifier
+ try {
+ Runnable r1 = ((Runtime) null)::gc;
+ } catch (NullPointerException expected) {
+ }
+
+ Supplier<Integer> s1 = ((Number) 0)::hashCode;
+ Supplier<Integer> s2 = ((Comparable<?>) '\0')::hashCode;
+ Supplier<Integer> s3 = ((Comparable<?>) false)::hashCode;
+ Supplier<Integer> s4 = "::"::hashCode;
+ Supplier<Class<?>> s5 = int[].class::arrayType;
+ Supplier<Integer> s6 = new MethodReferencesTests() ::
+ hashCode;
+ Supplier<Integer> s7 = ((Number)
+ (new MethodReferencesTests().xy)[0])::intValue;
+ Supplier<int[]> s8 = new MethodReferencesTests().xy::
+ clone;
+ Consumer<Object> c1 = System.out :: println;
+ Supplier<byte[]> s9 = ((Supplier<String>) ()->"()").get()
+ ::getBytes;
+ Supplier<String> sa = ((Supplier<String>)
+ ((Supplier<String>) ((Supplier<String>)
+ ((Supplier<String>) ((Supplier<String>)
+ () -> "() -> ()")
+ ::toString)
+ ::toString)
+ ::get)
+ ::toString)
+ ::toString;
+
+ // ExpressionName :: [TypeArguments] Identifier
+ // ReferenceType :: [TypeArguments] Identifier
+ Function<String, IntSupplier> f1 = s ->
+ s :: length;
+ Function<int[][], Supplier<int[]>> f2 = ii ->
+ ((int[]) (ii.length > 0 ? ii[0] : ii))
+ :: clone;
+ UnaryOperator<String> uo1 = String::valueOf;
+ ToIntFunction<String> tif1 = s -> s.transform(
+ String :: length);
+
+ // ClassType :: [TypeArguments] new
+ // ArrayType :: new
+ Function<Object, C2> f3 = C2::<Object>new;
+ Function<C2, C2.C21> f4 = pci -> pci.new
+ <String>C21(null); // Cf. "d".
+ Supplier<C1<?>> sb = C1::new;
+ Function<Byte, C1<?>> f5 = C1<Void> :: <Byte> new;
+ IntFunction<C1<?>[]> if1 = C1<?>[] :: new;
+ IntFunction<byte[]> if2 = byte[] :: new;
+ }
+
+ final int[] xy = { 0, 1 };
+
+ // super :: [TypeArguments] Identifier
+ // TypeName . super :: [TypeArguments] Identifier
+ <T> MethodReferencesTests()
+ {
+ Predicate<T> p1 = MethodReferencesTests.super::equals;
+ Predicate<T> p2 = MethodReferencesTests.this::equals;
+ }
+
+ interface I4<T> extends I3<T>
+ {
+ default Predicate<T> superEqualist()
+ {
+ return I3
+ .super::equals; /* "a" */
+ }
+ }
+
+ interface I3<T> extends I2<T>
+ {
+ default Predicate<T> superEqualist()
+ {
+ return I2.
+ super::equals; /* "b" */
+ }
+ }
+
+ interface I2<T> extends I1<T>
+ {
+ default Predicate<T> superEqualist()
+ { /* Non-capturing gymnastics for super::equals. */
+ return Function.<Function<MethodHandle,
+ Predicate<T>>>
+ identity()
+ .apply(mh -> o -> MethodReferencesTests
+ .invokePredicate(mh, o))
+ .apply(EQUALS.bindTo(this));
+ }
+ }
+
+ interface I1<T>
+ {
+ default Predicate<T> equalist()
+ { /* Non-capturing gymnastics for this::equals. */
+ return Function.<Function<I1<T>, Predicate<T>>>
+ identity()
+ .apply(that -> o -> Function
+ .<BiPredicate<I1<T>, T>>
+ identity()
+ .apply(I1<T>:: /* "c" */
+ equals)
+ .test(that, o))
+ .apply(I1.this);
+ }
+ }
+
+ static <T> boolean invokePredicate(MethodHandle mh, T o)
+ {
+ try {
+ return (boolean) mh.invokeExact(o);
+ } catch (Throwable th) {
+ throw new RuntimeException(th);
+ }
+ }
+
+ private static final MethodHandle EQUALS;
+
+ static {
+ try {
+ EQUALS = java.lang.invoke.MethodHandles.lookup()
+ .findSpecial(
+ I1.class,
+ "equals",
+ java.lang.invoke.MethodType.methodType(
+ boolean.class,
+ Object.class),
+ I2.class);
+ } catch (ReflectiveOperationException e) {
+ throw new Error(e);
+ }
+ }
+
+ static class C1<T>
+ {
+ C1() { }
+ <A> C1(A dummy) { }
+ }
+
+ static class C2
+ {
+ C2() { <String> this(""); }
+
+ <A> C2(A dummy)
+ {
+ C2.stringer().apply(((Function<C2, C2.C21>)
+ C2.C21::new) /* "d" */
+ .apply(C2.this));
+ }
+
+ class C21
+ {
+ C21() { <String> this(""); }
+
+ <B> C21(B dummy)
+ {
+ C2.stringer().apply(C2.this);
+ }
+ }
+
+ static <T extends Object> Function<T, String> stringer()
+ {
+ return T::toString; /* "e" */
+ }
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_method_references_signature.java b/runtime/syntax/testdir/input/java_method_references_signature.java
new file mode 100644
index 0000000..a154b12
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_method_references_signature.java
@@ -0,0 +1,186 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+
+import java.lang.invoke.MethodHandle;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.IntFunction;
+import java.util.function.IntSupplier;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.ToIntFunction;
+import java.util.function.UnaryOperator;
+
+class MethodReferences$Tests
+{
+ static {
+ // Primary :: [TypeArguments] Identifier
+ try {
+ Runnable r1 = ((Runtime) null)::gc;
+ } catch (NullPointerException expected) {
+ }
+
+ Supplier<Integer> s1 = ((Number) 0)::hashCode;
+ Supplier<Integer> s2 = ((Comparable<?>) '\0')::hashCode;
+ Supplier<Integer> s3 = ((Comparable<?>) false)::hashCode;
+ Supplier<Integer> s4 = "::"::hashCode;
+ Supplier<Class<?>> s5 = int[].class::arrayType;
+ Supplier<Integer> s6 = new MethodReferences$Tests() ::
+ hashCode;
+ Supplier<Integer> s7 = ((Number)
+ (new MethodReferences$Tests().xy)[0])::intValue;
+ Supplier<int[]> s8 = new MethodReferences$Tests().xy::
+ clone;
+ Consumer<Object> c1 = System.out :: println;
+ Supplier<byte[]> s9 = ((Supplier<String>) ()->"()").get()
+ ::getBytes;
+ Supplier<String> sa = ((Supplier<String>)
+ ((Supplier<String>) ((Supplier<String>)
+ ((Supplier<String>) ((Supplier<String>)
+ () -> "() -> ()")
+ ::toString)
+ ::toString)
+ ::get)
+ ::toString)
+ ::toString;
+
+ // ExpressionName :: [TypeArguments] Identifier
+ // ReferenceType :: [TypeArguments] Identifier
+ Function<String, IntSupplier> f1 = s ->
+ s :: length;
+ Function<int[][], Supplier<int[]>> f2 = ii ->
+ ((int[]) (ii.length > 0 ? ii[0] : ii))
+ :: clone;
+ UnaryOperator<String> uo1 = String::valueOf;
+ ToIntFunction<String> tif1 = s -> s.transform(
+ String :: length);
+
+ // ClassType :: [TypeArguments] new
+ // ArrayType :: new
+ Function<Object, C2> f3 = C2::<Object>new;
+ Function<C2, C2.C21> f4 = pci -> pci.new
+ <String>C21(null); // Cf. "d".
+ Supplier<C1<?>> sb = C1::new;
+ Function<Byte, C1<?>> f5 = C1<Void> :: <Byte> new;
+ IntFunction<C1<?>[]> if1 = C1<?>[] :: new;
+ IntFunction<byte[]> if2 = byte[] :: new;
+ }
+
+ final int[] xy = { 0, 1 };
+
+ // super :: [TypeArguments] Identifier
+ // TypeName . super :: [TypeArguments] Identifier
+ <T> MethodReferences$Tests()
+ {
+ Predicate<T> p1 = MethodReferences$Tests.super::equals;
+ Predicate<T> p2 = MethodReferences$Tests.this::equals;
+ }
+
+ interface I4<T> extends I3<T>
+ {
+ default Predicate<T> superEqualist()
+ {
+ return I3
+ .super::equals; /* "a" */
+ }
+ }
+
+ interface I3<T> extends I2<T>
+ {
+ default Predicate<T> superEqualist()
+ {
+ return I2.
+ super::equals; /* "b" */
+ }
+ }
+
+ interface I2<T> extends I1<T>
+ {
+ default Predicate<T> superEqualist()
+ { /* Non-capturing gymnastics for super::equals. */
+ return Function.<Function<MethodHandle,
+ Predicate<T>>>
+ identity()
+ .apply(mh -> o -> MethodReferences$Tests
+ .invokePredicate(mh, o))
+ .apply(EQUALS.bindTo(this));
+ }
+ }
+
+ interface I1<T>
+ {
+ default Predicate<T> equalist()
+ { /* Non-capturing gymnastics for this::equals. */
+ return Function.<Function<I1<T>, Predicate<T>>>
+ identity()
+ .apply(that -> o -> Function
+ .<BiPredicate<I1<T>, T>>
+ identity()
+ .apply(I1<T>:: /* "c" */
+ equals)
+ .test(that, o))
+ .apply(I1.this);
+ }
+ }
+
+ static <T> boolean invokePredicate(MethodHandle mh, T o)
+ {
+ try {
+ return (boolean) mh.invokeExact(o);
+ } catch (Throwable th) {
+ throw new RuntimeException(th);
+ }
+ }
+
+ private static final MethodHandle EQUALS;
+
+ static {
+ try {
+ EQUALS = java.lang.invoke.MethodHandles.lookup()
+ .findSpecial(
+ I1.class,
+ "equals",
+ java.lang.invoke.MethodType.methodType(
+ boolean.class,
+ Object.class),
+ I2.class);
+ } catch (ReflectiveOperationException e) {
+ throw new Error(e);
+ }
+ }
+
+ static class C1<T>
+ {
+ C1() { }
+ <A> C1(A dummy) { }
+ }
+
+ static class C2
+ {
+ C2() { <String> this(""); }
+
+ <A> C2(A dummy)
+ {
+ C2.stringer().apply(((Function<C2, C2.C21>)
+ C2.C21::new) /* "d" */
+ .apply(C2.this));
+ }
+
+ class C21
+ {
+ C21() { <String> this(""); }
+
+ <B> C21(B dummy)
+ {
+ C2.stringer().apply(C2.this);
+ }
+ }
+
+ static <T extends Object> Function<T, String> stringer()
+ {
+ return T::toString; /* "e" */
+ }
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent2.java b/runtime/syntax/testdir/input/java_methods_indent2.java
index 58a6900..3754cc4 100644
--- a/runtime/syntax/testdir/input/java_methods_indent2.java
+++ b/runtime/syntax/testdir/input/java_methods_indent2.java
@@ -84,9 +84,21 @@ abstract class Indent2MethodsTests
enum E2
{
@SuppressWarnings("bespoke") A("a"),
- B("b"),
- C("c"), D("d"),
- E("e"), F("f"), G("g"), H("h");
+ B("b"
+ /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+ C("c", new Thread(
+
+ () -> {
+ })), D("d", (java.util.function.BooleanSupplier) () -> true),
+ E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+ transient String name = "";
+ @Override public String toString() { return this.name; }
+ }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+ G("g"), @Deprecated H("h");
+
final String s;
private E2(String s) { this.s = s; }
+ private <δ> E2(String s, δ dummy) { this(s); }
+
+ @Override public String toString() { return name().toUpperCase(); }
}
diff --git a/runtime/syntax/testdir/input/java_methods_indent2_signature.java b/runtime/syntax/testdir/input/java_methods_indent2_signature.java
new file mode 100644
index 0000000..05e633b
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent2_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent2'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent2$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+ // TYPES.
+ record Τʬ<α>(α a) { }
+
+ enum E
+ {
+ A("a"), B("b"), C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E(String s) { this.s = s; }
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @java.lang.annotation.Repeatable(TÉggablɘs.class)
+ @interface TÉggablɘ
+ {
+ String[] value() default "";
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @interface TÉggablɘs
+ {
+ TÉggablɘ[] value();
+ }
+
+ interface Stylable<Α>
+ {
+ default void ascii$0_() { }
+ default Α μʭʭ$0_() { return null; }
+ }
+
+ // FIELDS.
+ private static final Class<?> CLASS_LOCK = classLock();
+
+ private final Object instanceLock = new Object();
+
+ // CONSTRUCTORS.
+ @TÉggablɘ @TÉggablɘ protected Indent2$MethodsTests() { }
+ <T extends Comparable<T>> Indent2$MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Indent2$MethodsTests(T t) { }
+
+ // METHODS.
+ @TÉggablɘ @TÉggablɘ abstract void ascii$0_(////////////////
+ );
+ @TÉggablɘ @TÉggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+ @SuppressWarnings("bespoke") β b);
+
+ @TÉggablɘ private native void ascii$1_(/*////////////*/);
+ @TÉggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+ java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+ void Ascii$2_() { }
+ <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+ static final native synchronized void ascii$98_();
+ static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp void ascii$99_()
+ { ascii$98_(); }
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+ {
+ return
+ Indent2$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Indent2$MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Indent2$MethodsTests"; }
+}
+
+enum E2$
+{
+ @SuppressWarnings("bespoke") A("a"),
+ B("b"
+ /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+ C("c", new Thread(
+
+ () -> {
+ })), D("d", (java.util.function.BooleanSupplier) () -> true),
+ E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+ transient String name = "";
+ @Override public String toString() { return this.name; }
+ }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+ G("g"), @Deprecated H("h");
+
+ final String s;
+ private E2$(String s) { this.s = s; }
+ private <δ> E2$(String s, δ dummy) { this(s); }
+
+ @Override public String toString() { return name().toUpperCase(); }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent4.java b/runtime/syntax/testdir/input/java_methods_indent4.java
index 972cdf3..8fc05c0 100644
--- a/runtime/syntax/testdir/input/java_methods_indent4.java
+++ b/runtime/syntax/testdir/input/java_methods_indent4.java
@@ -84,9 +84,21 @@ abstract class Indent4MethodsTests
enum E4
{
@SuppressWarnings("bespoke") A("a"),
- B("b"),
- C("c"), D("d"),
- E("e"), F("f"), G("g"), H("h");
+ B("b"
+ /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+ C("c", new Thread(
+
+ () -> {
+ })), D("d", (java.util.function.BooleanSupplier) () -> true),
+ E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+ transient String name = "";
+ @Override public String toString() { return this.name; }
+ }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+ G("g"), @Deprecated H("h");
+
final String s;
private E4(String s) { this.s = s; }
+ private <δ> E4(String s, δ dummy) { this(s); }
+
+ @Override public String toString() { return name().toUpperCase(); }
}
diff --git a/runtime/syntax/testdir/input/java_methods_indent4_signature.java b/runtime/syntax/testdir/input/java_methods_indent4_signature.java
new file mode 100644
index 0000000..f21d95d
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent4_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent4'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent4$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+ // TYPES.
+ record Τʬ<α>(α a) { }
+
+ enum E
+ {
+ A("a"), B("b"), C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E(String s) { this.s = s; }
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @java.lang.annotation.Repeatable(TÉggablɘs.class)
+ @interface TÉggablɘ
+ {
+ String[] value() default "";
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @interface TÉggablɘs
+ {
+ TÉggablɘ[] value();
+ }
+
+ interface Stylable<Α>
+ {
+ default void ascii$0_() { }
+ default Α μʭʭ$0_() { return null; }
+ }
+
+ // FIELDS.
+ private static final Class<?> CLASS_LOCK = classLock();
+
+ private final Object instanceLock = new Object();
+
+ // CONSTRUCTORS.
+ @TÉggablɘ @TÉggablɘ protected Indent4$MethodsTests() { }
+ <T extends Comparable<T>> Indent4$MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Indent4$MethodsTests(T t) { }
+
+ // METHODS.
+ @TÉggablɘ @TÉggablɘ abstract void ascii$0_(////////////////
+ );
+ @TÉggablɘ @TÉggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+ @SuppressWarnings("bespoke") β b);
+
+ @TÉggablɘ private native void ascii$1_(/*////////////*/);
+ @TÉggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+ java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+ void Ascii$2_() { }
+ <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+ static final native synchronized void ascii$98_();
+ static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp void ascii$99_()
+ { ascii$98_(); }
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+ {
+ return
+ Indent4$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Indent4$MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Indent4$MethodsTests"; }
+}
+
+enum E4$
+{
+ @SuppressWarnings("bespoke") A("a"),
+ B("b"
+ /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+ C("c", new Thread(
+
+ () -> {
+ })), D("d", (java.util.function.BooleanSupplier) () -> true),
+ E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+ transient String name = "";
+ @Override public String toString() { return this.name; }
+ }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+ G("g"), @Deprecated H("h");
+
+ final String s;
+ private E4$(String s) { this.s = s; }
+ private <δ> E4$(String s, δ dummy) { this(s); }
+
+ @Override public String toString() { return name().toUpperCase(); }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent8.java b/runtime/syntax/testdir/input/java_methods_indent8.java
index 40fd26b..d27830c 100644
--- a/runtime/syntax/testdir/input/java_methods_indent8.java
+++ b/runtime/syntax/testdir/input/java_methods_indent8.java
@@ -84,9 +84,21 @@ abstract class Indent8MethodsTests
enum E8
{
@SuppressWarnings("bespoke") A("a"),
- B("b"),
- C("c"), D("d"),
- E("e"), F("f"), G("g"), H("h");
+ B("b"
+ /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+ C("c", new Thread(
+
+ () -> {
+ })), D("d", (java.util.function.BooleanSupplier) () -> true),
+ E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+ transient String name = "";
+ @Override public String toString() { return this.name; }
+ }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+ G("g"), @Deprecated H("h");
+
final String s;
private E8(String s) { this.s = s; }
+ private <δ> E8(String s, δ dummy) { this(s); }
+
+ @Override public String toString() { return name().toUpperCase(); }
}
diff --git a/runtime/syntax/testdir/input/java_methods_indent8_signature.java b/runtime/syntax/testdir/input/java_methods_indent8_signature.java
new file mode 100644
index 0000000..8d82196
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent8_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent8'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent8$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+ // TYPES.
+ record Τʬ<α>(α a) { }
+
+ enum E
+ {
+ A("a"), B("b"), C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E(String s) { this.s = s; }
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @java.lang.annotation.Repeatable(TÉggablɘs.class)
+ @interface TÉggablɘ
+ {
+ String[] value() default "";
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @interface TÉggablɘs
+ {
+ TÉggablɘ[] value();
+ }
+
+ interface Stylable<Α>
+ {
+ default void ascii$0_() { }
+ default Α μʭʭ$0_() { return null; }
+ }
+
+ // FIELDS.
+ private static final Class<?> CLASS_LOCK = classLock();
+
+ private final Object instanceLock = new Object();
+
+ // CONSTRUCTORS.
+ @TÉggablɘ @TÉggablɘ protected Indent8$MethodsTests() { }
+ <T extends Comparable<T>> Indent8$MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Indent8$MethodsTests(T t) { }
+
+ // METHODS.
+ @TÉggablɘ @TÉggablɘ abstract void ascii$0_(////////////////
+ );
+ @TÉggablɘ @TÉggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+ @SuppressWarnings("bespoke") β b);
+
+ @TÉggablɘ private native void ascii$1_(/*////////////*/);
+ @TÉggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+ java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+ void Ascii$2_() { }
+ <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+ static final native synchronized void ascii$98_();
+ static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp void ascii$99_()
+ { ascii$98_(); }
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+ {
+ return
+ Indent8$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Indent8$MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Indent8$MethodsTests"; }
+}
+
+enum E8$
+{
+ @SuppressWarnings("bespoke") A("a"),
+ B("b"
+ /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+ C("c", new Thread(
+
+ () -> {
+ })), D("d", (java.util.function.BooleanSupplier) () -> true),
+ E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+ transient String name = "";
+ @Override public String toString() { return this.name; }
+ }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+ G("g"), @Deprecated H("h");
+
+ final String s;
+ private E8$(String s) { this.s = s; }
+ private <δ> E8$(String s, δ dummy) { this(s); }
+
+ @Override public String toString() { return name().toUpperCase(); }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_style_signature.java b/runtime/syntax/testdir/input/java_methods_style_signature.java
new file mode 100644
index 0000000..8e3b4d6
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_style_signature.java
@@ -0,0 +1,82 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Style$MethodsTests
+{
+ // TYPES.
+ record Τʬ<α>(α a) { }
+
+ enum E
+ {
+ A("a"), B("b"), C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E(String s) { this.s = s; }
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @java.lang.annotation.Repeatable(TÉggablɘs.class)
+ @interface TÉggablɘ
+ {
+ String[] value() default "";
+ }
+
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+ @interface TÉggablɘs
+ {
+ TÉggablɘ[] value();
+ }
+
+ interface Stylable<Α>
+ {
+ default void ascii$0_() { }
+ default Α μʭʭ$0_() { return null; }
+ }
+
+ // FIELDS.
+ private static final Class<?> CLASS_LOCK = classLock();
+
+ private final Object instanceLock = new Object();
+
+ // CONSTRUCTORS.
+ @TÉggablɘ @TÉggablɘ protected Style$MethodsTests() { }
+ <T extends Comparable<T>> Style$MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Style$MethodsTests(T t) { }
+
+ // METHODS.
+ @TÉggablɘ @TÉggablɘ abstract void ascii$0_(////////////////
+ );
+ @TÉggablɘ @TÉggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+ @SuppressWarnings("bespoke") β b);
+
+ @TÉggablɘ private native void ascii$1_(/*////////////*/);
+ @TÉggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+ java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+ void Ascii$2_() { }
+ <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+ static final native synchronized void ascii$98_();
+ static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp void ascii$99_()
+ { ascii$98_(); }
+
+ @SuppressWarnings("strictfp")
+ protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+ java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+ {
+ return
+ Style$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Style$MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Style$MethodsTests"; }
+}
diff --git a/runtime/syntax/testdir/input/java_switch.java b/runtime/syntax/testdir/input/java_switch.java
index 14b2e11..d82fcb1 100644
--- a/runtime/syntax/testdir/input/java_switch.java
+++ b/runtime/syntax/testdir/input/java_switch.java
@@ -55,7 +55,7 @@ class SwitchTests // JDK 21+.
case null: { echo("null"); break; }
case Letters[] ll: { echo("SwitchTests$1Letters[]"); break; }
default: { echo("java.lang.Object"); break; }
- };
+ }
echo(switch (o) {
case null -> "null";
@@ -69,7 +69,7 @@ class SwitchTests // JDK 21+.
case 'a': { echo('a'); break; }
case 'b': { echo('b'); break; }
default: { echo('\u0000'); break; }
- };
+ }
echo(switch (ch) {
case 'a' -> 'a';
@@ -83,7 +83,7 @@ class SwitchTests // JDK 21+.
case ((byte) 0): { echo((byte) 0); break; }
case ((byte) 1): { echo((byte) 1); break; }
default: { echo((byte) -1); break; }
- };
+ }
echo(switch (b) {
case ((byte) 0) -> (byte) 0;
@@ -97,7 +97,7 @@ class SwitchTests // JDK 21+.
case ((short) 0): { echo((short) 0); break; }
case ((short) 1): { echo((short) 1); break; }
default: { echo((short) -1); break; }
- };
+ }
echo(switch (sh) {
case ((short) 0) -> (short) 0;
@@ -111,7 +111,7 @@ class SwitchTests // JDK 21+.
case 0b0__00___000: { echo(0); break; }
case 0x000___00__1: { echo(1); break; }
default: { echo(-1); break; }
- };
+ }
echo(switch (i) {
case 0_0_0_0_0 -> 0;
diff --git a/runtime/syntax/testdir/input/java_unfoldment.java b/runtime/syntax/testdir/input/java_unfoldment.java
index 78dd234..ffea216 100644
--- a/runtime/syntax/testdir/input/java_unfoldment.java
+++ b/runtime/syntax/testdir/input/java_unfoldment.java
@@ -39,7 +39,7 @@ class UnfoldingTests {
break;
}
default: ;
- };
+ }
}
{ Object bb = ((Object) new byte[]{}); }
@@ -51,6 +51,18 @@ out: {
} while (false);
}
}
+/*\\\*/ {
+ (new java.util.function.Function<Object, Object>() {
+ /**
+ * {@inheritDoc} */
+ public Object apply(Object o) { return o; };
+ }).apply(
+ (new java.util.function.Function<Object, Object>() {
+ /** {@inheritDoc}
+ */
+ public Object apply(Object o) { return o; };
+ }));
+ }
/**
* No operation.
diff --git a/runtime/syntax/testdir/input/progress_comments.p b/runtime/syntax/testdir/input/progress_comments.p
new file mode 100644
index 0000000..dd831fe
--- /dev/null
+++ b/runtime/syntax/testdir/input/progress_comments.p
@@ -0,0 +1,45 @@
+/*
+ * VIM_TEST_SETUP set filetype=progress
+ */
+
+define variable customer_name as character no-undo.
+
+/* The test setup above is an example of a multi-line comment.
+This is too; the leading * and left-hand alignment are not required. */
+for each customer no-lock
+ where customer.customer_id = 12345
+:
+ assign cust_name = customer.customer_name. /* Comments can also appear
+ at the end of a line. */
+end. /* for each customer */
+
+/* Comments can be /* nested */. Here's the same query as above, but
+commented out this time:
+
+for each customer no-lock
+ where customer.customer_id = 12345
+:
+ assign cust_name = customer.customer_name. /* Comments can also appear
+ at the end of a line. */
+end. /* for each customer */
+
+TODO: Note that /*/ does not end the comment, because it actually starts a
+new comment whose first character is a '/'. Now we need two end-comment
+markers to return to actual code. */ */
+
+display customer_name.
+
+// This is the single-line comment syntax.
+
+//No space is required after the slashes. Also, a /* here does not begin a
+//new block comment.
+
+for each supplier no-lock:
+ /* However, a block comment can end inside (what looks like) a
+ single-line comment, because the slashes are just text as far as the
+ // block comment is concerned. */
+ display supplier.
+
+ // TODO: Observe that todo highlighting works in line comments too.
+end.
+
diff --git a/runtime/syntax/testdir/input/selftestdir/README.txt b/runtime/syntax/testdir/input/selftestdir/README.txt
new file mode 100644
index 0000000..035701d
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/README.txt
@@ -0,0 +1,10 @@
+The test files with made-up syntax in this directory serve for additional
+linewise checks to be manually performed whenever the algorithm managing
+screen dump file generation is modified (../../runtest.vim#RunTest()).
+
+This is mainly used for debugging and testing the syntax test suite.
+
+Please test any changes as follows:
+ cd runtime/syntax/
+ VIM_SYNTAX_SELF_TESTING=1 make clean test
+
diff --git a/runtime/syntax/testdir/input/vim_keymap.vim b/runtime/syntax/testdir/input/selftestdir/dots_01
index 424d437..cf78d97 100644
--- a/runtime/syntax/testdir/input/vim_keymap.vim
+++ b/runtime/syntax/testdir/input/selftestdir/dots_01
@@ -1,27 +1,60 @@
-" Vim Keymap file for syntax testing
-
-" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Changed: 2023 Nov 21
-
-scriptencoding utf-8
-
-let b:keymap_name = "syntax-test"
-
-loadkeymap
-
-" Line comment
-
- " Another line comment
-
-a A Basic mapping
-'a á More than one char in first column
-
-" Special notation
-<char-62> B Special notation allowed in LHS - decimal
-c <char-0103> Special notation allowed in RHS - octal
-<char-0x0064> <char-0x0044> Special notation allowed in LHS and RHS - hexadecimal
-
-" Vim-script comment characters
-# <char-0x00a3> Line should not match as a Vim9-script comment
-\" “ Line should not match as a legacy-script comment
-: " Line should not match as a legacy-script comment
+..........................................................................1
+..........................................................................2
+..........................................................................3
+..........................................................................4
+..............................winwidth(0): 75.............................5
+.............................winheight(0): 19.............................6
+.................................ruler....................................7
+..........................................................................8
+..........................................................................9
+.........................................................................10
+.........................................................................11
+.........................................................................12
+.........................................................................13
+.........................................................................14
+.........................................................................15
+.........................................................................16
+.........................................................................17
+.........................................................................18
+.........................................................................19
+.........................................................................20
+.........................................................................21
+.........................................................................22
+.........................................................................23
+.........................................................................24
+.........................................................................25
+.........................................................................26
+.........................................................................27
+.........................................................................28
+.........................................................................29
+.........................................................................30
+.........................................................................31
+.........................................................................32
+.........................................................................33
+.........................................................................34
+.........................................................................35
+.........................................................................36
+.........................................................................37
+.........................................................................38
+.........................................................................39
+.........................................................................40
+.........................................................................41
+.........................................................................42
+.........................................................................43
+.........................................................................44
+.........................................................................45
+.........................................................................46
+.........................................................................47
+.........................................................................48
+.........................................................................49
+.........................................................................50
+.........................................................................51
+.........................................................................52
+.........................................................................53
+.........................................................................54
+.........................................................................55
+.........................................................................56
+.........................................................................57
+.........................................................................58
+.........................................................................59
+.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_02 b/runtime/syntax/testdir/input/selftestdir/dots_02
new file mode 100644
index 0000000..4748fa1
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_02
@@ -0,0 +1,30 @@
+1..........................................................................2
+3..........................................................................4
+5..........................................................................6
+7..........................................................................8
+9............................winwidth(0): 75...............................10
+11..........................winheight(0): 19...............................12
+13..............................ruler......................................14
+15.........................................................................16
+17.........................................................................18
+19.........................................................................20
+21.........................................................................22
+23.........................................................................24
+25.........................................................................26
+27.........................................................................28
+29.........................................................................30
+31.........................................................................32
+33.........................................................................34
+35.........................................................................36
+37.........................................................................38
+39.........................................................................40
+41.........................................................................42
+43.........................................................................44
+45.........................................................................46
+47.........................................................................48
+49.........................................................................50
+51.........................................................................52
+53.........................................................................54
+55.........................................................................56
+57.........................................................................58
+59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_03 b/runtime/syntax/testdir/input/selftestdir/dots_03
new file mode 100644
index 0000000..a8a16e9
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_03
@@ -0,0 +1,20 @@
+1..........................................................................2..........................................................................3
+4..........................................................................5..........................................................................6
+7..........................................................................8..........................................................................9
+10.........................................................................11.........................................................................12
+13...........................winwidth(0): 75...............................14.........................................................................15
+16..........................winheight(0): 19...............................17.........................................................................18
+19..............................ruler......................................20.........................................................................21
+22.........................................................................23.........................................................................24
+25.........................................................................26.........................................................................27
+28.........................................................................29.........................................................................30
+31.........................................................................32.........................................................................33
+34.........................................................................35.........................................................................36
+37.........................................................................38.........................................................................39
+40.........................................................................41.........................................................................42
+43.........................................................................44.........................................................................45
+46.........................................................................47.........................................................................48
+49.........................................................................50.........................................................................51
+52.........................................................................53.........................................................................54
+55.........................................................................56.........................................................................57
+58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_04 b/runtime/syntax/testdir/input/selftestdir/dots_04
new file mode 100644
index 0000000..ac0a26a
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_04
@@ -0,0 +1,15 @@
+1..........................................................................2..........................................................................3..........................................................................4
+5..........................................................................6..........................................................................7..........................................................................8
+9..........................................................................10.........................................................................11.........................................................................12
+13.........................................................................14.........................................................................15.........................................................................16
+17...........................winwidth(0): 75...............................18.........................................................................19.........................................................................20
+21..........................winheight(0): 19...............................22.........................................................................23.........................................................................24
+25..............................ruler......................................26.........................................................................27.........................................................................28
+29.........................................................................30.........................................................................31.........................................................................32
+33.........................................................................34.........................................................................35.........................................................................36
+37.........................................................................38.........................................................................39.........................................................................40
+41.........................................................................42.........................................................................43.........................................................................44
+45.........................................................................46.........................................................................47.........................................................................48
+49.........................................................................50.........................................................................51.........................................................................52
+53.........................................................................54.........................................................................55.........................................................................56
+57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_05 b/runtime/syntax/testdir/input/selftestdir/dots_05
new file mode 100644
index 0000000..2dfb5be
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_05
@@ -0,0 +1,12 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5
+6..........................................................................7..........................................................................8..........................................................................9..........................................................................10
+11.........................................................................12.........................................................................13.........................................................................14.........................................................................15
+16.........................................................................17.........................................................................18.........................................................................19.........................................................................20
+21...........................winwidth(0): 75...............................22.........................................................................23.........................................................................24.........................................................................25
+26..........................winheight(0): 19...............................27.........................................................................28.........................................................................29.........................................................................30
+31..............................ruler......................................32.........................................................................33.........................................................................34.........................................................................35
+36.........................................................................37.........................................................................38.........................................................................39.........................................................................40
+41.........................................................................42.........................................................................43.........................................................................44.........................................................................45
+46.........................................................................47.........................................................................48.........................................................................49.........................................................................50
+51.........................................................................52.........................................................................53.........................................................................54.........................................................................55
+56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_06 b/runtime/syntax/testdir/input/selftestdir/dots_06
new file mode 100644
index 0000000..87eaf76
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_06
@@ -0,0 +1,10 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6
+7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12
+13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18
+19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24
+25...........................winwidth(0): 75...............................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30
+31..........................winheight(0): 19...............................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37..............................ruler......................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42
+43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54
+55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_07 b/runtime/syntax/testdir/input/selftestdir/dots_07
new file mode 100644
index 0000000..801c470
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_07
@@ -0,0 +1,9 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7
+8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14
+15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21
+22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28
+29...........................winwidth(0): 75...............................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35
+36..........................winheight(0): 19...............................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42
+43..............................ruler......................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49
+50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56
+57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_08 b/runtime/syntax/testdir/input/selftestdir/dots_08
new file mode 100644
index 0000000..2b7bdd9
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_08
@@ -0,0 +1,8 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8
+9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16
+17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24
+25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32
+33...........................winwidth(0): 75...............................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40
+41..........................winheight(0): 19...............................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49..............................ruler......................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56
+57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_09 b/runtime/syntax/testdir/input/selftestdir/dots_09
new file mode 100644
index 0000000..76b25e6
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_09
@@ -0,0 +1,7 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9
+10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18
+19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27
+28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37...........................winwidth(0): 75...............................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45
+46..........................winheight(0): 19...............................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54
+55..............................ruler......................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_10 b/runtime/syntax/testdir/input/selftestdir/dots_10
new file mode 100644
index 0000000..9d6a158
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_10
@@ -0,0 +1,6 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10
+11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20
+21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30
+31...........................winwidth(0): 75...............................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40
+41..........................wihheight(0): 19...............................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50
+51..............................ruler......................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_11 b/runtime/syntax/testdir/input/selftestdir/dots_11
new file mode 100644
index 0000000..503b734
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_11
@@ -0,0 +1,6 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11
+12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22
+23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33
+34...........................winwidth(0): 75...............................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44
+45..........................winheight(0): 19...............................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55
+56..............................ruler......................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_12 b/runtime/syntax/testdir/input/selftestdir/dots_12
new file mode 100644
index 0000000..347feb2
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_12
@@ -0,0 +1,5 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12
+13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24
+25...........................winwidth(0): 75...............................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37..........................winheight(0): 19...............................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49..............................ruler......................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_13 b/runtime/syntax/testdir/input/selftestdir/dots_13
new file mode 100644
index 0000000..b177614
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_13
@@ -0,0 +1,5 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13
+14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26
+27...........................winwidth(0): 75...............................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39
+40..........................winheight(0): 19...............................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52
+53..............................ruler......................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_14 b/runtime/syntax/testdir/input/selftestdir/dots_14
new file mode 100644
index 0000000..9a46c3e
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_14
@@ -0,0 +1,5 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14
+15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28
+29...........................winwidth(0): 75...............................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42
+43..........................winheight(0): 19...............................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56
+57..............................ruler......................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_15 b/runtime/syntax/testdir/input/selftestdir/dots_15
new file mode 100644
index 0000000..45fbef9
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_15
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15
+16...........................winwidth(0): 75...............................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30
+31..........................winheight(0): 19...............................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45
+46..............................ruler......................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_16 b/runtime/syntax/testdir/input/selftestdir/dots_16
new file mode 100644
index 0000000..1af3caa
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_16
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16
+17...........................winwidth(0): 75...............................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32
+33..........................winheight(0): 19...............................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49..............................ruler......................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_17 b/runtime/syntax/testdir/input/selftestdir/dots_17
new file mode 100644
index 0000000..6dc5050
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_17
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17
+18...........................winwidth(0): 75...............................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34
+35..........................winheight(0): 19...............................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51
+52...............................ruler.....................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_18 b/runtime/syntax/testdir/input/selftestdir/dots_18
new file mode 100644
index 0000000..f84a827
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_18
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18
+19...........................winwidth(0): 75...............................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37..........................winheight(0): 19...............................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54
+55...............................ruler.....................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70.........................................................................71.........................................................................72
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_19 b/runtime/syntax/testdir/input/selftestdir/dots_19
new file mode 100644
index 0000000..9f0ad00
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_19
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19
+20...........................winwidth(0): 75...............................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38
+39..........................winheight(0): 19...............................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57
+58...............................ruler.....................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70.........................................................................71.........................................................................72.........................................................................73.........................................................................74.........................................................................75.........................................................................76
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_20 b/runtime/syntax/testdir/input/selftestdir/dots_20
new file mode 100644
index 0000000..ca3a93d
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_20
@@ -0,0 +1,2 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5.............................winwidth(0): 75..............................6............................winheight(0): 19..............................7................................ruler.....................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38
+39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70.........................................................................71.........................................................................72.........................................................................73.........................................................................74.........................................................................75.........................................................................76
diff --git a/runtime/syntax/testdir/input/vim9_ex_commands.vim b/runtime/syntax/testdir/input/vim9_ex_commands.vim
new file mode 100644
index 0000000..92ab9dc
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_commands.vim
@@ -0,0 +1,1225 @@
+vim9script
+
+# Vim9 Ex commands
+
+# START NOT MATCHED
+:@
+:@@
+:Next
+:X
+# END NOT MATCHED
+
+:help
+ :help
+: help
+ : help
+
+:2match
+:3match
+:abbreviate
+:abclear
+:aboveleft
+:abstract
+:all
+:amenu
+:anoremenu
+:argadd
+:argdedupe
+:argdelete
+:argdo
+:argedit
+:argglobal
+:arglocal
+:args
+:argument
+:ascii
+:augroup Foo
+:augroup END
+:aunmenu
+:autocmd
+:badd
+:ball
+:balt
+:bdelete
+:behave mswin
+:behave xterm
+:belowright
+:bfirst
+:blast
+:bmodified
+:bnext
+:bNext
+:botright
+:bprevious
+:break
+:breakadd
+:breakdel
+:breaklist
+:brewind
+:browse
+:bufdo
+:buffer
+:buffers
+:bunload
+:bwipeout
+:cabbrev
+:cabclear
+:cabove
+:caddbuffer
+:caddexpr
+:caddfile
+:cafter
+:call
+:catch
+:cbefore
+:cbelow
+:cbottom
+:cbuffer
+:cc
+:cclose
+:cd
+:cdo
+:center
+:cexpr
+:cfdo
+:cfile
+:cfirst
+:cgetbuffer
+:cgetexpr
+:cgetfile
+:changes
+:chdir
+:checkpath
+:checktime
+:chistory
+:class
+:class
+:clast
+:clearjumps
+:clist
+:close
+:cmap
+:cmapclear
+:cmenu
+:cnewer
+:cnext
+:cNext
+:cnfile
+:cNfile
+:cnoreabbrev
+:cnoremap
+:cnoremenu
+:colder
+:colorscheme
+:comclear
+:command
+:compiler
+:confirm
+:const
+:continue
+:copen
+:copy
+:cpfile
+:cprevious
+:cquit
+:crewind
+:cscope
+:cstag
+:cunabbrev
+:cunmap
+:cunmenu
+:cwindow
+:debug
+:debuggreedy
+:def
+:defcompile
+:defcompile
+:defer
+:delcommand
+:delete
+:delfunction
+:delmarks
+:diffget
+:diffoff
+:diffpatch
+:diffput
+:diffsplit
+:diffthis
+:diffupdate
+:digraphs
+:disassemble
+:disassemble
+:display
+:djump
+:dl
+:dlist
+:doautoall
+:doautocmd
+:dp
+:drop
+:dsearch
+:dsplit
+:earlier
+:echo
+:echoconsole
+:echoerr
+:echohl
+:echomsg
+:echon
+:echowindow
+:edit
+:else
+:elseif
+:emenu
+:endclass
+:endclass
+:enddef
+:endenum
+:endfor
+:endfunction
+:endif
+:endinterface
+:endtry
+:endwhile
+:enew
+:enum
+:eval
+:ex
+:execute
+:exit
+:export
+:export
+:exusage
+:file
+:files
+:filetype
+:filter
+:final
+:finally
+:find
+:finish
+:first
+:fixdel
+:fold
+:foldclose
+:folddoclosed
+:folddoopen
+:foldopen
+:for
+:function
+:global/.../
+:goto
+:grep
+:grepadd
+:gui
+:gvim
+:hardcopy
+:help
+:helpclose
+:helpfind
+:helpgrep
+:helptags
+:hide
+:highlight
+:history
+:horizontal
+:iabbrev
+:iabclear
+:if
+:ijump
+:ilist
+:imap
+:imapclear
+:imenu
+:import
+:inoreabbrev
+:inoremap
+:inoremenu
+:interface
+:intro
+:isearch
+:isplit
+:iunabbrev
+:iunmap
+:iunmenu
+:join
+:jumps
+:k
+:keepalt
+:keepjumps
+:keepmarks
+:keeppatterns
+:labove
+:laddbuffer
+:laddexpr
+:laddfile
+:lafter
+:language
+:last
+:later
+:lbefore
+:lbelow
+:lbottom
+:lbuffer
+:lcd
+:lchdir
+:lclose
+:lcscope
+:ldo
+:left
+:leftabove
+:legacy
+:lexpr
+:lfdo
+:lfile
+:lfirst
+:lgetbuffer
+:lgetexpr
+:lgetfile
+:lgrep
+:lgrepadd
+:lhelpgrep
+:lhistory
+:list
+:ll
+:llast
+:llist
+:lmake
+:lmap
+:lmapclear
+:lnewer
+:lnext
+:lNext
+:lnfile
+:lNfile
+:lnoremap
+# :loadkeymap # disabled - runs until EOF
+:loadview
+:lockmarks
+:lockvar
+:lolder
+:lopen
+:lpfile
+:lprevious
+:lrewind
+:ls
+:ltag
+:lua
+:luado
+:luafile
+:lunmap
+:lvimgrep
+:lvimgrepadd
+:lwindow
+:make
+:mapclear
+:map
+:mark
+:marks
+:match
+:menu
+:menutranslate
+:messages
+:mkexrc
+:mksession
+:mkspell
+:mkview
+:mkvimrc
+:move
+:mzfile
+:mzscheme
+:nbclose
+:nbkey
+:nbstart
+:new
+:next
+:nmap
+:nmapclear
+:nmenu
+:nnoremap
+:nnoremenu
+:noautocmd
+:nohlsearch
+:noreabbrev
+:noremap
+:noremenu
+:normal
+:noswapfile
+:number
+:nunmap
+:nunmenu
+:oldfiles
+:omap
+:omapclear
+:omenu
+:only
+:onoremap
+:onoremenu
+:options
+:ounmap
+:ounmenu
+:ownsyntax
+:packadd
+:packloadall
+:pclose
+:pedit
+:perl
+:perldo
+:pop
+:popup
+:ppop
+:preserve
+:previous
+:print
+:profdel
+:profile
+:promptfind
+:promptrepl
+:psearch
+:ptag
+:ptfirst
+:ptjump
+:ptlast
+:ptnext
+:ptNext
+:ptprevious
+:ptrewind
+:ptselect
+:public
+:public
+:put
+:pwd
+:py3
+:py3do
+:py3file
+:pydo
+:pyfile
+:python
+:python3
+:pythonx
+:pyx
+:pyxdo
+:pyxfile
+:qall
+:quit
+:quitall
+:read
+:recover
+:redir
+:redo
+:redraw
+:redrawstatus
+:redrawtabline
+:registers
+:resize
+:retab
+:return
+:rewind
+:right
+:rightbelow
+:ruby
+:rubydo
+:rubyfile
+:rundo
+:runtime
+:rviminfo
+:sall
+:sandbox
+:sargument
+:saveas
+:sball
+:sbfirst
+:sblast
+:sbmodified
+:sbnext
+:sbNext
+:sbprevious
+:sbrewind
+:sbuffer
+:scriptencoding
+:scriptnames
+:scriptversion
+:scscope
+:set
+:setfiletype
+:setglobal
+:setlocal
+:sfind
+:sfirst
+:shell
+:sign
+:silent
+:simalt
+:slast
+:sleep
+:sleep!
+:smagic
+:smap
+:smapclear
+:smenu
+:smile
+:snext
+:sNext
+:snomagic
+:snoremap
+:snoremenu
+:sort
+:source
+:spelldump
+:spellgood
+:spellinfo
+:spellrare
+:spellrepall
+:spellundo
+:spellwrong
+:split
+:sprevious
+:srewind
+:stag
+:startgreplace
+:startinsert
+:startreplace
+:static
+:static
+:stjump
+:stop
+:stopinsert
+:stselect
+:substitute
+:sunhide
+:sunmap
+:sunmenu
+:suspend
+:sview
+:swapname
+:syncbind
+:syntax
+:syntime
+:tab
+:tabclose
+:tabdo
+:tabedit
+:tabfind
+:tabfirst
+:tablast
+:tabmove
+:tabnew
+:tabnext
+:tabNext
+:tabonly
+:tabprevious
+:tabrewind
+:tabs
+:tag
+:tags
+:tcd
+:tchdir
+:tcl
+:tcldo
+:tclfile
+:tearoff
+:terminal
+:tfirst
+:throw
+:tjump
+:tlast
+:tlmenu
+:tlnoremenu
+:tlunmenu
+:tmap
+:tmapclear
+:tmenu
+:tnext
+:tNext
+:tnoremap
+:topleft
+:tprevious
+:trewind
+:try
+:tselect
+:tunmap
+:tunmenu
+:type
+:unabbreviate
+:unabbreviate
+:undo
+:undojoin
+:undolist
+:unhide
+:unlockvar
+:unmap
+:unmenu
+:unsilent
+:update
+:var
+:verbose
+:version
+:vertical
+:vglobal/.../
+:view
+:vim9cmd
+# :vim9script
+:vimgrep
+:vimgrepadd
+:visual
+:viusage
+:vmap
+:vmapclear
+:vmenu
+:vnew
+:vnoremap
+:vnoremenu
+:vsplit
+:vunmap
+:vunmenu
+:wall
+:while
+:wincmd
+:windo
+:winpos
+:winsize
+:wnext
+:wNext
+:wprevious
+:wq
+:wqall
+:write
+:wundo
+:wviminfo
+:xall
+:xmap
+:xmapclear
+:xmenu
+:xnoremap
+:xnoremenu
+:xrestore
+:xunmap
+:xunmenu
+:yank
+:z
+
+Foo()|help
+Foo() | help
+Foo() |help
+Foo()| help
+
+Foo() | 2match
+Foo() | 3match
+Foo() | abbreviate
+Foo() | abclear
+Foo() | aboveleft
+Foo() | abstract
+Foo() | all
+Foo() | amenu
+Foo() | anoremenu
+Foo() | argadd
+Foo() | argdedupe
+Foo() | argdelete
+Foo() | argdo
+Foo() | argedit
+Foo() | argglobal
+Foo() | arglocal
+Foo() | args
+Foo() | argument
+Foo() | ascii
+Foo() | augroup Foo | augroup END
+Foo() | aunmenu
+Foo() | autocmd
+Foo() | badd
+Foo() | ball
+Foo() | balt
+Foo() | bdelete
+Foo() | behave mswin
+Foo() | behave xterm
+Foo() | belowright
+Foo() | bfirst
+Foo() | blast
+Foo() | bmodified
+Foo() | bnext
+Foo() | bNext
+Foo() | botright
+Foo() | bprevious
+Foo() | break
+Foo() | breakadd
+Foo() | breakdel
+Foo() | breaklist
+Foo() | brewind
+Foo() | browse
+Foo() | bufdo
+Foo() | buffer
+Foo() | buffers
+Foo() | bunload
+Foo() | bwipeout
+Foo() | cabbrev
+Foo() | cabclear
+Foo() | cabove
+Foo() | caddbuffer
+Foo() | caddexpr
+Foo() | caddfile
+Foo() | cafter
+Foo() | call
+Foo() | catch
+Foo() | cbefore
+Foo() | cbelow
+Foo() | cbottom
+Foo() | cbuffer
+Foo() | cc
+Foo() | cclose
+Foo() | cd
+Foo() | cdo
+Foo() | center
+Foo() | cexpr
+Foo() | cfdo
+Foo() | cfile
+Foo() | cfirst
+Foo() | cgetbuffer
+Foo() | cgetexpr
+Foo() | cgetfile
+Foo() | changes
+Foo() | chdir
+Foo() | checkpath
+Foo() | checktime
+Foo() | chistory
+Foo() | class
+Foo() | class
+Foo() | clast
+Foo() | clearjumps
+Foo() | clist
+Foo() | close
+Foo() | cmap
+Foo() | cmapclear
+Foo() | cmenu
+Foo() | cnewer
+Foo() | cnext
+Foo() | cNext
+Foo() | cnfile
+Foo() | cNfile
+Foo() | cnoreabbrev
+Foo() | cnoremap
+Foo() | cnoremenu
+Foo() | colder
+Foo() | colorscheme
+Foo() | comclear
+Foo() | command
+Foo() | compiler
+Foo() | confirm
+Foo() | const
+Foo() | continue
+Foo() | copen
+Foo() | copy
+Foo() | cpfile
+Foo() | cprevious
+Foo() | cquit
+Foo() | crewind
+Foo() | cscope
+Foo() | cstag
+Foo() | cunabbrev
+Foo() | cunmap
+Foo() | cunmenu
+Foo() | cwindow
+Foo() | debug
+Foo() | debuggreedy
+Foo() | def
+Foo() | defcompile
+Foo() | defcompile
+Foo() | defer
+Foo() | delcommand
+Foo() | delete
+Foo() | delfunction
+Foo() | delmarks
+Foo() | diffget
+Foo() | diffoff
+Foo() | diffpatch
+Foo() | diffput
+Foo() | diffsplit
+Foo() | diffthis
+Foo() | diffupdate
+Foo() | digraphs
+Foo() | disassemble
+Foo() | disassemble
+Foo() | display
+Foo() | djump
+Foo() | dl
+Foo() | dlist
+Foo() | doautoall
+Foo() | doautocmd
+Foo() | dp
+Foo() | drop
+Foo() | dsearch
+Foo() | dsplit
+Foo() | earlier
+Foo() | echo
+Foo() | echoconsole
+Foo() | echoerr
+Foo() | echohl
+Foo() | echomsg
+Foo() | echon
+Foo() | echowindow
+Foo() | edit
+Foo() | else
+Foo() | elseif
+Foo() | emenu
+Foo() | endclass
+Foo() | endclass
+Foo() | enddef
+Foo() | endenum
+Foo() | endfor
+Foo() | endfunction
+Foo() | endif
+Foo() | endinterface
+Foo() | endtry
+Foo() | endwhile
+Foo() | enew
+Foo() | enum
+Foo() | eval
+Foo() | ex
+Foo() | execute
+Foo() | exit
+Foo() | export
+Foo() | export
+Foo() | exusage
+Foo() | file
+Foo() | files
+Foo() | filetype
+Foo() | filter
+Foo() | final
+Foo() | finally
+Foo() | find
+Foo() | finish
+Foo() | first
+Foo() | fixdel
+Foo() | fold
+Foo() | foldclose
+Foo() | folddoclosed
+Foo() | folddoopen
+Foo() | foldopen
+Foo() | for
+Foo() | function
+Foo() | global/.../
+Foo() | goto
+Foo() | grep
+Foo() | grepadd
+Foo() | gui
+Foo() | gvim
+Foo() | hardcopy
+Foo() | help
+Foo() | helpclose
+Foo() | helpfind
+Foo() | helpgrep
+Foo() | helptags
+Foo() | hide
+Foo() | highlight
+Foo() | history
+Foo() | horizontal
+Foo() | iabbrev
+Foo() | iabclear
+Foo() | if
+Foo() | ijump
+Foo() | ilist
+Foo() | imap
+Foo() | imapclear
+Foo() | imenu
+Foo() | import
+Foo() | inoreabbrev
+Foo() | inoremap
+Foo() | inoremenu
+Foo() | interface
+Foo() | intro
+Foo() | isearch
+Foo() | isplit
+Foo() | iunabbrev
+Foo() | iunmap
+Foo() | iunmenu
+Foo() | join
+Foo() | jumps
+Foo() | keepalt
+Foo() | keepjumps
+Foo() | keepmarks
+Foo() | keeppatterns
+Foo() | labove
+Foo() | laddbuffer
+Foo() | laddexpr
+Foo() | laddfile
+Foo() | lafter
+Foo() | language
+Foo() | last
+Foo() | later
+Foo() | lbefore
+Foo() | lbelow
+Foo() | lbottom
+Foo() | lbuffer
+Foo() | lcd
+Foo() | lchdir
+Foo() | lclose
+Foo() | lcscope
+Foo() | ldo
+Foo() | left
+Foo() | leftabove
+Foo() | legacy
+Foo() | lexpr
+Foo() | lfdo
+Foo() | lfile
+Foo() | lfirst
+Foo() | lgetbuffer
+Foo() | lgetexpr
+Foo() | lgetfile
+Foo() | lgrep
+Foo() | lgrepadd
+Foo() | lhelpgrep
+Foo() | lhistory
+Foo() | list
+Foo() | ll
+Foo() | llast
+Foo() | llist
+Foo() | lmake
+Foo() | lmap
+Foo() | lmapclear
+Foo() | lnewer
+Foo() | lnext
+Foo() | lNext
+Foo() | lnfile
+Foo() | lNfile
+Foo() | lnoremap
+# Foo() | loadkeymap # disabled - runs until EOF
+Foo() | loadview
+Foo() | lockmarks
+Foo() | lockvar
+Foo() | lolder
+Foo() | lopen
+Foo() | lpfile
+Foo() | lprevious
+Foo() | lrewind
+Foo() | ls
+Foo() | ltag
+Foo() | lua
+Foo() | luado
+Foo() | luafile
+Foo() | lunmap
+Foo() | lvimgrep
+Foo() | lvimgrepadd
+Foo() | lwindow
+Foo() | make
+Foo() | mark
+Foo() | move
+Foo() | map
+Foo() | mapclear
+Foo() | marks
+Foo() | match
+Foo() | menu
+Foo() | menutranslate
+Foo() | messages
+Foo() | mkexrc
+Foo() | mksession
+Foo() | mkspell
+Foo() | mkview
+Foo() | mkvimrc
+Foo() | mzfile
+Foo() | mzscheme
+Foo() | nbclose
+Foo() | nbkey
+Foo() | nbstart
+Foo() | new
+Foo() | next
+Foo() | nmap
+Foo() | nmapclear
+Foo() | nmenu
+Foo() | nnoremap
+Foo() | nnoremenu
+Foo() | noautocmd
+Foo() | nohlsearch
+Foo() | noreabbrev
+Foo() | noremap
+Foo() | noremenu
+Foo() | normal
+Foo() | noswapfile
+Foo() | number
+Foo() | nunmap
+Foo() | nunmenu
+Foo() | oldfiles
+Foo() | omap
+Foo() | omapclear
+Foo() | omenu
+Foo() | only
+Foo() | onoremap
+Foo() | onoremenu
+Foo() | options
+Foo() | ounmap
+Foo() | ounmenu
+Foo() | ownsyntax
+Foo() | packadd
+Foo() | packloadall
+Foo() | pclose
+Foo() | pedit
+Foo() | perl
+Foo() | perldo
+Foo() | pop
+Foo() | popup
+Foo() | ppop
+Foo() | preserve
+Foo() | previous
+Foo() | print
+Foo() | profdel
+Foo() | profile
+Foo() | promptfind
+Foo() | promptrepl
+Foo() | psearch
+Foo() | ptag
+Foo() | ptfirst
+Foo() | ptjump
+Foo() | ptlast
+Foo() | ptnext
+Foo() | ptNext
+Foo() | ptprevious
+Foo() | ptrewind
+Foo() | ptselect
+Foo() | public
+Foo() | public
+Foo() | put
+Foo() | pwd
+Foo() | py3
+Foo() | py3do
+Foo() | py3file
+Foo() | pydo
+Foo() | pyfile
+Foo() | python
+Foo() | python3
+Foo() | pythonx
+Foo() | pyx
+Foo() | pyxdo
+Foo() | pyxfile
+Foo() | qall
+Foo() | quit
+Foo() | quitall
+Foo() | read
+Foo() | recover
+Foo() | redir
+Foo() | redo
+Foo() | redraw
+Foo() | redrawstatus
+Foo() | redrawtabline
+Foo() | registers
+Foo() | resize
+Foo() | retab
+Foo() | return
+Foo() | rewind
+Foo() | right
+Foo() | rightbelow
+Foo() | ruby
+Foo() | rubydo
+Foo() | rubyfile
+Foo() | rundo
+Foo() | runtime
+Foo() | rviminfo
+Foo() | sall
+Foo() | sandbox
+Foo() | sargument
+Foo() | saveas
+Foo() | sball
+Foo() | sbfirst
+Foo() | sblast
+Foo() | sbmodified
+Foo() | sbnext
+Foo() | sbNext
+Foo() | sbprevious
+Foo() | sbrewind
+Foo() | sbuffer
+Foo() | scriptencoding
+Foo() | scriptnames
+Foo() | scriptversion
+Foo() | scscope
+Foo() | set
+Foo() | setfiletype
+Foo() | setglobal
+Foo() | setlocal
+Foo() | sfind
+Foo() | sfirst
+Foo() | shell
+Foo() | sign
+Foo() | silent
+Foo() | simalt
+Foo() | slast
+Foo() | sleep
+Foo() | sleep!
+Foo() | smagic
+Foo() | smap
+Foo() | smapclear
+Foo() | smenu
+Foo() | smile
+Foo() | snext
+Foo() | sNext
+Foo() | snomagic
+Foo() | snoremap
+Foo() | snoremenu
+Foo() | sort
+Foo() | source
+Foo() | spelldump
+Foo() | spellgood
+Foo() | spellinfo
+Foo() | spellrare
+Foo() | spellrepall
+Foo() | spellundo
+Foo() | spellwrong
+Foo() | split
+Foo() | sprevious
+Foo() | srewind
+Foo() | stag
+Foo() | startgreplace
+Foo() | startinsert
+Foo() | startreplace
+Foo() | static
+Foo() | static
+Foo() | stjump
+Foo() | stop
+Foo() | stopinsert
+Foo() | stselect
+Foo() | substitute
+Foo() | sunhide
+Foo() | sunmap
+Foo() | sunmenu
+Foo() | suspend
+Foo() | sview
+Foo() | swapname
+Foo() | syncbind
+Foo() | syntax
+Foo() | syntime
+Foo() | tab
+Foo() | tabclose
+Foo() | tabdo
+Foo() | tabedit
+Foo() | tabfind
+Foo() | tabfirst
+Foo() | tablast
+Foo() | tabmove
+Foo() | tabnew
+Foo() | tabnext
+Foo() | tabNext
+Foo() | tabonly
+Foo() | tabprevious
+Foo() | tabrewind
+Foo() | tabs
+Foo() | tag
+Foo() | tags
+Foo() | tcd
+Foo() | tchdir
+Foo() | tcl
+Foo() | tcldo
+Foo() | tclfile
+Foo() | tearoff
+Foo() | terminal
+Foo() | tfirst
+Foo() | throw
+Foo() | tjump
+Foo() | tlast
+Foo() | tlmenu
+Foo() | tlnoremenu
+Foo() | tlunmenu
+Foo() | tmap
+Foo() | tmapclear
+Foo() | tmenu
+Foo() | tnext
+Foo() | tNext
+Foo() | tnoremap
+Foo() | topleft
+Foo() | tprevious
+Foo() | trewind
+Foo() | try
+Foo() | tselect
+Foo() | tunmap
+Foo() | tunmenu
+Foo() | type
+Foo() | unabbreviate
+Foo() | unabbreviate
+Foo() | undo
+Foo() | undojoin
+Foo() | undolist
+Foo() | unhide
+Foo() | unlockvar
+Foo() | unmap
+Foo() | unmenu
+Foo() | unsilent
+Foo() | update
+Foo() | var
+Foo() | verbose
+Foo() | version
+Foo() | vertical
+Foo() | vglobal/.../
+Foo() | vim9cmd
+# call Foo() | vim9script
+Foo() | vimgrep
+Foo() | vimgrepadd
+Foo() | visual
+Foo() | viusage
+Foo() | view
+Foo() | vmap
+Foo() | vmapclear
+Foo() | vmenu
+Foo() | vnew
+Foo() | vnoremap
+Foo() | vnoremenu
+Foo() | vsplit
+Foo() | vunmap
+Foo() | vunmenu
+Foo() | windo
+Foo() | write
+Foo() | wNext
+Foo() | wall
+Foo() | while
+Foo() | winsize
+Foo() | wincmd
+Foo() | winpos
+Foo() | wnext
+Foo() | wprevious
+Foo() | wq
+Foo() | wqall
+Foo() | wundo
+Foo() | wviminfo
+Foo() | xall
+Foo() | xmapclear
+Foo() | xmap
+Foo() | xmenu
+Foo() | xrestore
+Foo() | xnoremap
+Foo() | xnoremenu
+Foo() | xunmap
+Foo() | xunmenu
+Foo() | yank
+Foo() | z
+
+
+# Legacy-script only
+
+:Print
+:append
+ text
+.
+:change
+ text
+.
+:insert
+ text
+.
+:k
+:let
+:mode
+:open
+:t
+:unlet
+:xit
+
+Foo() | append
+ text
+.
+Foo() | change
+ text
+.
+Foo() | insert
+ text
+.
+Foo() | k
+Foo() | let
+Foo() | mode
+Foo() | open
+Foo() | t
+Foo() | unlet
+Foo() | xit
+
diff --git a/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim
new file mode 100644
index 0000000..b4b9f6d
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim
@@ -0,0 +1,44 @@
+vim9script
+
+# Vim9 :function and :def tail comment errors
+# VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun Test1() abort # fun
+ return 1
+endfun # endfun
+
+def Test2(): number " def
+ return 2
+enddef " enddef
+
+fun Test3() abort # fun
+ fun s:DoTest3() abort # fun
+ return 3
+ endfun # endfun
+ return s:DoTest3()
+endfun # endfun
+
+def Test4(): number " def
+ def DoTest4(): number " def
+ return 4
+ enddef " enddef
+ return DoTest4()
+enddef " enddef
+
+def Test5(): number " def
+ fun DoTest5() abort # fun
+ return 5
+ endfun # endfun
+ return DoTest5()
+enddef " enddef
+
+fun Test6() abort # fun
+ def s:DoTest6(): number " def
+ return 6
+ enddef " enddef
+ return s:DoTest6()
+endfun # endfun
+
+for d in range(1, 6)
+ exec $'echo Test{d}()'
+endfor
diff --git a/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim
new file mode 100644
index 0000000..12f7942
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim
@@ -0,0 +1,44 @@
+vim9script
+
+# Vim9 :function and :def tail comments
+# VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun Test1() abort " fun
+ return 1
+endfun " endfun
+
+def Test2(): number # def
+ return 2
+enddef # enddef
+
+fun Test3() abort " fun
+ fun s:DoTest3() abort " fun
+ return 3
+ endfun " endfun
+ return s:DoTest3()
+endfun " endfun
+
+def Test4(): number # def
+ def DoTest4(): number # def
+ return 4
+ enddef # enddef
+ return DoTest4()
+enddef # enddef
+
+def Test5(): number # def
+ fun DoTest5() abort " fun
+ return 5
+ endfun " endfun
+ return DoTest5()
+enddef # enddef
+
+fun Test6() abort " fun
+ def s:DoTest6(): number # def
+ return 6
+ enddef # enddef
+ return s:DoTest6()
+endfun " endfun
+
+for d in range(1, 6)
+ exec $'echo Test{d}()'
+endfor
diff --git a/runtime/syntax/testdir/input/vim9_keymap.vim b/runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim
index a69b723..126c6dd 100644
--- a/runtime/syntax/testdir/input/vim9_keymap.vim
+++ b/runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim
@@ -1,10 +1,10 @@
vim9script
-# Vim Keymap file for syntax testing
+# Vim :loadkeymap command
scriptencoding utf-8
-let b:keymap_name = "syntax-test"
+b:keymap_name = "syntax-test"
loadkeymap
diff --git a/runtime/syntax/testdir/input/vim_ex_call.vim b/runtime/syntax/testdir/input/vim_ex_call.vim
new file mode 100644
index 0000000..ae6bdc9
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_call.vim
@@ -0,0 +1,51 @@
+" Vim :call command
+
+
+" functions for which there are same-named Ex commands
+
+call browse(save, title, initdir, default)
+call call(func, arglist, dict)
+call chdir(dir)
+call confirm(msg, choices, default, type)
+call copy(expr)
+call delete(fname, flags)
+call eval(string)
+call execute(command)
+call filter(expr1, expr2)
+call function(name, arglist, dict)
+call insert(object, item, idx)
+call join(list, sep)
+call map(expr1, expr2)
+call match(expr, pat, start, count)
+call mode(expr)
+call sort(list, how, dict)
+call split(string, pattern, keepempty)
+call substitute(str, pat, sub, flags)
+call swapname(buf)
+
+call browse (save, title, initdir, default)
+call call (func, arglist, dict)
+call chdir (dir)
+call confirm (msg, choices, default, type)
+call copy (expr)
+call delete (fname, flags)
+call eval (string)
+call execute (command)
+call filter (expr1, expr2)
+call function (name, arglist, dict)
+call insert (object, item, idx)
+call join (list, sep)
+call map (expr1, expr2)
+call match (expr, pat, start, count)
+call mode (expr)
+call sort (list, how, dict)
+call split (string, pattern, keepempty)
+call substitute (str, pat, sub, flags)
+call swapname (buf)
+
+call Foo()
+call Foo(arg1)
+call Foo(arg1, arg2)
+
+let res = call(func, arglist, dict)
+let res = call (func, arglist, dict)
diff --git a/runtime/syntax/testdir/input/vim_ex_commands.vim b/runtime/syntax/testdir/input/vim_ex_commands.vim
index aaa351b..3d03ac3 100644
--- a/runtime/syntax/testdir/input/vim_ex_commands.vim
+++ b/runtime/syntax/testdir/input/vim_ex_commands.vim
@@ -98,7 +98,6 @@
:checkpath
:checktime
:chistory
-:class
:clast
:clearjumps
:clist
@@ -172,7 +171,6 @@
:else
:elseif
:emenu
-:endclass
:enddef
:endif
:endfor
@@ -184,7 +182,6 @@
:ex
:execute
:exit
-:export
:exusage
:file
:files
@@ -292,7 +289,7 @@
:lnewer
:lnfile
:lnoremap
-:loadkeymap
+" :loadkeymap " disabled - runs until EOF
:loadview
:lockmarks
:lockvar
@@ -313,8 +310,7 @@
:move
:mark
:make
-" requires trailing whitespace to distinguish from map()
-:map
+:map
:mapclear
:marks
:match
@@ -553,12 +549,10 @@
:unsilent
:update
:vglobal/.../
-:var
:version
:verbose
:vertical
:vim9cmd
-" :vim9script
:vimgrep
:vimgrepadd
:visual
@@ -691,7 +685,6 @@ call Foo() | chdir
call Foo() | checkpath
call Foo() | checktime
call Foo() | chistory
-call Foo() | class
call Foo() | clast
call Foo() | clearjumps
call Foo() | clist
@@ -765,7 +758,6 @@ call Foo() | echowindow
call Foo() | else
call Foo() | elseif
call Foo() | emenu
-call Foo() | endclass
call Foo() | enddef
call Foo() | endif
call Foo() | endfor
@@ -777,7 +769,6 @@ call Foo() | eval
call Foo() | ex
call Foo() | execute
call Foo() | exit
-call Foo() | export
call Foo() | exusage
call Foo() | file
call Foo() | files
@@ -886,7 +877,7 @@ call Foo() | lnext
call Foo() | lnewer
call Foo() | lnfile
call Foo() | lnoremap
-call Foo() | loadkeymap
+" call Foo() | loadkeymap " disabled - runs until EOF
call Foo() | loadview
call Foo() | lockmarks
call Foo() | lockvar
@@ -907,8 +898,7 @@ call Foo() | lwindow
call Foo() | move
call Foo() | mark
call Foo() | make
-" requires trailing whitespace to distinguish from map()
-call Foo() | map
+call Foo() | map
call Foo() | mapclear
call Foo() | marks
call Foo() | match
@@ -1147,12 +1137,10 @@ call Foo() | unmenu
call Foo() | unsilent
call Foo() | update
call Foo() | vglobal/.../
-call Foo() | var
call Foo() | version
call Foo() | verbose
call Foo() | vertical
call Foo() | vim9cmd
-" call Foo() | vim9script
call Foo() | vimgrep
call Foo() | vimgrepadd
call Foo() | visual
@@ -1193,3 +1181,39 @@ call Foo() | xunmap
call Foo() | xunmenu
call Foo() | yank
call Foo() | z
+
+
+" Vim9-script only
+
+:abstract
+:class
+:defcompile
+:disassemble
+:endclass
+:endinterface
+:endenum
+:enum
+:export
+:final
+:interface
+:public
+:static
+:type
+:var
+
+Foo() | abstract
+Foo() | class
+Foo() | defcompile
+Foo() | disassemble
+Foo() | endclass
+Foo() | endenum
+Foo() | endinterface
+Foo() | enum
+Foo() | export
+Foo() | final
+Foo() | interface
+Foo() | public
+Foo() | static
+Foo() | type
+Foo() | var
+
diff --git a/runtime/syntax/testdir/input/vim_ex_def.vim b/runtime/syntax/testdir/input/vim_ex_def.vim
index 2685ba5..a1d5381 100644
--- a/runtime/syntax/testdir/input/vim_ex_def.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def.vim
@@ -85,7 +85,7 @@ def Foo()
enddef | echo "Foo"
def Foo()
-enddef " comment
+enddef # comment
" parameters
diff --git a/runtime/syntax/testdir/input/vim_ex_def_fold.vim b/runtime/syntax/testdir/input/vim_ex_def_fold.vim
index 3326075..60b1151 100644
--- a/runtime/syntax/testdir/input/vim_ex_def_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def_fold.vim
@@ -86,7 +86,7 @@ def Foo()
enddef | echo "Foo"
def Foo()
-enddef " comment
+enddef # comment
" parameters
@@ -120,7 +120,7 @@ def Foo()
enddef
def Foo()
- let x =<< END
+ var x =<< trim END
endfunction
END
enddef
diff --git a/runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim
new file mode 100644
index 0000000..e5d7464
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim
@@ -0,0 +1,43 @@
+" Vim :function and :def tail comment errors
+" VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun s:Test1() abort # fun
+ return 1
+endfun # endfun
+
+def s:Test2(): number " def
+ return 2
+enddef " enddef
+
+fun s:Test3() abort # fun
+ fun s:DoTest3() abort # fun
+ return 3
+ endfun # endfun
+ return s:DoTest3()
+endfun # endfun
+
+def s:Test4(): number " def
+ def DoTest4(): number " def
+ return 4
+ enddef " enddef
+ return DoTest4()
+enddef " enddef
+
+def s:Test5(): number " def
+ fun DoTest5() abort # fun
+ return 5
+ endfun # endfun
+ return DoTest5()
+enddef " enddef
+
+fun s:Test6() abort # fun
+ def s:DoTest6(): number " def
+ return 6
+ enddef " enddef
+ return s:DoTest6()
+endfun # endfun
+
+for d in range(1, 6)->reverse()
+ exec $'echo s:Test{d}()'
+ exec $'delfunction s:Test{d}'
+endfor
diff --git a/runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim
new file mode 100644
index 0000000..e46bf75
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim
@@ -0,0 +1,43 @@
+" Vim :function and :def tail comments
+" VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun s:Test1() abort " fun
+ return 1
+endfun " endfun
+
+def s:Test2(): number # def
+ return 2
+enddef # enddef
+
+fun s:Test3() abort " fun
+ fun s:DoTest3() abort " fun
+ return 3
+ endfun " endfun
+ return s:DoTest3()
+endfun " endfun
+
+def s:Test4(): number # def
+ def DoTest4(): number # def
+ return 4
+ enddef # enddef
+ return DoTest4()
+enddef # enddef
+
+def s:Test5(): number # def
+ fun DoTest5() abort " fun
+ return 5
+ endfun " endfun
+ return DoTest5()
+enddef # enddef
+
+fun s:Test6() abort " fun
+ def s:DoTest6(): number # def
+ return 6
+ enddef # enddef
+ return s:DoTest6()
+endfun " endfun
+
+for d in range(1, 6)->reverse()
+ exec $'echo s:Test{d}()'
+ exec $'delfunction s:Test{d}'
+endfor
diff --git a/runtime/syntax/testdir/input/vim_ex_function_fold.vim b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
index dd260ca..fa7edbb 100644
--- a/runtime/syntax/testdir/input/vim_ex_function_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
@@ -193,10 +193,9 @@ function Foo()
endfunction
function Foo()
- let x =<< END
+ let x =<< trim END
endfunction
END
-
endfunction
function Foo()
diff --git a/runtime/syntax/testdir/input/vim_ex_let_heredoc.vim b/runtime/syntax/testdir/input/vim_ex_let_heredoc.vim
new file mode 100644
index 0000000..2f88f93
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_let_heredoc.vim
@@ -0,0 +1,196 @@
+" Vim :let heredoc command
+" VIM_TEST_SETUP let g:vimsyn_folding = "h"
+" VIM_TEST_SETUP setl fdc=2 fdl=99 fdm=syntax
+
+
+let foo =<< END
+line1
+line2
+END
+
+ let foo =<< END
+line1
+line2
+END
+
+
+" trim
+
+let foo =<< trim END
+ line1
+ line2
+END
+
+ let foo =<< trim END
+ line1
+ line2
+ END
+
+
+" interpolation
+
+let foo =<< eval END
+line{1 + 0}
+line{1 + 1}
+END
+
+ let foo =<< eval END
+line{1 + 0}
+line{1 + 1}
+END
+
+let foo =<< trim eval END
+ line{1 + 0}
+ line{1 + 1}
+END
+
+ let foo =<< trim eval END
+ line{1 + 0}
+ line{1 + 1}
+ END
+
+" no interpolation (escaped { and })
+
+let foo =<< eval END
+line{{1 + 0}}
+line{{1 + 1}}
+END
+
+ let foo =<< eval END
+line{{1 + 0}}
+line{{1 + 1}}
+END
+
+let foo =<< trim eval END
+ line{{1 + 0}}
+ line{{1 + 1}}
+END
+
+ let foo =<< trim eval END
+ line{{1 + 0}}
+ line{{1 + 1}}
+ END
+
+
+" no interpolation
+
+let foo =<< END
+line{1 + 0}
+line{1 + 1}
+END
+
+ let foo =<< END
+line{1 + 0}
+line{1 + 1}
+END
+
+let foo =<< trim END
+ line{1 + 0}
+ line{1 + 1}
+END
+
+ let foo =<< trim END
+ line{1 + 0}
+ line{1 + 1}
+ END
+
+
+" end marker must not be followed by whitespace
+
+" assert_equal(foo, ["END "])
+let foo =<< END
+END
+END
+
+" assert_equal(foo, [" END "])
+let foo =<< END
+ END
+END
+
+" assert_equal(foo, ["END "])
+let foo =<< trim END
+ END
+END
+
+" assert_equal(foo, ["END "])
+ let foo =<< trim END
+ END
+ END
+
+
+" end marker must be vertically aligned with :let (if preceded by whitespace)
+
+" assert_equal(foo, ["END"])
+let foo =<< trim END
+ END
+END
+
+ " assert_equal(foo, ["END"])
+ let foo =<< trim END
+ END
+ END
+
+" assert_equal(foo, ["END "])
+let foo =<< trim END
+END
+END
+
+ " assert_equal(foo, ["END"])
+ let foo =<< trim END
+ END
+ END
+
+ " assert_equal(foo, ["END "])
+ let foo =<< trim END
+ END
+ END
+
+ " assert_equal(foo, ["END"])
+ let foo =<< trim END
+ END
+ END
+
+ " assert_equal(foo, ["END "])
+ let foo =<< trim END
+ END
+ END
+
+ " assert_equal(foo, ["END "])
+ let foo =<< trim END
+END
+END
+
+ " assert_equal(foo, ["END"])
+ let foo =<< trim END
+ END
+END
+
+ " assert_equal(foo, ["END"])
+ let foo =<< trim END
+ END
+END
+
+
+" end markers
+
+let foo =<< !@#$%^&*()_+
+line1
+line2
+!@#$%^&*()_+
+
+let foo =<< 0!@#$%^&*()_+
+line1
+line2
+0!@#$%^&*()_+
+
+let foo =<< A!@#$%^&*()_+
+line1
+line2
+A!@#$%^&*()_+
+
+" error - leading lowercase character
+let foo =<< a!@#$%^&*()_+
+line1
+line2
+a!@#$%^&*()_+
+
diff --git a/runtime/syntax/testdir/input/vim_ex_loadkeymap.vim b/runtime/syntax/testdir/input/vim_ex_loadkeymap.vim
new file mode 100644
index 0000000..8f4484d
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_loadkeymap.vim
@@ -0,0 +1,24 @@
+" Vim :loadkeymap command
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+loadkeymap
+
+" Line comment
+
+ " Another line comment
+
+a A Basic mapping
+'a á More than one char in first column
+
+" Special notation
+<char-62> B Special notation allowed in LHS - decimal
+c <char-0103> Special notation allowed in RHS - octal
+<char-0x0064> <char-0x0044> Special notation allowed in LHS and RHS - hexadecimal
+
+" Vim-script comment characters
+# <char-0x00a3> Line should not match as a Vim9-script comment
+\" “ Line should not match as a legacy-script comment
+: " Line should not match as a legacy-script comment
diff --git a/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim
new file mode 100644
index 0000000..029af2c
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim
@@ -0,0 +1,10 @@
+" Vim :loadkeymap command (after "|")
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+echo "..." | loadkeymap
+
+a A Basic mapping
+
diff --git a/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim
new file mode 100644
index 0000000..61578b6
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim
@@ -0,0 +1,10 @@
+" Vim :loadkeymap command (after ":")
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+:loadkeymap
+
+a A Basic mapping
+
diff --git a/runtime/syntax/testdir/input/vim_ex_map.vim b/runtime/syntax/testdir/input/vim_ex_map.vim
index 95f4292..3ddc9e9 100644
--- a/runtime/syntax/testdir/input/vim_ex_map.vim
+++ b/runtime/syntax/testdir/input/vim_ex_map.vim
@@ -5,9 +5,6 @@ map! lhs rhs
map
map lhs rhs
-call map(list, 'v:val')
-call map (list, 'v:val')
-
mapclear <buffer>
mapclear! <buffer>
nmapclear <buffer>
@@ -69,6 +66,27 @@ map lhs
echo "clear"
+" Differentiate map() from :map
+
+map ( :echo "open-paren"<CR>
+
+call map(list, 'v:val')
+call map (list, 'v:val')
+
+function Foo()
+ map ( :echo "open-paren"<CR>
+ call map(list, 'v:val')
+ call map (list, 'v:val')
+endfunction
+
+def Foo()
+ map ( :echo "open-paren"<CR>
+ map(list, 'v:val')
+ # :map LHS=(list, RHS='v:val')
+ map (list, 'v:val')
+enddef
+
+
" Issue #12672
nnoremap <leader>foo :echo call(
diff --git a/runtime/syntax/testdir/input/vim_ex_match.vim b/runtime/syntax/testdir/input/vim_ex_match.vim
new file mode 100644
index 0000000..8d14628
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_match.vim
@@ -0,0 +1,32 @@
+" Vim :match, :2match and :3match commands
+
+match FooGroup /Foo/
+match
+match none
+
+2match FooGroup /Foo/
+2match
+2match none
+
+3match FooGroup /Foo/
+3match
+3match none
+
+
+" Differentiate map() from :map
+
+call match(haystack, 'needle')
+call match (haystack, 'needle')
+
+function Foo()
+ match FooGroup /Foo/
+ call match(haystack, 'needle')
+ call match (haystack, 'needle')
+endfunction
+
+def Foo()
+ match FooGroup /Foo/
+ match(haystack, 'needle')
+ # Error: bad :match command - trailing characters
+ match (haystack, 'needle')
+enddef
diff --git a/runtime/syntax/testdir/input/vim_ex_set.vim b/runtime/syntax/testdir/input/vim_ex_set.vim
new file mode 100644
index 0000000..00e53a0
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_set.vim
@@ -0,0 +1,93 @@
+" Vim :set command
+
+set
+set!
+set all
+set! all
+set termcap
+set! termcap
+
+set aleph?
+set aleph
+
+set noallowrevins
+
+set allowrevins!
+set invallowrevins
+
+set aleph&
+set aleph&vi
+set aleph&vim
+
+set all&
+
+set aleph=128
+set aleph:128
+
+set aleph =128
+set aleph :128
+
+set aleph+=96
+set aleph^=2
+set aleph-=96
+
+set backspace+=nostop
+set backspace^=nostop
+set backspace-=nostop
+
+set ai nosi sw=3 tw=3
+
+set <t_#4>=^[Ot " FIXME
+set <M-b>=^[b " FIXME
+
+setlocal autoread
+setglobal noautoread
+set autoread<
+
+
+" :help option-backslash
+
+" When setting options using |:let| and |literal-string|, you need to use one
+" fewer layer of backslash. A few examples:
+set makeprg=make\ file " results in "make file"
+let &makeprg='make file' " (same as above)
+set makeprg=make\\\ file " results in "make\ file"
+set tags=tags\ /usr/tags " results in "tags" and "/usr/tags"
+set tags=tags\\\ file " results in "tags file"
+let &tags='tags\ file' " (same as above)
+
+set makeprg=make,file " results in "make,file"
+set makeprg=make\\,file " results in "make\,file"
+set tags=tags,file " results in "tags" and "file"
+set tags=tags\\,file " results in "tags,file"
+let &tags='tags\,file' " (same as above)
+
+" This example sets the 'titlestring' option to "hi|there":
+set titlestring=hi\|there
+" This sets the 'titlestring' option to "hi" and 'iconstring' to "there":
+set titlestring=hi|set iconstring=there
+
+set dir=\\machine\path " results in "\\machine\path"
+set dir=\\\\machine\\path " results in "\\machine\path"
+set dir=\\path\\file " results in "\\path\file" (wrong!)
+
+
+" :help :set_env
+
+set term=$TERM.new
+set path=/usr/$INCLUDE,$HOME/include,.
+
+
+" Multiline :set and option values
+
+set path=abc,def,ghi
+ "\ def is the 'define' option
+ \ def=abc,def,ghi
+
+set path=abc,
+ "\ def is a 'path' directory value
+ \def,ghi
+
+set path=
+ "\ def is a 'path' directory value
+ \abc,def
diff --git a/runtime/syntax/testdir/input/yaml.yaml b/runtime/syntax/testdir/input/yaml.yaml
index d87aca2..72e0a0d 100644
--- a/runtime/syntax/testdir/input/yaml.yaml
+++ b/runtime/syntax/testdir/input/yaml.yaml
@@ -24,7 +24,7 @@ not a number: [.nan, .NaN, .NAN]
plain strings:
- a b c
- - a * b & c @ d# e : f # comment
+ - a:b & c @ d# e * f # comment
- {{ f(' ') }} #8234
double quoted strings:
- ""
@@ -91,9 +91,10 @@ flow collection:
inside block mapping:
foo: {bar: baz}
bar: ["foo": {baz: qux}]
- flow collection: [foo # comment
+ flow:collection: [foo # comment
, {bar: [{ # comment
- baz: '
+ baz:
+ '
qux # not comment
' # comment
}]}]
diff --git a/runtime/syntax/testdir/runtest.vim b/runtime/syntax/testdir/runtest.vim
index e1cfdcf..f9c0db0 100644
--- a/runtime/syntax/testdir/runtest.vim
+++ b/runtime/syntax/testdir/runtest.vim
@@ -85,6 +85,28 @@ func HandleSwapExists()
endif
endfunc
+def IsWinNumOneAtEOF(in_name_and_out_name: string): bool
+ # Expect defaults from term_util#RunVimInTerminal().
+ if winwidth(1) != 75 || winheight(1) != 20
+ ch_log(printf('Aborting for %s: (75 x 20) != (%d x %d)',
+ in_name_and_out_name,
+ winwidth(1),
+ winheight(1)))
+ return true
+ endif
+ # A two-fold role: (1) redraw whenever the first test file is of 19 lines or
+ # less long (not applicable to c.c); (2) redraw in case the terminal buffer
+ # cannot redraw itself just yet (else expect extra files generated).
+ redraw
+ const pos: string = join([
+ screenstring(20, 71),
+ screenstring(20, 72),
+ screenstring(20, 73),
+ screenstring(20, 74),
+ screenstring(20, 75)], '')
+ return (pos == ' All ' || pos == ' Bot ')
+enddef
+
func RunTest()
let ok_count = 0
let failed_tests = []
@@ -94,14 +116,17 @@ func RunTest()
let setup = glob('input/setup/*.vim', 1, 1)
\ ->reduce({d, f -> extend(d, {fnamemodify(f, ':t:r'): f})}, {})
- for fname in glob('input/*.*', 1, 1)
- if fname =~ '\~$'
- " backup file, skip
- continue
- endif
+ if exists("$VIM_SYNTAX_SELF_TESTING")
+ let dirpath = 'input/selftestdir/'
+ let fnames = readdir(dirpath, {fname -> fname !~ '^README\.txt$'})
+ else
+ let dirpath = 'input/'
+ let fnames = readdir(dirpath, {fname -> fname !~ '\~$' && fname =~ '^.\+\..\+$'})
+ endif
- let linecount = readfile(fname)->len()
- let root = fnamemodify(fname, ':t:r')
+ for fname in fnames
+ let root = fnamemodify(fname, ':r')
+ let fname = dirpath .. fname
let filetype = substitute(root, '\([^_.]*\)[_.].*', '\1', '')
let failed_root = 'failed/' .. root
@@ -118,6 +143,10 @@ func RunTest()
call delete('done/' .. root)
let lines =<< trim END
+ " Track the cursor progress through a syntax test file so that any
+ " degenerate input can be reported. Each file will have its own cursor.
+ let s:cursor = 1
+
" extra info for shell variables
func ShellInfo()
let msg = ''
@@ -160,11 +189,111 @@ func RunTest()
call cursor(1, 1)
" BEGIN [runtime/defaults.vim]
" Also, disable italic highlighting to avoid issues on some terminals.
- set display=truncate ruler scrolloff=5 t_ZH= t_ZR=
+ set display=lastline ruler scrolloff=5 t_ZH= t_ZR=
syntax on
" END [runtime/defaults.vim]
redraw!
endfunc
+
+ def s:AssertCursorForwardProgress(): bool
+ const curnum: number = line('.')
+ if curnum <= cursor
+ # Use "actions/upload-artifact@v4" of ci.yml for delivery.
+ writefile([printf('No cursor progress: %d <= %d (%s). Please file an issue.',
+ curnum,
+ cursor,
+ bufname('%'))],
+ 'failed/00-FIXME',
+ 'a')
+ bwipeout!
+ endif
+ cursor = curnum
+ return true
+ enddef
+
+ def ScrollToSecondPage(estate: number, op_wh: number, op_so: number): bool
+ if line('.') != 1 || line('w$') >= line('$')
+ return AssertCursorForwardProgress()
+ endif
+ try
+ set scrolloff=0
+ # Advance mark "c"[ursor] along with the cursor.
+ norm! Lmc
+ if foldclosed('.') < 0 &&
+ (strdisplaywidth(getline('.')) + &l:fdc * winheight(1)) >= estate
+ # Make for an exit for a screenful long line.
+ norm! j^
+ return AssertCursorForwardProgress()
+ else
+ # Place the cursor on the actually last visible line.
+ while winline() < op_wh
+ const lastnum: number = winline()
+ norm! gjmc
+ if lastnum > winline()
+ break
+ endif
+ endwhile
+ norm! zt
+ endif
+ finally
+ # COMPATIBILITY: Scroll up around "scrolloff" lines.
+ &scrolloff = max([1, op_so])
+ endtry
+ norm! ^
+ return AssertCursorForwardProgress()
+ enddef
+
+ def ScrollToNextPage(estate: number, op_wh: number, op_so: number): bool
+ if line('.') == 1 || line('w$') >= line('$')
+ return AssertCursorForwardProgress()
+ endif
+ try
+ set scrolloff=0
+ # Advance mark "c"[ursor] along with the cursor.
+ norm! Lmc
+ if foldclosed('.') < 0 &&
+ (strdisplaywidth(getline('.')) + &l:fdc * winheight(1)) >= estate
+ # Make for an exit for a screenful long line.
+ norm! j^
+ return AssertCursorForwardProgress()
+ else
+ # Place the cursor on the actually last visible line.
+ while winline() < op_wh
+ const lastnum: number = winline()
+ norm! gjmc
+ if lastnum > winline()
+ break
+ endif
+ endwhile
+ endif
+ finally
+ # COMPATIBILITY: Scroll up/down around "scrolloff" lines.
+ &scrolloff = max([1, op_so])
+ endtry
+ norm! zt
+ const marknum: number = line("'c")
+ # Eschew &smoothscroll since line("`c") is not supported.
+ # Remember that "w0" can point to the first line of a _closed_ fold
+ # whereas the last line of a _closed_ fold can be marked.
+ if line('w0') > marknum
+ while line('w0') > marknum
+ exe "norm! \<C-y>"
+ endwhile
+ if line('w0') != marknum
+ exe "norm! \<C-e>H"
+ endif
+ # Handle non-wrapped lines.
+ elseif line('w0') < marknum
+ while line('w0') < marknum
+ exe "norm! \<C-e>"
+ endwhile
+ if line('w0') != marknum
+ exe "norm! \<C-y>H"
+ endif
+ endif
+ norm! ^
+ return AssertCursorForwardProgress()
+ enddef
END
call writefile(lines, 'Xtestscript')
@@ -198,34 +327,39 @@ func RunTest()
" Screendump at the start of the file: failed/root_00.dump
let root_00 = root .. '_00'
- call ch_log('First screendump for ' .. fname .. ': failed/' .. root_00 .. '.dump')
+ let in_name_and_out_name = fname .. ': failed/' .. root_00 .. '.dump'
+ call ch_log('First screendump for ' .. in_name_and_out_name)
let fail = VerifyScreenDump(buf, root_00, {})
- " clear the shell info if there are not enough lines to cause a scroll
- if filetype == 'sh' && linecount <= 19
- call term_sendkeys(buf, ":redraw\<CR>")
- endif
-
" Make a Screendump every 18 lines of the file: failed/root_NN.dump
- let topline = 1
let nr = 1
- while linecount - topline > 20
- let topline += 18
- call term_sendkeys(buf, printf("%dGzt", topline))
- let root_next = root .. printf('_%02d', nr)
- call ch_log('Next screendump for ' .. fname .. ': failed/' .. root_next .. '.dump')
- let fail += VerifyScreenDump(buf, root_next, {})
- let nr += 1
- endwhile
-
- " Screendump at the end of the file: failed/root_99.dump
- call term_sendkeys(buf, 'Gzb')
- let root_last = root .. '_99'
- call ch_log('Last screendump for ' .. fname .. ': failed/' .. root_last .. '.dump')
- let fail += VerifyScreenDump(buf, root_last, {})
-
- call StopVimInTerminal(buf)
- call delete('Xtestscript')
+ let root_next = printf('%s_%02d', root, nr)
+ let in_name_and_out_name = fname .. ': failed/' .. root_next .. '.dump'
+
+ " Accommodate the next code block to "buf"'s contingency for self
+ " wipe-out.
+ try
+ if !IsWinNumOneAtEOF(in_name_and_out_name)
+ call term_sendkeys(buf, ":call ScrollToSecondPage((18 * 75 + 1), 19, 5) | redraw!\<CR>")
+ call ch_log('Next screendump for ' .. in_name_and_out_name)
+ let fail += VerifyScreenDump(buf, root_next, {})
+ let nr += 1
+ let root_next = printf('%s_%02d', root, nr)
+ let in_name_and_out_name = fname .. ': failed/' .. root_next .. '.dump'
+
+ while !IsWinNumOneAtEOF(in_name_and_out_name)
+ call term_sendkeys(buf, ":call ScrollToNextPage((18 * 75 + 1), 19, 5) | redraw!\<CR>")
+ call ch_log('Next screendump for ' .. in_name_and_out_name)
+ let fail += VerifyScreenDump(buf, root_next, {})
+ let nr += 1
+ let root_next = printf('%s_%02d', root, nr)
+ let in_name_and_out_name = fname .. ': failed/' .. root_next .. '.dump'
+ endwhile
+ endif
+ call StopVimInTerminal(buf)
+ finally
+ call delete('Xtestscript')
+ endtry
" redraw here to avoid the following messages to get mixed up with screen
" output.
@@ -275,6 +409,12 @@ func RunTest()
call Message('OK: ' .. ok_count)
call Message('FAILED: ' .. len(failed_tests) .. ': ' .. string(failed_tests))
call Message('skipped: ' .. skipped_count)
+
+ if !empty(failed_tests)
+ call Message('')
+ call Message('View generated screendumps with "../../src/vim --clean -S testdir/viewdumps.vim"')
+ endif
+
call AppendMessages('== SUMMARY ==')
if len(failed_tests) > 0
diff --git a/runtime/syntax/testdir/viewdumps.vim b/runtime/syntax/testdir/viewdumps.vim
new file mode 100644
index 0000000..e1624ff
--- /dev/null
+++ b/runtime/syntax/testdir/viewdumps.vim
@@ -0,0 +1,24 @@
+vim9script
+
+exec 'source ' .. (((cwdpath: string) => cwdpath
+ ->strpart(0, cwdpath->strridx('/vim')))(getcwd()))
+ .. '/vim/src/testdir/commondumps.vim'
+g:Init('\<syntax\>', -1)
+
+# THE FOLLOWING SETTINGS PERTAIN TO "input/" FILES THAT ARE LIKELY TO BE
+# LOADED SIDE BY SIDE WHENEVER BATCHES OF NEW SCREENDUMPS ARE GENERATED.
+
+# Match "LC_ALL=C" of Makefile.
+language C
+
+# Match the settings from term_util.vim#RunVimInTerminal().
+set t_Co=256 background=light
+hi Normal ctermfg=NONE ctermbg=NONE
+
+# Match the settings from runtest.vim#Xtestscript#SetUpVim().
+set display=lastline ruler scrolloff=5 t_ZH= t_ZR=
+
+# Anticipate non-Latin-1 characters in "input/" files.
+set encoding=utf-8 termencoding=utf-8
+
+# vim:fdm=syntax:sw=2:ts=8:noet:nolist:nosta:
diff --git a/runtime/syntax/thrift.vim b/runtime/syntax/thrift.vim
new file mode 100644
index 0000000..502e988
--- /dev/null
+++ b/runtime/syntax/thrift.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: Thrift
+" Original Author: Martin Smith <martin@facebook.com>
+" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
+" Last Change: 2024/07/29
+" https://github.com/apache/thrift/blob/master/contrib/thrift.vim
+"
+" Licensed to the Apache Software Foundation (ASF) under one
+" or more contributor license agreements. See the NOTICE file
+" distributed with this work for additional information
+" regarding copyright ownership. The ASF licenses this file
+" to you under the Apache License, Version 2.0 (the
+" "License"); you may not use this file except in compliance
+" with the License. You may obtain a copy of the License at
+"
+" http://www.apache.org/licenses/LICENSE-2.0
+"
+" Unless required by applicable law or agreed to in writing,
+" software distributed under the License is distributed on an
+" "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+" KIND, either express or implied. See the License for the
+" specific language governing permissions and limitations
+" under the License.
+"
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Todo
+syn keyword thriftTodo TODO todo FIXME fixme XXX xxx contained
+
+" Comments
+syn match thriftComment "#.*" contains=thriftTodo
+syn region thriftComment start="/\*" end="\*/" contains=thriftTodo
+syn match thriftComment "//.\{-}\(?>\|$\)\@="
+
+" String
+syn region thriftStringDouble matchgroup=None start=+"+ end=+"+
+
+" Number
+syn match thriftNumber "-\=\<\d\+\>" contained
+
+" Keywords
+syn keyword thriftKeyword namespace
+syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_attrs
+syn keyword thriftKeyword include cpp_include cpp_type const optional required
+syn keyword thriftBasicTypes void bool byte i8 i16 i32 i64 double string binary
+syn keyword thriftStructure map list set struct typedef exception enum throws union
+
+" Special
+syn match thriftSpecial "\d\+:"
+
+" Structure
+syn keyword thriftStructure service oneway extends
+"async" { return tok_async; }
+"exception" { return tok_xception; }
+"extends" { return tok_extends; }
+"throws" { return tok_throws; }
+"service" { return tok_service; }
+"enum" { return tok_enum; }
+"const" { return tok_const; }
+
+hi def link thriftComment Comment
+hi def link thriftKeyword Special
+hi def link thriftBasicTypes Type
+hi def link thriftStructure StorageClass
+hi def link thriftTodo Todo
+hi def link thriftString String
+hi def link thriftNumber Number
+hi def link thriftSpecial Special
+hi def link thriftStructure Structure
+
+let b:current_syntax = "thrift"
diff --git a/runtime/syntax/tmux.vim b/runtime/syntax/tmux.vim
index 9766ed5..80636f2 100644
--- a/runtime/syntax/tmux.vim
+++ b/runtime/syntax/tmux.vim
@@ -1,5 +1,5 @@
" Language: tmux(1) configuration file
-" Version: 3.4 (git-608d1134)
+" Version: 3.4 (git-171004df)
" URL: https://github.com/ericpruitt/tmux.vim/
" Maintainer: Eric Pruitt <eric.pruitt@gmail.com>
" License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause)
@@ -28,7 +28,7 @@ syn match tmuxKey /\(C-\|M-\|\^\)\+\S\+/ display
syn match tmuxNumber /\<\d\+\>/ display
syn match tmuxFlags /\s-\a\+/ display
syn match tmuxVariableExpansion /\$\({[A-Za-z_]\w*}\|[A-Za-z_]\w*\)/ display
-syn match tmuxControl /\(^\|\s\)%\(if\|elif\|else\|endif\)\($\|\s\)/ display
+syn match tmuxControl /\(^\|\s\)%\(if\|elif\|else\|endif\|hidden\)\($\|\s\)/ display
syn match tmuxEscape /\\\(u\x\{4\}\|U\x\{8\}\|\o\{3\}\|[\\ernt$]\)/ display
" Missing closing bracket.
@@ -99,11 +99,11 @@ syn keyword tmuxOptions
\ after-set-environment after-set-hook after-set-option after-show-environment
\ after-show-messages after-show-options after-split-window after-unbind-key
\ aggressive-resize alert-activity alert-bell alert-silence allow-passthrough
-\ allow-rename alternate-screen assume-paste-time automatic-rename
-\ automatic-rename-format backspace base-index bell-action buffer-limit
-\ client-active client-attached client-detached client-focus-in
+\ allow-rename allow-set-title alternate-screen assume-paste-time
+\ automatic-rename automatic-rename-format backspace base-index bell-action
+\ buffer-limit client-active client-attached client-detached client-focus-in
\ client-focus-out client-resized client-session-changed clock-mode-color
-\ clock-mode-colour clock-mode-style command-alias copy-command
+\ clock-mode-colour clock-mode-style command-alias command-error copy-command
\ copy-mode-current-match-style copy-mode-mark-style copy-mode-match-style
\ cursor-color cursor-colour cursor-style default-command default-shell
\ default-size default-terminal destroy-unattached detach-on-destroy
diff --git a/runtime/syntax/tsv.vim b/runtime/syntax/tsv.vim
new file mode 100644
index 0000000..f0dd9f7
--- /dev/null
+++ b/runtime/syntax/tsv.vim
@@ -0,0 +1,12 @@
+" Vim filetype plugin file
+" Language: Tab separated values (TSV)
+" Last Change: 2024 Jul 16
+" This runtime file is looking for a new maintainer.
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let b:csv_delimiter = '\t' " enforce tab delimiter
+runtime! syntax/csv.vim
+let b:current_syntax = 'tsv'
diff --git a/runtime/syntax/typst.vim b/runtime/syntax/typst.vim
new file mode 100644
index 0000000..82fdadb
--- /dev/null
+++ b/runtime/syntax/typst.vim
@@ -0,0 +1,472 @@
+" Vim syntax file
+" Language: Typst
+" Maintainer: Gregory Anders <greg@gpanders.com>
+" Last Change: 2024-07-14
+" Based on: https://github.com/kaarmu/typst.vim
+
+if exists('b:current_syntax')
+ finish
+endif
+
+syntax sync fromstart
+syntax spell toplevel
+
+" Common {{{1
+syntax cluster typstCommon
+ \ contains=@typstComment
+
+" Common > Comment {{{2
+syntax cluster typstComment
+ \ contains=typstCommentBlock,typstCommentLine
+syntax match typstCommentBlock
+ \ #/\*\%(\_.\{-}\)\*/#
+ \ contains=typstCommentTodo,@Spell
+syntax match typstCommentLine
+ \ #//.*#
+ \ contains=typstCommentTodo,@Spell
+syntax keyword typstCommentTodo
+ \ contained
+ \ TODO FIXME XXX TBD
+
+
+" Code {{{1
+syntax cluster typstCode
+ \ contains=@typstCommon
+ \ ,@typstCodeKeywords
+ \ ,@typstCodeConstants
+ \ ,@typstCodeIdentifiers
+ \ ,@typstCodeFunctions
+ \ ,@typstCodeParens
+
+" Code > Keywords {{{2
+syntax cluster typstCodeKeywords
+ \ contains=typstCodeConditional
+ \ ,typstCodeRepeat
+ \ ,typstCodeKeyword
+ \ ,typstCodeStatement
+syntax keyword typstCodeConditional
+ \ contained
+ \ if else
+syntax keyword typstCodeRepeat
+ \ contained
+ \ while for
+syntax keyword typstCodeKeyword
+ \ contained
+ \ not in and or return
+syntax region typstCodeStatement
+ \ contained
+ \ matchgroup=typstCodeStatementWord start=/\v(let|set|import|include)>/
+ \ matchgroup=Noise end=/\v%(;|$)/
+ \ contains=@typstCode
+syntax region typstCodeStatement
+ \ contained
+ \ matchgroup=typstCodeStatementWord start=/show/
+ \ matchgroup=Noise end=/\v%(:|$)/ keepend
+ \ contains=@typstCode
+ \ skipwhite nextgroup=@typstCode,typstCodeShowRocket
+syntax match typstCodeShowRocket
+ \ contained
+ \ /.*=>/
+ \ contains=@typstCode
+ \ skipwhite nextgroup=@typstCode
+
+" Code > Identifiers {{{2
+syntax cluster typstCodeIdentifiers
+ \ contains=typstCodeIdentifier
+ \ ,typstCodeFieldAccess
+syntax match typstCodeIdentifier
+ \ contained
+ \ /\v\w\k*>(<%(let|set|show|import|include))@<![\.\[\(]@!/
+syntax match typstCodeFieldAccess
+ \ contained
+ \ /\v\w\k*>(<%(let|set|show|import|include))@<!\.[\[\(]@!/
+ \ nextgroup=typstCodeFieldAccess,typstCodeFunction
+
+" Code > Functions {{{2
+syntax cluster typstCodeFunctions
+ \ contains=typstCodeFunction
+syntax match typstCodeFunction
+ \ contained
+ \ /\v\w\k*>(<%(let|set|show|import|include))@<![\(\[]@=/
+ \ nextgroup=typstCodeFunctionArgument
+syntax match typstCodeFunctionArgument
+ \ contained
+ \ /\v%(%(\(.{-}\)|\[.{-}\]|\{.{-}\}))*/ transparent
+ \ contains=@typstCode
+
+" Code > Constants {{{2
+syntax cluster typstCodeConstants
+ \ contains=typstCodeConstant
+ \ ,typstCodeNumberInteger
+ \ ,typstCodeNumberFloat
+ \ ,typstCodeNumberLength
+ \ ,typstCodeNumberAngle
+ \ ,typstCodeNumberRatio
+ \ ,typstCodeNumberFraction
+ \ ,typstCodeString
+ \ ,typstCodeLabel
+syntax match typstCodeConstant
+ \ contained
+ \ /\v<%(none|auto|true|false)-@!>/
+syntax match typstCodeNumberInteger
+ \ contained
+ \ /\v<\d+>/
+
+syntax match typstCodeNumberFloat
+ \ contained
+ \ /\v<\d+\.\d*>/
+syntax match typstCodeNumberLength
+ \ contained
+ \ /\v<\d+(\.\d*)?(pt|mm|cm|in|em)>/
+syntax match typstCodeNumberAngle
+ \ contained
+ \ /\v<\d+(\.\d*)?(deg|rad)>/
+syntax match typstCodeNumberRatio
+ \ contained
+ \ /\v<\d+(\.\d*)?\%/
+syntax match typstCodeNumberFraction
+ \ contained
+ \ /\v<\d+(\.\d*)?fr>/
+syntax region typstCodeString
+ \ contained
+ \ start=/"/ skip=/\v\\\\|\\"/ end=/"/
+ \ contains=@Spell
+syntax match typstCodeLabel
+ \ contained
+ \ /\v\<\K%(\k*-*)*\>/
+
+" Code > Parens {{{2
+syntax cluster typstCodeParens
+ \ contains=typstCodeParen
+ \ ,typstCodeBrace
+ \ ,typstCodeBracket
+ \ ,typstCodeDollar
+ \ ,typstMarkupRawInline
+ \ ,typstMarkupRawBlock
+syntax region typstCodeParen
+ \ contained
+ \ matchgroup=Noise start=/(/ end=/)/
+ \ contains=@typstCode
+syntax region typstCodeBrace
+ \ contained
+ \ matchgroup=Noise start=/{/ end=/}/
+ \ contains=@typstCode
+syntax region typstCodeBracket
+ \ contained
+ \ matchgroup=Noise start=/\[/ end=/\]/
+ \ contains=@typstMarkup
+syntax region typstCodeDollar
+ \ contained
+ \ matchgroup=Number start=/\\\@<!\$/ end=/\\\@<!\$/
+ \ contains=@typstMath
+
+
+" Hashtag {{{1
+syntax cluster typstHashtag
+ \ contains=@typstHashtagKeywords
+ \ ,@typstHashtagConstants
+ \ ,@typstHashtagIdentifiers
+ \ ,@typstHashtagFunctions
+ \ ,@typstHashtagParens
+
+" Hashtag > Keywords {{{2
+syntax cluster typstHashtagKeywords
+ \ contains=typstHashtagConditional
+ \ ,typstHashtagRepeat
+ \ ,typstHashtagKeywords
+ \ ,typstHashtagStatement
+
+" syntax match typstHashtagControlFlowError
+" \ /\v#%(if|while|for)>-@!.{-}$\_.{-}%(\{|\[|\()/
+syntax match typstHashtagControlFlow
+ \ /\v#%(if|while|for)>.{-}\ze%(\{|\[|\()/
+ \ contains=typstHashtagConditional,typstHashtagRepeat
+ \ nextgroup=@typstCode
+syntax region typstHashtagConditional
+ \ contained
+ \ start=/\v#if>/ end=/\v\ze(\{|\[)/
+ \ contains=@typstCode
+syntax region typstHashtagRepeat
+ \ contained
+ \ start=/\v#(while|for)>/ end=/\v\ze(\{|\[)/
+ \ contains=@typstCode
+syntax match typstHashtagKeyword
+ \ /\v#(return)>/
+ \ skipwhite nextgroup=@typstCode
+syntax region typstHashtagStatement
+ \ matchgroup=typstHashtagStatementWord start=/\v#(let|set|import|include)>/
+ \ matchgroup=Noise end=/\v%(;|$)/
+ \ contains=@typstCode
+syntax region typstHashtagStatement
+ \ matchgroup=typstHashtagStatementWord start=/#show/
+ \ matchgroup=Noise end=/\v%(:|$)/ keepend
+ \ contains=@typstCode
+ \ skipwhite nextgroup=@typstCode,typstCodeShowRocket
+
+" Hashtag > Constants {{{2
+syntax cluster typstHashtagConstants
+ \ contains=typstHashtagConstant
+syntax match typstHashtagConstant
+ \ /\v#(none|auto|true|false)>/
+
+" Hashtag > Identifiers {{{2
+syntax cluster typstHashtagIdentifiers
+ \ contains=typstHashtagIdentifier
+ \ ,typstHashtagFieldAccess
+syntax match typstHashtagIdentifier
+ \ /\v#\w\k*>(<%(let|set|show|import|include))@<![\.\[\(]@!/
+syntax match typstHashtagFieldAccess
+ \ /\v#\w\k*>(<%(let|set|show|import|include))@<!\.[\[\(]@!/
+ \ nextgroup=typstCodeFieldAccess,typstCodeFunction
+
+" Hashtag > Functions {{{2
+syntax cluster typstHashtagFunctions
+ \ contains=typstHashtagFunction
+syntax match typstHashtagFunction
+ \ /\v#\w\k*>(<%(let|set|show|import|include))@<![\(\[]@=/
+ \ nextgroup=typstCodeFunctionArgument
+
+" Hashtag > Parens {{{2
+syntax cluster typstHashtagParens
+ \ contains=typstHashtagParen
+ \ ,typstHashtagBrace
+ \ ,typstHashtagBracket
+ \ ,typstHashtagDollar
+syntax region typstHashtagParen
+ \ matchgroup=Noise start=/#(/ end=/)/
+ \ contains=@typstCode
+syntax region typstHashtagBrace
+ \ matchgroup=Noise start=/#{/ end=/}/
+ \ contains=@typstCode
+syntax region typstHashtagBracket
+ \ matchgroup=Noise start=/#\[/ end=/\]/
+ \ contains=@typstMarkup
+syntax region typstHashtagDollar
+ \ matchgroup=Noise start=/#\$/ end=/\\\@<!\$/
+ \ contains=@typstMath
+
+
+" Markup {{{1
+syntax cluster typstMarkup
+ \ contains=@typstCommon
+ \ ,@Spell
+ \ ,@typstHashtag
+ \ ,@typstMarkupText
+ \ ,@typstMarkupParens
+
+" Markup > Text {{{2
+syntax cluster typstMarkupText
+ \ contains=typstMarkupRawInline
+ \ ,typstMarkupRawBlock
+ \ ,typstMarkupLabel
+ \ ,typstMarkupReference
+ \ ,typstMarkupUrl
+ \ ,typstMarkupHeading
+ \ ,typstMarkupBulletList
+ \ ,typstMarkupEnumList
+ \ ,typstMarkupTermList
+ \ ,typstMarkupBold
+ \ ,typstMarkupItalic
+ \ ,typstMarkupLinebreak
+ \ ,typstMarkupNonbreakingSpace
+ \ ,typstMarkupShy
+ \ ,typstMarkupDash
+ \ ,typstMarkupEllipsis
+
+" Raw Text
+syntax match typstMarkupRawInline
+ \ /`.\{-}`/
+syntax region typstMarkupRawBlock
+ \ matchgroup=Macro start=/```\w*/
+ \ matchgroup=Macro end=/```/ keepend
+syntax region typstMarkupCodeBlockTypst
+ \ matchgroup=Macro start=/```typst/
+ \ matchgroup=Macro end=/```/ contains=@typstCode keepend
+ \ concealends
+
+for s:name in get(g:, 'typst_embedded_languages', [])
+ let s:include = ['syntax include'
+ \ ,'@typstEmbedded_'..s:name
+ \ ,'syntax/'..s:name..'.vim']
+ let s:rule = ['syn region'
+ \,s:name
+ \,'matchgroup=Macro'
+ \,'start=/```'..s:name..'\>/ end=/```/'
+ \,'contains=@typstEmbedded_'..s:name
+ \,'keepend'
+ \,'concealends']
+ execute 'silent! ' .. join(s:include, ' ')
+ unlet! b:current_syntax
+ execute join(s:rule, ' ')
+endfor
+
+" Label & Reference
+syntax match typstMarkupLabel
+ \ /\v\<\K%(\k*-*)*\>/
+syntax match typstMarkupReference
+ \ /\v\@\K%(\k*-*)*/
+
+" URL
+syntax match typstMarkupUrl
+ \ #\v\w+://\S*#
+
+" Heading
+syntax match typstMarkupHeading
+ \ /^\s*\zs=\{1,6}\s.*$/
+ \ contains=typstMarkupLabel,@Spell
+
+" Lists
+syntax match typstMarkupBulletList
+ \ /\v^\s*-\s+/
+syntax match typstMarkupEnumList
+ \ /\v^\s*(\+|\d+\.)\s+/
+syntax region typstMarkupTermList
+ \ oneline start=/\v^\s*\/\s/ end=/:/
+ \ contains=@typstMarkup
+
+" Bold & Italic
+syntax match typstMarkupBold
+ \ /\v(\w|\\)@1<!\*\S@=.{-}(\n.{-1,})*\S@1<=\\@1<!\*/
+ \ contains=typstMarkupBoldRegion
+syntax match typstMarkupItalic
+ \ /\v(\w|\\)@1<!_\S@=.{-}(\n.{-1,})*\S@1<=\\@1<!_/
+ \ contains=typstMarkupItalicRegion
+syntax match typstMarkupBoldItalic
+ \ contained
+ \ /\v(\w|\\)@1<![_\*]\S@=.{-}(\n.{-1,})*\S@1<=\\@1<!\2/
+ \ contains=typstMarkupBoldRegion,typstMarkupItalicRegion
+syntax region typstMarkupBoldRegion
+ \ contained
+ \ transparent matchgroup=typstMarkupBold
+ \ start=/\(^\|[^0-9a-zA-Z]\)\@<=\*/ end=/\*\($\|[^0-9a-zA-Z]\)\@=/
+ \ concealends contains=typstMarkupBoldItalic,typstMarkupLabel,@Spell
+syntax region typstMarkupItalicRegion
+ \ contained
+ \ transparent matchgroup=typstMarkupItalic
+ \ start=/\(^\|[^0-9a-zA-Z]\)\@<=_/ end=/_\($\|[^0-9a-zA-Z]\)\@=/
+ \ concealends contains=typstMarkupBoldItalic,typstMarkupLabel,@Spell
+
+" Linebreak & Special Whitespace
+syntax match typstMarkupLinebreak
+ \ /\\\\/
+syntax match typstMarkupNonbreakingSpace
+ \ /\~/
+syntax match typstMarkupShy
+ \ /-?/
+
+" Special Symbols
+syntax match typstMarkupDash
+ \ /-\{2,3}/
+syntax match typstMarkupEllipsis
+ \ /\.\.\./
+
+" Markup > Parens {{{2
+syntax cluster typstMarkupParens
+ \ contains=typstMarkupBracket
+ \ ,typstMarkupDollar
+syntax region typstMarkupBracket
+ \ matchgroup=Noise start=/\[/ end=/\]/
+ \ contains=@typstMarkup
+syntax region typstMarkupDollar
+ \ matchgroup=Special start=/\\\@<!\$/ end=/\\\@<!\$/
+ \ contains=@typstMath
+
+
+" Math {{{1
+syntax cluster typstMath
+ \ contains=@typstCommon
+ \ ,@typstHashtag
+ \ ,typstMathIdentifier
+ \ ,typstMathFunction
+ \ ,typstMathNumber
+ \ ,typstMathSymbol
+ \ ,typstMathBold
+ \ ,typstMathScripts
+ \ ,typstMathQuote
+
+syntax match typstMathIdentifier
+ \ /\a\a\+/
+ \ contained
+syntax match typstMathFunction
+ \ /\a\a\+\ze(/
+ \ contained
+syntax match typstMathNumber
+ \ /\<\d\+\>/
+ \ contained
+syntax region typstMathQuote
+ \ matchgroup=String start=/"/ skip=/\\"/ end=/"/
+ \ contained
+
+" Math > Linked groups {{{2
+highlight default link typstMathIdentifier Identifier
+highlight default link typstMathFunction Statement
+highlight default link typstMathNumber Number
+highlight default link typstMathSymbol Statement
+
+" Highlighting {{{1
+
+" Highlighting > Linked groups {{{2
+highlight default link typstCommentBlock Comment
+highlight default link typstCommentLine Comment
+highlight default link typstCommentTodo Todo
+highlight default link typstCodeConditional Conditional
+highlight default link typstCodeRepeat Repeat
+highlight default link typstCodeKeyword Keyword
+highlight default link typstCodeConstant Constant
+highlight default link typstCodeNumberInteger Number
+highlight default link typstCodeNumberFloat Number
+highlight default link typstCodeNumberLength Number
+highlight default link typstCodeNumberAngle Number
+highlight default link typstCodeNumberRatio Number
+highlight default link typstCodeNumberFraction Number
+highlight default link typstCodeString String
+highlight default link typstCodeLabel Structure
+highlight default link typstCodeStatementWord Statement
+highlight default link typstCodeIdentifier Identifier
+highlight default link typstCodeFieldAccess Identifier
+highlight default link typstCodeFunction Function
+highlight default link typstCodeParen Noise
+highlight default link typstCodeBrace Noise
+highlight default link typstCodeBracket Noise
+highlight default link typstCodeDollar Noise
+" highlight default link typstHashtagControlFlowError Error
+highlight default link typstHashtagConditional Conditional
+highlight default link typstHashtagRepeat Repeat
+highlight default link typstHashtagKeyword Keyword
+highlight default link typstHashtagConstant Constant
+highlight default link typstHashtagStatementWord Statement
+highlight default link typstHashtagIdentifier Identifier
+highlight default link typstHashtagFieldAccess Identifier
+highlight default link typstHashtagFunction Function
+highlight default link typstHashtagParen Noise
+highlight default link typstHashtagBrace Noise
+highlight default link typstHashtagBracket Noise
+highlight default link typstHashtagDollar Noise
+highlight default link typstMarkupRawInline Macro
+highlight default link typstMarkupRawBlock Macro
+highlight default link typstMarkupLabel Structure
+highlight default link typstMarkupReference Structure
+highlight default link typstMarkupBulletList Structure
+" highlight default link typstMarkupItalicError Error
+" highlight default link typstMarkupBoldError Error
+highlight default link typstMarkupEnumList Structure
+highlight default link typstMarkupLinebreak Structure
+highlight default link typstMarkupNonbreakingSpace Structure
+highlight default link typstMarkupShy Structure
+highlight default link typstMarkupDash Structure
+highlight default link typstMarkupEllipsis Structure
+highlight default link typstMarkupTermList Structure
+highlight default link typstMarkupDollar Noise
+
+" Highlighting > Custom Styling {{{2
+highlight! Conceal ctermfg=NONE ctermbg=NONE guifg=NONE guibg=NONE
+
+highlight default typstMarkupHeading term=underline,bold cterm=underline,bold gui=underline,bold
+highlight default typstMarkupUrl term=underline cterm=underline gui=underline
+highlight default typstMarkupBold term=bold cterm=bold gui=bold
+highlight default typstMarkupItalic term=italic cterm=italic gui=italic
+highlight default typstMarkupBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
+
+let b:current_syntax = 'typst'
+
+" }}}1
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 033251f..2fa2e35 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -3,7 +3,7 @@
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
" URL: https://github.com/vim-jp/syntax-vim-ex
-" Last Change: 2024 Jun 15
+" Last Change: 2024 Aug 23
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
@@ -28,14 +28,12 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
-syn keyword vimCommand contained abo[veleft] abs[tract] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cal[l] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] class clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler]
-syn keyword vimCommand contained con[tinue] conf[irm] cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] debugg[reedy] defc[ompile] defe[r] delc[ommand] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se] elsei[f] em[enu] en[dif] endin[terface] endc[lass] ende[num] endfo[r] endt[ry] endw[hile] ene[w] enu[m] ev[al] ex exi[t] exp[ort] exu[sage] f[ile] files filet[ype] filt[er] fin[d] fina[l] finall[y] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] for g[lobal] go[to] gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep]
-syn keyword vimCommand contained helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] ho[rizontal] if ij[ump] il[ist] imp[ort] int[ro] inte[rface] is[earch] isp[lit] j[oin] ju[mps] k kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] let lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loadk[eymap] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile] lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove]
-syn keyword vimCommand contained ma[rk] mak[e] marks mat[ch] menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] mz[scheme] mzf[ile] n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pub[lic] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] retu[rn]
-syn keyword vimCommand contained rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stat[ic] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st]
-syn keyword vimCommand contained tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] thi[s] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] ty[pe] u[ndo] undoj[oin] undol[ist] unh[ide] unl[et] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wh[ile] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i
-
-syn keyword vimCommand contained 2mat[ch] 3mat[ch]
+syn keyword vimCommand contained abo[veleft] abs[tract] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] class clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler]
+syn keyword vimCommand contained con[tinue] conf[irm] cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] debugg[reedy] defc[ompile] defe[r] delc[ommand] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se] elsei[f] em[enu] en[dif] endin[terface] endc[lass] ende[num] endfo[r] endt[ry] endw[hile] ene[w] enu[m] ev[al] ex exi[t] exp[ort] exu[sage] f[ile] files filet[ype] filt[er] fin[d] finall[y] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep] helpt[ags]
+syn keyword vimCommand contained ha[rdcopy] hi[ghlight] hid[e] his[tory] ho[rizontal] if ij[ump] il[ist] imp[ort] int[ro] inte[rface] is[earch] isp[lit] j[oin] ju[mps] k kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile] lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove] ma[rk] mak[e] marks menut[ranslate]
+syn keyword vimCommand contained mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] mz[scheme] mzf[ile] n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pub[lic] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] ru[ntime]
+syn keyword vimCommand contained rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stat[ic] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly]
+syn keyword vimCommand contained tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] thi[s] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] ty[pe] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wh[ile] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i
" Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!"
@@ -43,15 +41,15 @@ syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
" vimOptions are caught only when contained in a vimSet {{{2
-" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
-syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns com comments cms commentstring cp compatible cpt complete cfu completefunc
-syn keyword vimOption contained cot completeopt cpp completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase
-syn keyword vimOption contained ft filetype fcs fillchars fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc
-syn keyword vimOption contained imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus
-syn keyword vimOption contained mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions
-syn keyword vimOption contained report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang
-syn keyword vimOption contained spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir
-syn keyword vimOption contained udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
+" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
+syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns com comments cms commentstring cp compatible cpt complete cfu completefunc skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained cot completeopt cpp completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained ft filetype fcs fillchars fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
" vimOptions: These are the turn-off setting variants {{{2
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
@@ -68,8 +66,8 @@ syn keyword vimOption contained invprompt invro invreadonly invrnu invrelativenu
syn keyword vimOption contained invtf invttyfast invudf invundofile invvb invvisualbell invwarn invwiv invweirdinvert invwic invwildignorecase invwmnu invwildmenu invwfb invwinfixbuf invwfh invwinfixheight invwfw invwinfixwidth invwrap invws invwrapscan invwrite invwa invwriteany invwb invwritebackup invxtermcodes
" termcap codes (which can also be set) {{{2
-" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
-syn keyword vimOption contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo
+" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
+syn keyword vimOption contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo skipwhite nextgroup=vimSetEqual,vimSetMod
" term key codes
syn keyword vimOption 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 vimOption contained "t_%1"
@@ -90,8 +88,8 @@ syn keyword vimErrSetting contained invakm invaltkeymap invanti invantialias inv
" AutoCmd Events {{{2
syn case ignore
" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
-syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre
-syn keyword vimAutoEvent contained FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinNewPre WinResized WinScrolled
+syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedC CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost
+syn keyword vimAutoEvent contained FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre KeyInputPre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinNewPre WinResized WinScrolled
" Highlight commonly used Groupnames {{{2
syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
@@ -104,20 +102,24 @@ syn case match
" Function Names {{{2
" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
-syn keyword vimFuncName contained abs acos add and append appendbufline argc argidx arglistid argv asin assert_beeps assert_equal assert_equalfile assert_exception assert_fails assert_false assert_inrange assert_match assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show balloon_split blob2list browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status changenr char2nr charclass charcol charidx chdir cindent
-syn keyword vimFuncName contained clearmatches col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbufinfo getbufline getbufoneline getbufvar getcellwidths getchangelist getchar
-syn keyword vimFuncName contained getcharmod getcharpos getcharsearch getcharstr getcmdcompltype getcmdline getcmdpos getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv indent index indexof input inputdialog inputlist inputrestore inputsave inputsecret insert
-syn keyword vimFuncName contained instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog popup_filter_menu popup_filter_yesno popup_findecho
-syn keyword vimFuncName contained popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setoptions popup_settext popup_show pow prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove rename repeat resolve reverse round rubyeval screenattr screenchar
-syn keyword vimFuncName contained screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float str2list str2nr strcharlen strcharpart strchars strdisplaywidth strftime
-syn keyword vimFuncName contained strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue test_gui_event
-syn keyword vimFuncName contained test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth wordcount writefile
-syn keyword vimFuncName contained xor
+syn keyword vimFuncName contained abs acos add and append appendbufline argc argidx arglistid argv asin assert_beeps assert_equal assert_equalfile assert_exception assert_fails assert_false assert_inrange assert_match assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show balloon_split bindtextdomain blob2list browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status changenr char2nr charclass charcol charidx
+syn keyword vimFuncName contained chdir cindent clearmatches col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbufinfo getbufline getbufoneline getbufvar getcellwidths getchangelist
+syn keyword vimFuncName contained getchar getcharmod getcharpos getcharsearch getcharstr getcmdcompltype getcmdline getcmdpos getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv id indent index indexof input inputdialog inputlist inputrestore inputsave inputsecret
+syn keyword vimFuncName contained insert instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog popup_filter_menu popup_filter_yesno
+syn keyword vimFuncName contained popup_findecho popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf popup_setoptions popup_settext popup_show pow prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove rename repeat resolve reverse round
+syn keyword vimFuncName contained rubyeval screenattr screenchar screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float str2list str2nr strcharlen strcharpart strchars
+syn keyword vimFuncName contained strdisplaywidth strftime strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon
+syn keyword vimFuncName contained test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview
+syn keyword vimFuncName contained winwidth wordcount writefile xor
"--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1
-" Set up folding commands for this syntax highlighting file {{{2
+" Set up commands for this syntax highlighting file {{{2
+
+com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
+com! -nargs=* VimL execute <q-args> s:vim9script ? "contained" : ""
+
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
if g:vimsyn_folding =~# 'a'
com! -nargs=* VimFolda <args> fold
@@ -200,6 +202,14 @@ else
let s:vimsyn_maxlines= 60
endif
+" Nulls {{{2
+" =====
+Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string
+
+" Booleans {{{2
+" ========
+Vim9 syn keyword vim9Boolean true false
+
" Numbers {{{2
" =======
syn case ignore
@@ -213,7 +223,8 @@ syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSub
syn case match
" All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vim9CmdList contains=vim9Const,vim9Final,vim9For,vim9Var
syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
@@ -224,7 +235,8 @@ syn match vimVar "\s\zs&t_k;"
syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
syn keyword vimCommand contained in
-syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
+syn cluster vimExprList contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
+syn cluster vim9ExprList contains=vim9Boolean,vim9Null
" Insertions And Appends: insert append {{{2
" (buftype != nofile test avoids having append, change, insert show up in the command window)
@@ -244,6 +256,10 @@ syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vi
syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
syn keyword vimBehaveModel contained mswin xterm
+" Call {{{2
+" ====
+syn match vimCall "\<call\=\>" skipwhite nextgroup=vimFunc
+
" Exception Handling {{{2
syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
@@ -278,8 +294,8 @@ syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBan
" Operators: {{{2
" =========
-syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
-syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
+syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
+syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
@@ -294,8 +310,8 @@ syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFunc
syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
-syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
-syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
+syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet
+syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For
syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
@@ -315,19 +331,19 @@ syn keyword vimFuncKey contained fu[nction]
syn keyword vimDefKey contained def
syn keyword vimMethodName contained empty len string
-syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
-syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
+syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue
+syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment,vimFuncParamEquals
syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
-syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
+syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
-syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
-syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
+syn region vimFuncBody contained start="^.\=" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn region vimDefBody contained start="^.\=" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
-syn match vimEndfunction "\<endf\%[unction]\>"
-syn match vimEnddef "\<enddef\>"
+syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
syn region vimFuncFold start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
@@ -340,9 +356,9 @@ syn match vimFuncBlank contained "\s\+"
" Types: {{{2
" =====
-" vimTypes : new for vim9
-syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
-syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
+
+syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
+syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
syn keyword vimType contained any blob bool channel float job number string void
@@ -369,7 +385,7 @@ else
endif
syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
-syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
+syn region vimLoadkeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
" Special Filenames, Modifiers, Extension Removal: {{{2
" ===============================================
@@ -402,7 +418,7 @@ endif
syn case ignore
syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
-syn keyword vimUserAttrbCmplt contained arglist augroup behave buffer color command compiler cscope diff_buffer dir environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages syntax syntime option packadd runtime shellcmd sign tag tag_listfiles user var breakpoint scriptnames
+syn keyword vimUserAttrbCmplt contained arglist augroup behave breakpoint buffer color command compiler cscope diff_buffer dir dir_in_path environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages option packadd runtime scriptnames shellcmd sign syntax syntime tag tag_listfiles user var
syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
@@ -418,35 +434,26 @@ if get(g:, "vimsyn_comment_strings", 1)
endif
if s:vim9script
- syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
- syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
- syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
- " Vim9 comments - TODO: might be highlighted while they don't work
- syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
- syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
- syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
- " Vim9 comment inside expression
- " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
- " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
- " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
-
syn cluster vimComment contains=vim9Comment
else
- syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
- syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
- syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
- " Vim9 comments - TODO: might be highlighted while they don't work
- syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
- " Vim9 comment inside expression
- syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
- syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
-
syn cluster vimComment contains=vimComment
endif
+VimL syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+VimL syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
+VimL syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
+" Vim9 comments - TODO: might be highlighted while they don't work
+Vim9 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+Vim9 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
+Vim9 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
+" Vim9 comment inside expression
+Vim9 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
+Vim9 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
+Vim9 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
+
+syn match vim9CommentError contained "#.*"
+syn match vimCommentError contained +".*+
+
" Environment Variables: {{{2
" =====================
syn match vimEnvvar "\$\I\i*"
@@ -473,11 +480,12 @@ syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1
syn match vimEscape contained "\\<" contains=vimNotation
syn match vimEscape contained "\\<\*[^>]*>\=>"
-syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
-syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
+syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation
+syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation
syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
syn match vimStringInterpolationBrace contained "{{"
syn match vimStringInterpolationBrace contained "}}"
+syn cluster vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace
" Substitutions: {{{2
" =============
@@ -537,28 +545,45 @@ 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 region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,@vimComment,vimSetString,vimSetMod
-syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
-syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
+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 vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap
+syn keyword vimSetAll contained all nextgroup=vimSetMod
+syn keyword vimSetTermcap contained termcap
+syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
syn match vimSetSep contained "[,:]"
-syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
+syn match vimSetMod contained "\a\@1<=\%(&vim\=\|[!&?<]\)"
-" Let And Var: {{{2
-" ===========
-syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
-syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
-syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
+" Variable Declarations: {{{2
+" =====================
+VimL syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
+VimL syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimVarList
+syn region vimVarList contained start="\[" end="]" contains=vimVar,@vimContinue
-syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
+VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
-VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' extend
-syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
+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
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' contains=@vimStringInterpolation extend
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' contains=@vimStringInterpolation extend
+
+Vim9 syn keyword vim9Const const skipwhite nextgroup=vim9Variable,vim9VariableList
+Vim9 syn keyword vim9Final final skipwhite nextgroup=vim9Variable,vim9VariableList
+Vim9 syn keyword vim9Var var skipwhite nextgroup=vim9Variable,vim9VariableList
+
+syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vimTypeSep,vimLetHereDoc
+syn region vim9VariableList contained start="\[" end="]" contains=vim9Variable,@vimContinue
" For: {{{2
" ===
-syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
+if s:vim9script
+ syn keyword vim9For for skipwhite nextgroup=vim9Variable,vim9VariableList
+else
+ syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
+endif
" Abbreviations: {{{2
" =============
@@ -602,15 +627,17 @@ syn region vimExecute matchgroup=vimCommand start="\<exe\%[cute]\>" skip=+\\|\|\
" Maps: {{{2
" ====
-syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
-syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
-" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
-syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] tma[p] tno[remap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
+syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] om[ap] ono[remap] smap snor[emap] tma[p] tno[remap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapMod,vimMapLhs
+syn match vimMap "\<map\>" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword vimMap no[remap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
syn keyword vimMap cmapc[lear] imapc[lear] lmapc[lear] nmapc[lear] omapc[lear] smapc[lear] tmapc[lear] vmapc[lear] xmapc[lear] skipwhite nextgroup=vimMapMod
-syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
-" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
-syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+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 cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] vu[nmap] xu[nmap] 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 vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
@@ -677,6 +704,8 @@ syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\
syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vimMethodName
syn keyword vimFuncEcho contained ec ech echo
+syn match vimMap "\<map\%(\s\+(\)\@=" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+
" User Command Highlighting: {{{2
syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
@@ -694,6 +723,15 @@ endif
syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
+" Match: {{{2
+" =====
+syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
+syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
+syn case ignore
+syn keyword vimMatchNone contained none
+syn case match
+syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
+
" Norm: {{{2
" ====
syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
@@ -869,13 +907,9 @@ syn match vimCtrlChar "[- -]"
" Beginners - Patterns that involve ^ {{{2
" =========
-if s:vim9script
- syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
- syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
-else
- syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
- syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
-endif
+Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
+VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+
syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
@@ -919,12 +953,12 @@ endif
" Allows users to specify the type of embedded script highlighting
" they want: (perl/python/ruby/tcl support)
" g:vimsyn_embed == 0 : don't embed any scripts
-" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
-" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
-" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
-" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
-" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
-" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
+" g:vimsyn_embed =~# 'l' : embed Lua (but only if vim supports it)
+" g:vimsyn_embed =~# 'm' : embed MzScheme (but only if vim supports it)
+" g:vimsyn_embed =~# 'p' : embed Perl (but only if vim supports it)
+" g:vimsyn_embed =~# 'P' : embed Python (but only if vim supports it)
+" g:vimsyn_embed =~# 'r' : embed Ruby (but only if vim supports it)
+" g:vimsyn_embed =~# 't' : embed Tcl (but only if vim supports it)
if !exists("g:vimsyn_embed")
let g:vimsyn_embed= "lmpPr"
endif
@@ -943,12 +977,16 @@ if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimLuaRegion
exe "syn include @vimLuaScript ".s:luapath
- VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
- VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+^\z(\s*\)lua\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+^\z(\s*\)lua\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+^\.$+ contains=@vimLuaScript
syn cluster vimFuncBodyList add=vimLuaRegion
else
- syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)lua\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+lua\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)lua\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+lua\s*<<\s*$+ end=+^\.$+
endif
unlet s:luapath
@@ -966,12 +1004,16 @@ if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimPerlRegion
exe "syn include @vimPerlScript ".s:perlpath
- VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
- VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
syn cluster vimFuncBodyList add=vimPerlRegion
else
- syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+^\.$+
endif
unlet s:perlpath
@@ -989,12 +1031,16 @@ if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
syn cluster vimFuncBodyList add=vimRubyRegion
unlet! b:current_syntax
exe "syn include @vimRubyScript ".s:rubypath
- VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
- syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub\%[y]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimRubyScript
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub\%[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
syn cluster vimFuncBodyList add=vimRubyRegion
else
- syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+rub\%[y]\s*<<\s*\z(\S.*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+rub\%[y]\s*<<\s*$+ end=+^\.$+
endif
unlet s:rubypath
@@ -1012,14 +1058,18 @@ if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimPythonRegion
exe "syn include @vimPythonScript ".s:pythonpath
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\z(\S\+\)+ end=+^\z1$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*$+ end=+^\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S\+\)+ end=+^\z1$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=$+ end=+^\.$+ contains=@vimPythonScript
syn cluster vimFuncBodyList add=vimPythonRegion
else
- syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+py\%[thon][3x]\=\s*<<\s*\z(\S\+\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+py\%[thon][3x]\=\s*<<\s*$+ end=+^\.$+
endif
unlet s:pythonpath
@@ -1044,17 +1094,23 @@ if s:trytcl
unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimTclRegion
exe "syn include @vimTclScript ".s:tclpath
- VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
- VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+ contains=@vimTclScript
syn cluster vimFuncBodyList add=vimTclScript
else
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+
endif
unlet s:tclpath
else
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+
endif
unlet s:trytcl
@@ -1075,12 +1131,16 @@ if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
exe "syn include @vimMzSchemeScript ".s:mzschemepath
let &isk= s:iskKeep
unlet s:iskKeep
- VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
- VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+^\.$+ contains=@vimMzSchemeScript
syn cluster vimFuncBodyList add=vimMzSchemeRegion
else
- syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+ syn region vimEmbedError start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(\S*\)+ end=+^\z1$+
+ syn region vimEmbedError start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+^\.$+
endif
unlet s:mzschemepath
@@ -1118,7 +1178,6 @@ if !exists("skip_vim_syntax_inits")
hi def link vimBufnrWarn vimWarn
endif
- hi def link vim9Vim9ScriptArg Special
hi def link vimAbb vimCommand
hi def link vimAddress vimMark
hi def link vimAugroupBang vimBang
@@ -1132,20 +1191,20 @@ if !exists("skip_vim_syntax_inits")
hi def link vimBehaveModel vimBehave
hi def link vimBehave vimCommand
hi def link vimBracket Delimiter
+ hi def link vimCall vimCommand
hi def link vimCatch vimCommand
hi def link vimCmplxRepeat SpecialChar
hi def link vimCommand Statement
hi def link vimComment Comment
- hi def link vim9Comment Comment
+ hi def link vimCommentError vimError
hi def link vimCommentString vimString
hi def link vimCommentTitle PreProc
- hi def link vim9CommentTitle PreProc
hi def link vimCondHL vimCommand
hi def link vimConst vimCommand
hi def link vimContinue Special
hi def link vimContinueComment vimComment
hi def link vimCtrlChar SpecialChar
- hi def link vimDefComment vimComment
+ hi def link vimDefComment vim9Comment
hi def link vimDefKey vimCommand
hi def link vimDefParam vimVar
hi def link vimEcho vimCommand
@@ -1206,13 +1265,15 @@ if !exists("skip_vim_syntax_inits")
hi def link vimLetHereDocStop Special
hi def link vimLetRegister Special
hi def link vimLineComment vimComment
- hi def link vim9LineComment vimComment
hi def link vimMapBang vimBang
hi def link vimMapModKey vimFuncSID
hi def link vimMapMod vimBracket
hi def link vimMap vimCommand
hi def link vimMark Number
hi def link vimMarkNumber vimNumber
+ hi def link vimMatch vimCommand
+ hi def link vimMatchGroup vimGroup
+ hi def link vimMatchNone vimGroup
hi def link vimMenuBang vimBang
hi def link vimMenuClear Special
hi def link vimMenuMod vimMapMod
@@ -1246,10 +1307,13 @@ if !exists("skip_vim_syntax_inits")
hi def link vimSearchDelim Statement
hi def link vimSearch vimString
hi def link vimSep Delimiter
+ hi def link vimSet vimCommand
+ hi def link vimSetAll vimOption
+ hi def link vimSetBang vimBang
hi def link vimSetMod vimOption
- hi def link vimSetSep Statement
+ hi def link vimSetSep vimSep
hi def link vimSetString vimString
- hi def link vim9Vim9Script vimCommand
+ hi def link vimSetTermcap vimOption
hi def link vimShebang PreProc
hi def link vimSleep vimCommand
hi def link vimSleepArg Constant
@@ -1310,6 +1374,20 @@ if !exists("skip_vim_syntax_inits")
hi def link vimUserFunc Normal
hi def link vimVar Identifier
hi def link vimWarn WarningMsg
+
+ hi def link vim9Boolean Boolean
+ hi def link vim9Comment Comment
+ hi def link vim9CommentError vimError
+ hi def link vim9CommentTitle PreProc
+ hi def link vim9Const vimCommand
+ hi def link vim9Final vimCommand
+ hi def link vim9For vimCommand
+ hi def link vim9LineComment vimComment
+ hi def link vim9Null Constant
+ hi def link vim9Var vimCommand
+ hi def link vim9Variable vimVar
+ hi def link vim9Vim9Script vimCommand
+ hi def link vim9Vim9ScriptArg Special
endif
" Current Syntax Variable: {{{2
@@ -1317,6 +1395,8 @@ let b:current_syntax = "vim"
" ---------------------------------------------------------------------
" Cleanup: {{{1
+delc Vim9
+delc VimL
delc VimFolda
delc VimFoldf
delc VimFoldh
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
index 6ec806a..e992bc0 100644
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -129,7 +129,7 @@ syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' c
execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/'
execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/'
-execute 'syn match yamlFlowMappingKey /'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '.
+execute 'syn match yamlFlowMappingKey /'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:\%(\s\|$\)/ contained '.
\'nextgroup=yamlFlowMappingDelimiter skipwhite'
syn match yamlFlowMappingKeyStart /?/ contained nextgroup=@yamlFlowNode skipwhite
syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlFlowMappingDelimiter skipwhite
diff --git a/runtime/tutor/Makefile b/runtime/tutor/Makefile
index 3c0fe0a..d31729d 100644
--- a/runtime/tutor/Makefile
+++ b/runtime/tutor/Makefile
@@ -13,83 +13,83 @@ include Make_all.mak
all: $(CONVERTED)
tutor.utf-8: tutor
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
tutor.bar: tutor.bar.utf-8
- iconv -f UTF-8 -t ISO-8859-1 $< >$@
+ iconv -f UTF-8 -t ISO-8859-1 $? >$@
tutor.ca.utf-8: tutor.ca
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
tutor.eo: tutor.eo.utf-8
- iconv -f UTF-8 -t ISO-8859-3 $< >$@
+ iconv -f UTF-8 -t ISO-8859-3 $? >$@
tutor.de.utf-8: tutor.de
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
tutor.el: tutor.el.utf-8
- iconv -f UTF-8 -t ISO-8859-7 $< >$@
+ iconv -f UTF-8 -t ISO-8859-7 $? >$@
tutor.el.cp737: tutor.el.utf-8
- iconv -f UTF-8 -t CP737 $< >$@
+ iconv -f UTF-8 -t CP737 $? >$@
tutor.es: tutor.es.utf-8
- iconv -f UTF-8 -t ISO-8859-1 $< >$@
+ iconv -f UTF-8 -t ISO-8859-1 $? >$@
tutor.fr.utf-8: tutor.fr
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
tutor.hu: tutor.hu.utf-8
- iconv -f UTF-8 -t ISO-8859-2 $< >$@
+ iconv -f UTF-8 -t ISO-8859-2 $? >$@
tutor.hu.cp1250: tutor.hu.utf-8
- iconv -f UTF-8 -t CP1250 $< >$@
+ iconv -f UTF-8 -t CP1250 $? >$@
tutor.it.utf-8: tutor.it
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
tutor.hr: tutor.hr.utf-8
- iconv -f UTF-8 -t ISO-8859-2 $< >$@
+ iconv -f UTF-8 -t ISO-8859-2 $? >$@
tutor.hr.cp1250: tutor.hr.utf-8
- iconv -f UTF-8 -t CP1250 $< >$@
+ iconv -f UTF-8 -t CP1250 $? >$@
tutor.ja.sjis: tutor.ja.utf-8
- iconv -f UTF-8 -t CP932 $< >$@
+ iconv -f UTF-8 -t CP932 $? >$@
tutor.ja.euc: tutor.ja.utf-8
- iconv -f UTF-8 -t EUC-JP $< >$@
+ iconv -f UTF-8 -t EUC-JP $? >$@
tutor.ko.euc: tutor.ko.utf-8
- iconv -f UTF-8 -t EUC-KR $< >$@
+ iconv -f UTF-8 -t EUC-KR $? >$@
tutor.nl: tutor.nl.utf-8
- iconv -f UTF-8 -t ISO-8859-1 $< >$@
+ iconv -f UTF-8 -t ISO-8859-1 $? >$@
tutor.no.utf-8: tutor.no
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
# nb is an alias for no
tutor.nb: tutor.no
- cp $< $@
+ cp $? $@
tutor.nb.utf-8: tutor.no.utf-8
- cp $< $@
+ cp $? $@
tutor.ru: tutor.ru.utf-8
- iconv -f UTF-8 -t KOI8-R $< >$@
+ iconv -f UTF-8 -t KOI8-R $? >$@
tutor.ru.cp1251: tutor.ru.utf-8
- iconv -f UTF-8 -t CP1251 $< >$@
+ iconv -f UTF-8 -t CP1251 $? >$@
tutor.tr.iso9: tutor.tr.utf-8
- iconv -f UTF-8 -t ISO-8859-9 $< >$@
+ iconv -f UTF-8 -t ISO-8859-9 $? >$@
tutor.sv.utf-8: tutor.sv
- iconv -f ISO-8859-1 -t UTF-8 $< >$@
+ iconv -f ISO-8859-1 -t UTF-8 $? >$@
tutor.zh.utf-8: tutor.zh.big5
- iconv -f BIG-5 -t UTF-8 $< >$@
+ iconv -f BIG-5 -t UTF-8 $? >$@
clean:
for G in $(CONVERTED); do if [ -f $$G ]; then rm -f $$G; fi; done
diff --git a/runtime/tutor/tutor.es b/runtime/tutor/tutor.es
index ed9397c..601a14f 100644
--- a/runtime/tutor/tutor.es
+++ b/runtime/tutor/tutor.es
@@ -236,7 +236,7 @@ Ahora continúe con la Lección 2.
Muchos comandos que cambian texto están compuestos por un operador y un
movimiento.
- El formato para eliminar un comando con el operador de borrado d es el
+ El formato para comando eliminar con el operador de borrado d es el
siguiente:
d movimiento
diff --git a/runtime/tutor/tutor.es.utf-8 b/runtime/tutor/tutor.es.utf-8
index d6187ff..242df17 100644
--- a/runtime/tutor/tutor.es.utf-8
+++ b/runtime/tutor/tutor.es.utf-8
@@ -236,7 +236,7 @@ Ahora continúe con la Lección 2.
Muchos comandos que cambian texto están compuestos por un operador y un
movimiento.
- El formato para eliminar un comando con el operador de borrado d es el
+ El formato para comando eliminar con el operador de borrado d es el
siguiente:
d movimiento