aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2021-05-04 19:18:16 -0400
committerGitHub <noreply@github.com>2021-05-04 19:18:16 -0400
commit4ad30f775e5564c539324b4818886f067d2ecd99 (patch)
tree97a554379bda7e5fc77e58c690db3f5a72db8c74
parent63d8a8f4e8b02e524d85aed08aa16c5d9815598c (diff)
parentd5b063aec1db95704b37a77fdbd968cb6b48cc3b (diff)
downloadrneovim-4ad30f775e5564c539324b4818886f067d2ecd99.tar.gz
rneovim-4ad30f775e5564c539324b4818886f067d2ecd99.tar.bz2
rneovim-4ad30f775e5564c539324b4818886f067d2ecd99.zip
Merge pull request #14424 from janlazo/vim-8.1.1726
vim-patch:8.1.1726,8.2.{296,860,1827,2388,2788,2790,2801}
-rw-r--r--.gitignore1
-rw-r--r--runtime/autoload/ccomplete.vim38
-rw-r--r--runtime/autoload/clojurecomplete.vim17
-rw-r--r--runtime/autoload/decada.vim2
-rw-r--r--runtime/autoload/dist/ft.vim6
-rw-r--r--runtime/autoload/htmlcomplete.vim5
-rw-r--r--runtime/autoload/man.vim4
-rw-r--r--runtime/autoload/netrw.vim126
-rw-r--r--runtime/autoload/netrwFileHandlers.vim6
-rw-r--r--runtime/autoload/python3complete.vim7
-rw-r--r--runtime/autoload/pythoncomplete.vim7
-rw-r--r--runtime/autoload/rubycomplete.vim59
-rw-r--r--runtime/autoload/syntaxcomplete.vim153
-rw-r--r--runtime/autoload/tohtml.vim112
-rw-r--r--runtime/autoload/zip.vim29
-rw-r--r--runtime/colors/README.txt2
-rw-r--r--runtime/compiler/checkstyle.vim20
-rw-r--r--runtime/compiler/cm3.vim26
-rw-r--r--runtime/compiler/dart.vim26
-rw-r--r--runtime/compiler/dart2js.vim28
-rw-r--r--runtime/compiler/dart2native.vim28
-rw-r--r--runtime/compiler/dartanalyser.vim23
-rw-r--r--runtime/compiler/dartdevc.vim28
-rw-r--r--runtime/compiler/dartdoc.vim26
-rw-r--r--runtime/compiler/dartfmt.vim25
-rw-r--r--runtime/compiler/eslint.vim16
-rw-r--r--runtime/compiler/fbc.vim27
-rw-r--r--runtime/compiler/gawk.vim34
-rw-r--r--runtime/compiler/gjs.vim25
-rw-r--r--runtime/compiler/javac.vim15
-rw-r--r--runtime/compiler/jest.vim30
-rw-r--r--runtime/compiler/jjs.vim24
-rw-r--r--runtime/compiler/jshint.vim25
-rw-r--r--runtime/compiler/jsonlint.vim25
-rw-r--r--runtime/compiler/ocaml.vim6
-rw-r--r--runtime/compiler/powershell.vim84
-rw-r--r--runtime/compiler/rhino.vim30
-rw-r--r--runtime/compiler/rubocop.vim23
-rw-r--r--runtime/compiler/shellcheck.vim25
-rw-r--r--runtime/compiler/sml.vim28
-rw-r--r--runtime/compiler/standard.vim16
-rw-r--r--runtime/compiler/stylelint.vim26
-rw-r--r--runtime/compiler/tidy.vim17
-rw-r--r--runtime/compiler/typedoc.vim28
-rw-r--r--runtime/doc/arabic.txt4
-rw-r--r--runtime/doc/autocmd.txt25
-rw-r--r--runtime/doc/change.txt63
-rw-r--r--runtime/doc/cmdline.txt38
-rw-r--r--runtime/doc/diff.txt3
-rw-r--r--runtime/doc/digraph.txt2
-rw-r--r--runtime/doc/editing.txt115
-rw-r--r--runtime/doc/eval.txt1063
-rw-r--r--runtime/doc/filetype.txt19
-rw-r--r--runtime/doc/ft_ps1.txt64
-rw-r--r--runtime/doc/ft_raku.txt126
-rw-r--r--runtime/doc/ft_sql.txt12
-rw-r--r--runtime/doc/gui.txt52
-rw-r--r--runtime/doc/help.txt7
-rw-r--r--runtime/doc/helphelp.txt45
-rw-r--r--runtime/doc/if_perl.txt13
-rw-r--r--runtime/doc/if_pyth.txt151
-rw-r--r--runtime/doc/if_ruby.txt10
-rw-r--r--runtime/doc/indent.txt58
-rw-r--r--runtime/doc/index.txt46
-rw-r--r--runtime/doc/insert.txt31
-rw-r--r--runtime/doc/intro.txt8
-rw-r--r--runtime/doc/makehtml.awk2
-rw-r--r--runtime/doc/map.txt144
-rw-r--r--runtime/doc/mbyte.txt22
-rw-r--r--runtime/doc/message.txt14
-rw-r--r--runtime/doc/mlang.txt2
-rw-r--r--runtime/doc/motion.txt75
-rw-r--r--runtime/doc/options.txt229
-rw-r--r--runtime/doc/pattern.txt104
-rw-r--r--runtime/doc/pi_netrw.txt78
-rw-r--r--runtime/doc/pi_zip.txt13
-rw-r--r--runtime/doc/print.txt23
-rw-r--r--runtime/doc/quickfix.txt52
-rw-r--r--runtime/doc/quickref.txt10
-rw-r--r--runtime/doc/recover.txt11
-rw-r--r--runtime/doc/repeat.txt38
-rw-r--r--runtime/doc/rileft.txt2
-rw-r--r--runtime/doc/sign.txt387
-rw-r--r--runtime/doc/spell.txt4
-rw-r--r--runtime/doc/starting.txt26
-rw-r--r--runtime/doc/syntax.txt283
-rw-r--r--runtime/doc/tabpage.txt2
-rw-r--r--runtime/doc/tagsrch.txt36
-rw-r--r--runtime/doc/term.txt9
-rw-r--r--runtime/doc/testing.txt169
-rw-r--r--runtime/doc/tips.txt24
-rw-r--r--runtime/doc/uganda.txt2
-rw-r--r--runtime/doc/undo.txt12
-rw-r--r--runtime/doc/usr_01.txt6
-rw-r--r--runtime/doc/usr_02.txt110
-rw-r--r--runtime/doc/usr_03.txt82
-rw-r--r--runtime/doc/usr_04.txt75
-rw-r--r--runtime/doc/usr_05.txt4
-rw-r--r--runtime/doc/usr_07.txt4
-rw-r--r--runtime/doc/usr_08.txt2
-rw-r--r--runtime/doc/usr_10.txt11
-rw-r--r--runtime/doc/usr_11.txt9
-rw-r--r--runtime/doc/usr_12.txt4
-rw-r--r--runtime/doc/usr_20.txt8
-rw-r--r--runtime/doc/usr_22.txt8
-rw-r--r--runtime/doc/usr_23.txt16
-rw-r--r--runtime/doc/usr_24.txt6
-rw-r--r--runtime/doc/usr_27.txt4
-rw-r--r--runtime/doc/usr_30.txt2
-rw-r--r--runtime/doc/usr_31.txt4
-rw-r--r--runtime/doc/usr_40.txt6
-rw-r--r--runtime/doc/usr_41.txt135
-rw-r--r--runtime/doc/usr_42.txt4
-rw-r--r--runtime/doc/usr_44.txt11
-rw-r--r--runtime/doc/usr_45.txt2
-rw-r--r--runtime/doc/usr_toc.txt4
-rw-r--r--runtime/doc/various.txt32
-rw-r--r--runtime/doc/vi_diff.txt7
-rw-r--r--runtime/doc/vim_diff.txt10
-rw-r--r--runtime/doc/visual.txt9
-rw-r--r--runtime/doc/windows.txt55
-rw-r--r--runtime/filetype.vim45
-rw-r--r--runtime/ftplugin/ada.vim69
-rw-r--r--runtime/ftplugin/asm.vim11
-rw-r--r--runtime/ftplugin/awk.vim46
-rw-r--r--runtime/ftplugin/bash.vim19
-rw-r--r--runtime/ftplugin/basic.vim27
-rw-r--r--runtime/ftplugin/bzl.vim4
-rw-r--r--runtime/ftplugin/c.vim8
-rw-r--r--runtime/ftplugin/clojure.vim31
-rw-r--r--runtime/ftplugin/cobol.vim5
-rw-r--r--runtime/ftplugin/cpp.vim9
-rw-r--r--runtime/ftplugin/css.vim10
-rw-r--r--runtime/ftplugin/diff.vim5
-rw-r--r--runtime/ftplugin/dosbatch.vim13
-rw-r--r--runtime/ftplugin/dune.vim2
-rw-r--r--runtime/ftplugin/erlang.vim116
-rw-r--r--runtime/ftplugin/falcon.vim3
-rw-r--r--runtime/ftplugin/fortran.vim26
-rw-r--r--runtime/ftplugin/fpcmake.vim25
-rw-r--r--runtime/ftplugin/framescript.vim6
-rw-r--r--runtime/ftplugin/freebasic.vim13
-rw-r--r--runtime/ftplugin/fstab.vim19
-rw-r--r--runtime/ftplugin/git.vim4
-rw-r--r--runtime/ftplugin/gprof.vim4
-rw-r--r--runtime/ftplugin/haml.vim6
-rw-r--r--runtime/ftplugin/hamster.vim7
-rw-r--r--runtime/ftplugin/j.vim8
-rw-r--r--runtime/ftplugin/jproperties.vim4
-rw-r--r--runtime/ftplugin/lisp.vim6
-rw-r--r--runtime/ftplugin/m3build.vim24
-rw-r--r--runtime/ftplugin/m3quake.vim33
-rw-r--r--runtime/ftplugin/make.vim6
-rw-r--r--runtime/ftplugin/masm.vim19
-rw-r--r--runtime/ftplugin/matlab.vim5
-rw-r--r--runtime/ftplugin/meson.vim19
-rw-r--r--runtime/ftplugin/modula2.vim39
-rw-r--r--runtime/ftplugin/modula3.vim38
-rw-r--r--runtime/ftplugin/nroff.vim10
-rw-r--r--runtime/ftplugin/ocaml.vim15
-rw-r--r--runtime/ftplugin/pascal.vim52
-rw-r--r--runtime/ftplugin/pbtxt.vim21
-rw-r--r--runtime/ftplugin/perl.vim6
-rw-r--r--runtime/ftplugin/perl6.vim77
-rw-r--r--runtime/ftplugin/poke.vim32
-rw-r--r--runtime/ftplugin/ps1.vim59
-rw-r--r--runtime/ftplugin/ps1xml.vim34
-rw-r--r--runtime/ftplugin/python.vim42
-rw-r--r--runtime/ftplugin/r.vim4
-rw-r--r--runtime/ftplugin/raku.vim127
-rw-r--r--runtime/ftplugin/rhelp.vim4
-rw-r--r--runtime/ftplugin/rmd.vim4
-rw-r--r--runtime/ftplugin/rnoweb.vim4
-rw-r--r--runtime/ftplugin/rpl.vim2
-rw-r--r--runtime/ftplugin/rrst.vim4
-rw-r--r--runtime/ftplugin/rst.vim4
-rw-r--r--runtime/ftplugin/ruby.vim49
-rw-r--r--runtime/ftplugin/sass.vim20
-rw-r--r--runtime/ftplugin/scheme.vim4
-rw-r--r--runtime/ftplugin/sexplib.vim15
-rw-r--r--runtime/ftplugin/spec.vim42
-rw-r--r--runtime/ftplugin/swift.vim23
-rw-r--r--runtime/ftplugin/swiftgyb.vim11
-rw-r--r--runtime/ftplugin/systemd.vim36
-rw-r--r--runtime/ftplugin/tidy.vim32
-rw-r--r--runtime/ftplugin/vim.vim51
-rw-r--r--runtime/ftplugin/yaml.vim9
-rw-r--r--runtime/indent/Makefile2
-rw-r--r--runtime/indent/bash.vim18
-rw-r--r--runtime/indent/cdl.vim12
-rw-r--r--runtime/indent/clojure.vim74
-rw-r--r--runtime/indent/dune.vim13
-rw-r--r--runtime/indent/erlang.vim147
-rw-r--r--runtime/indent/fortran.vim21
-rw-r--r--runtime/indent/haml.vim4
-rw-r--r--runtime/indent/html.vim17
-rw-r--r--runtime/indent/j.vim4
-rw-r--r--runtime/indent/json.vim22
-rw-r--r--runtime/indent/make.vim4
-rw-r--r--runtime/indent/matlab.vim6
-rw-r--r--runtime/indent/meson.vim180
-rw-r--r--runtime/indent/ocaml.vim5
-rw-r--r--runtime/indent/perl.vim6
-rw-r--r--runtime/indent/php.vim2
-rw-r--r--runtime/indent/ps1.vim17
-rw-r--r--runtime/indent/python.vim24
-rw-r--r--runtime/indent/raku.vim (renamed from runtime/indent/perl6.vim)27
-rw-r--r--runtime/indent/rmd.vim32
-rw-r--r--runtime/indent/rpl.vim2
-rw-r--r--runtime/indent/rst.vim21
-rw-r--r--runtime/indent/ruby.vim52
-rw-r--r--runtime/indent/sh.vim6
-rw-r--r--runtime/indent/sqlanywhere.vim80
-rw-r--r--runtime/indent/sshconfig.vim34
-rw-r--r--runtime/indent/systemverilog.vim10
-rw-r--r--runtime/indent/testdir/html.in40
-rw-r--r--runtime/indent/testdir/html.ok80
-rw-r--r--runtime/indent/testdir/matlab.in9
-rw-r--r--runtime/indent/testdir/matlab.ok9
-rw-r--r--runtime/indent/testdir/runtest.vim1
-rw-r--r--runtime/indent/testdir/sshconfig.in53
-rw-r--r--runtime/indent/testdir/sshconfig.ok53
-rw-r--r--runtime/indent/testdir/vim.in54
-rw-r--r--runtime/indent/testdir/vim.ok54
-rw-r--r--runtime/indent/testdir/yaml.in19
-rw-r--r--runtime/indent/testdir/yaml.ok19
-rw-r--r--runtime/indent/tilde.vim2
-rw-r--r--runtime/indent/vim.vim90
-rw-r--r--runtime/indent/xml.vim36
-rw-r--r--runtime/indent/yaml.vim19
-rw-r--r--runtime/keymap/french-azerty.vim81
-rw-r--r--runtime/keymap/german-qwertz.vim76
-rw-r--r--runtime/keymap/korean-dubeolsik_utf-8.vim11237
-rw-r--r--runtime/keymap/korean.vim23
-rw-r--r--runtime/keymap/oldturkic-yenisei_utf-8.vim48
-rw-r--r--runtime/keymap/russian-typograph.vim190
-rw-r--r--runtime/keymap/turkish-f.vim113
-rw-r--r--runtime/keymap/turkish-q.vim62
-rw-r--r--runtime/macros/less.vim18
-rw-r--r--runtime/makemenu.vim1
-rw-r--r--runtime/menu.vim21
-rw-r--r--runtime/nvim.desktop16
-rw-r--r--runtime/optwin.vim85
-rw-r--r--runtime/pack/dist/opt/matchit/autoload/matchit.vim12
-rw-r--r--runtime/pack/dist/opt/matchit/doc/matchit.txt8
-rw-r--r--runtime/pack/dist/opt/matchit/plugin/matchit.vim16
-rw-r--r--runtime/pack/dist/opt/termdebug/plugin/termdebug.vim104
-rw-r--r--runtime/plugin/gzip.vim10
-rw-r--r--runtime/plugin/matchparen.vim31
-rw-r--r--runtime/plugin/netrwPlugin.vim2
-rw-r--r--runtime/plugin/tohtml.vim47
-rw-r--r--runtime/plugin/zipPlugin.vim8
-rw-r--r--runtime/scripts.vim12
-rw-r--r--runtime/synmenu.vim1
-rw-r--r--runtime/syntax/2html.vim553
-rw-r--r--runtime/syntax/abap.vim4
-rw-r--r--runtime/syntax/aidl.vim23
-rw-r--r--runtime/syntax/amiga.vim4
-rw-r--r--runtime/syntax/apache.vim4
-rw-r--r--runtime/syntax/asciidoc.vim22
-rw-r--r--runtime/syntax/asm.vim100
-rw-r--r--runtime/syntax/asmh8300.vim48
-rw-r--r--runtime/syntax/asterisk.vim4
-rw-r--r--runtime/syntax/awk.vim24
-rw-r--r--runtime/syntax/bash.vim20
-rw-r--r--runtime/syntax/basic.vim62
-rw-r--r--runtime/syntax/bindzone.vim4
-rw-r--r--runtime/syntax/bsdl.vim17
-rw-r--r--runtime/syntax/c.vim30
-rw-r--r--runtime/syntax/clojure.vim44
-rw-r--r--runtime/syntax/conf.vim6
-rw-r--r--runtime/syntax/cpp.vim23
-rw-r--r--runtime/syntax/cs.vim41
-rw-r--r--runtime/syntax/csh.vim4
-rw-r--r--runtime/syntax/css.vim13
-rw-r--r--runtime/syntax/cvs.vim3
-rw-r--r--runtime/syntax/dart.vim90
-rw-r--r--runtime/syntax/dcl.vim4
-rw-r--r--runtime/syntax/debchangelog.vim31
-rw-r--r--runtime/syntax/debcontrol.vim16
-rw-r--r--runtime/syntax/debcopyright.vim4
-rw-r--r--runtime/syntax/debsources.vim13
-rw-r--r--runtime/syntax/desktop.vim306
-rw-r--r--runtime/syntax/diff.vim15
-rw-r--r--runtime/syntax/dot.vim126
-rw-r--r--runtime/syntax/doxygen.vim34
-rw-r--r--runtime/syntax/dtd.vim13
-rw-r--r--runtime/syntax/dune.vim5
-rw-r--r--runtime/syntax/elf.vim2
-rw-r--r--runtime/syntax/elmfilt.vim4
-rw-r--r--runtime/syntax/erlang.vim15
-rw-r--r--runtime/syntax/exports.vim4
-rw-r--r--runtime/syntax/forth.vim2
-rw-r--r--runtime/syntax/fortran.vim63
-rw-r--r--runtime/syntax/fpcmake.vim58
-rw-r--r--runtime/syntax/freebasic.vim33
-rw-r--r--runtime/syntax/fstab.vim8
-rw-r--r--runtime/syntax/gift.vim216
-rw-r--r--runtime/syntax/git.vim8
-rw-r--r--runtime/syntax/gnuplot.vim4
-rw-r--r--runtime/syntax/gprof.vim6
-rw-r--r--runtime/syntax/groff.vim4
-rw-r--r--runtime/syntax/groovy.vim11
-rw-r--r--runtime/syntax/haml.vim4
-rw-r--r--runtime/syntax/help.vim5
-rw-r--r--runtime/syntax/help_ru.vim65
-rw-r--r--runtime/syntax/hog.vim25
-rw-r--r--runtime/syntax/hollywood.vim13
-rw-r--r--runtime/syntax/html.vim79
-rw-r--r--runtime/syntax/ia64.vim39
-rw-r--r--runtime/syntax/initng.vim2
-rw-r--r--runtime/syntax/inittab.vim11
-rw-r--r--runtime/syntax/iss.vim10
-rw-r--r--runtime/syntax/j.vim10
-rw-r--r--runtime/syntax/jargon.vim21
-rw-r--r--runtime/syntax/javascript.vim3
-rw-r--r--runtime/syntax/json.vim6
-rw-r--r--runtime/syntax/ld.vim2
-rw-r--r--runtime/syntax/less.vim3
-rw-r--r--runtime/syntax/lex.vim203
-rw-r--r--runtime/syntax/lhaskell.vim23
-rw-r--r--runtime/syntax/lisp.vim4
-rw-r--r--runtime/syntax/lout.vim2
-rw-r--r--runtime/syntax/m3build.vim177
-rw-r--r--runtime/syntax/m3quake.vim74
-rw-r--r--runtime/syntax/make.vim73
-rw-r--r--runtime/syntax/man.vim4
-rw-r--r--runtime/syntax/maple.vim4
-rw-r--r--runtime/syntax/masm.vim7
-rw-r--r--runtime/syntax/meson.vim165
-rw-r--r--runtime/syntax/messages.vim3
-rw-r--r--runtime/syntax/mmix.vim2
-rw-r--r--runtime/syntax/modula3.vim113
-rw-r--r--runtime/syntax/moo.vim4
-rw-r--r--runtime/syntax/named.vim4
-rw-r--r--runtime/syntax/nasm.vim5
-rw-r--r--runtime/syntax/neomuttrc.vim1208
-rw-r--r--runtime/syntax/netrw.vim2
-rw-r--r--runtime/syntax/nroff.vim38
-rw-r--r--runtime/syntax/objc.vim5
-rw-r--r--runtime/syntax/ocaml.vim61
-rw-r--r--runtime/syntax/opam.vim38
-rw-r--r--runtime/syntax/pamconf.vim37
-rw-r--r--runtime/syntax/pamenv.vim28
-rw-r--r--runtime/syntax/pascal.vim104
-rw-r--r--runtime/syntax/pbtxt.vim44
-rw-r--r--runtime/syntax/perl.vim6
-rw-r--r--runtime/syntax/perl6.vim2242
-rw-r--r--runtime/syntax/php.vim53
-rw-r--r--runtime/syntax/poke.vim151
-rw-r--r--runtime/syntax/prolog.vim10
-rw-r--r--runtime/syntax/proto.vim60
-rw-r--r--runtime/syntax/ps1.vim182
-rw-r--r--runtime/syntax/ps1xml.vim51
-rw-r--r--runtime/syntax/psl.vim83
-rw-r--r--runtime/syntax/python.vim112
-rw-r--r--runtime/syntax/r.vim38
-rw-r--r--runtime/syntax/raku.vim1971
-rw-r--r--runtime/syntax/ratpoison.vim22
-rw-r--r--runtime/syntax/rego.vim89
-rw-r--r--runtime/syntax/reva.vim4
-rw-r--r--runtime/syntax/rmd.vim44
-rw-r--r--runtime/syntax/rnoweb.vim4
-rw-r--r--runtime/syntax/robots.vim2
-rw-r--r--runtime/syntax/rpcgen.vim4
-rw-r--r--runtime/syntax/rpl.vim2
-rw-r--r--runtime/syntax/rst.vim24
-rw-r--r--runtime/syntax/rtf.vim2
-rw-r--r--runtime/syntax/ruby.vim745
-rw-r--r--runtime/syntax/sass.vim11
-rw-r--r--runtime/syntax/scss.vim11
-rw-r--r--runtime/syntax/sexplib.vim88
-rw-r--r--runtime/syntax/sh.vim139
-rw-r--r--runtime/syntax/sil.vim179
-rw-r--r--runtime/syntax/sm.vim4
-rw-r--r--runtime/syntax/sml.vim91
-rw-r--r--runtime/syntax/spec.vim9
-rw-r--r--runtime/syntax/sshconfig.vim69
-rw-r--r--runtime/syntax/sshdconfig.vim28
-rw-r--r--runtime/syntax/sudoers.vim7
-rw-r--r--runtime/syntax/swift.vim286
-rw-r--r--runtime/syntax/swiftgyb.vim24
-rw-r--r--runtime/syntax/syncolor.vim8
-rw-r--r--runtime/syntax/synload.vim8
-rw-r--r--runtime/syntax/tags.vim4
-rw-r--r--runtime/syntax/tidy.vim195
-rw-r--r--runtime/syntax/tilde.vim2
-rw-r--r--runtime/syntax/tmux.vim50
-rw-r--r--runtime/syntax/typescriptcommon.vim225
-rw-r--r--runtime/syntax/vhdl.vim34
-rw-r--r--runtime/syntax/vim.vim142
-rw-r--r--runtime/syntax/xkb.vim4
-rw-r--r--runtime/syntax/xmath.vim4
-rw-r--r--runtime/syntax/xslt.vim15
-rw-r--r--runtime/syntax/xxd.vim4
-rw-r--r--runtime/syntax/yacc.vim4
-rw-r--r--runtime/syntax/yaml.vim2
-rw-r--r--runtime/tools/check_colors.vim2
-rw-r--r--src/nvim/eval.c8
-rw-r--r--src/nvim/eval.h3
-rw-r--r--src/nvim/ops.c65
-rw-r--r--src/nvim/option.c3
-rw-r--r--src/nvim/po/CMakeLists.txt1
-rw-r--r--src/nvim/po/af.po2
-rw-r--r--src/nvim/po/da.po37
-rw-r--r--src/nvim/po/eo.po536
-rw-r--r--src/nvim/po/fi.po2
-rw-r--r--src/nvim/po/fr.po2550
-rw-r--r--src/nvim/po/ga.po37
-rw-r--r--src/nvim/po/ja.euc-jp.po841
-rw-r--r--src/nvim/po/ja.po841
-rw-r--r--src/nvim/po/sr.po1633
-rw-r--r--src/nvim/po/tr.po9370
-rw-r--r--src/nvim/testdir/test_eval_stuff.vim9
-rw-r--r--src/nvim/testdir/test_filetype.vim198
-rw-r--r--src/nvim/testdir/test_increment.vim46
-rw-r--r--test/functional/plugin/health_spec.lua2
417 files changed, 38251 insertions, 11156 deletions
diff --git a/.gitignore b/.gitignore
index c1726ede14..163140c6e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,7 @@ compile_commands.json
# Generated by scripts/vim-patch.sh
/.vim-src
+*.rej
# Generated by old (Vim) tests.
/src/nvim/testdir/del
diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim
index 156b3af025..95a20e16b0 100644
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,13 +1,13 @@
" Vim completion script
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2018 Aug 20
+" Last Change: 2020 Nov 14
let s:cpo_save = &cpo
set cpo&vim
" This function is used for the 'omnifunc' option.
-function! ccomplete#Complete(findstart, base)
+func ccomplete#Complete(findstart, base)
if a:findstart
" Locate the start of the item, including ".", "->" and "[...]".
let line = getline('.')
@@ -244,7 +244,7 @@ function! ccomplete#Complete(findstart, base)
return map(res, 's:Tagline2item(v:val, brackets)')
endfunc
-function! s:GetAddition(line, match, memarg, bracket)
+func s:GetAddition(line, match, memarg, bracket)
" Guess if the item is an array.
if a:bracket && match(a:line, a:match . '\s*\[') > 0
return '['
@@ -260,13 +260,13 @@ function! s:GetAddition(line, match, memarg, bracket)
endif
endif
return ''
-endfunction
+endfunc
" Turn the tag info "val" into an item for completion.
" "val" is is an item in the list returned by taglist().
" If it is a variable we may add "." or "->". Don't do it for other types,
" such as a typedef, by not including the info that s:GetAddition() uses.
-function! s:Tag2item(val)
+func s:Tag2item(val)
let res = {'match': a:val['name']}
let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
@@ -289,10 +289,10 @@ function! s:Tag2item(val)
endif
return res
-endfunction
+endfunc
" Use all the items in dictionary for the "info" entry.
-function! s:Dict2info(dict)
+func s:Dict2info(dict)
let info = ''
for k in sort(keys(a:dict))
let info .= k . repeat(' ', 10 - len(k))
@@ -307,7 +307,7 @@ function! s:Dict2info(dict)
endfunc
" Parse a tag line and return a dictionary with items like taglist()
-function! s:ParseTagline(line)
+func s:ParseTagline(line)
let l = split(a:line, "\t")
let d = {}
if len(l) >= 3
@@ -334,12 +334,12 @@ function! s:ParseTagline(line)
endif
return d
-endfunction
+endfunc
" Turn a match item "val" into an item for completion.
" "val['match']" is the matching item.
" "val['tagline']" is the tagline in which the last part was found.
-function! s:Tagline2item(val, brackets)
+func s:Tagline2item(val, brackets)
let line = a:val['tagline']
let add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
let res = {'word': a:val['match'] . a:brackets . add }
@@ -377,10 +377,10 @@ function! s:Tagline2item(val, brackets)
let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))
endif
return res
-endfunction
+endfunc
" Turn a command from a tag line to something that is useful in the menu
-function! s:Tagcmd2extra(cmd, name, fname)
+func s:Tagcmd2extra(cmd, name, fname)
if a:cmd =~ '^/^'
" The command is a search command, useful to see what it is.
let x = matchstr(a:cmd, '^/^\s*\zs.*\ze$/')
@@ -395,13 +395,13 @@ function! s:Tagcmd2extra(cmd, name, fname)
let x = a:cmd . ' - ' . a:fname
endif
return x
-endfunction
+endfunc
" Find composing type in "lead" and match items[0] with it.
" Repeat this recursively for items[1], if it's there.
" When resolving typedefs "depth" is used to avoid infinite recursion.
" Return the list of matches.
-function! s:Nextitem(lead, items, depth, all)
+func s:Nextitem(lead, items, depth, all)
" Use the text up to the variable name and split it in tokens.
let tokens = split(a:lead, '\s\+\|\<')
@@ -485,7 +485,7 @@ function! s:Nextitem(lead, items, depth, all)
endfor
return res
-endfunction
+endfunc
" Search for members of structure "typename" in tags files.
@@ -493,7 +493,7 @@ endfunction
" Each match is a dictionary with "match" and "tagline" entries.
" When "all" is non-zero find all, otherwise just return 1 if there is any
" member.
-function! s:StructMembers(typename, items, all)
+func s:StructMembers(typename, items, all)
" Todo: What about local structures?
let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
if fnames == ''
@@ -586,12 +586,12 @@ function! s:StructMembers(typename, items, all)
" Failed to find anything.
return []
-endfunction
+endfunc
" For matching members, find matches for following items.
" When "all" is non-zero find all, otherwise just return 1 if there is any
" member.
-function! s:SearchMembers(matches, items, all)
+func s:SearchMembers(matches, items, all)
let res = []
for i in range(len(a:matches))
let typename = ''
@@ -635,3 +635,5 @@ endfunc
let &cpo = s:cpo_save
unlet s:cpo_save
+
+" vim: noet sw=2 sts=2
diff --git a/runtime/autoload/clojurecomplete.vim b/runtime/autoload/clojurecomplete.vim
index 030785e901..2c0f0eacd4 100644
--- a/runtime/autoload/clojurecomplete.vim
+++ b/runtime/autoload/clojurecomplete.vim
@@ -1,14 +1,15 @@
" Vim completion script
-" Language: Clojure
-" Maintainer: Sung Pae <self@sungpae.com>
-" URL: https://github.com/guns/vim-clojure-static
-" License: Same as Vim
-" Last Change: 18 July 2016
+" Language: Clojure
+" Maintainer: Alex Vear <av@axvr.io>
+" Former Maintainers: Sung Pae <self@sungpae.com>
+" URL: https://github.com/clojure-vim/clojure.vim
+" License: Vim (see :h license)
+" Last Change: 2021-02-13
" -*- COMPLETION WORDS -*-
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj
-" Clojure version 1.8.0
-let s:words = ["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-readably*","*read-eval*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods",".","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc!","assoc","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","booleans","bound-fn","bound-fn*","bound?","butlast","byte","byte-array","bytes","case","cast","cat","catch","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj!","conj","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","def","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj!","disj","dissoc!","dissoc","distinct","distinct?","do","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","finally","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","identical?","identity","if","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","init-proxy","instance?","int","int-array","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","monitor-enter","monitor-exit","munge","name","namespace","namespace-munge","neg?","new","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop!","pop","pop-thread-bindings","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","quot","quote","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","recur","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seque","sequence","sequential?","set!","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","throw","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","try","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","use","val","vals","var","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"]
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/f8594e7030cdfb0b7990ac92953c77a08a7220f0/clj/src/vim_clojure_static/generate.clj
+" Clojure version 1.10.2
+let s:words = ["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods",".","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","PrintWriter-on","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-tap","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc!","assoc","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","case-fallthrough-err-impl","cast","cat","catch","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj!","conj","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","def","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj!","disj","dissoc!","dissoc","distinct","distinct?","do","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-cause","ex-data","ex-info","ex-message","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","finally","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","monitor-enter","monitor-exit","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","new","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop!","pop","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","quote","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read+string","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","recur","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-tap","remove-watch","repeat","repeatedly","replace","replicate","require","requiring-resolve","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set!","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","tap>","test","the-ns","thread-bound?","throw","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","try","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"]
" Simple word completion for special forms and public vars in clojure.core
function! clojurecomplete#Complete(findstart, base)
diff --git a/runtime/autoload/decada.vim b/runtime/autoload/decada.vim
index 7741ff0572..5124429a75 100644
--- a/runtime/autoload/decada.vim
+++ b/runtime/autoload/decada.vim
@@ -25,7 +25,7 @@ function decada#Unit_Name () dict " {{{1
" Convert filename into acs unit:
" 1: remove the file extenstion.
" 2: replace all double '_' or '-' with an dot (which denotes a separate)
- " 3: remove a trailing '_' (wich denotes a specification)
+ " 3: remove a trailing '_' (which denotes a specification)
return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '')
endfunction decada#Unit_Name " }}}1
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index cf26bc3172..1ac74b5785 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -1,7 +1,7 @@
" Vim functions for file type detection
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2019 Mar 08
+" Last Change: 2020 Aug 17
" These functions are moved here from runtime/filetype.vim to make startup
" faster.
@@ -298,7 +298,7 @@ endfunc
func dist#ft#FTmms()
let n = 1
- while n < 10
+ while n < 20
let line = getline(n)
if line =~ '^\s*\(%\|//\)' || line =~ '^\*'
setf mmix
@@ -325,7 +325,7 @@ endfunc
func dist#ft#FTmm()
let n = 1
- while n < 10
+ while n < 20
let line = getline(n)
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)'
setf objcpp
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index 984ba8b58e..6b9d49a469 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
" Vim completion script
" Language: HTML and XHTML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2014 Jun 20
+" Last Change: 2019 Sep 27
" Distinguish between HTML versions.
" To use with other HTML versions add another "elseif" condition to match
@@ -245,7 +245,8 @@ function! htmlcomplete#CompleteTags(findstart, base)
" If context contains white space it is attribute.
" It can be also value of attribute.
" We have to get first word to offer proper completions
- if context == ''
+ if context =~ '^\s*$'
+ " empty or whitespace line
let tag = ''
else
let tag = split(context)[0]
diff --git a/runtime/autoload/man.vim b/runtime/autoload/man.vim
index c629923cd3..4f556e6e87 100644
--- a/runtime/autoload/man.vim
+++ b/runtime/autoload/man.vim
@@ -252,11 +252,11 @@ function! s:verify_exists(sect, name) abort
if !empty($MANSECT)
try
let MANSECT = $MANSECT
- unset $MANSECT
+ call setenv('MANSECT', v:null)
return s:get_path('', a:name)
catch /^command error (/
finally
- let $MANSECT = MANSECT
+ call setenv('MANSECT', MANSECT)
endtry
endif
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 7a799abb13..74ceab35d4 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
-" Date: Jan 07, 2020
-" Version: 168
+" Date: Sep 18, 2020
+" Version: 170
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
@@ -43,7 +43,7 @@ if exists("s:needspatches")
endfor
endif
-let g:loaded_netrw = "v168"
+let g:loaded_netrw = "v170"
if !exists("s:NOTE")
let s:NOTE = 0
let s:WARNING = 1
@@ -86,7 +86,16 @@ fun! netrw#ErrorMsg(level,msg,errnum)
endif
" call Decho("level=".level,'~'.expand("<slnum>"))
- if g:netrw_use_errorwindow
+ if g:netrw_use_errorwindow == 2 && (v:version > 802 || (v:version == 802 && has("patch486")))
+ " use popup window
+ if type(a:msg) == 3
+ let msg = [level]+a:msg
+ else
+ let msg= level.a:msg
+ endif
+ let s:popuperr_id = popup_beval(msg,{})
+ let s:popuperr_text= ""
+ elseif g:netrw_use_errorwindow
" (default) netrw creates a one-line window to show error/warning
" messages (reliably displayed)
@@ -203,7 +212,11 @@ let g:netrw_localrmdiropt = ""
" ---------------------------------------------------------------------
" Default values for netrw's global protocol variables {{{2
-call s:NetrwInit("g:netrw_use_errorwindow",1)
+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")
+ call s:NetrwInit("g:netrw_use_errorwindow",2)
+else
+ call s:NetrwInit("g:netrw_use_errorwindow",1)
+endif
if !exists("g:netrw_dav_cmd")
if executable("cadaver")
@@ -559,6 +572,7 @@ call s:NetrwInit("s:netrw_posn",'{}')
if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
" call Decho("installed beval events",'~'.expand("<slnum>"))
let &l:bexpr = "netrw#BalloonHelp()"
+" call Decho("&l:bexpr<".&l:bexpr."> buf#".bufnr())
au FileType netrw setl beval
au WinLeave * if &ft == "netrw" && exists("s:initbeval")|let &beval= s:initbeval|endif
au VimEnter * let s:initbeval= &beval
@@ -591,7 +605,18 @@ if v:version >= 700 && has("balloon_eval") && has("syntax") && exists("g:syntax_
if &ft != "netrw"
return ""
endif
- if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
+ if exists("s:popuperr_id") && popup_getpos(s:popuperr_id) != {}
+ " popup error window is still showing
+ " s:pouperr_id and s:popuperr_text are set up in netrw#ErrorMsg()
+ if exists("s:popuperr_text") && s:popuperr_text != "" && v:beval_text != s:popuperr_text
+ " text under mouse hasn't changed; only close window when it changes
+ call popup_close(s:popuperr_id)
+ unlet s:popuperr_text
+ else
+ let s:popuperr_text= v:beval_text
+ endif
+ let mesg= ""
+ elseif !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
let mesg= ""
elseif v:beval_text == "Netrw" || v:beval_text == "Directory" || v:beval_text == "Listing"
let mesg = "i: thin-long-wide-tree gh: quick hide/unhide of dot-files qf: quick file info %:open new file"
@@ -1212,6 +1237,10 @@ fun! netrw#Lexplore(count,rightside,...)
setlocal winfixwidth
let g:netrw_altv = keep_altv
let t:netrw_lexbufnr = bufnr("%")
+ " done to prevent build-up of hidden buffers due to quitting and re-invocation of :Lexplore.
+ " Since the intended use of :Lexplore is to have an always-present explorer window, the extra
+ " effort to mis-use :Lex is warranted.
+ set bh=wipe
" call Decho("let t:netrw_lexbufnr=".t:netrw_lexbufnr)
" call Decho("t:netrw_lexposn".(exists("t:netrw_lexposn")? string(t:netrw_lexposn) : " n/a"))
if exists("t:netrw_lexposn")
@@ -1864,7 +1893,7 @@ fun! s:NetrwRestoreSetting(keepvar,setting)
if type(a:setting) == 0
exe "let ".a:setting."= ".keepvarval
elseif type(a:setting) == 1
- exe "let ".a:setting."= '".keepvarval."'"
+ exe "let ".a:setting."= '".substitute(keepvarval,"'","''","g")."'"
else
call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105)
endif
@@ -3596,6 +3625,8 @@ fun! s:NetrwBookHistSave()
let savefile= s:NetrwHome()."/.netrwhist"
" call Decho("savefile<".savefile.">",'~'.expand("<slnum>"))
1split
+
+ " setting up a new buffer which will become .netrwhist
call s:NetrwEnew()
" call Decho("case g:netrw_use_noswf=".g:netrw_use_noswf.(exists("+acd")? " +acd" : " -acd"),'~'.expand("<slnum>"))
if g:netrw_use_noswf
@@ -4678,7 +4709,7 @@ endfun
" "new directory name" is actually a file,
" NetrwBrowseChgDir() edits the file.
fun! s:NetrwBrowseChgDir(islocal,newdir,...)
-" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
+" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." win#".winnr()." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
" call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
let ykeep= @@
@@ -4707,13 +4738,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
let newdir = a:newdir
let dolockout = 0
let dorestore = 1
+" call Decho("win#".winnr(),'~'.expand("<slnum>"))
" call Decho("dirname<".dirname.">",'~'.expand("<slnum>"))
" call Decho("newdir<".newdir.">",'~'.expand("<slnum>"))
" ignore <cr>s when done in the banner
" call Decho('(s:NetrwBrowseChgDir) ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>"))
if g:netrw_banner
-" call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
+" call Decho("win#".winnr()." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt
if getline(".") =~# 'Quick Help'
" call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
@@ -4750,7 +4782,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" ------------------------------
" NetrwBrowseChgDir: edit a file {{{3
" ------------------------------
-" call Decho('(s:NetrwBrowseChgDir) edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
+" call Decho('edit-a-file: case "handling a file": win#'.winnr().' newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
" save position for benefit of Rexplore
let s:rexposn_{bufnr("%")}= winsaveview()
@@ -4785,7 +4817,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
NetrwKeepj call s:NetrwOptionsRestore("s:")
let curdir= b:netrw_curdir
if !exists("s:didsplit")
-" call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>"))
+" " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr()." g:netrw_chgwin=".g:netrw_chgwin",'~'.expand("<slnum>"))
if type(g:netrw_browse_split) == 3
" open file in server
" Note that g:netrw_browse_split is a List: [servername,tabnr,winnr]
@@ -4793,22 +4825,27 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
call s:NetrwServerEdit(a:islocal,dirname)
" call Dret("s:NetrwBrowseChgDir")
return
+
elseif g:netrw_browse_split == 1
" horizontally splitting the window first
" call Decho("edit-a-file: horizontally splitting window prior to edit",'~'.expand("<slnum>"))
- keepalt new
+ let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
+ exe "keepalt ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
if !&ea
keepalt wincmd _
endif
call s:SetRexDir(a:islocal,curdir)
+
elseif g:netrw_browse_split == 2
" vertically splitting the window first
" call Decho("edit-a-file: vertically splitting window prior to edit",'~'.expand("<slnum>"))
- keepalt rightb vert new
+ let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
+ exe "keepalt ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
if !&ea
keepalt wincmd |
endif
call s:SetRexDir(a:islocal,curdir)
+
elseif g:netrw_browse_split == 3
" open file in new tab
" call Decho("edit-a-file: opening new tab prior to edit",'~'.expand("<slnum>"))
@@ -4817,6 +4854,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
let b:netrw_curdir= getcwd()
endif
call s:SetRexDir(a:islocal,curdir)
+
elseif g:netrw_browse_split == 4
" act like "P" (ie. open previous window)
" call Decho("edit-a-file: use previous window for edit",'~'.expand("<slnum>"))
@@ -4826,13 +4864,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
return
endif
call s:SetRexDir(a:islocal,curdir)
+
else
" handling a file, didn't split, so remove menu
" call Decho("edit-a-file: handling a file+didn't split, so remove menu",'~'.expand("<slnum>"))
call s:NetrwMenu(0)
" optional change to window
if g:netrw_chgwin >= 1
-" call Decho("edit-a-file: changing window to #".g:netrw_chgwin,'~'.expand("<slnum>"))
+" call Decho("edit-a-file: changing window to #".g:netrw_chgwin.": (due to g:netrw_chgwin)",'~'.expand("<slnum>"))
if winnr("$")+1 == g:netrw_chgwin
" if g:netrw_chgwin is set to one more than the last window, then
" vertically split the last window to make that window available.
@@ -4845,19 +4884,26 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
endif
call s:SetRexDir(a:islocal,curdir)
endif
+
endif
" the point where netrw actually edits the (local) file
" if its local only: LocalBrowseCheck() doesn't edit a file, but NetrwBrowse() will
" no keepalt to support :e # to return to a directory listing
+ if !&mod
+ " if e the new file would fail due to &mod, then don't change any of the flags
+ let dolockout= 1
+ endif
if a:islocal
" call Decho("edit-a-file: edit local file: exe e! ".fnameescape(dirname),'~'.expand("<slnum>"))
" some like c-^ to return to the last edited file
" others like c-^ to return to the netrw buffer
+ " Apr 30, 2020: used to have e! here. That can cause loss of a modified file,
+ " so emit error E37 instead.
if exists("g:netrw_altfile") && g:netrw_altfile
- exe "NetrwKeepj keepalt e! ".fnameescape(dirname)
+ exe "NetrwKeepj keepalt e ".fnameescape(dirname)
else
- exe "NetrwKeepj e! ".fnameescape(dirname)
+ exe "NetrwKeepj e ".fnameescape(dirname)
endif
" call Decho("edit-a-file: after e! ".dirname.": hidden=".&hidden." bufhidden<".&bufhidden."> mod=".&mod,'~'.expand("<slnum>"))
call s:NetrwCursor()
@@ -4868,7 +4914,6 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
else
" call Decho("edit-a-file: remote file: NetrwBrowse will edit it",'~'.expand("<slnum>"))
endif
- let dolockout= 1
" handle g:Netrw_funcref -- call external-to-netrw functions
" This code will handle g:Netrw_funcref as an individual function reference
@@ -5332,16 +5377,6 @@ fun! netrw#BrowseX(fname,remote)
endif
let ret= v:shell_error
- elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
-" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
- call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
- let ret= v:shell_error
-
- elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
-" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
- call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
- let ret= v:shell_error
-
elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril")
" call Decho("(netrw#BrowseX) unix and atril",'~'.expand("<slnum>"))
if a:fname =~ '^https\=://'
@@ -5356,9 +5391,19 @@ fun! netrw#BrowseX(fname,remote)
endif
let ret= v:shell_error
+ elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
+" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
+ call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
+ let ret= v:shell_error
+
+ elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
+" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
+ call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir.'&')
+ let ret= v:shell_error
+
elseif has("unix") && executable("xdg-open")
" call Decho("(netrw#BrowseX) unix and xdg-open",'~'.expand("<slnum>"))
- call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir)
+ call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir.'&')
let ret= v:shell_error
elseif has("macunix") && executable("open")
@@ -6053,10 +6098,10 @@ fun! s:NetrwListHide()
" Duplicate characters don't matter.
" Remove all such characters from the '/~@#...890' string.
" Use the first character left as a separator character.
-" call Decho("find a character not in the hide string to use as a separator")
+" call Decho("find a character not in the hide string to use as a separator",'~'.expand("<slnum>"))
let listhide= g:netrw_list_hide
let sep = strpart(substitute('~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
-" call Decho("sep=".sep," (sep not in hide string)'~'.expand("<slnum>"))
+" call Decho("sep<".sep."> (sep not in hide string)",'~'.expand("<slnum>"))
while listhide != ""
if listhide =~ ','
@@ -6066,7 +6111,7 @@ fun! s:NetrwListHide()
let hide = listhide
let listhide = ""
endif
-" call Decho("..extracted from listhide: hide<".hide."> g:netrw_sort_by<".g:netrw_sort_by.'>','~'.expand("<slnum>"))
+" call Decho("..extracted pattern from listhide: hide<".hide."> g:netrw_sort_by<".g:netrw_sort_by.'>','~'.expand("<slnum>"))
if g:netrw_sort_by =~ '^[ts]'
if hide =~ '^\^'
" call Decho("..modify hide to handle a \"^...\" pattern",'~'.expand("<slnum>"))
@@ -6078,7 +6123,7 @@ fun! s:NetrwListHide()
endif
" Prune the list by hiding any files which match
-" call Decho("..prune the list by hiding any files which ",((g:netrw_hide == 1)? "" : "don't")." match hide<".hide.">")
+" call Decho("..prune the list by hiding any files which ".((g:netrw_hide == 1)? "" : "don't")."match hide<".hide.">")
if g:netrw_hide == 1
" call Decho("..hiding<".hide.">",'~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
@@ -9161,6 +9206,7 @@ endfun
" (full path directory with trailing slash returned)
fun! s:NetrwTreeDir(islocal)
" call Dfunc("s:NetrwTreeDir(islocal=".a:islocal.") getline(".line(".").")"."<".getline('.')."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft)
+" call Decho("Determine tree directory given current cursor position")
" call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>"))
" call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>"))
" call Decho("w:netrw_treetop =".(exists("w:netrw_treetop")? w:netrw_treetop : 'n/a'),'~'.expand("<slnum>"))
@@ -9266,7 +9312,6 @@ fun! s:NetrwTreeDisplay(dir,depth)
call setline(line("$")+1,a:depth.shortdir.'/')
endif
" call Decho("setline#".line("$")." shortdir<".a:depth.shortdir.">",'~'.expand("<slnum>"))
-
" append a / to dir if its missing one
let dir= a:dir
@@ -9280,7 +9325,7 @@ fun! s:NetrwTreeDisplay(dir,depth)
let listhide= split(g:netrw_list_hide,',')
" call Decho("listhide=".string(listhide))
for pat in listhide
- call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"')
+ call filter(w:netrw_treedict[dir],'v:val !~ "'.escape(pat,'\\').'"')
endfor
elseif g:netrw_hide == 2
@@ -9418,6 +9463,7 @@ fun! s:NetrwTreeListing(dirname)
" call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
" display from treetop on down
+" call Decho("(s:NetrwTreeListing) w:netrw_treetop<".w:netrw_treetop.">")
NetrwKeepj call s:NetrwTreeDisplay(w:netrw_treetop,"")
" call Decho("s:NetrwTreeDisplay) setl noma nomod ro",'~'.expand("<slnum>"))
@@ -9678,7 +9724,7 @@ fun! s:PerformListing(islocal)
" Hiding... -or- Showing... {{{3
if g:netrw_banner
-" call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
+" call Decho("--handle hiding/showing in banner (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
if g:netrw_list_hide != "" && g:netrw_hide
if g:netrw_hide == 1
NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide
@@ -9731,7 +9777,7 @@ fun! s:PerformListing(islocal)
" call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
if !g:netrw_banner || line("$") >= w:netrw_bannercnt
-" call Decho("manipulate directory listing (hide)",'~'.expand("<slnum>"))
+" call Decho("manipulate directory listing (support hide)",'~'.expand("<slnum>"))
" call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">",'~'.expand("<slnum>"))
if g:netrw_hide && g:netrw_list_hide != ""
NetrwKeepj call s:NetrwListHide()
@@ -11744,7 +11790,7 @@ endfun
" ---------------------------------------------------------------------
" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
fun! s:NetrwEnew(...)
-" call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
+" call Dfunc("s:NetrwEnew() a:0=".a:0." win#".winnr()." winnr($)=".winnr("$")." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
" call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>"))
" grab a function-local-variable copy of buffer variables
@@ -11811,6 +11857,9 @@ fun! s:NetrwEnew(...)
endif
endif
endif
+ if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
+ let &l:bexpr = "netrw#BalloonHelp()"
+ endif
" call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$"))
endfun
@@ -11870,6 +11919,7 @@ endfun
" -1=failed
fun! s:NetrwLcd(newdir)
" call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)")
+" call Decho("changing local directory",'~'.expand("<slnum>"))
let err472= 0
try
@@ -11905,6 +11955,8 @@ fun! s:NetrwLcd(newdir)
return -1
endif
+" call Decho("getcwd <".getcwd().">")
+" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
" call Dret("s:NetrwLcd 0")
return 0
endfun
diff --git a/runtime/autoload/netrwFileHandlers.vim b/runtime/autoload/netrwFileHandlers.vim
index ed31e29a66..d07235c107 100644
--- a/runtime/autoload/netrwFileHandlers.vim
+++ b/runtime/autoload/netrwFileHandlers.vim
@@ -1,8 +1,8 @@
" netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell
-" Date: May 03, 2013
-" Version: 11b ASTRO-ONLY
+" Date: Sep 18, 2020
+" Version: 11
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@@ -20,7 +20,7 @@
if exists("g:loaded_netrwFileHandlers") || &cp
finish
endif
-let g:loaded_netrwFileHandlers= "v11b"
+let g:loaded_netrwFileHandlers= "v11"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
diff --git a/runtime/autoload/python3complete.vim b/runtime/autoload/python3complete.vim
index a3b057d4d0..1d7f5d18f5 100644
--- a/runtime/autoload/python3complete.vim
+++ b/runtime/autoload/python3complete.vim
@@ -1,7 +1,8 @@
"python3complete.vim - Omni Completion for python
-" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
+" Maintainer: <vacancy>
+" Previous Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.9
-" Last Updated: 18 Jun 2009 (small fix 2015 Sep 14 from Debian)
+" Last Updated: 2020 Oct 9
"
" Roland Puntaier: this file contains adaptations for python3 and is parallel to pythoncomplete.vim
"
@@ -83,7 +84,7 @@ function! python3complete#Complete(findstart, base)
break
endif
endwhile
- execute "py3 vimpy3complete('" . cword . "', '" . a:base . "')"
+ execute "py3 vimpy3complete('" . escape(cword, "'") . "', '" . escape(a:base, "'") . "')"
return g:python3complete_completions
endif
endfunction
diff --git a/runtime/autoload/pythoncomplete.vim b/runtime/autoload/pythoncomplete.vim
index 9cc0ae0d79..575c23e6d3 100644
--- a/runtime/autoload/pythoncomplete.vim
+++ b/runtime/autoload/pythoncomplete.vim
@@ -1,7 +1,8 @@
"pythoncomplete.vim - Omni Completion for python
-" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
+" Maintainer: <vacancy>
+" Previous Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.9
-" Last Updated: 18 Jun 2009
+" Last Updated: 2020 Oct 9
"
" Changes
" TODO:
@@ -81,7 +82,7 @@ function! pythoncomplete#Complete(findstart, base)
break
endif
endwhile
- execute "python vimcomplete('" . cword . "', '" . a:base . "')"
+ execute "python vimcomplete('" . escape(cword, "'") . "', '" . escape(a:base, "'") . "')"
return g:pythoncomplete_completions
endif
endfunction
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim
index ea18470232..e8a1879668 100644
--- a/runtime/autoload/rubycomplete.vim
+++ b/runtime/autoload/rubycomplete.vim
@@ -3,7 +3,7 @@
" Maintainer: Mark Guzman <segfault@hasno.info>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2019 Jan 06
+" Last Change: 2019 Feb 25
" ----------------------------------------------------------------------------
"
" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
@@ -53,6 +53,23 @@ if !exists("g:rubycomplete_include_objectspace")
endif
" }}} configuration failsafe initialization
+" {{{ regex patterns
+
+" Regex that defines the start-match for the 'end' keyword.
+let s:end_start_regex =
+ \ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
+ \ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
+ \ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
+ \ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
+
+" Regex that defines the middle-match for the 'end' keyword.
+let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue:\@!\>\|when\|elsif\):\@!\>'
+
+" Regex that defines the end-match for the 'end' keyword.
+let s:end_end_regex = '\%(^\|[^.:@$]\)\@<=\<end:\@!\>'
+
+" }}} regex patterns
+
" {{{ vim-side support functions
let s:rubycomplete_debug = 0
@@ -103,7 +120,7 @@ function! s:GetBufferRubyEntity( name, type, ... )
endif
let curpos = getpos(".")
- let [enum,ecol] = searchpairpos( crex, '', '\(end\|}\)', 'W' )
+ let [enum,ecol] = searchpairpos( s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'W' )
call cursor(lastpos[1], lastpos[2])
if lnum > enum
@@ -128,19 +145,28 @@ function! s:IsPosInClassDef(pos)
return ret
endfunction
+function! s:IsInComment(pos)
+ let stack = synstack(a:pos[0], a:pos[1])
+ if !empty(stack)
+ return synIDattr(stack[0], 'name') =~ 'ruby\%(.*Comment\|Documentation\)'
+ else
+ return 0
+ endif
+endfunction
+
function! s:GetRubyVarType(v)
let stopline = 1
let vtp = ''
- let pos = getpos('.')
+ let curpos = getpos('.')
let sstr = '^\s*#\s*@var\s*'.escape(a:v, '*').'\>\s\+[^ \t]\+\s*$'
let [lnum,lcol] = searchpos(sstr,'nb',stopline)
if lnum != 0 && lcol != 0
- call setpos('.',pos)
+ call setpos('.',curpos)
let str = getline(lnum)
let vtp = substitute(str,sstr,'\1','')
return vtp
endif
- call setpos('.',pos)
+ call setpos('.',curpos)
let ctors = '\(now\|new\|open\|get_instance'
if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1
let ctors = ctors.'\|find\|create'
@@ -150,9 +176,13 @@ function! s:GetRubyVarType(v)
let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)'
let sstr = ''.escape(a:v, '*').'\>\s*[+\-*/]*'.fstr
- let [lnum,lcol] = searchpos(sstr,'nb',stopline)
- if lnum != 0 && lcol != 0
- let str = matchstr(getline(lnum),fstr,lcol)
+ let pos = searchpos(sstr,'bW')
+ while pos != [0,0] && s:IsInComment(pos)
+ let pos = searchpos(sstr,'bW')
+ endwhile
+ if pos != [0,0]
+ let [lnum, col] = pos
+ let str = matchstr(getline(lnum),fstr,col)
let str = substitute(str,'^=\s*','','')
call setpos('.',pos)
@@ -174,7 +204,7 @@ function! s:GetRubyVarType(v)
end
return ''
endif
- call setpos('.',pos)
+ call setpos('.',curpos)
return ''
endfunction
@@ -671,11 +701,10 @@ class VimRubyCompletion
methods.delete_if { |c| c.match( /'/ ) }
end
- when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods
+ when /^::([A-Z][^:\.\(]*)?$/ # Absolute Constant or class methods
dprint "const or cls"
receiver = $1
- methods = Object.constants
- methods.grep(/^#{receiver}/).collect{|e| "::" + e}
+ methods = Object.constants.collect{ |c| c.to_s }.grep(/^#{receiver}/)
when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods
receiver = $1
@@ -684,13 +713,13 @@ class VimRubyCompletion
load_buffer_class( receiver )
load_buffer_module( receiver )
begin
- classes = eval("#{receiver}.constants")
- #methods = eval("#{receiver}.methods")
+ constants = eval("#{receiver}.constants").collect{ |c| c.to_s }.grep(/^#{message}/)
+ methods = eval("#{receiver}.methods").collect{ |m| m.to_s }.grep(/^#{message}/)
rescue Exception
dprint "exception: %s" % $!
+ constants = []
methods = []
end
- methods.grep(/^#{message}/).collect{|e| receiver + "::" + e}
when /^(:[^:.]+)\.([^.]*)$/ # Symbol
dprint "symbol"
diff --git a/runtime/autoload/syntaxcomplete.vim b/runtime/autoload/syntaxcomplete.vim
index ea72204cbb..396193d8b0 100644
--- a/runtime/autoload/syntaxcomplete.vim
+++ b/runtime/autoload/syntaxcomplete.vim
@@ -1,12 +1,20 @@
" Vim completion script
" Language: All languages, uses existing syntax highlighting rules
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
-" Version: 13.0
-" Last Change: 2019 Aug 08
+" Version: 15.0
+" Last Change: 2021 Apr 27
" Usage: For detailed help, ":help ft-syntax-omni"
" History
"
+" Version 15.0
+" - SyntaxComplete ignored all buffer specific overrides, always used global
+" https://github.com/vim/vim/issues/8153
+"
+" Version 14.0
+" - Fixed issue with single quotes and is_keyword
+" https://github.com/vim/vim/issues/7463
+"
" Version 13.0
" - Extended the option omni_syntax_group_include_{filetype}
" to accept a comma separated list of regex's rather than
@@ -38,7 +46,7 @@
" let g:omni_syntax_use_single_byte = 1
" - This by default will only allow single byte ASCII
" characters to be added and an additional check to ensure
-" the charater is printable (see documentation for isprint).
+" the character is printable (see documentation for isprint).
"
" Version 9.0
" - Add the check for cpo.
@@ -86,7 +94,7 @@ endif
if exists('g:loaded_syntax_completion')
finish
endif
-let g:loaded_syntax_completion = 130
+let g:loaded_syntax_completion = 150
" Turn on support for line continuations when creating the script
let s:cpo_save = &cpo
@@ -141,14 +149,10 @@ let s:prepended = ''
" This function is used for the 'omnifunc' option.
function! syntaxcomplete#Complete(findstart, base)
- " Only display items in the completion window that are at least
- " this many characters in length
- if !exists('b:omni_syntax_ignorecase')
- if exists('g:omni_syntax_ignorecase')
- let b:omni_syntax_ignorecase = g:omni_syntax_ignorecase
- else
- let b:omni_syntax_ignorecase = &ignorecase
- endif
+ " Allow user to override ignorecase per buffer
+ let l:omni_syntax_ignorecase = g:omni_syntax_ignorecase
+ if exists('b:omni_syntax_ignorecase')
+ let l:omni_syntax_ignorecase = b:omni_syntax_ignorecase
endif
if a:findstart
@@ -179,7 +183,7 @@ function! syntaxcomplete#Complete(findstart, base)
endif
" let base = s:prepended . a:base
- let base = s:prepended
+ let base = substitute(s:prepended, "'", "''", 'g')
let filetype = substitute(&filetype, '\.', '_', 'g')
let list_idx = index(s:cache_name, filetype, 0, &ignorecase)
@@ -195,13 +199,13 @@ function! syntaxcomplete#Complete(findstart, base)
if base != ''
" let compstr = join(compl_list, ' ')
- " let expr = (b:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
+ " let expr = (l:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
" let compstr = substitute(compstr, expr, '', 'g')
" let compl_list = split(compstr, '\s\+')
" Filter the list based on the first few characters the user
" entered
- let expr = 'v:val '.(g:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'"
+ let expr = 'v:val '.(l:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'"
let compl_list = filter(deepcopy(compl_list), expr)
endif
@@ -222,6 +226,26 @@ function! syntaxcomplete#OmniSyntaxList(...)
endif
endfunc
+function! syntaxcomplete#OmniSyntaxClearCache()
+ let s:cache_name = []
+ let s:cache_list = []
+endfunction
+
+" To retrieve all syntax items regardless of syntax group:
+" echo OmniSyntaxList( [] )
+"
+" To retrieve only the syntax items for the sqlOperator syntax group:
+" echo OmniSyntaxList( ['sqlOperator'] )
+"
+" To retrieve all syntax items for both the sqlOperator and sqlType groups:
+" echo OmniSyntaxList( ['sqlOperator', 'sqlType'] )
+"
+" A regular expression can also be used:
+" echo OmniSyntaxList( ['sql\w\+'] )
+"
+" From within a plugin, you would typically assign the output to a List: >
+" let myKeywords = []
+" let myKeywords = OmniSyntaxList( ['sqlKeyword'] )
function! OmniSyntaxList(...)
let list_parms = []
if a:0 > 0
@@ -239,37 +263,25 @@ function! OmniSyntaxList(...)
" let use_dictionary = a:1
" endif
- " Only display items in the completion window that are at least
- " this many characters in length
- if !exists('b:omni_syntax_use_iskeyword')
- if exists('g:omni_syntax_use_iskeyword')
- let b:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword
- else
- let b:omni_syntax_use_iskeyword = 1
- endif
- endif
-
- " Only display items in the completion window that are at least
- " this many characters in length
- if !exists('b:omni_syntax_minimum_length')
- if exists('g:omni_syntax_minimum_length')
- let b:omni_syntax_minimum_length = g:omni_syntax_minimum_length
- else
- let b:omni_syntax_minimum_length = 0
- endif
- endif
-
let saveL = @l
let filetype = substitute(&filetype, '\.', '_', 'g')
if empty(list_parms)
+ " Allow user to override per buffer
+ if exists('g:omni_syntax_group_include_'.filetype)
+ let l:omni_syntax_group_include_{filetype} = g:omni_syntax_group_include_{filetype}
+ endif
+ if exists('b:omni_syntax_group_include_'.filetype)
+ let l:omni_syntax_group_include_{filetype} = b:omni_syntax_group_include_{filetype}
+ endif
+
" Default the include group to include the requested syntax group
let syntax_group_include_{filetype} = ''
" Check if there are any overrides specified for this filetype
- if exists('g:omni_syntax_group_include_'.filetype)
+ if exists('l:omni_syntax_group_include_'.filetype)
let syntax_group_include_{filetype} =
- \ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g')
- let list_parms = split(g:omni_syntax_group_include_{filetype}, ',')
+ \ substitute( l:omni_syntax_group_include_{filetype},'\s\+','','g')
+ let list_parms = split(l:omni_syntax_group_include_{filetype}, ',')
if syntax_group_include_{filetype} =~ '\w'
let syntax_group_include_{filetype} =
\ substitute( syntax_group_include_{filetype},
@@ -324,11 +336,20 @@ function! OmniSyntaxList(...)
else
" Default the exclude group to nothing
let syntax_group_exclude_{filetype} = ''
- " Check if there are any overrides specified for this filetype
+
+ " Allow user to override per buffer
if exists('g:omni_syntax_group_exclude_'.filetype)
+ let l:omni_syntax_group_exclude_{filetype} = g:omni_syntax_group_exclude_{filetype}
+ endif
+ if exists('b:omni_syntax_group_exclude_'.filetype)
+ let l:omni_syntax_group_exclude_{filetype} = b:omni_syntax_group_exclude_{filetype}
+ endif
+
+ " Check if there are any overrides specified for this filetype
+ if exists('l:omni_syntax_group_exclude_'.filetype)
let syntax_group_exclude_{filetype} =
- \ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g')
- let list_exclude_groups = split(g:omni_syntax_group_exclude_{filetype}, ',')
+ \ substitute( l:omni_syntax_group_exclude_{filetype},'\s\+','','g')
+ let list_exclude_groups = split(l:omni_syntax_group_exclude_{filetype}, ',')
if syntax_group_exclude_{filetype} =~ '\w'
let syntax_group_exclude_{filetype} =
\ substitute( syntax_group_exclude_{filetype},
@@ -524,6 +545,30 @@ endfunction
function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
+ " Allow user to override iskeyword per buffer
+ let l:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword
+ if exists('b:omni_syntax_use_iskeyword')
+ let l:omni_syntax_use_iskeyword = b:omni_syntax_use_iskeyword
+ endif
+
+ " Allow user to override iskeyword_numeric per buffer
+ let l:omni_syntax_use_iskeyword_numeric = g:omni_syntax_use_iskeyword_numeric
+ if exists('b:omni_syntax_use_iskeyword_numeric')
+ let l:omni_syntax_use_iskeyword_numeric = b:omni_syntax_use_iskeyword_numeric
+ endif
+
+ " Allow user to override iskeyword_numeric per buffer
+ let l:omni_syntax_use_single_byte = g:omni_syntax_use_single_byte
+ if exists('b:omni_syntax_use_single_byte')
+ let l:omni_syntax_use_single_byte = b:omni_syntax_use_single_byte
+ endif
+
+ " Allow user to override minimum_length per buffer
+ let l:omni_syntax_minimum_length = g:omni_syntax_minimum_length
+ if exists('b:omni_syntax_minimum_length')
+ let l:omni_syntax_minimum_length = b:omni_syntax_minimum_length
+ endif
+
let syn_list = ""
" From the full syntax listing, strip out the portion for the
@@ -642,14 +687,23 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
\ syn_list, '\%(^\|\n\)\@<=\s*\(@\w\+\)'
\ , "", 'g'
\ )
-
- if b:omni_syntax_use_iskeyword == 0
+
+ if l:omni_syntax_use_iskeyword == 0
" There are a number of items which have non-word characters in
" them, *'T_F1'*. vim.vim is one such file.
" This will replace non-word characters with spaces.
+ " setlocal filetype=forth
+ " let g:omni_syntax_use_iskeyword = 1
+ " let g:omni_syntax_use_iskeyword_numeric = 1
+ " You will see entries like
+ " #>>
+ " (.local)
+ " These were found doing a grep in vim82\syntax
+ " grep iskeyword *
+ " forth.vim:setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
else
- if g:omni_syntax_use_iskeyword_numeric == 1
+ if l:omni_syntax_use_iskeyword_numeric == 1
" iskeyword can contain value like this
" 38,42,43,45,47-58,60-62,64-90,97-122,_,+,-,*,/,%,<,=,>,:,$,?,!,@-@,94
" Numeric values convert to their ASCII equivalent using the
@@ -669,7 +723,7 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
" cycle through each character within the range
let [b:start, b:end] = split(item, '-')
for range_item in range( b:start, b:end )
- if range_item <= 127 || g:omni_syntax_use_single_byte == 0
+ if range_item <= 127 || l:omni_syntax_use_single_byte == 0
if nr2char(range_item) =~ '\p'
let accepted_chars = accepted_chars . nr2char(range_item)
endif
@@ -677,13 +731,13 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
endfor
elseif item =~ '^\d\+$'
" Only numeric, translate to a character
- if item < 127 || g:omni_syntax_use_single_byte == 0
+ if item < 127 || l:omni_syntax_use_single_byte == 0
if nr2char(item) =~ '\p'
let accepted_chars = accepted_chars . nr2char(item)
endif
endif
else
- if char2nr(item) < 127 || g:omni_syntax_use_single_byte == 0
+ if char2nr(item) < 127 || l:omni_syntax_use_single_byte == 0
if item =~ '\p'
let accepted_chars = accepted_chars . item
endif
@@ -719,9 +773,9 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
endif
endif
- if b:omni_syntax_minimum_length > 0
+ if l:omni_syntax_minimum_length > 0
" If the user specified a minimum length, enforce it
- let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.b:omni_syntax_minimum_length.'}\ze ', ' ', 'g')
+ let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.l:omni_syntax_minimum_length.'}\ze ', ' ', 'g')
endif
else
let syn_list = ''
@@ -751,5 +805,6 @@ function! OmniSyntaxShowChars(spec)
endfor
return join(map(result, 'nr2char(v:val)'), ', ')
endfunction
+
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/autoload/tohtml.vim b/runtime/autoload/tohtml.vim
index 9c3d4d2d7e..76092f0f93 100644
--- a/runtime/autoload/tohtml.vim
+++ b/runtime/autoload/tohtml.vim
@@ -1,6 +1,6 @@
" Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2018 Nov 11
+" Last Change: 2019 Aug 16
"
" Additional contributors:
"
@@ -364,6 +364,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let body_line = ''
let html = []
+ let s:html5 = 0
if s:settings.use_xhtml
call add(html, xml_line)
endif
@@ -371,8 +372,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
elseif s:settings.use_css && !s:settings.no_pre
- call add(html, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">")
+ call add(html, "<!DOCTYPE html>")
call add(html, '<html>')
+ let s:html5 = 1
else
call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
@@ -383,7 +385,11 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" include encoding as close to the top as possible, but only if not already
" contained in XML information
if s:settings.encoding != "" && !s:settings.use_xhtml
- call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
+ if s:html5
+ call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
+ else
+ call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
+ endif
endif
call add(html, '<title>diff</title>')
@@ -392,6 +398,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
+ \ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.tag_close)
call add(html, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
@@ -400,16 +407,8 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, '</head>')
let body_line_num = len(html)
- if !empty(s:settings.prevent_copy)
- call add(html, "<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>")
- call add(html, "<!-- hidden divs used by javascript to get the width of a char -->")
- call add(html, "<div id='oneCharWidth'>0</div>")
- call add(html, "<div id='oneInputWidth'><input size='1' value='0'".tag_close."</div>")
- call add(html, "<div id='oneEmWidth' style='width: 1em;'></div>")
- else
- call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
- endif
- call add(html, "<table border='1' width='100%' id='vimCodeElement".s:settings.id_suffix."'>")
+ call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
+ call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, '<tr>')
for buf in a:win_list
@@ -443,7 +442,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" Grab the style information. Some of this will be duplicated so only insert
" it if it's not already there. {{{
1
- let style_start = search('^<style type="text/css">')
+ let style_start = search('^<style\( type="text/css"\)\?>')
1
let style_end = search('^</style>')
if style_start > 0 && style_end > 0
@@ -481,7 +480,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" TODO: restore using grabbed lines if undolevel is 1?
normal! 2u
if s:settings.use_css
- call add(html, '<td valign="top"><div>')
+ call add(html, '<td><div>')
elseif s:settings.use_xhtml
call add(html, '<td nowrap="nowrap" valign="top"><div>')
else
@@ -515,7 +514,13 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e")
let i += 1
endwhile
+
+ let s:ei_sav = &eventignore
+ set eventignore+=FileType
exe "topleft new " . name
+ let &eventignore=s:ei_sav
+ unlet s:ei_sav
+
setlocal modifiable
" just in case some user autocmd creates content in the new buffer, make sure
@@ -544,7 +549,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" add required javascript in reverse order so we can just call append again
" and again without adjusting {{{
- let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy)
+ let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script closing tag if needed
if s:uses_script
@@ -555,31 +560,6 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ ])
endif
- " insert script which corrects the size of small input elements in
- " prevent_copy mode. See 2html.vim for details on why this is needed and how
- " it works.
- if !empty(s:settings.prevent_copy)
- call append(style_start, [
- \ '',
- \ '/* simulate a "ch" unit by asking the browser how big a zero character is */',
- \ 'function FixCharWidth() {',
- \ ' /* get the hidden element which gives the width of a single character */',
- \ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;',
- \ ' /* get all input elements, we''ll filter on class later */',
- \ ' var inputTags = document.getElementsByTagName("input");',
- \ ' var ratio = 5;',
- \ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;',
- \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
- \ ' if (inputWidth > goodWidth) {',
- \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
- \ ' ratio += 5;',
- \ ' }',
- \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
- \ ' }',
- \ '}'
- \ ])
- endif
-
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
if s:settings.line_ids
@@ -659,10 +639,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
endif
if s:uses_script
- " insert script tag; javascript is always needed for the line number
- " normalization for URL hashes
+ " insert script tag if needed
call append(style_start, [
- \ "<script type='text/javascript'>",
+ \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
@@ -673,11 +652,13 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" is pretty useless for really long lines. {{{
if s:settings.use_css
call append(style_start,
- \ ['<style type="text/css">']+
+ \ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
\ style+
\ [ s:settings.use_xhtml ? '' : '<!--',
\ 'table { table-layout: fixed; }',
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
+ \ 'table, td, th { border: 1px solid; }',
+ \ 'td { vertical-align: top; }',
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
\ 'td div { overflow: auto; }',
\ s:settings.use_xhtml ? '' : '-->',
@@ -720,21 +701,22 @@ func! tohtml#GetUserSettings() "{{{
endif
" get current option settings with appropriate defaults {{{
- call tohtml#GetOption(user_settings, 'no_progress', !has("statusline") )
- call tohtml#GetOption(user_settings, 'diff_one_file', 0 )
- call tohtml#GetOption(user_settings, 'number_lines', &number )
- call tohtml#GetOption(user_settings, 'pre_wrap', &wrap )
- call tohtml#GetOption(user_settings, 'use_css', 1 )
- call tohtml#GetOption(user_settings, 'ignore_conceal', 0 )
- call tohtml#GetOption(user_settings, 'ignore_folding', 0 )
- call tohtml#GetOption(user_settings, 'dynamic_folds', 0 )
- call tohtml#GetOption(user_settings, 'no_foldcolumn', user_settings.ignore_folding)
- call tohtml#GetOption(user_settings, 'hover_unfold', 0 )
- call tohtml#GetOption(user_settings, 'no_pre', 0 )
- call tohtml#GetOption(user_settings, 'no_invalid', 0 )
- call tohtml#GetOption(user_settings, 'whole_filler', 0 )
- call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
- call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines )
+ call tohtml#GetOption(user_settings, 'no_progress', !has("statusline") )
+ call tohtml#GetOption(user_settings, 'diff_one_file', 0 )
+ call tohtml#GetOption(user_settings, 'number_lines', &number )
+ call tohtml#GetOption(user_settings, 'pre_wrap', &wrap )
+ call tohtml#GetOption(user_settings, 'use_css', 1 )
+ call tohtml#GetOption(user_settings, 'ignore_conceal', 0 )
+ call tohtml#GetOption(user_settings, 'ignore_folding', 0 )
+ call tohtml#GetOption(user_settings, 'dynamic_folds', 0 )
+ call tohtml#GetOption(user_settings, 'no_foldcolumn', user_settings.ignore_folding)
+ call tohtml#GetOption(user_settings, 'hover_unfold', 0 )
+ call tohtml#GetOption(user_settings, 'no_pre', 0 )
+ call tohtml#GetOption(user_settings, 'no_invalid', 0 )
+ call tohtml#GetOption(user_settings, 'whole_filler', 0 )
+ call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
+ call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines )
+ call tohtml#GetOption(user_settings, 'use_input_for_pc', 'fallback')
" }}}
" override those settings that need it {{{
@@ -868,6 +850,16 @@ func! tohtml#GetUserSettings() "{{{
let user_settings.no_invalid = 0
endif
+ " enforce valid values for use_input_for_pc
+ if user_settings.use_input_for_pc !~# 'fallback\|none\|all'
+ let user_settings.use_input_for_pc = 'fallback'
+ echohl WarningMsg
+ echomsg '2html: "' . g:html_use_input_for_pc . '" is not valid for g:html_use_input_for_pc'
+ echomsg '2html: defaulting to "' . user_settings.use_input_for_pc . '"'
+ echohl None
+ sleep 3
+ endif
+
if exists('g:html_id_expr')
let user_settings.id_suffix = eval(g:html_id_expr)
if user_settings.id_suffix !~ '^[-_:.A-Za-z0-9]*$'
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index ea086e0882..f6b876df05 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,10 +1,10 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
-" Date: Sep 13, 2016
-" Version: 28
-" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
+" Date: Jan 07, 2020
+" Version: 31
+" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license)
-" Copyright: Copyright (C) 2005-2013 Charles E. Campbell {{{1
+" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zip")
finish
endif
-let g:loaded_zip= "v28"
+let g:loaded_zip= "v31"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of zip needs vim 7.2 or later"
@@ -65,10 +65,10 @@ endif
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
- " sanity check: ensure that the zipfile has "PK" as its first two letters
+ " 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 "noautocmd e ".fnameescape(a:zipfile)
+ exe "noswapfile noautocmd noswapfile e ".fnameescape(a:zipfile)
" call Dret("zip#Browse : not a zipfile<".a:zipfile.">")
return
" else " Decho
@@ -141,8 +141,11 @@ fun! zip#Browse(zipfile)
" Maps associated with zip plugin
setlocal noma nomod ro
- noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
- noremap <silent> <buffer> x :call zip#Extract()<cr>
+ noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
+ noremap <silent> <buffer> x :call zip#Extract()<cr>
+ if &mouse != ""
+ noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>ZipBrowseSelect()<cr>
+ endif
let &report= repkeep
" call Dret("zip#Browse")
@@ -175,17 +178,17 @@ fun! s:ZipBrowseSelect()
" get zipfile to the new-window
let zipfile = b:zipfile
- let curfile= expand("%")
+ let curfile = expand("%")
" call Decho("zipfile<".zipfile.">")
" call Decho("curfile<".curfile.">")
- new
+ 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 "e ".fnameescape("zipfile:".zipfile.'::'.fname)
+ exe "noswapfile e ".fnameescape("zipfile:".zipfile.'::'.fname)
filetype detect
let &report= repkeep
@@ -339,7 +342,7 @@ fun! zip#Write(fname)
let binkeep= &binary
let eikeep = &ei
set binary ei=all
- exe "e! ".fnameescape(zipfile)
+ exe "noswapfile e! ".fnameescape(zipfile)
call netrw#NetWrite(netzipfile)
let &ei = eikeep
let &binary = binkeep
diff --git a/runtime/colors/README.txt b/runtime/colors/README.txt
index 4636979ef1..70aacb5384 100644
--- a/runtime/colors/README.txt
+++ b/runtime/colors/README.txt
@@ -67,7 +67,7 @@ You can use ":highlight" to find out the current colors. Exception: the
ctermfg and ctermbg values are numbers, which are only valid for the current
terminal. Use the color names instead. See ":help cterm-colors".
-The default color settings can be found in the source file src/syntax.c.
+The default color settings can be found in the source file src/highlight.c.
Search for "highlight_init".
If you think you have a color scheme that is good enough to be used by others,
diff --git a/runtime/compiler/checkstyle.vim b/runtime/compiler/checkstyle.vim
index ccab3c585d..4ebd9e15b5 100644
--- a/runtime/compiler/checkstyle.vim
+++ b/runtime/compiler/checkstyle.vim
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: Checkstyle
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2013 Jun 26
+" Last Change: 2020 Aug 2
if exists("current_compiler")
finish
@@ -12,8 +12,18 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
-CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain
+let s:cpo_save = &cpo
+set cpo&vim
-" sample error: WebTable.java:282: '+=' is not preceded with whitespace.
-" WebTable.java:201:1: '{' should be on the previous line.
-CompilerSet errorformat=%f:%l:%v:\ %m,%f:%l:\ %m,%-G%.%#
+" CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain\ -c\ /sun_checks.xml
+" CompilerSet makeprg=java\ -jar\ checkstyle-X.XX-all.jar\ -f\ plain\ -c\ /sun_checks.xml
+
+CompilerSet makeprg=checkstyle\ -f\ plain
+CompilerSet errorformat=[%tRROR]\ %f:%l:%v:\ %m,
+ \[%tARN]\ %f:%l:%v:\ %m,
+ \[%tRROR]\ %f:%l:\ %m,
+ \[%tARN]\ %f:%l:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/cm3.vim b/runtime/compiler/cm3.vim
new file mode 100644
index 0000000000..3de51282e6
--- /dev/null
+++ b/runtime/compiler/cm3.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler: Critical Mass Modula-3 Compiler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 Apr 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "cm3"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" TODO: better handling of Quake errors
+CompilerSet makeprg=cm3
+CompilerSet errorformat=%D---\ building\ in\ %f\ ---,
+ \%W\"%f\"\\,\ line\ %l:\ warning:\ %m,
+ \%E\"%f\"\\,\ line\ %l:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dart.vim b/runtime/compiler/dart.vim
new file mode 100644
index 0000000000..f9ebfe1b27
--- /dev/null
+++ b/runtime/compiler/dart.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler: Dart VM
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dart"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dart
+CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
+ \%CTry\ %.%#,
+ \%Z\ %#^%\\+,
+ \%C%.%#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dart2js.vim b/runtime/compiler/dart2js.vim
new file mode 100644
index 0000000000..b6a4e4d530
--- /dev/null
+++ b/runtime/compiler/dart2js.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler: Dart to JavaScript Compiler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dart2js"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dart2js
+CompilerSet errorformat=%E%f:%l:%c:,
+ \%-GError:\ Compilation\ failed.,
+ \%CError:\ %m,
+ \%Z\ %#^%\\+,
+ \%C%.%#,
+ \%trror:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dart2native.vim b/runtime/compiler/dart2native.vim
new file mode 100644
index 0000000000..51bdab0cc3
--- /dev/null
+++ b/runtime/compiler/dart2native.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler: Dart to Native Compiler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dart2native"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dart2native
+CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
+ \%CTry\ %.%#,
+ \%Z\ %#^%\\+,
+ \%Z%$,
+ \%C%.%#,
+ \%E%f:\ %trror:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dartanalyser.vim b/runtime/compiler/dartanalyser.vim
new file mode 100644
index 0000000000..e691d80b61
--- /dev/null
+++ b/runtime/compiler/dartanalyser.vim
@@ -0,0 +1,23 @@
+" Vim compiler file
+" Compiler: Dart Analyzer
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dartanalyzer"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartanalyzer\ --format\ machine
+CompilerSet errorformat=%t%\\w%\\+\|%\\w%\\+\|%\\w%\\+\|%f\|%l\|%c\|%\\d%\\+\|%m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dartdevc.vim b/runtime/compiler/dartdevc.vim
new file mode 100644
index 0000000000..e8d1988ed6
--- /dev/null
+++ b/runtime/compiler/dartdevc.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler: Dart Development Compiler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dartdevc"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartdevc
+CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
+ \%CTry\ %.%#,
+ \%Z\ %#^%\\+,
+ \%Z%$,
+ \%C%.%#,
+ \%E%f:\ %trror:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dartdoc.vim b/runtime/compiler/dartdoc.vim
new file mode 100644
index 0000000000..26b38d8dd4
--- /dev/null
+++ b/runtime/compiler/dartdoc.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler: Dart Documentation Generator
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dartdoc"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartdoc
+CompilerSet errorformat=\ \ %tarning:\ %m,
+ \\ \ %trror:\ %m,
+ \%+EGeneration\ failed:\ %m,
+ \%+ISuccess!\ Docs\ generated\ into\ %f,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/dartfmt.vim b/runtime/compiler/dartfmt.vim
new file mode 100644
index 0000000000..2e4ab02ad3
--- /dev/null
+++ b/runtime/compiler/dartfmt.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler: Dart Formatter
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 May 08
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "dartfmt"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartfmt
+CompilerSet errorformat=%Eline\ %l\\,\ column\ %c\ of\ %f:\ %m,
+ \%Z\ %\\{3}│\ %\\+^%\\+,
+ \%C%.%#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/eslint.vim b/runtime/compiler/eslint.vim
new file mode 100644
index 0000000000..7d57acbdf4
--- /dev/null
+++ b/runtime/compiler/eslint.vim
@@ -0,0 +1,16 @@
+" Vim compiler file
+" Compiler: ESLint for JavaScript
+" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
+" Last Change: 2020 August 20
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "eslint"
+
+if exists(":CompilerSet") != 2
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+CompilerSet makeprg=npx\ eslint\ --format\ compact
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m,%-G%.%#
diff --git a/runtime/compiler/fbc.vim b/runtime/compiler/fbc.vim
new file mode 100644
index 0000000000..1c29392da8
--- /dev/null
+++ b/runtime/compiler/fbc.vim
@@ -0,0 +1,27 @@
+" Vim compiler file
+" Compiler: FreeBASIC Compiler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2015 Jan 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "fbc"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=fbc
+CompilerSet errorformat=%-G%.%#Too\ many\ errors\\,\ exiting,
+ \%f(%l)\ %tarning\ %n(%\\d%\\+):\ %m,
+ \%E%f(%l)\ error\ %n:\ %m,
+ \%-Z%p^,
+ \%-C%.%#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/gawk.vim b/runtime/compiler/gawk.vim
new file mode 100644
index 0000000000..a109eb8642
--- /dev/null
+++ b/runtime/compiler/gawk.vim
@@ -0,0 +1,34 @@
+" Vim compiler file
+" Compiler: GNU Awk
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Feb 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "gawk"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=gawk
+CompilerSet errorformat=%Z%.awk:\ %f:%l:\ %p^\ %m,
+ \%Eg%\\=awk:\ %f:%l:\ fatal:\ %m,
+ \%Egawk:\ %f:%l:\ error:\ %m,
+ \%Wgawk:\ %f:%l:\ warning:\ %m,
+ \%Egawk:\ %f:%l:\ %.%#,
+ \gawk:\ %f:%l:\ %tatal:\ %m,
+ \gawk:\ %f:%l:\ %trror:\ %m,
+ \gawk:\ %f:%l:\ %tarning:\ %m,
+ \gawk:\ %tatal:\ %m,
+ \gawk:\ %trror:\ %m,
+ \gawk:\ %tarning:\ %m,
+ \%+C%.%#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/gjs.vim b/runtime/compiler/gjs.vim
new file mode 100644
index 0000000000..e033764030
--- /dev/null
+++ b/runtime/compiler/gjs.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler: GJS (Gnome JavaScript Bindings)
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 Jul 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "gjs"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=gjs
+CompilerSet errorformat=%.%#JS\ %tRROR:\ %m\ @\ %f:%c,
+ \%E%.%#JS\ ERROR:\ %m,
+ \%Z@%f:%l:%c,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/javac.vim b/runtime/compiler/javac.vim
index a50bdca8f2..8507efd67c 100644
--- a/runtime/compiler/javac.vim
+++ b/runtime/compiler/javac.vim
@@ -1,7 +1,7 @@
" Vim compiler file
-" Compiler: javac
+" Compiler: Java Development Kit Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2004 Nov 27
+" Last Change: 2019 Oct 21
if exists("current_compiler")
finish
@@ -12,6 +12,15 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
+let s:cpo_save = &cpo
+set cpo&vim
+
CompilerSet makeprg=javac
+CompilerSet errorformat=%E%f:%l:\ error:\ %m,
+ \%W%f:%l:\ warning:\ %m,
+ \%-Z%p^,
+ \%-C%.%#,
+ \%-G%.%#
-CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jest.vim b/runtime/compiler/jest.vim
new file mode 100644
index 0000000000..fee70b7c55
--- /dev/null
+++ b/runtime/compiler/jest.vim
@@ -0,0 +1,30 @@
+" Vim compiler file
+" Compiler: Jest
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2018 May 15
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "jest"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ jest\ --no-colors
+
+CompilerSet makeprg=jest\ --no-colors
+CompilerSet errorformat=%E\ \ ●\ %m,
+ \%Z\ %\\{4}%.%#Error:\ %f:\ %m\ (%l:%c):%\\=,
+ \%Z\ %\\{6}at\ %\\S%#\ (%f:%l:%c),
+ \%+C\ %\\{4}%\\w%.%#,
+ \%+C\ %\\{4}%[-+]%.%#,
+ \%-C%.%#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jjs.vim b/runtime/compiler/jjs.vim
new file mode 100644
index 0000000000..09a973683a
--- /dev/null
+++ b/runtime/compiler/jjs.vim
@@ -0,0 +1,24 @@
+" Vim compiler file
+" Compiler: Nashorn Shell
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2018 Jan 9
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "jjs"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=jjs
+CompilerSet errorformat=%f:%l:%c\ %m,
+ \%f:%l\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jshint.vim b/runtime/compiler/jshint.vim
new file mode 100644
index 0000000000..865591cd2b
--- /dev/null
+++ b/runtime/compiler/jshint.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler: JSHint
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 Jul 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "jshint"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ jshint\ --verbose
+
+CompilerSet makeprg=jshint\ --verbose
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m\ (%t%n),
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jsonlint.vim b/runtime/compiler/jsonlint.vim
new file mode 100644
index 0000000000..5466dcc7f4
--- /dev/null
+++ b/runtime/compiler/jsonlint.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler: JSON Lint
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 Jul 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "jsonlint"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ jsonlint\ --compact\ --quiet
+
+CompilerSet makeprg=jsonlint\ --compact\ --quiet
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ found:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/ocaml.vim b/runtime/compiler/ocaml.vim
index 7f8a7eab67..faa8af1f5f 100644
--- a/runtime/compiler/ocaml.vim
+++ b/runtime/compiler/ocaml.vim
@@ -1,11 +1,11 @@
" Vim Compiler File
" Compiler: ocaml
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
+" 2020 Mar 28 - Improved error format (Thomas Leonard)
" 2017 Nov 26 - Improved error format (Markus Mottl)
" 2013 Aug 27 - Added a new OCaml error format (Markus Mottl)
-" 2013 Jun 30 - Initial version (Marc Weber)
"
" Marc Weber's comments:
" Setting makeprg doesn't make sense, because there is ocamlc, ocamlopt,
@@ -21,6 +21,7 @@
"
" So having it here makes people opt-in
+
if exists("current_compiler")
finish
endif
@@ -30,6 +31,7 @@ let s:cpo_save = &cpo
set cpo&vim
CompilerSet errorformat =
+ \%EFile\ \"%f\"\\,\ lines\ %*\\d-%l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d\ %.%#,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
diff --git a/runtime/compiler/powershell.vim b/runtime/compiler/powershell.vim
new file mode 100644
index 0000000000..45d5ec2191
--- /dev/null
+++ b/runtime/compiler/powershell.vim
@@ -0,0 +1,84 @@
+" Vim compiler file
+" Compiler: powershell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2020 Mar 30
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "powershell"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+if !exists("g:ps1_makeprg_cmd")
+ if executable('pwsh')
+ " pwsh is the future
+ let g:ps1_makeprg_cmd = 'pwsh'
+ elseif executable('pwsh.exe')
+ let g:ps1_makeprg_cmd = 'pwsh.exe'
+ elseif executable('powershell.exe')
+ let g:ps1_makeprg_cmd = 'powershell.exe'
+ else
+ let g:ps1_makeprg_cmd = ''
+ endif
+endif
+
+if !executable(g:ps1_makeprg_cmd)
+ echoerr "To use the powershell compiler, please set g:ps1_makeprg_cmd to the powershell executable!"
+endif
+
+" Show CategoryInfo, FullyQualifiedErrorId, etc?
+let g:ps1_efm_show_error_categories = get(g:, 'ps1_efm_show_error_categories', 0)
+
+" Use absolute path because powershell requires explicit relative paths
+" (./file.ps1 is okay, but # expands to file.ps1)
+let &l:makeprg = g:ps1_makeprg_cmd .' %:p:S'
+
+" Parse file, line, char from callstacks:
+" Write-Ouput : The term 'Write-Ouput' is not recognized as the name of a
+" cmdlet, function, script file, or operable program. Check the spelling
+" of the name, or if a path was included, verify that the path is correct
+" and try again.
+" At C:\script.ps1:11 char:5
+" + Write-Ouput $content
+" + ~~~~~~~~~~~
+" + CategoryInfo : ObjectNotFound: (Write-Ouput:String) [], CommandNotFoundException
+" + FullyQualifiedErrorId : CommandNotFoundException
+
+" Showing error in context with underlining.
+CompilerSet errorformat=%+G+%m
+" Error summary.
+CompilerSet errorformat+=%E%*\\S\ :\ %m
+" Error location.
+CompilerSet errorformat+=%CAt\ %f:%l\ char:%c
+" Errors that span multiple lines (may be wrapped to width of terminal).
+CompilerSet errorformat+=%C%m
+" Ignore blank/whitespace-only lines.
+CompilerSet errorformat+=%Z\\s%#
+
+if g:ps1_efm_show_error_categories
+ CompilerSet errorformat^=%+G\ \ \ \ +\ %.%#\\s%#:\ %m
+else
+ CompilerSet errorformat^=%-G\ \ \ \ +\ %.%#\\s%#:\ %m
+endif
+
+
+" Parse file, line, char from of parse errors:
+" At C:\script.ps1:22 char:16
+" + Stop-Process -Name "invalidprocess
+" + ~~~~~~~~~~~~~~~
+" The string is missing the terminator: ".
+" + CategoryInfo : ParserError: (:) [], ParseException
+" + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
+CompilerSet errorformat+=At\ %f:%l\ char:%c
+
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2:
diff --git a/runtime/compiler/rhino.vim b/runtime/compiler/rhino.vim
new file mode 100644
index 0000000000..30f3dd3252
--- /dev/null
+++ b/runtime/compiler/rhino.vim
@@ -0,0 +1,30 @@
+" Vim compiler file
+" Compiler: Rhino Shell (JavaScript in Java)
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 Jul 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "rhino"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=java\ -jar\ lib/rhino-X.X.XX.jar\ -w\ -strict
+
+CompilerSet makeprg=rhino
+CompilerSet errorformat=%-Gjs:\ %.%#Compilation\ produced%.%#,
+ \%Ejs:\ \"%f\"\\,\ line\ %l:\ %m,
+ \%Ejs:\ uncaught\ JavaScript\ runtime\ exception:\ %m,
+ \%Wjs:\ warning:\ \"%f\"\\,\ line\ %l:\ %m,
+ \%Zjs:\ %p^,
+ \%Cjs:\ %.%#,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/rubocop.vim b/runtime/compiler/rubocop.vim
new file mode 100644
index 0000000000..7764b4ad20
--- /dev/null
+++ b/runtime/compiler/rubocop.vim
@@ -0,0 +1,23 @@
+" Vim compiler file
+" Compiler: RuboCop
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2019 Jul 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "rubocop"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=rubocop\ --format\ emacs
+CompilerSet errorformat=%f:%l:%c:\ %t:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/shellcheck.vim b/runtime/compiler/shellcheck.vim
new file mode 100644
index 0000000000..7550439aa2
--- /dev/null
+++ b/runtime/compiler/shellcheck.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler: ShellCheck
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Sep 4
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "shellcheck"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=shellcheck\ -f\ gcc
+CompilerSet errorformat=%f:%l:%c:\ %trror:\ %m\ [SC%n],
+ \%f:%l:%c:\ %tarning:\ %m\ [SC%n],
+ \%f:%l:%c:\ %tote:\ %m\ [SC%n],
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/sml.vim b/runtime/compiler/sml.vim
new file mode 100644
index 0000000000..c7e1b1bf16
--- /dev/null
+++ b/runtime/compiler/sml.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler: SML/NJ Compiler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Feb 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "sml"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=sml
+CompilerSet errorformat=%f:%l.%c-%\\d%\\+.%\\d%\\+\ %trror:\ %m,
+ \%f:%l.%c\ %trror:\ %m,
+ \%trror:\ %m
+ \%f:%l.%c-%\\d%\\+.%\\d%\\+\ %tarning:\ %m,
+ \%f:%l.%c\ %tarning:\ %m,
+ \%tarning:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/standard.vim b/runtime/compiler/standard.vim
new file mode 100644
index 0000000000..50b7c97ca7
--- /dev/null
+++ b/runtime/compiler/standard.vim
@@ -0,0 +1,16 @@
+" Vim compiler file
+" Compiler: Standard for JavaScript
+" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
+" Last Change: 2020 August 20
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "standard"
+
+if exists(":CompilerSet") != 2
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+CompilerSet makeprg=npx\ standard
+CompilerSet errorformat=%f:%l:%c:\ %m,%-G%.%#
diff --git a/runtime/compiler/stylelint.vim b/runtime/compiler/stylelint.vim
new file mode 100644
index 0000000000..784a61d46a
--- /dev/null
+++ b/runtime/compiler/stylelint.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler: Stylelint
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Jun 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "stylelint"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ stylelint\ --formatter\ compact
+
+CompilerSet makeprg=stylelint\ --formatter\ compact
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ -\ %m,
+ \%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ -\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/tidy.vim b/runtime/compiler/tidy.vim
index 75be8b83d9..3f8e68ebf2 100644
--- a/runtime/compiler/tidy.vim
+++ b/runtime/compiler/tidy.vim
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: HTML Tidy
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2016 Apr 21
+" Last Change: 2020 Sep 4
if exists("current_compiler")
finish
@@ -12,8 +12,15 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
-CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %:S
+let s:cpo_save = &cpo
+set cpo&vim
-" foo.html:8:1: Warning: inserting missing 'foobar' element
-" foo.html:9:2: Error: <foobar> is not recognized!
-CompilerSet errorformat=%f:%l:%c:\ %trror:%m,%f:%l:%c:\ %tarning:%m,%-G%.%#
+CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes
+CompilerSet errorformat=%f:%l:%c:\ %trror:\ %m,
+ \%f:%l:%c:\ %tarning:\ %m,
+ \%f:%l:%c:\ %tnfo:\ %m,
+ \%f:%l:%c:\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/typedoc.vim b/runtime/compiler/typedoc.vim
new file mode 100644
index 0000000000..3be06f3d4e
--- /dev/null
+++ b/runtime/compiler/typedoc.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler: TypeDoc
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Feb 10
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "typedoc"
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ typedoc
+
+CompilerSet makeprg=typedoc
+CompilerSet errorformat=%EError:\ %f(%l),
+ \%WWarning:\ %f(%l),
+ \%+IDocumentation\ generated\ at\ %f,
+ \%Z\ %m,
+ \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt
index a3d979e519..df91b8d065 100644
--- a/runtime/doc/arabic.txt
+++ b/runtime/doc/arabic.txt
@@ -72,7 +72,7 @@ Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
(without Form-B, Arabic will _NOT_ be usable). It is highly
recommended that users search for so-called 'ISO-10646-1' fonts.
Do an Internet search or check www.arabeyes.org for further
-info on where to attain the necessary Arabic fonts.
+info on where to obtain the necessary Arabic fonts.
Font Installation
@@ -118,7 +118,7 @@ o Setting the appropriate character Encoding
>
:set encoding=utf-8
<
- to your vimrc file (entering the command manually into you VIM
+ to your vimrc file (entering the command manually into your Vim
window is highly discouraged). In short, include ':set
encoding=utf-8' to your vimrc file.
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 01b21aa085..bf94383ec4 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -215,6 +215,8 @@ BufAdd Just after creating a new buffer which is
added to the buffer list, or adding a buffer
to the buffer list, a buffer in the buffer
list was renamed.
+ Not triggered for the initial buffers created
+ during startup.
Before |BufEnter|.
NOTE: Current buffer "%" may be different from
the buffer being created "<afile>".
@@ -461,7 +463,7 @@ CompleteDone After Insert mode completion is done. Either
*CursorHold*
CursorHold When the user doesn't press a key for the time
- specified with 'updatetime'. Not re-triggered
+ specified with 'updatetime'. Not triggered
until the user has pressed a key (i.e. doesn't
fire every 'updatetime' ms if you leave Vim to
make some coffee. :) See |CursorHold-example|
@@ -707,7 +709,7 @@ InsertEnter Just before starting Insert mode. Also for
string.
*InsertLeavePre*
InsertLeavePre Just before leaving Insert mode. Also when
- using CTRL-O |i_CTRL-O|. Be caseful not to
+ using CTRL-O |i_CTRL-O|. Be careful not to
change mode or use `:normal`, it will likely
cause trouble.
*InsertLeave*
@@ -1207,8 +1209,8 @@ name!
:aug[roup]! {name} Delete the autocmd group {name}. Don't use
this if there is still an autocommand using
this group! You will get a warning if doing
- it anyway. when the group is the current group
- you will get error E936.
+ it anyway. When the group is the current
+ group you will get error E936.
To enter autocommands for a specific group, use this method:
1. Select the group with ":augroup {name}".
@@ -1267,9 +1269,18 @@ option will not cause any commands to be executed.
*:doautoa* *:doautoall*
:doautoa[ll] [<nomodeline>] [group] {event} [fname]
Like ":doautocmd", but apply the autocommands to each
- loaded buffer. Note that [fname] is used to select
- the autocommands, not the buffers to which they are
- applied.
+ loaded buffer. The current buffer is done last.
+
+ Note that [fname] is used to select the autocommands,
+ not the buffers to which they are applied. Example: >
+ augroup mine
+ autocmd!
+ autocmd FileType * echo expand('<amatch>')
+ augroup END
+ doautoall mine FileType Loaded-Buffer
+< Sourcing this script, you'll see as many
+ "Loaded-Buffer" echoed as there are loaded buffers.
+
Careful: Don't use this for autocommands that delete a
buffer, change to another buffer or change the
contents of a buffer; the result is unpredictable.
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 310d244fbc..19a8be1102 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -141,7 +141,7 @@ commands, except "gJ", delete any leading white space on the next line. If
the 'joinspaces' option is on, these commands insert two spaces after a '.',
'!' or '?'.
The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting
-spaces before and after a multi-byte character |fo-table|.
+spaces before and after a multibyte character |fo-table|.
The '[ mark is set at the end of the first line that was joined, '] at the end
of the resulting line.
@@ -197,7 +197,7 @@ gR Enter Virtual Replace mode: Each character you type
start insert (for {Visual} see |Visual-mode|).
*v_r*
-{Visual}["x]r{char} Replace all selected characters by {char}.
+{Visual}r{char} Replace all selected characters by {char}.
*v_C*
{Visual}["x]C Delete the highlighted lines [into register x] and
@@ -610,6 +610,8 @@ Directory for temporary files is created in the first suitable directory of:
|cmdline-ranges|.
See |:s_flags| for [flags].
+ The delimiter doesn't need to be /, see
+ |pattern-delimiter|.
:[range]s[ubstitute] [flags] [count]
:[range]&[&][flags] [count] *:&*
@@ -621,6 +623,8 @@ Directory for temporary files is created in the first suitable directory of:
The space between `:substitute` and the 'c', 'g',
'i', 'I' and 'r' flags isn't required, but in scripts
it's a good idea to keep it to avoid confusion.
+ Also see the two and three letter commands to repeat
+ :substitute below |:substitute-repeat|.
:[range]~[&][flags] [count] *:~*
Repeat last substitute with same substitute string
@@ -744,7 +748,7 @@ This deletes "TESTING" from all lines, but only one per line.
For compatibility with Vi these two exceptions are allowed:
"\/{string}/" and "\?{string}?" do the same as "//{string}/r".
"\&{string}&" does the same as "//{string}/".
- *E146*
+ *pattern-delimiter* *E146*
Instead of the '/' which surrounds the pattern and replacement string, you
can use any other single-byte character, but not an alphanumeric character,
'\', '"' or '|'. This is useful if you want to include a '/' in the search
@@ -841,20 +845,26 @@ either the first or second pattern in parentheses did not match, so either
*:sge* *:sgi* *:sgI* *:sgl* *:sgn* *:sgp* *:sgr* *:sI* *:si*
*:sic* *:sIc* *:sie* *:sIe* *:sIg* *:sIl* *:sin* *:sIn* *:sIp*
*:sip* *:sIr* *:sir* *:sr* *:src* *:srg* *:sri* *:srI* *:srl*
- *:srn* *:srp*
+ *:srn* *:srp* *:substitute-repeat*
2-letter and 3-letter :substitute commands ~
+These commands repeat the previous `:substitute` command with the given flags.
+The first letter is always "s", followed by one or two of the possible flag
+characters. For example `:sce` works like `:s///ce`. The table lists the
+possible combinations, not all flags are possible, because the command is
+short for another command.
+
List of :substitute commands
| c e g i I n p l r
- | c :sc :sce :scg :sci :scI :scn :scp :scl ---
+ | c :sc :sce :scg :sci :scI :scn :scp :scl
| e
| g :sgc :sge :sg :sgi :sgI :sgn :sgp :sgl :sgr
- | i :sic :sie --- :si :siI :sin :sip --- :sir
+ | i :sic :sie :si :siI :sin :sip :sir
| I :sIc :sIe :sIg :sIi :sI :sIn :sIp :sIl :sIr
| n
| p
| l
- | r :src --- :srg :sri :srI :srn :srp :srl :sr
+ | r :src :srg :sri :srI :srn :srp :srl :sr
Exceptions:
:scr is `:scriptnames`
@@ -959,9 +969,9 @@ inside of strings can change! Also see 'softtabstop' option. >
5. Copying and moving text *copy-move*
*quote*
-"{a-zA-Z0-9.%#:-"} Use register {a-zA-Z0-9.%#:-"} for next delete, yank
- or put (use uppercase character to append with
- delete and yank) ({.%#:} only work with put).
+"{register} Use {register} for next delete, yank or put. Use
+ an uppercase character to append with delete and yank.
+ Registers ".", "%", "#" and ":" only work with put.
*:reg* *:registers*
:reg[isters] Display the type and contents of all numbered and
@@ -1140,7 +1150,7 @@ Rationale: In Vi the "y" command followed by a backwards motion would
With a linewise yank command the cursor is put in the first line, but the
column is unmodified, thus it may not be on the first yanked character.
-There are ten types of registers: *registers* *E354*
+There are ten types of registers: *registers* *{register}* *E354*
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
@@ -1400,7 +1410,7 @@ text. Put it in your autoload directory, e.g. ~/.vim/autoload/format.vim: >
func! format#Format()
" only reformat on explicit gq command
if mode() != 'n'
- " fall back to Vims internal reformatting
+ " fall back to Vim's internal reformatting
return 1
endif
let lines = getline(v:lnum, v:lnum + v:count - 1)
@@ -1573,23 +1583,31 @@ can separate the option letters with commas for readability.
letter meaning when present in 'formatoptions' ~
+ *fo-t*
t Auto-wrap text using textwidth
+ *fo-c*
c Auto-wrap comments using textwidth, inserting the current comment
leader automatically.
+ *fo-r*
r Automatically insert the current comment leader after hitting
<Enter> in Insert mode.
+ *fo-o*
o Automatically insert the current comment leader after hitting 'o' or
'O' in Normal mode.
+ *fo-q*
q Allow formatting of comments with "gq".
Note that formatting will not change blank lines or lines containing
only the comment leader. A new paragraph starts after such a line,
or when the comment leader changes.
+ *fo-w*
w Trailing white space indicates a paragraph continues in the next line.
A line that ends in a non-white character ends a paragraph.
+ *fo-a*
a Automatic formatting of paragraphs. Every time text is inserted or
deleted the paragraph will be reformatted. See |auto-format|.
When the 'c' flag is present this only happens for recognized
comments.
+ *fo-n*
n When formatting text, recognize numbered lists. This actually uses
the 'formatlistpat' option, thus any kind of list can be used. The
indent of the text after the number is used for the next line. The
@@ -1600,6 +1618,7 @@ n When formatting text, recognize numbered lists. This actually uses
1. the first item
wraps
2. the second item
+< *fo-2*
2 When formatting text, use the indent of the second line of a paragraph
for the rest of the paragraph, instead of the indent of the first
line. This supports paragraphs in which the first line has a
@@ -1609,36 +1628,46 @@ n When formatting text, recognize numbered lists. This actually uses
second line of the same paragraph
third line.
< This also works inside comments, ignoring the comment leader.
+ *fo-v*
v Vi-compatible auto-wrapping in insert mode: Only break a line at a
blank that you have entered during the current insert command. (Note:
this is not 100% Vi compatible. Vi has some "unexpected features" or
bugs in this area. It uses the screen column instead of the line
column.)
+ *fo-b*
b Like 'v', but only auto-wrap if you enter a blank at or before
the wrap margin. If the line was longer than 'textwidth' when you
started the insert, or you do not enter a blank in the insert before
reaching 'textwidth', Vim does not perform auto-wrapping.
+ *fo-l*
l Long lines are not broken in insert mode: When a line was longer than
'textwidth' when the insert command started, Vim does not
automatically format it.
-m Also break at a multi-byte character above 255. This is useful for
+ *fo-m*
+m Also break at a multibyte character above 255. This is useful for
Asian text where every character is a word on its own.
-M When joining lines, don't insert a space before or after a multi-byte
+ *fo-M*
+M When joining lines, don't insert a space before or after a multibyte
character. Overrules the 'B' flag.
-B When joining lines, don't insert a space between two multi-byte
+ *fo-B*
+B When joining lines, don't insert a space between two multibyte
characters. Overruled by the 'M' flag.
+ *fo-1*
1 Don't break a line after a one-letter word. It's broken before it
instead (if possible).
+ *fo-]*
] Respect textwidth rigorously. With this flag set, no line can be
longer than textwidth, unless line-break-prohibition rules make this
impossible. Mainly for CJK scripts and works only if 'encoding' is
"utf-8".
+ *fo-j*
j Where it makes sense, remove a comment leader when joining lines. For
example, joining:
int i; // the index ~
// in the list ~
Becomes:
int i; // the index in the list ~
+ *fo-p*
p Don't break lines at single spaces that follow periods. This is
intended to complement 'joinspaces' and |cpo-J|, for prose with
sentences separated by two spaces. For example, with 'textwidth' set
@@ -1696,7 +1725,7 @@ Some examples:
Automatic formatting *auto-format* *autoformat*
When the 'a' flag is present in 'formatoptions' text is formatted
-automatically when inserting text or deleting text. This works nice for
+automatically when inserting text or deleting text. This works nicely for
editing text paragraphs. A few hints on how to use this:
- You need to properly define paragraphs. The simplest is paragraphs that are
@@ -1783,6 +1812,8 @@ found here: |sort()|, |uniq()|.
When /{pattern}/ is specified and there is no [r] flag
the text matched with {pattern} is skipped, so that
you sort on what comes after the match.
+ 'ignorecase' applies to the pattern, but 'smartcase'
+ is not used.
Instead of the slash any non-letter can be used.
For example, to sort on the second comma-separated
field: >
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 098245b5a8..ae43aeeb25 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -119,7 +119,7 @@ CTRL-K {char1} {char2} *c_CTRL-K*
enter digraph (see |digraphs|). When {char1} is a special
key, the code for that key is inserted in <> form.
-CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
+CTRL-R {register} *c_CTRL-R* *c_<C-R>*
Insert the contents of a numbered or named register. Between
typing CTRL-R and the second character '"' will be displayed
to indicate that you are expected to enter the name of a
@@ -178,8 +178,8 @@ CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c_<C-R>_<C-L>*
*c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>*
*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>*
-CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
-CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
+CTRL-R CTRL-R {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
+CTRL-R CTRL-O {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
Insert register or object under the cursor. Works like
|c_CTRL-R| but inserts the text literally. For example, if
register a contains "xy^Hz" (where ^H is a backspace),
@@ -443,6 +443,10 @@ emulate it. For example, this mimics autolist=ambiguous:
This will find the longest match with the first 'wildchar', then list all
matching files with the next.
+ *complete-script-local-functions*
+When completing user function names, prepend "s:" to find script-local
+functions.
+
*suffixes*
For file name completion you can use the 'suffixes' option to set a priority
between files with almost the same name. If there are multiple matches,
@@ -553,14 +557,17 @@ followed by another Vim command:
:command
:cscope
:debug
+ :eval
:folddoopen
:folddoclosed
:function
:global
:help
+ :helpgrep
:lcscope
:ldo
:lfdo
+ :lhelpgrep
:make
:normal
:perlfile
@@ -572,6 +579,7 @@ followed by another Vim command:
:read !
:scscope
:sign
+ :terminal
:vglobal
:windo
:write !
@@ -752,7 +760,7 @@ three lines: >
<
Visual Mode and Range *v_:*
-
+ *:star-visual-range*
{Visual}: Starts a command-line with the Visual selected lines as a
range. The code `:'<,'>` is used for this range, which makes
it possible to select a similar line from the command-line
@@ -824,34 +832,37 @@ it, no matter how many backslashes.
\\# \#
Also see |`=|.
- *:<cword>* *<cword>* *:<cWORD>* *<cWORD>*
- *:<cexpr>* *<cexpr>* *:<cfile>* *<cfile>*
- *:<afile>* *<afile>* *:<abuf>* *<abuf>*
- *:<amatch>* *<amatch>*
- *:<sfile>* *<sfile>* *:<slnum>* *<slnum>*
- *:<sflnum>* *<sflnum>* *E499* *E500*
+ *E499* *E500*
Note: these are typed literally, they are not special keys!
+ *:<cword>* *<cword>*
<cword> is replaced with the word under the cursor (like |star|)
+ *:<cWORD>* *<cWORD>*
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
+ *:<cexpr>* *<cexpr>*
<cexpr> is replaced with the word under the cursor, including more
to form a C expression. E.g., when the cursor is on "arg"
of "ptr->arg" then the result is "ptr->arg"; when the
cursor is on "]" of "list[idx]" then the result is
"list[idx]". This is used for |v:beval_text|.
+ *:<cfile>* *<cfile>*
<cfile> is replaced with the path name under the cursor (like what
|gf| uses)
+ *:<afile>* *<afile>*
<afile> When executing autocommands, is replaced with the file name
of the buffer being manipulated, or the file for a read or
write. *E495*
+ *:<abuf>* *<abuf>*
<abuf> When executing autocommands, is replaced with the currently
effective buffer number (for ":r file" and ":so file" it is
the current buffer, the file being read/sourced is not in a
buffer). *E496*
+ *:<amatch>* *<amatch>*
<amatch> When executing autocommands, is replaced with the match for
which this autocommand was executed. *E497*
It differs from <afile> only when the file name isn't used
to match with (for FileType, Syntax and SpellFileMissing
events).
+ *:<sfile>* *<sfile>*
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file. *E498*
When executing a function, is replaced with:
@@ -860,10 +871,12 @@ Note: these are typed literally, they are not special keys!
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
Note that filename-modifiers are useless when <sfile> is
used inside a function.
+ *:<slnum>* *<slnum>*
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
the start of the function.
+ *:<sflnum>* *<sflnum>*
<sflnum> When executing a script, is replaced with the line number.
It differs from <slnum> in that <sflnum> is replaced with
the script line number in any situation. *E961*
@@ -898,7 +911,7 @@ These modifiers can be given, in this order:
separator is removed. Thus ":p:h" on a directory name results
on the directory name itself (without trailing slash).
When the file name is an absolute path (starts with "/" for
- Unix; "x:\" for Windows), that part is not removed.
+ Unix; "x:\" for Win32), that part is not removed.
When there is no head (path is relative to current directory)
the result is empty.
:t Tail of the file name (last component of the name). Must
@@ -1074,7 +1087,8 @@ CTRL-C Continue in Command-line mode. The command-line under the
in Normal mode. There is no redraw, thus the window will
remain visible.
:quit Discard the command line and go back to Normal mode.
- ":close", ":exit", ":xit" and CTRL-\ CTRL-N also work.
+ ":close", CTRL-W c, ":exit", ":xit" and CTRL-\ CTRL-N also
+ work.
:qall Quit Vim, unless there are changes in some buffer.
:qall! Quit Vim, discarding changes to any buffer.
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 3544882ceb..a9e2a0d522 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -57,11 +57,12 @@ reset to the global value.
The options can still be overruled from a modeline when re-editing the file.
However, 'foldmethod' and 'wrap' won't be set from a modeline when 'diff' is
set.
+See `:diffoff` for an easy way to revert the options.
The differences shown are actually the differences in the buffer. Thus if you
make changes after loading a file, these will be included in the displayed
diffs. You might have to do ":diffupdate" now and then, not all changes are
-immediately taken into account.
+immediately taken into account, especially when using an external diff command.
In your vimrc file you could do something special when Vim was started in
diff mode. You could use a construct like this: >
diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt
index 271b8c2597..b7dc16341d 100644
--- a/runtime/doc/digraph.txt
+++ b/runtime/doc/digraph.txt
@@ -30,6 +30,8 @@ An alternative is using the 'keymap' option.
it is the Unicode character, see |digraph-encoding|.
Example: >
:digr e: 235 a: 228
+< You can use `:exe` to enter a hex number: >
+ :exe 'digr += ' .. 0x2A72
< Avoid defining a digraph with '_' (underscore) as the
first character, it has a special meaning in the
future.
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index aa964a521f..4700af41b7 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -63,10 +63,14 @@ g CTRL-G Prints the current position of the cursor in five
ways: Column, Line, Word, Character and Byte. If the
number of Characters and Bytes is the same then the
Character position is omitted.
+
If there are characters in the line that take more
than one position on the screen (<Tab> or special
- character), both the "real" column and the screen
- column are shown, separated with a dash.
+ character), or characters using more than one byte per
+ column (characters above 0x7F when 'encoding' is
+ utf-8), both the byte column and the screen column are
+ shown, separated by a dash.
+
Also see the 'ruler' option and the |wordcount()|
function.
@@ -298,10 +302,13 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
*gF*
[count]gF Same as "gf", except if a number follows the file
name, then the cursor is positioned on that line in
- the file. The file name and the number must be
- separated by a non-filename (see 'isfname') and
- non-numeric character. White space between the
- filename, the separator and the number are ignored.
+ the file.
+ The file name and the number must be separated by a
+ non-filename (see 'isfname') and non-numeric
+ character. " line " is also recognized, like it is
+ used in the output of `:verbose command UserCmd`
+ White space between the filename, the separator and
+ the number are ignored.
Examples:
eval.c:10 ~
eval.c @ 20 ~
@@ -439,6 +446,9 @@ This edits the same file again with 'fileformat' set to "unix". >
:w ++enc=latin1 newfile
This writes the current buffer to "newfile" in latin1 format.
+The message given when writing a file will show "[converted]" when
+'fileencoding' or the value specified with ++enc differs from 'encoding'.
+
There may be several ++opt arguments, separated by white space. They must all
appear before any |+cmd| argument.
@@ -508,15 +518,16 @@ If you start editing a new file and the 'fileformats' option is not empty
(which is the default), Vim will try to detect whether the lines in the file
are separated by the specified formats. When set to "unix,dos", Vim will
check for lines with a single <NL> (as used on Unix) or by a <CR><NL> pair
-(Windows). Only when ALL lines end in <CR><NL>, 'fileformat' is set to "dos",
-otherwise it is set to "unix". When 'fileformats' includes "mac", and no <NL>
-characters are found in the file, 'fileformat' is set to "mac".
+(MS-Windows). Only when ALL lines end in <CR><NL>, 'fileformat' is
+set to "dos", otherwise it is set to "unix". When 'fileformats' includes
+"mac", and no <NL> characters are found in the file, 'fileformat' is set to
+"mac".
-If the 'fileformat' option is set to "dos" on non-Windows systems the message
-"[dos format]" is shown to remind you that something unusual is happening. On
-Windows systems you get the message "[unix format]" if 'fileformat' is set to
-"unix". On all systems but the Macintosh you get the message "[mac format]"
-if 'fileformat' is set to "mac".
+If the 'fileformat' option is set to "dos" on non-MS-Windows systems the
+message "[dos format]" is shown to remind you that something unusual is
+happening. On MS-Windows systems you get the message "[unix format]" if
+'fileformat' is set to "unix". On all systems but the Macintosh you get the
+message "[mac format]" if 'fileformat' is set to "mac".
If the 'fileformats' option is empty and DOS format is used, but while reading
a file some lines did not end in <CR><NL>, "[CR missing]" will be included in
@@ -607,7 +618,7 @@ list of the current window.
:args ## x
< This will add the "x" item and sort the new list.
-:argd[elete] {pattern} .. *:argd* *:argdelete* *E480*
+:argd[elete] {pattern} .. *:argd* *:argdelete* *E480* *E610*
Delete files from the argument list that match the
{pattern}s. {pattern} is used like a file pattern,
see |file-pattern|. "%" can be used to delete the
@@ -617,7 +628,7 @@ list of the current window.
Example: >
:argdel *.obj
-:[range]argd[elete] Delete the {range} files from the argument list.
+:[range]argd[elete] Delete the [range] files from the argument list.
Example: >
:10,$argdel
< Deletes arguments 10 and further, keeping 1-9. >
@@ -965,7 +976,7 @@ to write anyway add a '!' to the command.
*write-permissions*
When writing a new file the permissions are read-write. For unix the mask is
-0666 with additionally umask applied. When writing a file that was read Vim
+0o666 with additionally umask applied. When writing a file that was read Vim
will preserve the permissions, but clear the s-bit.
*write-readonly*
@@ -984,7 +995,7 @@ original file fails, there will be an error message telling you that you
lost the original file.
*DOS-format-write*
-If the 'fileformat' is "dos", <CR> <NL> is used for <EOL>. This is default
+If the 'fileformat' is "dos", <CR><NL> is used for <EOL>. This is default
for Windows. On other systems the message "[dos format]" is shown to
remind you that an unusual <EOL> was used.
*Unix-format-write*
@@ -1018,11 +1029,11 @@ When the file name is actually a device name, Vim will not make a backup (that
would be impossible). You need to use "!", since the device already exists.
Example for Unix: >
:w! /dev/lpt0
-and Windows: >
+and MS-Windows: >
:w! lpt0
For Unix a device is detected when the name doesn't refer to a normal file or
a directory. A fifo or named pipe also looks like a device to Vim.
-For Windows the device is detected by its name:
+For MS-Windows the device is detected by its name:
CON
CLOCK$
NUL
@@ -1036,9 +1047,9 @@ The names can be in upper- or lowercase.
*:q* *:quit*
:q[uit] Quit the current window. Quit Vim if this is the last
- window. This fails when changes have been made and
- Vim refuses to |abandon| the current buffer, and when
- the last file in the argument list has not been
+ |edit-window|. This fails when changes have been made
+ and Vim refuses to |abandon| the current buffer, and
+ when the last file in the argument list has not been
edited.
If there are other tab pages and quitting the last
window in the current tab page the current tab page is
@@ -1063,18 +1074,22 @@ The names can be in upper- or lowercase.
code. See |:cq|.
*:wq*
-:wq [++opt] Write the current file and quit. Writing fails when
- the file is read-only or the buffer does not have a
- name. Quitting fails when the last file in the
- argument list has not been edited.
-
-:wq! [++opt] Write the current file and quit. Writing fails when
- the current buffer does not have a name.
-
-:wq [++opt] {file} Write to {file} and quit. Quitting fails when the
+:wq [++opt] Write the current file and close the window. If this
+ was the last |edit-window| Vim quits.
+ Writing fails when the file is read-only or the buffer
+ does not have a name. Quitting fails when the last
+ file in the argument list has not been edited.
+
+:wq! [++opt] Write the current file and close the window. If this
+ was the last |edit-window| Vim quits. Writing fails
+ when the current buffer does not have a name.
+
+:wq [++opt] {file} Write to {file} and close the window. If this was the
+ last |edit-window| Vim quits. Quitting fails when the
last file in the argument list has not been edited.
-:wq! [++opt] {file} Write to {file} and quit.
+:wq! [++opt] {file} Write to {file} and close the current window. Quit
+ Vim if this was the last |edit-window|.
:[range]wq[!] [++opt] [file]
Same as above, but only write the lines in [range].
@@ -1091,10 +1106,10 @@ The names can be in upper- or lowercase.
Same as :xit.
*ZZ*
-ZZ Write current file, if modified, and quit (same as
- ":x"). (Note: If there are several windows for the
- current file, the file is written if it was modified
- and the window is closed).
+ZZ Write current file, if modified, and close the current
+ window (same as ":x").
+ If there are several windows for the current file,
+ only the current window is closed.
*ZQ*
ZQ Quit without checking for changes (same as ":q!").
@@ -1195,13 +1210,13 @@ For versions of Vim where browsing is not supported, the command is executed
unmodified.
*browsefilter*
-For Windows you can modify the filters that are used in the browse dialog. By
-setting the g:browsefilter or b:browsefilter variables, you can change the
-filters globally or locally to the buffer. The variable is set to a string in
-the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the
-text that appears in the "Files of Type" comboBox, and {pattern} is the
-pattern which filters the filenames. Several patterns can be given, separated
-by ';'.
+For MS-Windows you can modify the filters that are used in the browse
+dialog. By setting the g:browsefilter or b:browsefilter variables, you can
+change the filters globally or locally to the buffer. The variable is set to
+a string in the format "{filter label}\t{pattern};{pattern}\n" where {filter
+label} is the text that appears in the "Files of Type" comboBox, and {pattern}
+is the pattern which filters the filenames. Several patterns can be given,
+separated by ';'.
For example, to have only Vim files in the dialog, you could use the following
command: >
@@ -1248,7 +1263,7 @@ exist, the next-higher scope in the hierarchy applies.
Does not change the meaning of an already opened file,
because its full path name is remembered. Files from
the |arglist| may change though!
- On Windows this also changes the active drive.
+ On MS-Windows this also changes the active drive.
To change to the directory of the current file: >
:cd %:h
<
@@ -1279,7 +1294,7 @@ exist, the next-higher scope in the hierarchy applies.
*:lch* *:lchdir*
:lch[dir][!] Same as |:lcd|.
- *:lcd-*
+ *:lcd-*
:lc[d][!] - Change to the previous current directory (before the
previous ":lcd {path}" command).
@@ -1323,7 +1338,7 @@ to 0, 'modeline' off, 'expandtab' off). Setting the 'binary' option has the
same effect. Don't forget to do this before reading the file.
There are a few things to remember when editing binary files:
-- When editing executable files the number of characters must not change.
+- When editing executable files the number of bytes must not change.
Use only the "R" or "r" command to change text. Do not delete characters
with "x" or by backspacing.
- Set the 'textwidth' option to 0. Otherwise lines will unexpectedly be
@@ -1335,8 +1350,8 @@ There are a few things to remember when editing binary files:
It is also possible that you get an "out of memory" error when reading the
file.
- Make sure the 'binary' option is set BEFORE loading the
- file. Otherwise both <CR> <NL> and <NL> are considered to end a line
- and when the file is written the <NL> will be replaced with <CR> <NL>.
+ file. Otherwise both <CR><NL> and <NL> are considered to end a line
+ and when the file is written the <NL> will be replaced with <CR><NL>.
- <Nul> characters are shown on the screen as ^@. You can enter them with
"CTRL-V CTRL-@" or "CTRL-V 000".
- To insert a <NL> character in the file split a line. When writing the
@@ -1372,7 +1387,7 @@ focus.
If you want to automatically reload a file when it has been changed outside of
Vim, set the 'autoread' option. This doesn't work at the moment you write the
file though, only when the file wasn't changed inside of Vim.
-
+ *ignore-timestamp*
If you do not want to be asked or automatically reload the file, you can use
this: >
set buftype=nofile
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index b8dcfd0ff4..b4630a97bb 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -17,7 +17,9 @@ Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
*E712*
There are six types of variables:
-Number A 32 or 64 bit signed number. |expr-number| *Number*
+ *Number* *Integer*
+Number A 32 or 64 bit signed number. |expr-number|
+ The number of bits is available in |v:numbersize|.
Examples: -123 0x10 0177 0b1011
Float A floating point number. |floating-point-format| *Float*
@@ -73,8 +75,9 @@ base, use |str2nr()|.
*TRUE* *FALSE* *Boolean*
For boolean operators Numbers are used. Zero is FALSE, non-zero is TRUE.
-You can also use |v:false| and |v:true|. When TRUE is returned from a
-function it is the Number one, FALSE is the number zero.
+You can also use |v:false| and |v:true|.
+When TRUE is returned from a function it is the Number one, FALSE is the
+number zero.
Note that in the command: >
:if "foo"
@@ -110,7 +113,7 @@ You will not get an error if you try to change the type of a variable.
1.2 Function references ~
- *Funcref* *E695* *E718*
+ *Funcref* *E695* *E718*
A Funcref variable is obtained with the |function()| function, the |funcref()|
function or created with the lambda expression |expr-lambda|. It can be used
in an expression in the place of a function name, before the parenthesis
@@ -536,6 +539,8 @@ adict.
Weeding out entries from a Dictionary can be done with |filter()|: >
:call filter(dict, 'v:val =~ "x"')
This removes all entries from "dict" with a value not matching 'x'.
+This can also be used to remove all entries: >
+ call filter(dict, 0)
Dictionary function ~
@@ -688,7 +693,7 @@ Example: >
All expressions within one level are parsed from left to right.
-expr1 *expr1* *E109*
+expr1 *expr1* *trinary* *E109*
-----
expr2 ? expr1 : expr1
@@ -941,11 +946,14 @@ in any order. E.g., these are all possible:
expr8[expr1] item of String or |List| *expr-[]* *E111*
*subscript*
-
+In legacy Vim script:
If expr8 is a Number or String this results in a String that contains the
-expr1'th single byte from expr8. expr8 is used as a String, expr1 as a
-Number. This doesn't recognize multi-byte encodings, see `byteidx()` for
-an alternative, or use `split()` to turn the string into a list of characters.
+expr1'th single byte from expr8. expr8 is used as a String (a number is
+automatically converted to a String), expr1 as a Number. This doesn't
+recognize multibyte encodings, see `byteidx()` for an alternative, or use
+`split()` to turn the string into a list of characters. Example, to get the
+byte under the cursor: >
+ :let c = getline(".")[col(".") - 1]
Index zero gives the first byte. This is like it works in C. Careful:
text column numbers start with one! Example, to get the byte under the
@@ -968,10 +976,13 @@ error.
expr8[expr1a : expr1b] substring or sublist *expr-[:]*
-If expr8 is a Number or String this results in the substring with the bytes
-from expr1a to and including expr1b. expr8 is used as a String, expr1a and
-expr1b are used as a Number. This doesn't recognize multi-byte encodings, see
-|byteidx()| for computing the indexes.
+If expr8 is a String this results in the substring with the bytes or
+characters from expr1a to and including expr1b. expr8 is used as a String,
+expr1a and expr1b are used as a Number.
+
+In legacy Vim script the indexes are byte indexes. This doesn't recognize
+multibyte encodings, see |byteidx()| for computing the indexes. If expr8 is
+a Number it is first converted to a String.
If expr1a is omitted zero is used. If expr1b is omitted the length of the
string minus one is used.
@@ -984,6 +995,7 @@ expr1b is smaller than expr1a the result is an empty string.
Examples: >
:let c = name[-1:] " last byte of a string
+ :let c = name[0:-1] " the whole string
:let c = name[-2:-2] " last but one byte of a string
:let s = line(".")[4:] " from the fifth byte to the end
:let s = s[:-3] " remove last two bytes
@@ -1237,7 +1249,7 @@ the following ways:
The arguments are optional. Example: >
:let F = {-> 'error function'}
- :echo F()
+ :echo F('ignored')
< error function
*closure*
Lambda expressions can access outer scope variables and arguments. This is
@@ -1292,6 +1304,7 @@ An internal variable is explicitly destroyed with the ":unlet" command
Using a name that is not an internal variable or refers to a variable that has
been destroyed results in an error.
+ *variable-scope*
There are several name spaces for variables. Which one is to be used is
specified by what is prepended:
@@ -1664,6 +1677,9 @@ v:fcs_choice What should happen after a |FileChangedShell| event was
The default is empty. If another (invalid) value is used then
Vim behaves like it is empty, there is no warning message.
+ *v:fname* *fname-variable*
+v:fname The file name set by 'includeexpr'. Empty otherwise.
+
*v:fname_in* *fname_in-variable*
v:fname_in The name of the input file. Valid while evaluating:
option used for ~
@@ -1792,6 +1808,16 @@ v:null Special value used to put "null" in JSON and NIL in msgpack.
operator) and to zero when used as a Number (e.g. in |expr5|
or |expr7| when used with numeric operators). Read-only.
+ *v:numbermax* *numbermax-variable*
+v:numbermax Maximum value of a number.
+
+ *v:numbermin* *numbermin-variable*
+v:numbermin Minimum value of a number (negative)
+
+ *v:numbersize* *numbersize-variable*
+v:numbersize Number of bits in a Number. This is normally 64, but on some
+ systems it may be 32.
+
*v:oldfiles* *oldfiles-variable*
v:oldfiles List of file names that is loaded from the |shada| file on
startup. These are the files that Vim remembers marks for.
@@ -2189,12 +2215,14 @@ getjumplist([{winnr} [, {tabnr}]])
List list of jump list items
getline({lnum}) String line {lnum} of current buffer
getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
-getloclist({nr} [, {what}]) List list of location list items
+getloclist({nr}) List list of location list items
+getloclist({nr}, {what}) Dict get specific location list properties
getmarklist([{expr}]) List list of global/local marks
getmatches([{win}]) List list of current matches
getpid() Number process ID of Vim
getpos({expr}) List position of cursor, mark, etc.
-getqflist([{what}]) List list of quickfix items
+getqflist() List list of quickfix items
+getqflist({what}) Dict get specific quickfix list properties
getreg([{regname} [, 1 [, {list}]]])
String or List contents of register
getregtype([{regname}]) String type of register
@@ -2377,12 +2405,15 @@ setcmdpos({pos}) Number set cursor position in command-line
setenv({name}, {val}) none set environment variable
setfperm({fname}, {mode} Number set {fname} file permissions to {mode}
setline({lnum}, {line}) Number set line {lnum} to {line}
-setloclist({nr}, {list}[, {action}[, {what}]])
+setloclist({nr}, {list} [, {action}])
Number modify location list using {list}
+setloclist({nr}, {list}, {action}, {what})
+ Number modify specific location list props
setmatches({list} [, {win}]) Number restore a list of matches
setpos({expr}, {list}) Number set the {expr} position to {list}
-setqflist({list}[, {action}[, {what}]]
- Number modify quickfix list using {list}
+setqflist({list} [, {action}]) Number modify quickfix list using {list}
+setqflist({list}, {action}, {what})
+ Number modify specific quickfix list props
setreg({n}, {v}[, {opt}]) Number set register to value and type
settabvar({nr}, {varname}, {val}) set {varname} in tab page {nr} to {val}
settabwinvar({tabnr}, {winnr}, {varname}, {val}) set {varname} in window
@@ -2506,9 +2537,10 @@ win_id2tabwin({expr}) List get tab and window nr from |window-ID|
win_id2win({expr}) Number get window nr from |window-ID|
win_screenpos({nr}) List get screen position of window {nr}
win_splitmove({nr}, {target} [, {options}])
- none move window {nr} to split of {target}
+ Number move window {nr} to split of {target}
winbufnr({nr}) Number buffer number of window {nr}
wincol() Number window column of the cursor
+windowsversion() String MS-Windows OS version
winheight({nr}) Number height of window {nr}
winlayout([{tabnr}]) List layout of windows in tab {tabnr}
winline() Number window line of the cursor
@@ -2585,6 +2617,9 @@ append({lnum}, {text}) *append()*
appendbufline({expr}, {lnum}, {text}) *appendbufline()*
Like |append()| but append the text in buffer {expr}.
+ This function works only for loaded buffers. First call
+ |bufload()| if needed.
+
For the use of {expr}, see |bufname()|.
{lnum} is used like with |append()|. Note that using |line()|
@@ -2626,7 +2661,7 @@ arglistid([{winnr} [, {tabnr}]])
{winnr} can be the window number or the |window-ID|.
*argv()*
-argv([{nr} [, {winid}])
+argv([{nr} [, {winid}]])
The result is the {nr}th file in the argument list. See
|arglist|. "argv(0)" is the first one. Example: >
:let i = 0
@@ -2641,123 +2676,6 @@ argv([{nr} [, {winid}])
The {winid} argument specifies the window ID, see |argc()|.
For the Vim command line arguments see |v:argv|.
-assert_beeps({cmd}) *assert_beeps()*
- Run {cmd} and add an error message to |v:errors| if it does
- NOT produce a beep or visual bell.
- Also see |assert_fails()|, |assert_nobeep()| and
- |assert-return|.
-
- *assert_equal()*
-assert_equal({expected}, {actual}, [, {msg}])
- When {expected} and {actual} are not equal an error message is
- added to |v:errors| and 1 is returned. Otherwise zero is
- returned |assert-return|.
- 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.
- When {msg} is omitted an error in the form "Expected
- {expected} but got {actual}" is produced.
- 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' ~
-
- *assert_equalfile()*
-assert_equalfile({fname-one}, {fname-two} [, {msg}])
- When the files {fname-one} and {fname-two} do not contain
- exactly the same text an error message is added to |v:errors|.
- Also see |assert-return|.
- When {fname-one} or {fname-two} does not exist the error will
- mention that.
-
-assert_exception({error} [, {msg}]) *assert_exception()*
- When v:exception does not contain the string {error} an error
- message is added to |v:errors|. Also see |assert-return|.
- This can be used to assert that a command throws an exception.
- Using the error number, followed by a colon, avoids problems
- with translations: >
- try
- commandthatfails
- call assert_false(1, 'command should have failed')
- catch
- call assert_exception('E492:')
- endtry
-
-assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
- Run {cmd} and add an error message to |v:errors| if it does
- NOT produce an error. Also see |assert-return|.
- When {error} is given it must match in |v:errmsg|.
- Note that beeping is not considered an error, and some failing
- commands only beep. Use |assert_beeps()| for those.
-
-assert_false({actual} [, {msg}]) *assert_false()*
- When {actual} is not false an error message is added to
- |v:errors|, like with |assert_equal()|.
- Also see |assert-return|.
- A value is false when it is zero or |v:false|. When "{actual}"
- is not a number or |v:false| the assert fails.
- When {msg} is omitted an error in the form
- "Expected False but got {actual}" is produced.
-
-assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
- This asserts number and |Float| values. When {actual} is lower
- than {lower} or higher than {upper} an error message is added
- to |v:errors|. Also see |assert-return|.
- When {msg} is omitted an error in the form
- "Expected range {lower} - {upper}, but got {actual}" is
- produced.
-
- *assert_match()*
-assert_match({pattern}, {actual} [, {msg}])
- When {pattern} does not match {actual} an error message is
- added to |v:errors|. Also see |assert-return|.
-
- {pattern} is used as with |=~|: The matching is always done
- like 'magic' was set and 'cpoptions' is empty, no matter what
- the actual value of 'magic' or 'cpoptions' is.
-
- {actual} is used as a string, automatic conversion applies.
- Use "^" and "$" to match with the start and end of the text.
- Use both to match the whole text.
-
- When {msg} is omitted an error in the form
- "Pattern {pattern} does not match {actual}" is produced.
- Example: >
- 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' ~
-
-assert_nobeep({cmd}) *assert_nobeep()*
- Run {cmd} and add an error message to |v:errors| if it
- produces a beep or visual bell.
- Also see |assert_beeps()|.
-
- *assert_notequal()*
-assert_notequal({expected}, {actual} [, {msg}])
- The opposite of `assert_equal()`: add an error message to
- |v:errors| when {expected} and {actual} are equal.
- Also see |assert-return|.
-
- *assert_notmatch()*
-assert_notmatch({pattern}, {actual} [, {msg}])
- The opposite of `assert_match()`: add an error message to
- |v:errors| when {pattern} matches {actual}.
- Also see |assert-return|.
-
-assert_report({msg}) *assert_report()*
- Report a test failure directly, using {msg}.
- Always returns one.
-
-assert_true({actual} [, {msg}]) *assert_true()*
- When {actual} is not true an error message is added to
- |v:errors|, like with |assert_equal()|.
- Also see |assert-return|.
- A value is |TRUE| when it is a non-zero number or |v:true|.
- When {actual} is not a number or |v:true| the assert fails.
- When {msg} is omitted an error in the form "Expected True but
- got {actual}" is produced.
-
asin({expr}) *asin()*
Return the arc sine of {expr} measured in radians, as a |Float|
in the range of [-pi/2, pi/2].
@@ -2770,6 +2688,9 @@ asin({expr}) *asin()*
< -0.523599
+assert_ functions are documented here: |assert-functions-details|
+
+
atan({expr}) *atan()*
Return the principal value of the arc tangent of {expr}, in
the range [-pi/2, +pi/2] radians, as a |Float|.
@@ -2901,7 +2822,7 @@ bufnr([{expr} [, {create}]])
the ":ls" command. For the use of {expr}, see |bufname()|
above.
If the buffer doesn't exist, -1 is returned. Or, if the
- {create} argument is present and not zero, a new, unlisted,
+ {create} argument is present and TRUE, a new, unlisted,
buffer is created and its number is returned.
bufnr("$") is the last buffer: >
:let last_buffer = bufnr("$")
@@ -2945,8 +2866,8 @@ byteidx({expr}, {nr}) *byteidx()*
Return byte index of the {nr}'th character in the string
{expr}. Use zero for the first character, it then returns
zero.
- This function is only useful when there are multibyte
- characters, otherwise the returned value is equal to {nr}.
+ If there are no multibyte characters the returned value is
+ equal to {nr}.
Composing characters are not counted separately, their byte
length is added to the preceding base character. See
|byteidxcomp()| below for counting composing characters
@@ -2973,6 +2894,8 @@ byteidxcomp({expr}, {nr}) *byteidxcomp()*
< The first and third echo result in 3 ('e' plus composing
character is 3 bytes), the second echo results in 1 ('e' is
one byte).
+ Only works differently from byteidx() when 'encoding' is set to
+ a Unicode encoding.
call({func}, {arglist} [, {dict}]) *call()* *E699*
Call function {func} with the items in |List| {arglist} as
@@ -3166,7 +3089,7 @@ complete_check() *complete_check()*
*complete_info()*
complete_info([{what}])
- Returns a Dictionary with information about Insert mode
+ Returns a |Dictionary| with information about Insert mode
completion. See |ins-completion|.
The items are:
mode Current completion mode name string.
@@ -3198,7 +3121,7 @@ complete_info([{what}])
"function" User defined completion |i_CTRL-X_CTRL-U|
"omni" Omni completion |i_CTRL-X_CTRL-O|
"spell" Spelling suggestions |i_CTRL-X_s|
- "eval" |complete()| completion
+ "eval" |complete()| completion
"unknown" Other internal modes
If the optional {what} list argument is supplied, then only
@@ -3237,7 +3160,7 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
not need to be the first letter: >
confirm("file has been modified", "&Save\nSave &All")
< For the console, the first letter of each choice is used as
- the default shortcut key.
+ the default shortcut key. Case is ignored.
The optional {default} argument is the number of the choice
that is made if the user hits <CR>. Use 1 to make the first
@@ -3418,6 +3341,7 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698*
copy, and vice versa. When an item is a |List|, a copy for it
is made, recursively. Thus changing an item in the copy does
not change the contents of the original |List|.
+
When {noref} is omitted or zero a contained |List| or
|Dictionary| is only copied once. All references point to
this single copy. With {noref} set to 1 every occurrence of a
@@ -3442,14 +3366,18 @@ delete({fname} [, {flags}]) *delete()*
Note: on MS-Windows it is not possible to delete a directory
that is being used.
- The result is a Number, which is 0 if the delete operation was
- successful and -1 when the deletion failed or partly failed.
+ The result is a Number, which is 0/false if the delete
+ operation was successful and -1/true when the deletion failed
+ or partly failed.
deletebufline({expr}, {first}[, {last}]) *deletebufline()*
Delete lines {first} to {last} (inclusive) from buffer {expr}.
If {last} is omitted then delete line {first} only.
On success 0 is returned, on failure 1 is returned.
+ This function works only for loaded buffers. First call
+ |bufload()| if needed.
+
For the use of {expr}, see |bufname()| above.
{first} and {last} are used like with |setline()|. Note that
@@ -3533,6 +3461,12 @@ diff_hlID({lnum}, {col}) *diff_hlID()*
The highlight ID can be used with |synIDattr()| to obtain
syntax information about the highlighting.
+empty({expr}) *empty()*
+ Return the Number 1 if {expr} is empty, zero otherwise.
+ A |List| or |Dictionary| is empty when it does not have any
+ items. A Number is empty when its value is zero. Special
+ variable is empty when it is |v:false| or |v:null|.
+
environ() *environ()*
Return all of environment variables as dictionary. You can
check if an environment variable exists like this: >
@@ -3541,12 +3475,6 @@ environ() *environ()*
use this: >
:echo index(keys(environ()), 'HOME', 0, 1) != -1
-empty({expr}) *empty()*
- Return the Number 1 if {expr} is empty, zero otherwise.
- A |List| or |Dictionary| is empty when it does not have any
- items. A Number is empty when its value is zero. Special
- variable is empty when it is |v:false| or |v:null|.
-
escape({string}, {chars}) *escape()*
Escape the characters in {chars} that occur in {string} with a
backslash. Example: >
@@ -3574,16 +3502,15 @@ executable({expr}) *executable()*
arguments.
executable() uses the value of $PATH and/or the normal
searchpath for programs. *PATHEXT*
- On 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 $PATHEXT is not set then ".exe;.com;.bat;.cmd" is
- used. A dot by itself can be used in $PATHEXT to try using
- the name without an extension. When 'shell' looks like a
- Unix shell, then the name is also tried without adding an
- extension.
- On Windows it only checks if the file exists and
- is not a directory, not if it's really executable.
+ 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
+ $PATHEXT is not set then ".exe;.com;.bat;.cmd" is used. A dot
+ by itself can be used in $PATHEXT to try using the name
+ without an extension. When 'shell' looks like a Unix shell,
+ 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 Windows an executable in the same directory as Vim is
always found (it is added to $PATH at |startup|).
The result is a Number:
@@ -3810,8 +3737,8 @@ expandcmd({expr}) *expandcmd()*
Expand special items in {expr} like what is done for an Ex
command such as `:edit`. This expands special keywords, like
with |expand()|, and environment variables, anywhere in
- {expr}. Returns the expanded string.
- Example: >
+ {expr}. "~user" and "~/path" are only expanded at the start.
+ Returns the expanded string. Example: >
:echo expandcmd('make %<.o')
<
extend({expr1}, {expr2} [, {expr3}]) *extend()*
@@ -3819,10 +3746,10 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
|Dictionaries|.
If they are |Lists|: Append {expr2} to {expr1}.
- If {expr3} is given insert the items of {expr2} before item
- {expr3} in {expr1}. When {expr3} is zero insert before the
- first item. When {expr3} is equal to len({expr1}) then
- {expr2} is appended.
+ If {expr3} is given insert the items of {expr2} before the
+ item with index {expr3} in {expr1}. When {expr3} is zero
+ insert before the first item. When {expr3} is equal to
+ len({expr1}) then {expr2} is appended.
Examples: >
:echo sort(extend(mylist, [7, 5]))
:call extend(mylist, [2, 3], 1)
@@ -3987,7 +3914,7 @@ flatten({list} [, {maxdepth}]) *flatten()*
a very large number.
The {list} is changed in place, make a copy first if you do
not want that.
- *E964*
+ *E900*
{maxdepth} means how deep in nested lists changes are made.
{list} is not modified when {maxdepth} is 0.
{maxdepth} must be positive number.
@@ -4073,7 +4000,8 @@ fnamemodify({fname}, {mods}) *fnamemodify()*
:echo fnamemodify("main.c", ":p:h")
< results in: >
/home/mool/vim/vim/src
-< Note: Environment variables don't work in {fname}, use
+< If {mods} is empty then {fname} is returned.
+ Note: Environment variables don't work in {fname}, use
|expand()| first then.
foldclosed({lnum}) *foldclosed()*
@@ -4237,7 +4165,7 @@ getbufinfo([{dict}])
Without an argument information about all the buffers is
returned.
- When the argument is a Dictionary only the buffers matching
+ When the argument is a |Dictionary| only the buffers matching
the specified criteria are returned. The following keys can
be specified in {dict}:
buflisted include only listed buffers.
@@ -4251,28 +4179,36 @@ getbufinfo([{dict}])
Each returned List item is a dictionary with the following
entries:
- bufnr buffer number.
+ bufnr Buffer number.
changed TRUE if the buffer is modified.
- changedtick number of changes made to the buffer.
+ changedtick Number of changes made to the buffer.
hidden TRUE if the buffer is hidden.
- lastused timestamp in seconds, like
+ lastused Timestamp in seconds, like
|localtime()|, when the buffer was
last used.
listed TRUE if the buffer is listed.
- lnum current line number in buffer.
- linecount number of lines in the buffer (only
+ lnum Line number used for the buffer when
+ opened in the current window.
+ Only valid if the buffer has been
+ displayed in the window in the past.
+ If you want the line number of the
+ last known cursor position in a given
+ window, use |line()|: >
+ :echo line('.', {winid})
+<
+ linecount Number of lines in the buffer (only
valid when loaded)
loaded TRUE if the buffer is loaded.
- name full path to the file in the buffer.
- signs list of signs placed in the buffer.
+ name Full path to the file in the buffer.
+ signs List of signs placed in the buffer.
Each list item is a dictionary with
the following fields:
id sign identifier
lnum line number
name sign name
- variables a reference to the dictionary with
+ variables A reference to the dictionary with
buffer-local variables.
- windows list of |window-ID|s that display this
+ windows List of |window-ID|s that display this
buffer
Examples: >
@@ -4318,9 +4254,9 @@ getbufvar({expr}, {varname} [, {def}]) *getbufvar()*
The result is the value of option or local buffer variable
{varname} in buffer {expr}. Note that the name without "b:"
must be used.
- When {varname} is empty returns a dictionary with all the
+ When {varname} is empty returns a |Dictionary| with all the
buffer-local variables.
- When {varname} is equal to "&" returns a dictionary with all
+ When {varname} is equal to "&" returns a |Dictionary| with all
the buffer-local options.
Otherwise, when {varname} starts with "&" returns the value of
a buffer-local option.
@@ -4390,7 +4326,9 @@ getchar([expr]) *getchar()*
endif
<
There is no prompt, you will somehow have to make clear to the
- user that a character has to be typed.
+ user that a character has to be typed. The screen is not
+ redrawn, e.g. when resizing the window.
+
There is no mapping for the character.
Key codes are replaced, thus when the user presses the <Del>
key you get the code for the <Del> key, not the raw character
@@ -4510,7 +4448,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
highlight highlight groups
history :history suboptions
locale locale names (as output of locale -a)
- mapclear buffer argument
+ mapclear buffer argument
mapping mapping name
menu menus
messages |:messages| suboptions
@@ -4543,10 +4481,11 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
*getcurpos()*
getcurpos() Get the position of the cursor. This is like getpos('.'), but
- includes an extra item in the list:
- [bufnum, lnum, col, off, curswant] ~
- The "curswant" number is the preferred column when moving the
+ includes an extra "curswant" in the list:
+ [0, lnum, col, off, curswant] ~
+ The "curswant" number is the preferred column when moving the
cursor vertically. Also see |getpos()|.
+ The first "bufnum" item is always zero.
This can be used to save and restore the cursor position: >
let save_cursor = getcurpos()
@@ -4683,7 +4622,7 @@ getline({lnum} [, {end}])
< To get lines from another buffer see |getbufline()|
getloclist({nr},[, {what}]) *getloclist()*
- Returns a list with all the entries in the location list for
+ Returns a |List| with all the entries in the location list for
window {nr}. {nr} can be the window number or the |window-ID|.
When {nr} is zero the current window is used.
@@ -4699,7 +4638,16 @@ getloclist({nr},[, {what}]) *getloclist()*
field is applicable only when called from a location list
window. See |location-list-file-window| for more details.
-getmarklist([{expr}] *getmarklist()*
+ Returns a |Dictionary| with default values if there is no
+ location list for the window {nr}.
+ Returns an empty Dictionary if window {nr} does not exist.
+
+ Examples (See also |getqflist-examples|): >
+ :echo getloclist(3, {'all': 0})
+ :echo getloclist(5, {'filewinid': 0})
+
+
+getmarklist([{expr}]) *getmarklist()*
Without the {expr} argument returns a |List| with information
about all the global marks. |mark|
@@ -4707,7 +4655,7 @@ getmarklist([{expr}] *getmarklist()*
local marks defined in buffer {expr}. For the use of {expr},
see |bufname()|.
- Each item in the retuned List is a |Dict| with the following:
+ Each item in the returned List is a |Dict| with the following:
name - name of the mark prefixed by "'"
pos - a |List| with the position of the mark:
[bufnum, lnum, col, off]
@@ -4760,6 +4708,10 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr}
Note that for '< and '> Visual mode matters: when it is "V"
(visual line mode) the column of '< is zero and the column of
'> is a large number.
+ The column number in the returned List is the byte position
+ within the line.
+ The column number can be very large, e.g. 2147483647, in which
+ case it means "after the end of the line".
This can be used to save and restore the position of a mark: >
let save_a_mark = getpos("'a")
...
@@ -4768,7 +4720,7 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr}
getqflist([{what}]) *getqflist()*
- Returns a list with all the current quickfix errors. Each
+ Returns a |List| with all the current quickfix errors. Each
list item is a dictionary with these entries:
bufnr number of buffer that has the file name, use
bufname() to get the name
@@ -4890,12 +4842,12 @@ getregtype([{regname}]) *getregtype()*
gettabinfo([{arg}]) *gettabinfo()*
If {arg} is not specified, then information about all the tab
- pages is returned as a List. Each List item is a Dictionary.
+ pages is returned as a |List|. Each List item is a |Dictionary|.
Otherwise, {arg} specifies the tab page number and information
about that one is returned. If the tab page does not exist an
empty List is returned.
- Each List item is a Dictionary with the following entries:
+ Each List item is a |Dictionary| with the following entries:
tabnr tab page number.
variables a reference to the dictionary with
tabpage-local variables
@@ -4917,7 +4869,7 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
When {varname} is empty a dictionary with all window-local
variables is returned.
When {varname} is equal to "&" get the values of all
- window-local options in a Dictionary.
+ window-local options in a |Dictionary|.
Otherwise, when {varname} starts with "&" get the value of a
window-local option.
Note that {varname} must be the name without "w:".
@@ -4966,17 +4918,17 @@ gettagstack([{nr}]) *gettagstack()*
See |tagstack| for more information about the tag stack.
getwininfo([{winid}]) *getwininfo()*
- Returns information about windows as a List with Dictionaries.
+ Returns information about windows as a |List| with Dictionaries.
If {winid} is given Information about the window with that ID
- is returned. If the window does not exist the result is an
- empty list.
+ is returned, as a |List| with one item. If the window does not
+ exist the result is an empty list.
Without {winid} information about all the windows in all the
tab pages is returned.
- Each List item is a Dictionary with the following entries:
- botline last displayed buffer line
+ Each List item is a |Dictionary| with the following entries:
+ botline last complete displayed buffer line
bufnr number of buffer in the window
height window height (excluding winbar)
loclist 1 if showing a location list
@@ -4989,13 +4941,15 @@ getwininfo([{winid}]) *getwininfo()*
width window width
winbar 1 if the window has a toolbar, 0
otherwise
- wincol leftmost screen column of the window
+ wincol leftmost screen column of the window;
+ "col" from |win_screenpos()|
winid |window-ID|
winnr window number
- winrow topmost screen column of the window
+ winrow topmost screen line of the window;
+ "row" from |win_screenpos()|
getwinpos([{timeout}]) *getwinpos()*
- The result is a list with two numbers, the result of
+ The result is a |List| with two numbers, the result of
|getwinposx()| and |getwinposy()| combined:
[x-pos, y-pos]
{timeout} can be used to specify how long to wait in msec for
@@ -5042,7 +4996,7 @@ glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
'suffixes' affect the ordering of matches.
'wildignorecase' always applies.
- When {list} is present and it is |TRUE| the result is a List
+ When {list} is present and it is |TRUE| the result is a |List|
with all matching files. The advantage of using a List is,
you also get filenames containing newlines correctly.
Otherwise the result is a String and when there are several
@@ -5100,7 +5054,7 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]])
one of the patterns in 'wildignore' will be skipped and
'suffixes' affect the ordering of matches.
- When {list} is present and it is |TRUE| the result is a List
+ When {list} is present and it is |TRUE| the result is a |List|
with all matching files. The advantage of using a List is, you
also get filenames containing newlines correctly. Otherwise
the result is a String and when there are several matches,
@@ -5121,6 +5075,16 @@ has({feature}) Returns 1 if {feature} is supported, 0 otherwise. The
{feature} argument is a feature name like "nvim-0.2.1" or
"win32", see below. See also |exists()|.
+ If the code has a syntax error, then Nvim may skip the rest
+ of the line and miss |:endif|. >
+ if has('feature') | let x = this->breaks->without->the->feature | endif
+<
+ Put |:if| and |:endif| on separate lines to avoid the
+ syntax error. >
+ if has('feature')
+ let x = this->breaks->without->the->feature
+ endif
+<
Vim's compile-time feature-names (prefixed with "+") are not
recognized because Nvim is always compiled with all possible
features. |feature-compile|
@@ -5166,8 +5130,8 @@ has({feature}) Returns 1 if {feature} is supported, 0 otherwise. The
has_key({dict}, {key}) *has_key()*
- The result is a Number, which is 1 if |Dictionary| {dict} has
- an entry with key {key}. Zero otherwise.
+ The result is a Number, which is TRUE if |Dictionary| {dict}
+ has an entry with key {key}. FALSE otherwise.
haslocaldir([{winnr}[, {tabnr}]]) *haslocaldir()*
The result is a Number, which is 1 when the tabpage or window
@@ -5185,16 +5149,16 @@ haslocaldir([{winnr}[, {tabnr}]]) *haslocaldir()*
If {winnr} is -1 it is ignored, only the tab is resolved.
hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
- The result is a Number, which is 1 if there is a mapping that
- contains {what} in somewhere in the rhs (what it is mapped to)
- and this mapping exists in one of the modes indicated by
- {mode}.
+ The result is a Number, which is TRUE if there is a mapping
+ that contains {what} in somewhere in the rhs (what it is
+ mapped to) and this mapping exists in one of the modes
+ indicated by {mode}.
When {abbr} is there and it is |TRUE| use abbreviations
instead of mappings. Don't forget to specify Insert and/or
Command-line mode.
Both the global mappings and the mappings local to the current
buffer are checked for a match.
- If no matching mapping is found 0 is returned.
+ If no matching mapping is found FALSE is returned.
The following characters are recognized in {mode}:
n Normal mode
v Visual mode
@@ -5225,8 +5189,8 @@ histadd({history}, {item}) *histadd()*
character is sufficient.
If {item} does already exist in the history, it will be
shifted to become the newest entry.
- The result is a Number: 1 if the operation was successful,
- otherwise 0 is returned.
+ The result is a Number: TRUE if the operation was successful,
+ otherwise FALSE is returned.
Example: >
:call histadd("input", strftime("%Y %b %d"))
@@ -5245,8 +5209,8 @@ histdel({history} [, {item}]) *histdel()*
an index, see |:history-indexing|. The respective entry will
be removed if it exists.
- The result is a Number: 1 for a successful operation,
- otherwise 0 is returned.
+ The result is TRUE for a successful operation, otherwise FALSE
+ is returned.
Examples:
Clear expression register history: >
@@ -5289,7 +5253,7 @@ histnr({history}) *histnr()*
:let inp_index = histnr("expr")
<
hlexists({name}) *hlexists()*
- The result is a Number, which is non-zero if a highlight group
+ The result is a Number, which is TRUE if a highlight group
called {name} exists. This is when the group has been
defined in some way. Not necessarily when highlighting has
been defined for it, it may also have been used for a syntax
@@ -5464,10 +5428,11 @@ inputlist({textlist}) *inputlist()*
displayed, one string per line. The user will be prompted to
enter a number, which is returned.
The user can also select an item by clicking on it with the
- mouse. For the first string 0 is returned. When clicking
- above the first item a negative number is returned. When
- clicking on the prompt one more than the length of {textlist}
- is returned.
+ mouse, if the mouse is enabled in the command line ('mouse' is
+ "a" or includes "c"). For the first string 0 is returned.
+ When clicking above the first item a negative number is
+ returned. When clicking on the prompt one more than the
+ length of {textlist} is returned.
Make sure {textlist} has less than 'lines' entries, otherwise
it won't work. It's a good idea to put the entry number at
the start of the string. And put a prompt in the first item.
@@ -5479,7 +5444,7 @@ inputrestore() *inputrestore()*
Restore typeahead that was saved with a previous |inputsave()|.
Should be called the same number of times inputsave() is
called. Calling it more often is harmless though.
- Returns 1 when there is nothing to restore, 0 otherwise.
+ Returns TRUE when there is nothing to restore, FALSE otherwise.
inputsave() *inputsave()*
Preserve typeahead (also from mappings) and clear it, so that
@@ -5487,7 +5452,7 @@ inputsave() *inputsave()*
followed by a matching inputrestore() after the prompt. Can
be used several times, in which case there must be just as
many inputrestore() calls.
- Returns 1 when out of memory, 0 otherwise.
+ Returns TRUE when out of memory, FALSE otherwise.
inputsecret({prompt} [, {text}]) *inputsecret()*
This function acts much like the |input()| function with but
@@ -6086,6 +6051,10 @@ match({expr}, {pat} [, {start} [, {count}]]) *match()*
The 'ignorecase' option is used to set the ignore-caseness of
the pattern. 'smartcase' is NOT used. The matching is always
done like 'magic' is set and 'cpoptions' is empty.
+ Note that a match at the start is preferred, thus when the
+ pattern is using "*" (any number of matches) it tends to find
+ zero matches at the start instead of a number of matches
+ further down in the text.
*matchadd()* *E798* *E799* *E801* *E957*
matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]])
@@ -6151,7 +6120,8 @@ matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
to be used when fast match additions and deletions are
required, for example to highlight matching parentheses.
*E5030* *E5031*
- The list {pos} can contain one of these items:
+ {pos} is a list of positions. Each position can be one of
+ these:
- A number. This whole line will be highlighted. The first
line has number 1.
- A list with one number, e.g., [23]. The whole line with this
@@ -6168,7 +6138,7 @@ matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
ignored, as well as entries with negative column numbers and
lengths.
- The maximum number of positions is 8.
+ The maximum number of positions in {pos} is 8.
Example: >
:highlight MyGroup ctermbg=green guibg=green
@@ -6177,8 +6147,7 @@ matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
:call matchdelete(m)
< Matches added by |matchaddpos()| are returned by
- |getmatches()| with an entry "pos1", "pos2", etc., with the
- value a list like the {pos} item.
+ |getmatches()|.
matcharg({nr}) *matcharg()*
Selects the {nr} match item, as set with a |:match|,
@@ -6262,9 +6231,9 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
*max()*
max({expr}) Return the maximum value of all items in {expr}.
- {expr} can be a list or a dictionary. For a dictionary,
- it returns the maximum of all values in the dictionary.
- If {expr} is neither a list nor a dictionary, or one of the
+ {expr} can be a |List| or a |Dictionary|. For a Dictionary,
+ it returns the maximum of all values in the Dictionary.
+ If {expr} is neither a List nor a Dictionary, or one of the
items in {expr} cannot be used as a Number this results in
an error. An empty |List| or |Dictionary| results in zero.
@@ -6316,9 +6285,9 @@ menu_get({path}, {modes}) *menu_get()*
*min()*
min({expr}) Return the minimum value of all items in {expr}.
- {expr} can be a list or a dictionary. For a dictionary,
- it returns the minimum of all values in the dictionary.
- If {expr} is neither a list nor a dictionary, or one of the
+ {expr} can be a |List| or a |Dictionary|. For a Dictionary,
+ it returns the minimum of all values in the Dictionary.
+ If {expr} is neither a List nor a Dictionary, or one of the
items in {expr} cannot be used as a Number this results in
an error. An empty |List| or |Dictionary| results in zero.
@@ -6340,6 +6309,10 @@ mkdir({name} [, {path} [, {prot}]])
If you try to create an existing directory with {path} set to
"p" mkdir() will silently exit.
+ The function result is a Number, which is TRUE if the call was
+ successful or FALSE if the directory creation failed or partly
+ failed.
+
*mode()*
mode([expr]) Return a string that indicates the current mode.
If [expr] is supplied and it evaluates to a non-zero Number or
@@ -6800,15 +6773,15 @@ prompt_setprompt({buf}, {text}) *prompt_setprompt()*
call prompt_setprompt(bufnr(''), 'command: ')
pum_getpos() *pum_getpos()*
- If the popup menu (see |ins-completion-menu|) is not visible,
- returns an empty |Dictionary|, otherwise, returns a
- |Dictionary| with the following keys:
- height nr of items visible
- width screen cells
- row top screen row (0 first row)
- col leftmost screen column (0 first col)
- size total nr of items
- scrollbar |TRUE| if visible
+ If the popup menu (see |ins-completion-menu|) is not visible,
+ returns an empty |Dictionary|, otherwise, returns a
+ |Dictionary| with the following keys:
+ height nr of items visible
+ width screen cells
+ row top screen row (0 first row)
+ col leftmost screen column (0 first col)
+ size total nr of items
+ scrollbar |TRUE| if scrollbar is visible
The values are the same as in |v:event| during |CompleteChanged|.
@@ -6931,10 +6904,10 @@ reg_recording() *reg_recording()*
Returns an empty string string when not recording. See |q|.
reltime([{start} [, {end}]]) *reltime()*
- Return an item that represents a time value. The format of
- the item depends on the system. It can be passed to
- |reltimestr()| to convert it to a string or |reltimefloat()|
- to convert to a float.
+ Return an item that represents a time value. The item is a
+ list with items that depend on the system.
+ The item can be passed to |reltimestr()| to convert it to a
+ string or |reltimefloat()| to convert to a Float.
Without an argument it returns the current "relative time", an
implementation-defined value meaningful only when used as an
@@ -6944,6 +6917,7 @@ reltime([{start} [, {end}]]) *reltime()*
specified in the argument.
With two arguments it returns the time passed between {start}
and {end}.
+
The {start} and {end} arguments must be values returned by
reltime().
@@ -7065,7 +7039,7 @@ remove({list}, {idx} [, {end}]) *remove()*
Without {end}: Remove the item at {idx} from |List| {list} and
return the item.
With {end}: Remove items from {idx} to {end} (inclusive) and
- return a List with these items. When {idx} points to the same
+ return a |List| with these items. When {idx} points to the same
item as {end} a list with one item is returned. When {end}
points to an item before {idx} this is an error.
See |list-index| for possible values of {idx} and {end}.
@@ -7240,11 +7214,16 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
'ignorecase', 'smartcase' and 'magic' are used.
- When the 'z' flag is not given, searching always starts in
- column zero and then matches before the cursor are skipped.
- When the 'c' flag is present in 'cpo' the next search starts
- after the match. Without the 'c' flag the next search starts
- one column further.
+ When the 'z' flag is not given, forward searching always
+ starts in column zero and then matches before the cursor are
+ skipped. When the 'c' flag is present in 'cpo' the next
+ search starts after the match. Without the 'c' flag the next
+ search starts one column further. This matters for
+ overlapping matches.
+ When searching backwards and the 'z' flag is given then the
+ search starts in column zero, thus no match in the current
+ line will be found (unless wrapping around the end of the
+ file).
When the {stopline} argument is given then the search stops
after searching this line. This is useful to restrict the
@@ -7436,6 +7415,7 @@ server2client({clientid}, {string}) *server2client()*
Send a reply string to {clientid}. The most recent {clientid}
that sent a string can be retrieved with expand("<client>").
Note:
+ Returns zero for success, -1 for failure.
This id has to be stored before the next command can be
received. I.e. before returning from the received command and
before calling any commands that waits for input.
@@ -7484,13 +7464,24 @@ serverstop({address}) *serverstop()*
address returned by |serverlist()|.
setbufline({expr}, {lnum}, {text}) *setbufline()*
- Set line {lnum} to {text} in buffer {expr}. To insert
- lines use |append()|.
+ Set line {lnum} to {text} in buffer {expr}. This works like
+ |setline()| for the specified buffer.
+
+ This function works only for loaded buffers. First call
+ |bufload()| if needed.
+
+ To insert lines use |appendbufline()|.
+ Any text properties in {lnum} are cleared.
+
+ {text} can be a string to set one line, or a list of strings
+ to set multiple lines. If the list extends below the last
+ line then those lines are added.
For the use of {expr}, see |bufname()| above.
{lnum} is used like with |setline()|.
- This works like |setline()| for the specified buffer.
+ When {lnum} is just below the last line the {text} will be
+ added below the last line.
On success 0 is returned, on failure 1 is returned.
If {expr} is not a valid buffer or {lnum} is not valid, an
@@ -7541,8 +7532,8 @@ setcmdpos({pos}) *setcmdpos()*
before inserting the resulting text.
When the number is too big the cursor is put at the end of the
line. A number smaller than one has undefined results.
- Returns 0 when successful, 1 when not editing the command
- line.
+ Returns FALSE when successful, TRUE when not editing the
+ command line.
setenv({name}, {val}) *setenv()*
Set environment variable {name} to {val}.
@@ -7573,10 +7564,10 @@ setline({lnum}, {text}) *setline()*
{lnum} is used like with |getline()|.
When {lnum} is just below the last line the {text} will be
- added as a new line.
+ added below the last line.
- If this succeeds, 0 is returned. If this fails (most likely
- because {lnum} is invalid) 1 is returned.
+ If this succeeds, FALSE is returned. If this fails (most likely
+ because {lnum} is invalid) TRUE is returned.
Example: >
:call setline(5, strftime("%c"))
@@ -7601,6 +7592,8 @@ setloclist({nr}, {list}[, {action}[, {what}]]) *setloclist()*
Otherwise, same as |setqflist()|.
Also see |location-list|.
+ For {action} see |setqflist-action|.
+
If the optional {what} dictionary argument is supplied, then
only the items listed in {what} are set. Refer to |setqflist()|
for the list of supported keys in {what}.
@@ -7666,7 +7659,12 @@ setpos({expr}, {list})
setqflist({list} [, {action}[, {what}]]) *setqflist()*
Create or replace or add to the quickfix list.
- When {what} is not present, use the items in {list}. Each
+ If the optional {what} dictionary argument is supplied, then
+ only the items listed in {what} are set. The first {list}
+ argument is ignored. See below for the supported items in
+ {what}.
+ *setqflist-what*
+ When {what} is not present, the items in {list} are used. Each
item must be a dictionary. Non-dictionary items in {list} are
ignored. Each dictionary item can contain the following
entries:
@@ -7702,7 +7700,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
Note that the list is not exactly the same as what
|getqflist()| returns.
- {action} values: *E927*
+ {action} values: *setqflist-action* *E927*
'a' The items from {list} are added to the existing
quickfix list. If there is no existing list, then a
new list is created.
@@ -7721,10 +7719,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
freed. To add a new quickfix list at the end of the stack,
set "nr" in {what} to "$".
- If the optional {what} dictionary argument is supplied, then
- only the items listed in {what} are set. The first {list}
- argument is ignored. The following items can be specified in
- {what}:
+ The following items can be specified in dictionary {what}:
context quickfix list context. See |quickfix-context|
efm errorformat to use when parsing text from
"lines". If this is not present, then the
@@ -7768,10 +7763,12 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
*setreg()*
setreg({regname}, {value} [, {options}])
Set the register {regname} to {value}.
+
{value} may be any value returned by |getreg()|, including
a |List|.
If {options} contains "a" or {regname} is upper case,
then the value is appended.
+
{options} can also contain a register type specification:
"c" or "v" |charwise| mode
"l" or "V" |linewise| mode
@@ -7860,18 +7857,10 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()*
Returns zero for success, -1 for failure.
- Examples:
- Set current index of the tag stack to 4: >
- call settagstack(1005, {'curidx' : 4})
-
-< Empty the tag stack of window 3: >
+ Examples (for more examples see |tagstack-examples|):
+ Empty the tag stack of window 3: >
call settagstack(3, {'items' : []})
-< Push a new item onto the tag stack: >
- let pos = [bufnr('myfile.txt'), 10, 1, 0]
- let newtag = [{'tagname' : 'mytag', 'from' : pos}]
- call settagstack(2, {'items' : newtag}, 'a')
-
< Save and restore the tag stack: >
let stack = gettagstack(1003)
" do something else
@@ -7938,362 +7927,17 @@ shiftwidth([{col}]) *shiftwidth()*
'vartabstop' feature. If no {col} argument is given, column 1
will be assumed.
-sign_define({name} [, {dict}]) *sign_define()*
-sign_define({list})
- Define a new sign named {name} or modify the attributes of an
- existing sign. This is similar to the |:sign-define| command.
-
- Prefix {name} with a unique text to avoid name collisions.
- There is no {group} like with placing signs.
-
- The {name} can be a String or a Number. The optional {dict}
- argument specifies the sign attributes. The following values
- are supported:
- icon full path to the bitmap file for the sign.
- linehl highlight group used for the whole line the
- sign is placed in.
- text text that is displayed when there is no icon
- or the GUI is not being used.
- texthl highlight group used for the text item
- numhl highlight group used for 'number' column at the
- associated line. Overrides |hl-LineNr|,
- |hl-CursorLineNr|.
-
- If the sign named {name} already exists, then the attributes
- of the sign are updated.
-
- The one argument {list} can be used to define a list of signs.
- Each list item is a dictionary with the above items in {dict}
- and a 'name' item for the sign name.
-
- Returns 0 on success and -1 on failure. When the one argument
- {list} is used, then returns a List of values one for each
- defined sign.
-
- Examples: >
- call sign_define("mySign", {
- \ "text" : "=>",
- \ "texthl" : "Error",
- \ "linehl" : "Search"})
- call sign_define([
- \ {'name' : 'sign1',
- \ 'text' : '=>'},
- \ {'name' : 'sign2',
- \ 'text' : '!!'}
- \ ])
-<
-sign_getdefined([{name}]) *sign_getdefined()*
- Get a list of defined signs and their attributes.
- This is similar to the |:sign-list| command.
-
- If the {name} is not supplied, then a list of all the defined
- signs is returned. Otherwise the attribute of the specified
- sign is returned.
-
- Each list item in the returned value is a dictionary with the
- following entries:
- icon full path to the bitmap file of the sign
- linehl highlight group used for the whole line the
- sign is placed in.
- name name of the sign
- text text that is displayed when there is no icon
- or the GUI is not being used.
- texthl highlight group used for the text item
- numhl highlight group used for 'number' column at the
- associated line. Overrides |hl-LineNr|,
- |hl-CursorLineNr|.
-
- Returns an empty List if there are no signs and when {name} is
- not found.
-
- Examples: >
- " Get a list of all the defined signs
- echo sign_getdefined()
-
- " Get the attribute of the sign named mySign
- echo sign_getdefined("mySign")
-<
-sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
- Return a list of signs placed in a buffer or all the buffers.
- This is similar to the |:sign-place-list| command.
-
- If the optional buffer name {expr} is specified, then only the
- list of signs placed in that buffer is returned. For the use
- of {expr}, see |bufname()|. The optional {dict} can contain
- the following entries:
- group select only signs in this group
- id select sign with this identifier
- lnum select signs placed in this line. For the use
- of {lnum}, see |line()|.
- If {group} is '*', then signs in all the groups including the
- global group are returned. If {group} is not supplied or is an
- empty string, then only signs in the global group are
- returned. If no arguments are supplied, then signs in the
- global group placed in all the buffers are returned.
- See |sign-group|.
-
- Each list item in the returned value is a dictionary with the
- following entries:
- bufnr number of the buffer with the sign
- signs list of signs placed in {bufnr}. Each list
- item is a dictionary with the below listed
- entries
-
- The dictionary for each sign contains the following entries:
- group sign group. Set to '' for the global group.
- id identifier of the sign
- lnum line number where the sign is placed
- name name of the defined sign
- priority sign priority
-
- The returned signs in a buffer are ordered by their line
- number and priority.
-
- Returns an empty list on failure or if there are no placed
- signs.
-
- Examples: >
- " Get a List of signs placed in eval.c in the
- " global group
- echo sign_getplaced("eval.c")
-
- " Get a List of signs in group 'g1' placed in eval.c
- echo sign_getplaced("eval.c", {'group' : 'g1'})
-
- " Get a List of signs placed at line 10 in eval.c
- echo sign_getplaced("eval.c", {'lnum' : 10})
-
- " Get sign with identifier 10 placed in a.py
- echo sign_getplaced("a.py", {'id' : 10})
-
- " Get sign with id 20 in group 'g1' placed in a.py
- echo sign_getplaced("a.py", {'group' : 'g1',
- \ 'id' : 20})
-
- " Get a List of all the placed signs
- echo sign_getplaced()
-<
- *sign_jump()*
-sign_jump({id}, {group}, {expr})
- Open the buffer {expr} or jump to the window that contains
- {expr} and position the cursor at sign {id} in group {group}.
- This is similar to the |:sign-jump| command.
-
- For the use of {expr}, see |bufname()|.
-
- Returns the line number of the sign. Returns -1 if the
- arguments are invalid.
-
- Example: >
- " Jump to sign 10 in the current buffer
- call sign_jump(10, '', '')
-<
- *sign_place()*
-sign_place({id}, {group}, {name}, {expr} [, {dict}])
- Place the sign defined as {name} at line {lnum} in file or
- buffer {expr} and assign {id} and {group} to sign. This is
- similar to the |:sign-place| command.
-
- If the sign identifier {id} is zero, then a new identifier is
- allocated. Otherwise the specified number is used. {group} is
- the sign group name. To use the global sign group, use an
- empty string. {group} functions as a namespace for {id}, thus
- two groups can use the same IDs. Refer to |sign-identifier|
- and |sign-group| for more information.
-
- {name} refers to a defined sign.
- {expr} refers to a buffer name or number. For the accepted
- values, see |bufname()|.
-
- The optional {dict} argument supports the following entries:
- lnum line number in the file or buffer
- {expr} where the sign is to be placed.
- For the accepted values, see |line()|.
- priority priority of the sign. See
- |sign-priority| for more information.
-
- If the optional {dict} is not specified, then it modifies the
- placed sign {id} in group {group} to use the defined sign
- {name}.
-
- Returns the sign identifier on success and -1 on failure.
-
- Examples: >
- " Place a sign named sign1 with id 5 at line 20 in
- " buffer json.c
- call sign_place(5, '', 'sign1', 'json.c',
- \ {'lnum' : 20})
-
- " Updates sign 5 in buffer json.c to use sign2
- call sign_place(5, '', 'sign2', 'json.c')
-
- " Place a sign named sign3 at line 30 in
- " buffer json.c with a new identifier
- let id = sign_place(0, '', 'sign3', 'json.c',
- \ {'lnum' : 30})
-
- " Place a sign named sign4 with id 10 in group 'g3'
- " at line 40 in buffer json.c with priority 90
- call sign_place(10, 'g3', 'sign4', 'json.c',
- \ {'lnum' : 40, 'priority' : 90})
-<
- *sign_placelist()*
-sign_placelist({list})
- Place one or more signs. This is similar to the
- |sign_place()| function. The {list} argument specifies the
- List of signs to place. Each list item is a dict with the
- following sign attributes:
- buffer buffer name or number. For the accepted
- values, see |bufname()|.
- group sign group. {group} functions as a namespace
- for {id}, thus two groups can use the same
- IDs. If not specified or set to an empty
- string, then the global group is used. See
- |sign-group| for more information.
- id sign identifier. If not specified or zero,
- then a new unique identifier is allocated.
- Otherwise the specified number is used. See
- |sign-identifier| for more information.
- lnum line number in the buffer {expr} where the
- sign is to be placed. For the accepted values,
- see |line()|.
- name name of the sign to place. See |sign_define()|
- for more information.
- 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
- |sign-priority| for more information.
-
- If {id} refers to an existing sign, then the existing sign is
- modified to use the specified {name} and/or {priority}.
-
- Returns a List of sign identifiers. If failed to place a
- sign, the corresponding list item is set to -1.
-
- Examples: >
- " Place sign s1 with id 5 at line 20 and id 10 at line
- " 30 in buffer a.c
- let [n1, n2] = sign_place([
- \ {'id' : 5,
- \ 'name' : 's1',
- \ 'buffer' : 'a.c',
- \ 'lnum' : 20},
- \ {'id' : 10,
- \ 'name' : 's1',
- \ 'buffer' : 'a.c',
- \ 'lnum' : 30}
- \ ])
-
- " Place sign s1 in buffer a.c at line 40 and 50
- " with auto-generated identifiers
- let [n1, n2] = sign_place([
- \ {'name' : 's1',
- \ 'buffer' : 'a.c',
- \ 'lnum' : 40},
- \ {'name' : 's1',
- \ 'buffer' : 'a.c',
- \ 'lnum' : 50}
- \ ])
-<
-sign_undefine([{name}]) *sign_undefine()*
-sign_undefine({list})
- Deletes a previously defined sign {name}. This is similar to
- the |:sign-undefine| command. If {name} is not supplied, then
- deletes all the defined signs.
-
- The one argument {list} can be used to undefine a list of
- signs. Each list item is the name of a sign.
-
- Returns 0 on success and -1 on failure. For the one argument
- {list} call, returns a list of values one for each undefined
- sign.
-
- Examples: >
- " Delete a sign named mySign
- call sign_undefine("mySign")
+sign_ functions are documented here: |sign-functions-details|
- " Delete signs 'sign1' and 'sign2'
- call sign_undefine(["sign1", "sign2"])
-
- " Delete all the signs
- call sign_undefine()
-<
-sign_unplace({group} [, {dict}]) *sign_unplace()*
- Remove a previously placed sign in one or more buffers. This
- is similar to the |:sign-unplace| command.
-
- {group} is the sign group name. To use the global sign group,
- use an empty string. If {group} is set to '*', then all the
- groups including the global group are used.
- The signs in {group} are selected based on the entries in
- {dict}. The following optional entries in {dict} are
- supported:
- buffer buffer name or number. See |bufname()|.
- id sign identifier
- If {dict} is not supplied, then all the signs in {group} are
- removed.
-
- Returns 0 on success and -1 on failure.
-
- Examples: >
- " Remove sign 10 from buffer a.vim
- call sign_unplace('', {'buffer' : "a.vim", 'id' : 10})
-
- " Remove sign 20 in group 'g1' from buffer 3
- call sign_unplace('g1', {'buffer' : 3, 'id' : 20})
-
- " Remove all the signs in group 'g2' from buffer 10
- call sign_unplace('g2', {'buffer' : 10})
-
- " Remove sign 30 in group 'g3' from all the buffers
- call sign_unplace('g3', {'id' : 30})
-
- " Remove all the signs placed in buffer 5
- call sign_unplace('*', {'buffer' : 5})
-
- " Remove the signs in group 'g4' from all the buffers
- call sign_unplace('g4')
-
- " Remove sign 40 from all the buffers
- call sign_unplace('*', {'id' : 40})
-
- " Remove all the placed signs from all the buffers
- call sign_unplace('*')
-<
-sign_unplacelist({list}) *sign_unplacelist()*
- Remove previously placed signs from one or more buffers. This
- is similar to the |sign_unplace()| function.
-
- The {list} argument specifies the List of signs to remove.
- Each list item is a dict with the following sign attributes:
- buffer buffer name or number. For the accepted
- values, see |bufname()|. If not specified,
- then the specified sign is removed from all
- the buffers.
- group sign group name. If not specified or set to an
- empty string, then the global sign group is
- used. If set to '*', then all the groups
- including the global group are used.
- id sign identifier. If not specified, then all
- the signs in the specified group are removed.
-
- Returns a List where an entry is set to 0 if the corresponding
- sign was successfully removed or -1 on failure.
-
- Example: >
- " Remove sign with id 10 from buffer a.vim and sign
- " with id 20 from buffer b.vim
- call sign_unplace([{'id' : 10, 'buffer' : "a.vim"},
- \ {'id' : 20, 'buffer' : 'b.vim'}])
-<
simplify({filename}) *simplify()*
Simplify the file name as much as possible without changing
the meaning. Shortcuts (on MS-Windows) or symbolic links (on
Unix) are not resolved. If the first path component in
{filename} designates the current directory, this will be
valid for the result as well. A trailing path separator is
- not removed either.
+ not removed either. On Unix "//path" is unchanged, but
+ "///path" is simplified to "/path" (this follows the Posix
+ standard).
Example: >
simplify("./dir/.././/file/") == "./file/"
< Note: The combination "dir/.." is only removed if "dir" is
@@ -8359,7 +8003,7 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702*
ignored.
When {func} is given and it is 'n' then all items will be
- sorted numerical (Implementation detail: This uses the
+ sorted numerical (Implementation detail: this uses the
strtod() function to parse numbers, Strings, Lists, Dicts and
Funcrefs will be considered as being 0).
@@ -8552,7 +8196,7 @@ str2list({expr} [, {utf8}]) *str2list()*
< |list2str()| does the opposite.
When {utf8} is omitted or zero, the current 'encoding' is used.
- With {utf8} set to 1, always treat the String as utf-8
+ With {utf8} set to TRUE, always treat the String as utf-8
characters. With utf-8 composing characters are handled
properly: >
str2list("á") returns [97, 769]
@@ -8596,7 +8240,8 @@ strchars({expr} [, {skipcc}]) *strchars()*
<
strcharpart({src}, {start} [, {len}]) *strcharpart()*
Like |strpart()| but using character index and length instead
- of byte index and length.
+ of byte index and length. Composing characters are counted
+ separately.
When a character index is used where a character does not
exist it is assumed to be one character. For example: >
strcharpart('abc', -1, 2)
@@ -8860,7 +8505,7 @@ swapname({expr}) *swapname()*
The result is the swap file path of the buffer {expr}.
For the use of {expr}, see |bufname()| above.
If buffer {expr} is the current buffer, the result is equal to
- |:swapname| (unless no swap file).
+ |:swapname| (unless there is no swap file).
If buffer {expr} has no swap file, returns an empty string.
synID({lnum}, {col}, {trans}) *synID()*
@@ -8929,7 +8574,7 @@ synIDtrans({synID}) *synIDtrans()*
":highlight link" are followed.
synconcealed({lnum}, {col}) *synconcealed()*
- The result is a List with currently three items:
+ The result is a |List| with currently three items:
1. The first item in the list is 0 if the character at the
position {lnum} and {col} is not part of a concealable
region, 1 if it is.
@@ -9033,6 +8678,10 @@ systemlist({cmd} [, {input} [, {keepempty}]]) *systemlist()*
unless {keepempty} is non-zero.
Note that on MS-Windows you may get trailing CR characters.
+ To see the difference between "echo hello" and "echo -n hello"
+ use |system()| and |split()|: >
+ echo split(system('echo hello'), '\n', 1)
+<
Returns an empty string on error.
@@ -9081,7 +8730,7 @@ tagfiles() Returns a |List| with the file names used to search for tags
taglist({expr} [, {filename}]) *taglist()*
- Returns a list of tags matching the regular expression {expr}.
+ Returns a |List| of tags matching the regular expression {expr}.
If {filename} is passed it is used to prioritize the results
in the same way that |:tselect| does. See |tag-priority|.
@@ -9146,11 +8795,7 @@ termopen({cmd}[, {opts}]) *termopen()*
See |terminal| for more information.
-test_garbagecollect_now() *test_garbagecollect_now()*
- Like |garbagecollect()|, but executed right away. This must
- only be called directly to avoid any structure to exist
- internally, and |v:testing| must have been set before calling
- any function.
+test_ functions are documented here: |test-functions-details|
tan({expr}) *tan()*
Return the tangent of {expr}, measured in radians, as a |Float|
@@ -9182,7 +8827,7 @@ timer_info([{id}])
returned.
When {id} is omitted information about all timers is returned.
- For each timer the information is stored in a Dictionary with
+ For each timer the information is stored in a |Dictionary| with
these items:
"id" the timer ID
"time" time the timer was started with
@@ -9359,7 +9004,7 @@ undotree() *undotree()*
undo blocks.
The first item in the "entries" list is the oldest undo item.
- Each List item is a Dictionary with these items:
+ Each List item is a |Dictionary| with these items:
"seq" Undo sequence number. Same as what appears in
|:undolist|.
"time" Timestamp when the change happened. Use
@@ -9479,7 +9124,7 @@ wildmenumode() *wildmenumode()*
win_findbuf({bufnr}) *win_findbuf()*
- Returns a list with |window-ID|s for windows that contain
+ Returns a |List| with |window-ID|s for windows that contain
buffer {bufnr}. When there is none the list is empty.
win_getid([{win} [, {tab}]]) *win_getid()*
@@ -9512,7 +9157,7 @@ win_gettype([{nr}]) *win_gettype()*
win_gotoid({expr}) *win_gotoid()*
Go to window with ID {expr}. This may also change the current
tabpage.
- Return 1 if successful, 0 if the window cannot be found.
+ Return TRUE if successful, FALSE if the window cannot be found.
win_id2tabwin({expr} *win_id2tabwin()*
Return a list with the tab number and window number of window
@@ -9527,21 +9172,23 @@ win_screenpos({nr}) *win_screenpos()*
Return the screen position of window {nr} as a list with two
numbers: [row, col]. The first window always has position
[1, 1], unless there is a tabline, then it is [2, 1].
- {nr} can be the window number or the |window-ID|.
+ {nr} can be the window number or the |window-ID|. Use zero
+ for the current window.
Return [0, 0] if the window cannot be found in the current
tabpage.
win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
- Move the window {nr} to a new split of the window {target}.
+ Move the window {nr} to a new split of the window {target}.
This is similar to moving to {target}, creating a new window
using |:split| but having the same contents as window {nr}, and
then closing {nr}.
Both {nr} and {target} can be window numbers or |window-ID|s.
+ Both must be in the current tab page.
Returns zero for success, non-zero for failure.
- {options} is a Dictionary with the following optional entries:
+ {options} is a |Dictionary| with the following optional entries:
"vertical" When TRUE, the split is created vertically,
like with |:vsplit|.
"rightbelow" When TRUE, the split is made below or to the
@@ -9605,11 +9252,12 @@ winlayout([{tabnr}]) *winlayout()*
" Two horizontally split windows
:echo winlayout()
['col', [['leaf', 1000], ['leaf', 1001]]]
- " Three horizontally split windows, with two
- " vertically split windows in the middle window
+ " The second tab page, with three horizontally split
+ " windows, with two vertically split windows in the
+ " middle window
:echo winlayout(2)
- ['col', [['leaf', 1002], ['row', ['leaf', 1003],
- ['leaf', 1001]]], ['leaf', 1000]]
+ ['col', [['leaf', 1002], ['row', [['leaf', 1003],
+ ['leaf', 1001]]], ['leaf', 1000]]]
<
*winline()*
winline() The result is a Number, which is the screen line of the cursor
@@ -9621,6 +9269,7 @@ winline() The result is a Number, which is the screen line of the cursor
*winnr()*
winnr([{arg}]) The result is a Number, which is the number of the current
window. The top window has number 1.
+ Returns zero for a popup window.
The optional argument {arg} supports the following values:
$ the number of the last window (the window
@@ -9690,7 +9339,8 @@ winsaveview() Returns a |Dictionary| that contains information to restore
curswant column for vertical movement
topline first line in the window
topfill filler lines, only in diff mode
- leftcol first column displayed
+ leftcol first column displayed; only used when
+ 'wrap' is off
skipcol columns skipped
Note that no option values are saved.
@@ -9995,8 +9645,8 @@ It is allowed to define another function inside a function body.
You can provide default values for positional named arguments. This makes
them optional for function calls. When a positional argument is not
specified at a call, the default expression is used to initialize it.
-This only works for functions declared with |function|, not for lambda
-expressions |expr-lambda|.
+This only works for functions declared with |function|, not for
+lambda expressions |expr-lambda|.
Example: >
function Something(key, value = 10)
@@ -10025,9 +9675,10 @@ Example that does NOT work: >
:function NoGood(first = a:second, second = 10)
:endfunction
<
-When not using "...", the number of arguments in a function call must be equal
-to the number of mandatory named arguments. When using "...", the number of
-arguments may be larger.
+When not using "...", the number of arguments in a function call must be at
+least equal to the number of mandatory named arguments. When using "...", the
+number of arguments may be larger than the total of mandatory and optional
+arguments.
*local-variables*
Inside a function local variables can be used. These will disappear when the
@@ -10179,8 +9830,9 @@ be used to pass settings to the autoload script before it's loaded: >
Note that when you make a mistake and call a function that is supposed to be
defined in an autoload script, but the script doesn't actually define the
-function, the script will be sourced every time you try to call the function.
-And you will get an error message every time.
+function, you will get an error message for the missing function. If you fix
+the autoload script it won't be automatically loaded again. Either restart
+Vim or manually source the script.
Also note that if you have two script files, and one calls a function in the
other and vice versa, before the used function is defined, it won't work.
@@ -10357,7 +10009,7 @@ This does NOT work: >
Like above, but append/add/subtract the value for each
|List| item.
-:let [{name}, ..., ; {lastname}] = {expr1}
+:let [{name}, ..., ; {lastname}] = {expr1} *E452*
Like |:let-unpack| above, but the |List| may have more
items than there are names. A list of the remaining
items is assigned to {lastname}. If there are no
@@ -10373,20 +10025,22 @@ This does NOT work: >
*:let=<<* *:let-heredoc*
*E990* *E991* *E172* *E221*
-:let {var-name} =<< [trim] {marker}
+:let {var-name} =<< [trim] {endmarker}
text...
text...
-{marker}
- Set internal variable {var-name} to a List containing
- the lines of text bounded by the string {marker}.
- {marker} cannot start with a lower case character.
- The last line should end only with the {marker} string
- without any other character. Watch out for white
- space after {marker}!
+{endmarker}
+ Set internal variable {var-name} to a |List|
+ containing the lines of text bounded by the string
+ {endmarker}.
+ {endmarker} cannot start with a lower case character.
+ The last line should end only with the {endmarker}
+ string without any other character. Watch out for
+ white space after {endmarker}!
Without "trim" any white space characters in the lines
of text are preserved. If "trim" is specified before
- {marker}, then indentation is stripped so you can do: >
+ {endmarker}, then indentation is stripped so you can
+ do: >
let text =<< trim END
if ok
echo 'done'
@@ -10400,23 +10054,31 @@ text...
non-empty text line is stripped from the input lines.
All leading indentation exactly matching the leading
indentation before `let` is stripped from the line
- containing {marker}. Note that the difference between
- space and tab matters here.
+ containing {endmarker}. Note that the difference
+ between space and tab matters here.
If {var-name} didn't exist yet, it is created.
Cannot be followed by another command, but can be
followed by a comment.
+ To avoid line continuation to be applied, consider
+ adding 'C' to 'cpoptions': >
+ set cpo+=C
+ let var =<< END
+ \ leading backslash
+ END
+ set cpo-=C
+<
Examples: >
let var1 =<< END
- Sample text 1
- Sample text 2
- Sample text 3
- END
+ Sample text 1
+ Sample text 2
+ Sample text 3
+ END
let data =<< trim DATA
- 1 2 3 4
- 5 6 7 8
+ 1 2 3 4
+ 5 6 7 8
DATA
<
*E121*
@@ -10496,8 +10158,8 @@ text...
it can no longer be changed (until it is unlocked).
A locked variable can be deleted: >
:lockvar v
- :let v = 'asdf' " fails!
- :unlet v
+ :let v = 'asdf' " fails!
+ :unlet v " works
< *E741* *E940*
If you try to change a locked variable you get an
error message: "E741: Value is locked: {name}".
@@ -10541,21 +10203,6 @@ text...
Unlock the internal variable {name}. Does the
opposite of |:lockvar|.
- *:eval*
-:eval {expr} Evaluate {expr} and discard the result. Example: >
- :eval append(Filter(Getlist()), '$')
-
-< The expression is supposed to have a side effect,
- since the resulting value is not used. In the example
- the `append()` call appends the List with text to the
- buffer. This is similar to `:call` but works with any
- expression.
-
- The command can be shortened to `:ev` or `:eva`, but
- these are hard to recognize and therefore not to be
- used.
-
-
:if {expr1} *:if* *:end* *:endif* *:en* *E171* *E579* *E580*
:en[dif] Execute the commands until the next matching ":else"
or ":endif" if {expr1} evaluates to non-zero.
@@ -10673,11 +10320,11 @@ text...
":endtry" is reached thereafter, the next
(dynamically) surrounding ":try" is checked for
a corresponding ":finally" etc. Then the script
- processing is terminated. (Whether a function
- definition has an "abort" argument does not matter.)
+ processing is terminated. Whether a function
+ definition has an "abort" argument does not matter.
Example: >
- :try | edit too much | finally | echo "cleanup" | endtry
- :echo "impossible" " not reached, script terminated above
+ try | call Unknown() | finally | echomsg "cleanup" | endtry
+ echomsg "not reached"
<
Moreover, an error or interrupt (dynamically) inside
":try" and ":endtry" is converted to an exception. It
@@ -10694,8 +10341,8 @@ text...
error exception is not caught, always beginning with
the error number.
Examples: >
- :try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
- :try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
+ try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
+ try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
<
*:cat* *:catch* *E603* *E604* *E605*
:cat[ch] /{pattern}/ The following commands until the next |:catch|,
@@ -10849,18 +10496,36 @@ text...
And to get a beep: >
:exe "normal \<Esc>"
<
+ *:eval*
+:eval {expr} Evaluate {expr} and discard the result. Example: >
+ :eval append(Filter(Getlist()), '$')
+
+< The expression is supposed to have a side effect,
+ since the resulting value is not used. In the example
+ the `append()` call appends the List with text to the
+ buffer. This is similar to `:call` but works with any
+ expression.
+
+ The command can be shortened to `:ev` or `:eva`, but
+ these are hard to recognize and therefore not to be
+ used.
+
+ The command cannot be followed by "|" and another
+ command, since "|" is seen as part of the expression.
+
+
*:exe* *:execute*
:exe[cute] {expr1} .. Executes the string that results from the evaluation
of {expr1} as an Ex command.
Multiple arguments are concatenated, with a space in
- between. To avoid the extra space use the "."
+ between. To avoid the extra space use the ".."
operator to concatenate strings into one argument.
{expr1} is used as the processed command, command line
editing keys are not recognized.
Cannot be followed by a comment.
Examples: >
:execute "buffer" nextbuf
- :execute "normal" count . "w"
+ :execute "normal" count .. "w"
<
":execute" can be used to append a command to commands
that don't accept a '|'. Example: >
@@ -10876,8 +10541,8 @@ text...
file names. The |fnameescape()| function can be used
for Vim commands, |shellescape()| for |:!| commands.
Examples: >
- :execute "e " . fnameescape(filename)
- :execute "!ls " . shellescape(filename, 1)
+ :execute "e " .. fnameescape(filename)
+ :execute "!ls " .. shellescape(filename, 1)
<
Note: The executed string may be any command-line, but
starting or ending "if", "while" and "for" does not
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 1fce37c594..36ed6bbac1 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -136,6 +136,7 @@ can be used to overrule the filetype used for certain extensions:
*.w g:filetype_w |ft-cweb-syntax|
*.i g:filetype_i |ft-progress-syntax|
*.p g:filetype_p |ft-pascal-syntax|
+ *.pp g:filetype_pp |ft-pascal-syntax|
*.sh g:bash_is_sh |ft-sh-syntax|
*.tex g:tex_flavor |ft-tex-plugin|
@@ -263,13 +264,13 @@ all loaded. For example, if this command: >
produces this output:
- runtimepath=/etc/vim,~/.config/nvim,/usr/local/share/vim/vim60 ~
+ runtimepath=/etc/vim,~/.config/nvim,/usr/local/share/vim/vim82 ~
then Vim will load all plugins in these directories and below:
/etc/vim/plugin/ ~
~/.config/nvim/plugin/ ~
- /usr/local/share/vim/vim60/plugin/ ~
+ /usr/local/share/vim/vim82/plugin/ ~
Note that the last one is the value of $VIMRUNTIME which has been expanded.
@@ -353,6 +354,13 @@ ways to change this:
3. Docs for the default filetype plugins. *ftplugin-docs*
+AWK *ft-awk-plugin*
+
+Support for features specific to GNU Awk, like @include, can be enabled by
+setting: >
+ let g:awk_is_gawk = 1
+
+
CHANGELOG *ft-changelog-plugin*
Allows for easy entrance of Changelog entries in Changelog files. There are
@@ -568,6 +576,13 @@ So `groff`'s pre-formatting output will be the same as with `g:man_hardwrap=0` i
To disable bold highlighting: >
:highlight link manBold Normal
+
+MARKDOWN *ft-markdown-plugin*
+
+To enable folding use this: >
+ let g:markdown_folding = 1
+<
+
PDF *ft-pdf-plugin*
Two maps, <C-]> and <C-T>, are provided to simulate a tag stack for navigating
diff --git a/runtime/doc/ft_ps1.txt b/runtime/doc/ft_ps1.txt
new file mode 100644
index 0000000000..df1480b929
--- /dev/null
+++ b/runtime/doc/ft_ps1.txt
@@ -0,0 +1,64 @@
+*ps1.txt* A Windows PowerShell syntax plugin for Vim
+
+Author: Peter Provost <https://www.github.com/PProvost>
+License: Apache 2.0
+URL: https://github.com/PProvost/vim-ps1
+
+INTRODUCTION *ps1-syntax*
+
+This plugin provides Vim syntax, indent and filetype detection for Windows
+PowerShell scripts, modules, and XML configuration files.
+
+
+ABOUT *ps1-about*
+
+Grab the latest version or report a bug on GitHub:
+
+https://github.com/PProvost/vim-ps1
+
+
+FOLDING *ps1-folding*
+
+The ps1 syntax file provides syntax folding (see |:syn-fold|) for script blocks
+and digital signatures in scripts.
+
+When 'foldmethod' is set to "syntax" then function script blocks will be
+folded unless you use the following in your .vimrc or before opening a script: >
+
+ :let g:ps1_nofold_blocks = 1
+<
+Digital signatures in scripts will also be folded unless you use: >
+
+ :let g:ps1_nofold_sig = 1
+<
+Note: syntax folding might slow down syntax highlighting significantly,
+especially for large files.
+
+
+COMPILER *ps1-compiler*
+
+The powershell `:compiler` script configures |:make| to execute the script in
+PowerShell.
+
+It tries to pick a smart default PowerShell command: `pwsh` if available and
+`powershell` otherwise, but you can customize the command: >
+
+ :let g:ps1_makeprg_cmd = '/path/to/pwsh'
+<
+To configure whether to show the exception type information: >
+
+ :let g:ps1_efm_show_error_categories = 1
+<
+
+KEYWORD LOOKUP *ps1-keyword*
+
+To look up keywords using PowerShell's Get-Help, press the |K| key. For more
+convenient paging, the pager `less` should be installed, which is included in
+many Linux distributions and in macOS.
+
+Many other distributions are available for Windows like
+https://chocolatey.org/packages/less/. Make sure `less` is in a directory
+listed in the `PATH` environment variable, which chocolatey above does.
+
+------------------------------------------------------------------------------
+ vim:ft=help:
diff --git a/runtime/doc/ft_raku.txt b/runtime/doc/ft_raku.txt
new file mode 100644
index 0000000000..26ada8a140
--- /dev/null
+++ b/runtime/doc/ft_raku.txt
@@ -0,0 +1,126 @@
+*vim-raku.txt* The Raku programming language filetype
+
+ *vim-raku*
+
+Vim-raku provides syntax highlighting, indentation, and other support for
+editing Raku programs.
+
+1. Using Unicode in your Raku files |raku-unicode|
+
+==============================================================================
+1. Using Unicode in your Raku files *raku-unicode*
+
+Defining new operators using Unicode symbols is a good way to make your
+Raku program easy to read. See:
+https://perl6advent.wordpress.com/2012/12/18/day-18-formulas-resistance-is-futile/
+
+While Raku does define ASCII alternatives for some common operators (see
+https://docs.raku.org/language/unicode_ascii), using the full range of
+Unicode operators is highly desirable. Your operating system provides input
+facilities, but using the features built in to Vim may be preferable.
+
+The natural way to produce these symbols in Vim is to use digraph shortcuts
+(:help |digraphs-use|). Many of them are defined; type `:digraphs` to get
+the list. A convenient way to read the list of digraphs is to save them in a
+file. From the shell: >
+ vim +'redir >/tmp/vim-digraphs-listing.txt' +digraphs +'redir END' +q
+
+Some of them are available with standard Vim digraphs:
+ << « /0 ∅ !< ≮ ~
+ >> » Ob ∘ !> ≯ ~
+ ., … 00 ∞ (C ⊂ ~
+ (U ∩ -: ÷ )C ⊃ ~
+ )U ∪ (_ ⊆ >= ≥ ~
+ ?= ≅ )_ ⊇ =< ≤ ~
+ (- ∈ ?= ≅ != ≠ ~
+ -) ∋ ?- ≃ ~
+
+The Greek alphabet is available with '*' followed by a similar Latin symbol:
+ *p π ~
+ *t τ ~
+ *X × ~
+
+Numbers, subscripts and superscripts are available with 's' and 'S':
+ 0s ₀ 0S ⁰ ~
+ 1s ₁ 1S ¹ ~
+ 2s ₂ 9S ⁹ ~
+
+But some don´t come defined by default. Those are digraph definitions you can
+add in your ~/.vimrc file. >
+ exec 'digraph \\ '.char2nr('∖')
+ exec 'digraph \< '.char2nr('≼')
+ exec 'digraph \> '.char2nr('≽')
+ exec 'digraph (L '.char2nr('⊈')
+ exec 'digraph )L '.char2nr('⊉')
+ exec 'digraph (/ '.char2nr('⊄')
+ exec 'digraph )/ '.char2nr('⊅')
+ exec 'digraph )/ '.char2nr('⊅')
+ exec 'digraph U+ '.char2nr('⊎')
+ exec 'digraph 0- '.char2nr('⊖')
+ " Euler's constant
+ exec 'digraph ne '.char2nr('𝑒')
+ " Raku's atomic operations marker
+ exec 'digraph @@ '.char2nr('⚛')
+
+Alternatively, you can write Insert mode abbreviations that convert ASCII-
+based operators into their single-character Unicode equivalent. >
+ iabbrev <buffer> !(<) ⊄
+ iabbrev <buffer> !(<=) ⊈
+ iabbrev <buffer> !(>) ⊅
+ iabbrev <buffer> !(>=) ⊉
+ iabbrev <buffer> !(cont) ∌
+ iabbrev <buffer> !(elem) ∉
+ iabbrev <buffer> != ≠
+ iabbrev <buffer> (&) ∩
+ iabbrev <buffer> (+) ⊎
+ iabbrev <buffer> (-) ∖
+ iabbrev <buffer> (.) ⊍
+ iabbrev <buffer> (<) ⊂
+ iabbrev <buffer> (<+) ≼
+ iabbrev <buffer> (<=) ⊆
+ iabbrev <buffer> (>) ⊃
+ iabbrev <buffer> (>+) ≽
+ iabbrev <buffer> (>=) ⊇
+ iabbrev <buffer> (\|) ∪
+ iabbrev <buffer> (^) ⊖
+ iabbrev <buffer> (atomic) ⚛
+ iabbrev <buffer> (cont) ∋
+ iabbrev <buffer> (elem) ∈
+ iabbrev <buffer> * ×
+ iabbrev <buffer> **0 ⁰
+ iabbrev <buffer> **1 ¹
+ iabbrev <buffer> **2 ²
+ iabbrev <buffer> **3 ³
+ iabbrev <buffer> **4 ⁴
+ iabbrev <buffer> **5 ⁵
+ iabbrev <buffer> **6 ⁶
+ iabbrev <buffer> **7 ⁷
+ iabbrev <buffer> **8 ⁸
+ iabbrev <buffer> **9 ⁹
+ iabbrev <buffer> ... …
+ iabbrev <buffer> / ÷
+ iabbrev <buffer> << «
+ iabbrev <buffer> <<[=]<< «=«
+ iabbrev <buffer> <<[=]>> «=»
+ iabbrev <buffer> <= ≤
+ iabbrev <buffer> =~= ≅
+ iabbrev <buffer> >= ≥
+ iabbrev <buffer> >> »
+ iabbrev <buffer> >>[=]<< »=«
+ iabbrev <buffer> >>[=]>> »=»
+ iabbrev <buffer> Inf ∞
+ iabbrev <buffer> atomic-add-fetch ⚛+=
+ iabbrev <buffer> atomic-assign ⚛=
+ iabbrev <buffer> atomic-fetch ⚛
+ iabbrev <buffer> atomic-dec-fetch --⚛
+ iabbrev <buffer> atomic-fetch-dec ⚛--
+ iabbrev <buffer> atomic-fetch-inc ⚛++
+ iabbrev <buffer> atomic-inc-fetch ++⚛
+ iabbrev <buffer> atomic-sub-fetch ⚛−=
+ iabbrev <buffer> e 𝑒
+ iabbrev <buffer> o ∘
+ iabbrev <buffer> pi π
+ iabbrev <buffer> set() ∅
+ iabbrev <buffer> tau τ
+<
+ vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/ft_sql.txt b/runtime/doc/ft_sql.txt
index 324e2e44af..f38c8edbf3 100644
--- a/runtime/doc/ft_sql.txt
+++ b/runtime/doc/ft_sql.txt
@@ -308,7 +308,7 @@ can create any of the following: >
~/.config/nvim/indent/sqlite.vim
No changes are necessary to the SQLSetType function. It will automatically
-pickup the new SQL files and load them when you issue the SQLSetType command.
+pick up the new SQL files and load them when you issue the SQLSetType command.
==============================================================================
@@ -338,8 +338,8 @@ The defaults static maps are: >
imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
-The use of "<C-C>" can be user chosen by using the following in your
-|init.vim| as it may not work properly on all platforms: >
+The use of "<C-C>" can be user chosen by using the following in your |init.vim|
+as it may not work properly on all platforms: >
let g:ftplugin_sql_omni_key = '<C-C>'
>
The static maps (which are based on the syntax highlight groups) follow this
@@ -515,10 +515,10 @@ beginning with those characters. >
4.3.2 Column Completion: *sql-completion-columns*
The SQL completion plugin can also display a list of columns for particular
-tables. The column completion is trigger via <C-C>c.
+tables. The column completion is triggered via <C-C>c.
NOTE: The following example uses <Right> to trigger a column list while
- the popup window is active.
+ the popup window is active.
Example of using column completion:
- Press <C-C>t again to display the list of tables.
@@ -723,7 +723,7 @@ your platform (often a case on *nix) you define the following variable in
your |init.vim|: >
let g:omni_sql_no_default_maps = 1
-Do no edit ftplugin/sql.vim directly! If you change this file your changes
+Do not edit ftplugin/sql.vim directly! If you change this file your changes
will be over written on future updates. Vim has a special directory structure
which allows you to make customizations without changing the files that are
included with the Vim distribution. If you wish to customize the maps
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index 0df776010b..0f1fa2b7a7 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -180,19 +180,12 @@ This does require the |+menu| feature enabled at compile time.
Creating New Menus *creating-menus*
*:me* *:menu* *:noreme* *:noremenu*
- *:am* *:amenu* *:an* *:anoremenu*
- *:nme* *:nmenu* *:nnoreme* *:nnoremenu*
- *:ome* *:omenu* *:onoreme* *:onoremenu*
- *:vme* *:vmenu* *:vnoreme* *:vnoremenu*
- *:xme* *:xmenu* *:xnoreme* *:xnoremenu*
- *:sme* *:smenu* *:snoreme* *:snoremenu*
- *:ime* *:imenu* *:inoreme* *:inoremenu*
- *:cme* *:cmenu* *:cnoreme* *:cnoremenu*
*E330* *E327* *E331* *E336* *E333*
*E328* *E329* *E337* *E792*
To create a new menu item, use the ":menu" commands. They are mostly like
-the ":map" set of commands but the first argument is a menu item name, given
-as a path of menus and submenus with a '.' between them, e.g.: >
+the ":map" set of commands (see |map-modes|), but the first argument is a menu
+item name, given as a path of menus and submenus with a '.' between them,
+e.g.: >
:menu File.Save :w<CR>
:inoremenu File.Save <C-O>:w<CR>
@@ -221,6 +214,7 @@ With the shortcut "F" (while keeping the <Alt> key pressed), and then "O",
this menu can be used. The second part is shown as "Open :e". The ":e"
is right aligned, and the "O" is underlined, to indicate it is the shortcut.
+ *:am* *:amenu* *:an* *:anoremenu*
The ":amenu" command can be used to define menu entries for all modes at once.
To make the command work correctly, a character is automatically inserted for
some modes:
@@ -253,9 +247,38 @@ expression register: >
:amenu Insert.foobar "='foobar'<CR>P
+The special text <Cmd> begins a "command menu", it executes the command
+directly without changing modes. Where you might use ":...<CR>" you can
+instead use "<Cmd>...<CR>". See |<Cmd>| for more info. Example: >
+ anoremenu File.Next <Cmd>next<CR>
+
Note that <Esc> in Cmdline mode executes the command, like in a mapping. This
is Vi compatible. Use CTRL-C to quit Cmdline mode.
+ *:nme* *:nmenu* *:nnoreme* *:nnoremenu* *:nunme* *:nunmenu*
+Menu commands starting with "n" work in Normal mode. |mapmode-n|
+
+ *:ome* *:omenu* *:onoreme* *:onoremenu* *:ounme* *:ounmenu*
+Menu commands starting with "o" work in Operator-pending mode. |mapmode-o|
+
+ *:vme* *:vmenu* *:vnoreme* *:vnoremenu* *:vunme* *:vunmenu*
+Menu commands starting with "v" work in Visual mode. |mapmode-v|
+
+ *:xme* *:xmenu* *:xnoreme* *:xnoremenu* *:xunme* *:xunmenu*
+Menu commands starting with "x" work in Visual and Select mode. |mapmode-x|
+
+ *:sme* *:smenu* *:snoreme* *:snoremenu* *:sunme* *:sunmenu*
+Menu commands starting with "s" work in Select mode. |mapmode-s|
+
+ *:ime* *:imenu* *:inoreme* *:inoremenu* *:iunme* *:iunmenu*
+Menu commands starting with "i" work in Insert mode. |mapmode-i|
+
+ *:cme* *:cmenu* *:cnoreme* *:cnoremenu* *:cunme* *:cunmenu*
+Menu commands starting with "c" work in Cmdline mode. |mapmode-c|
+
+ *:tlm* *:tlmenu* *:tln* *:tlnoremenu* *:tlu* *:tlunmenu*
+Menu commands starting with "tl" work in Terminal mode. |mapmode-t|
+
*:menu-<silent>* *:menu-silent*
To define a menu which will not be echoed on the command line, add
"<silent>" as the first argument. Example: >
@@ -431,6 +454,8 @@ Special characters in the list, just before the rhs:
* The menu was defined with "nore" to disallow remapping.
& The menu was defined with "<script>" to allow remapping script-local
mappings only.
+s The menu was defined with "<silent>" to avoid showing what it is
+ mapped to when triggered.
- The menu was disabled.
Note that hitting <Tab> while entering a menu name after a menu command may
@@ -461,13 +486,6 @@ Deleting Menus *delete-menus*
*:unme* *:unmenu*
*:aun* *:aunmenu*
- *:nunme* *:nunmenu*
- *:ounme* *:ounmenu*
- *:vunme* *:vunmenu*
- *:xunme* *:xunmenu*
- *:sunme* *:sunmenu*
- *:iunme* *:iunmenu*
- *:cunme* *:cunmenu*
To delete a menu item or a whole submenu, use the unmenu commands, which are
analogous to the unmap commands. Eg: >
:unmenu! Edit.Paste
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 203699435b..8b096ff28b 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -30,7 +30,7 @@ Get specific help: It is possible to go directly to whatever you want help
help entries for "word".
Or use ":helpgrep word". |:helpgrep|
- Getting started: Do the Vim tutor, a 20 minute interactive training for the
+ Getting started: Do the Vim tutor, a 30-minute interactive course for the
basic commands, see |vimtutor|.
Read the user manual from start to end: |usr_01.txt|
@@ -40,7 +40,7 @@ through the help of many others. See |credits|.
*doc-file-list* *Q_ct*
BASIC:
|quickref| Overview of the most common commands you will use
-|tutor| 20 minutes training course for beginners
+|tutor| 30-minute interactive course for beginners
|copying| About copyrights
|iccf| Helping poor children in Uganda
|sponsor| Sponsor Vim development, become a registered Vim user
@@ -132,6 +132,7 @@ Advanced editing ~
|lua.txt| Lua API
Special issues ~
+|testing.txt| testing Vim and Vim scripts
|print.txt| printing
|remote.txt| using Vim as a server or client
@@ -147,7 +148,7 @@ Programming language support ~
Language support ~
|digraph.txt| list of available digraphs
-|mbyte.txt| multi-byte text support
+|mbyte.txt| multibyte text support
|mlang.txt| non-English language support
|rileft.txt| right-to-left editing mode
|arabic.txt| Arabic language support and editing
diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt
index ba6dd02a29..7643d84017 100644
--- a/runtime/doc/helphelp.txt
+++ b/runtime/doc/helphelp.txt
@@ -92,9 +92,9 @@ Help on help files *helphelp*
:help k| only
< Note that a space before the '|' is seen as part of
the ":help" argument.
- You can also use <LF> or <CR> to separate the help
+ You can also use <NL> or <CR> to separate the help
command from a following command. You need to type
- CTRL-V first to insert the <LF> or <CR>. Example: >
+ CTRL-V first to insert the <NL> or <CR>. Example: >
:help so<C-V><CR>only
<
@@ -103,7 +103,11 @@ Help on help files *helphelp*
current file. See |help-translated|.
*:helpc* *:helpclose*
-:helpc[lose] Close one help window, if there is one.
+:helpc[lose] Close one help window, if there is one.
+ Vim will try to restore the window layout (including
+ cursor position) to the same layout it was before
+ opening the help window initially. This might cause
+ triggering several autocommands.
*:helpg* *:helpgrep*
:helpg[rep] {pattern}[@xx]
@@ -155,9 +159,31 @@ When no argument is given to |:help| the file given with the 'helpfile' option
will be opened. Otherwise the specified tag is searched for in all "doc/tags"
files in the directories specified in the 'runtimepath' option.
+If you would like to open the help in the current window, see this tip:
+|help-curwin|.
+
The initial height of the help window can be set with the 'helpheight' option
(default 20).
+When the help buffer is created, several local options are set to make sure
+the help text is displayed as it was intended:
+ 'iskeyword' nearly all ASCII chars except ' ', '*', '"' and '|'
+ 'foldmethod' "manual"
+ 'tabstop' 8
+ 'arabic' off
+ 'binary' off
+ 'buflisted' off
+ 'cursorbind' off
+ 'diff' off
+ 'foldenable' off
+ 'list' off
+ 'modifiable' off
+ 'number' off
+ 'relativenumber' off
+ 'rightleft' off
+ 'scrollbind' off
+ 'spell' off
+
Jump to specific subjects by using tags. This can be done in two ways:
- Use the "CTRL-]" command while standing on the name of a command or option.
This only works when the tag is a keyword. "<C-Leftmouse>" and
@@ -364,4 +390,17 @@ highlighting. So do these:
You can find the details in $VIMRUNTIME/syntax/help.vim
+ *inclusion*
+Vim is for everybody, no matter race, gender or anything. Some people make a
+big deal about using "he" or "his" when referring to the user, thinking it
+means we assume the user is male. That is not the case, it's just a habit of
+writing help text, which quite often is many years old. Also, a lot of the
+text is written by contributors for whom English is not their first language.
+We do not make any assumptions about the gender of the user, no matter how the
+text is phrased. Some people have suggested using "they", but that is not
+regular English. We do not want to spend much time on this discussion. The
+goal is that the reader understands how Vim works, the exact wording is
+secondary.
+
+
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
index f1d07ddb20..ddcf220844 100644
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -22,14 +22,15 @@ See |provider-perl| for more information.
:[range]perl << [endmarker]
{script}
{endmarker}
- Execute perl script {script}. Useful for including
- perl code in Vim scripts. Requires perl, see
- |script-here|.
+ Execute perl script {script}.
+ The {endmarker} after {script} must NOT be preceded by
+ any white space.
-The {endmarker} below the {script} must NOT be preceded by any white space.
+ If [endmarker] is omitted, it defaults to a dot '.'
+ like for the |:append| and |:insert| commands.
-If [endmarker] is omitted from after the "<<", a dot '.' must be used after
-{script}, like for the |:append| and |:insert| commands.
+ Useful for including perl code in Vim scripts.
+ Requires perl, see |script-here|.
Example: >
function! MyVimMethod()
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index ed3bdcf277..dc46fa515a 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -189,20 +189,20 @@ vim.eval(str) *python-eval*
# a number.
vim.strwidth(str) *python-strwidth*
- Like |strwidth()|: returns number of display cells str occupies, tab
+ Like |strwidth()|: returns number of display cells str occupies, tab
is counted as one cell.
vim.foreach_rtp(callable) *python-foreach_rtp*
- Call the given callable for each path in 'runtimepath' until either
- callable returns something but None, the exception is raised or there
- are no longer paths. If stopped in case callable returned non-None,
+ Call the given callable for each path in 'runtimepath' until either
+ callable returns something but None, the exception is raised or there
+ are no longer paths. If stopped in case callable returned non-None,
vim.foreach_rtp function returns the value returned by callable.
vim.chdir(*args, **kwargs) *python-chdir*
vim.fchdir(*args, **kwargs) *python-fchdir*
Run os.chdir or os.fchdir, then all appropriate vim stuff.
- Note: you should not use these functions directly, use os.chdir and
- os.fchdir instead. Behavior of vim.fchdir is undefined in case
+ Note: you should not use these functions directly, use os.chdir and
+ os.fchdir instead. Behavior of vim.fchdir is undefined in case
os.fchdir does not exist.
Error object of the "vim" module
@@ -237,15 +237,15 @@ vim.windows *python-windows*
:py w in vim.windows # Membership test
:py n = len(vim.windows) # Number of elements
:py for w in vim.windows: # Sequential access
-< Note: vim.windows object always accesses current tab page.
- |python-tabpage|.windows objects are bound to parent |python-tabpage|
- object and always use windows from that tab page (or throw vim.error
- in case tab page was deleted). You can keep a reference to both
- without keeping a reference to vim module object or |python-tabpage|,
+< Note: vim.windows object always accesses current tab page.
+ |python-tabpage|.windows objects are bound to parent |python-tabpage|
+ object and always use windows from that tab page (or throw vim.error
+ in case tab page was deleted). You can keep a reference to both
+ without keeping a reference to vim module object or |python-tabpage|,
they will not lose their properties in this case.
vim.tabpages *python-tabpages*
- A sequence object providing access to the list of vim tab pages. The
+ A sequence object providing access to the list of vim tab pages. The
object supports the following operations: >
:py t = vim.tabpages[i] # Indexing (read-only)
:py t in vim.tabpages # Membership test
@@ -266,12 +266,12 @@ vim.current *python-current*
"current range". A range is a bit like a buffer, but with all access
restricted to a subset of lines. See |python-range| for more details.
- Note: When assigning to vim.current.{buffer,window,tabpage} it expects
- valid |python-buffer|, |python-window| or |python-tabpage| objects
- respectively. Assigning triggers normal (with |autocommand|s)
- switching to given buffer, window or tab page. It is the only way to
- switch UI objects in python: you can't assign to
- |python-tabpage|.window attribute. To switch without triggering
+ Note: When assigning to vim.current.{buffer,window,tabpage} it expects
+ valid |python-buffer|, |python-window| or |python-tabpage| objects
+ respectively. Assigning triggers normal (with |autocommand|s)
+ switching to given buffer, window or tab page. It is the only way to
+ switch UI objects in python: you can't assign to
+ |python-tabpage|.window attribute. To switch without triggering
autocommands use >
py << EOF
saved_eventignore = vim.options['eventignore']
@@ -284,11 +284,11 @@ vim.current *python-current*
<
vim.vars *python-vars*
vim.vvars *python-vvars*
- Dictionary-like objects holding dictionaries with global (|g:|) and
+ Dictionary-like objects holding dictionaries with global (|g:|) and
vim (|v:|) variables respectively.
vim.options *python-options*
- Object partly supporting mapping protocol (supports setting and
+ Object partly supporting mapping protocol (supports setting and
getting items) providing a read-write access to global options.
Note: unlike |:set| this provides access only to global options. You
cannot use this object to obtain or set local options' values or
@@ -299,7 +299,7 @@ vim.options *python-options*
buffer-local options and |python-window| objects to access to
window-local options.
- Type of this object is available via "Options" attribute of vim
+ Type of this object is available via "Options" attribute of vim
module.
Output from Python *python-output*
@@ -320,10 +320,10 @@ Output from Python *python-output*
*python2-directory* *python3-directory* *pythonx-directory*
Python 'runtimepath' handling *python-special-path*
-In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for
-the list of paths found in 'runtimepath': with this directory in sys.path and
-vim.path_hooks in sys.path_hooks python will try to load module from
-{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for
+In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for
+the list of paths found in 'runtimepath': with this directory in sys.path and
+vim.path_hooks in sys.path_hooks python will try to load module from
+{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for
each {rtp} found in 'runtimepath'.
Implementation is similar to the following, but written in C: >
@@ -351,8 +351,8 @@ Implementation is similar to the following, but written in C: >
fmr = find_module(fullname, path)
return load_module(fullname, *fmr)
- # It uses vim module itself in place of VimPathFinder class: it does not
- # matter for python which object has find_module function attached to as
+ # It uses vim module itself in place of VimPathFinder class: it does not
+ # matter for python which object has find_module function attached to as
# an attribute.
class VimPathFinder(object):
@classmethod
@@ -375,28 +375,28 @@ Implementation is similar to the following, but written in C: >
sys.path_hooks.append(hook)
vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH*
- String constant used in conjunction with vim path hook. If path hook
- installed by vim is requested to handle anything but path equal to
- vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other
+ String constant used in conjunction with vim path hook. If path hook
+ installed by vim is requested to handle anything but path equal to
+ vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other
case it uses special loader.
- Note: you must not use value of this constant directly, always use
+ Note: you must not use value of this constant directly, always use
vim.VIM_SPECIAL_PATH object.
vim.find_module(...) *python-find_module*
vim.path_hook(path) *python-path_hook*
- Methods or objects used to implement path loading as described above.
- You should not be using any of these directly except for vim.path_hook
- in case you need to do something with sys.meta_path. It is not
- guaranteed that any of the objects will exist in the future vim
+ Methods or objects used to implement path loading as described above.
+ You should not be using any of these directly except for vim.path_hook
+ in case you need to do something with sys.meta_path. It is not
+ guaranteed that any of the objects will exist in the future vim
versions.
vim._get_paths *python-_get_paths*
- Methods returning a list of paths which will be searched for by path
- hook. You should not rely on this method being present in future
+ Methods returning a list of paths which will be searched for by path
+ hook. You should not rely on this method being present in future
versions, but can use it for debugging.
- It returns a list of {rtp}/python2 (or {rtp}/python3) and
+ It returns a list of {rtp}/python2 (or {rtp}/python3) and
{rtp}/pythonx directories for each {rtp} in 'runtimepath'.
==============================================================================
@@ -425,21 +425,21 @@ line numbers, which start from 1. This is particularly relevant when dealing
with marks (see below) which use vim line numbers.
The buffer object attributes are:
- b.vars Dictionary-like object used to access
+ b.vars Dictionary-like object used to access
|buffer-variable|s.
- b.options Mapping object (supports item getting, setting and
- deleting) that provides access to buffer-local options
- and buffer-local values of |global-local| options. Use
- |python-window|.options if option is window-local,
- this object will raise KeyError. If option is
- |global-local| and local value is missing getting it
+ b.options Mapping object (supports item getting, setting and
+ deleting) that provides access to buffer-local options
+ and buffer-local values of |global-local| options. Use
+ |python-window|.options if option is window-local,
+ this object will raise KeyError. If option is
+ |global-local| and local value is missing getting it
will return None.
b.name String, RW. Contains buffer name (full path).
- Note: when assigning to b.name |BufFilePre| and
+ Note: when assigning to b.name |BufFilePre| and
|BufFilePost| autocommands are launched.
b.number Buffer number. Can be used as |python-buffers| key.
Read-only.
- b.valid True or False. Buffer object becomes invalid when
+ b.valid True or False. Buffer object becomes invalid when
corresponding buffer is wiped out.
The buffer object methods are:
@@ -527,16 +527,16 @@ Window attributes are:
This is a tuple, (row,col).
height (read-write) The window height, in rows
width (read-write) The window width, in columns
- vars (read-only) The window |w:| variables. Attribute is
- unassignable, but you can change window
+ vars (read-only) The window |w:| variables. Attribute is
+ unassignable, but you can change window
variables this way
- options (read-only) The window-local options. Attribute is
- unassignable, but you can change window
- options this way. Provides access only to
- window-local options, for buffer-local use
- |python-buffer| and for global ones use
- |python-options|. If option is |global-local|
- and local value is missing getting it will
+ options (read-only) The window-local options. Attribute is
+ unassignable, but you can change window
+ options this way. Provides access only to
+ window-local options, for buffer-local use
+ |python-buffer| and for global ones use
+ |python-options|. If option is |global-local|
+ and local value is missing getting it will
return None.
number (read-only) Window number. The first window has number 1.
This is zero in case it cannot be determined
@@ -545,7 +545,7 @@ Window attributes are:
row, col (read-only) On-screen window position in display cells.
First position is zero.
tabpage (read-only) Window tab page.
- valid (read-write) True or False. Window object becomes invalid
+ valid (read-write) True or False. Window object becomes invalid
when corresponding window is closed.
The height attribute is writable only if the screen is split horizontally.
@@ -556,21 +556,21 @@ Window object type is available using "Window" attribute of vim module.
==============================================================================
Tab page objects *python-tabpage*
-Tab page objects represent vim tab pages. You can obtain them in a number of
+Tab page objects represent vim tab pages. You can obtain them in a number of
ways:
- via vim.current.tabpage (|python-current|)
- from indexing vim.tabpages (|python-tabpages|)
-You can use this object to access tab page windows. They have no methods and
+You can use this object to access tab page windows. They have no methods and
no sequence or other interfaces.
Tab page attributes are:
- number The tab page number like the one returned by
+ number The tab page number like the one returned by
|tabpagenr()|.
windows Like |python-windows|, but for current tab page.
vars The tab page |t:| variables.
window Current tabpage window.
- valid True or False. Tab page object becomes invalid when
+ valid True or False. Tab page object becomes invalid when
corresponding tab page is closed.
TabPage object type is available using "TabPage" attribute of vim module.
@@ -578,7 +578,7 @@ TabPage object type is available using "TabPage" attribute of vim module.
==============================================================================
pyeval() and py3eval() Vim functions *python-pyeval*
-To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
+To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
functions to evaluate Python expressions and pass their values to Vim script.
|pyxeval()| is also available.
@@ -586,17 +586,28 @@ functions to evaluate Python expressions and pass their values to Vim script.
Python 3 *python3*
*:py3* *:python3*
-The `:py3` and `:python3` commands work similar to `:python`. A simple check
-if the `:py3` command is working: >
- :py3 print("Hello")
+:[range]py3 {stmt}
+:[range]py3 << [endmarker]
+{script}
+{endmarker}
-To see what version of Python you have: >
- :py3 import sys
- :py3 print(sys.version)
+:[range]python3 {stmt}
+:[range]python3 << [endmarker]
+{script}
+{endmarker}
+ The `:py3` and `:python3` commands work similar to `:python`. A
+ simple check if the `:py3` command is working: >
+ :py3 print("Hello")
+<
+ To see what version of Python you have: >
+ :py3 import sys
+ :py3 print(sys.version)
< *:py3file*
-The `:py3file` command works similar to `:pyfile`.
+:[range]py3f[ile] {file}
+ The `:py3file` command works similar to `:pyfile`.
*:py3do*
-The `:py3do` command works similar to `:pydo`.
+:[range]py3do {body}
+ The `:py3do` command works similar to `:pydo`.
*E880*
Raising SystemExit exception in python isn't endorsed way to quit vim, use: >
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
index c8d2409549..02edd50ae8 100644
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -19,14 +19,14 @@ downloading Ruby there.
:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: >
:ruby print "Hello"
-:rub[y] << [endpattern]
+:rub[y] << [endmarker]
{script}
-{endpattern}
+{endmarker}
Execute Ruby script {script}.
- The {endpattern} after {script} must NOT be preceded
- by any white space.
+ The {endmarker} after {script} must NOT be preceded by
+ any white space.
- If [endpattern] is omitted, it defaults to a dot '.'
+ If [endmarker] is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands.
This form of the |:ruby| command is mainly useful for
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index f2278f8453..dfd81d7170 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -410,11 +410,11 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-(*
(N When in unclosed parentheses, indent N characters from the line
- with the unclosed parentheses. Add a 'shiftwidth' for every
+ with the unclosed parenthesis. Add a 'shiftwidth' for every
extra unclosed parentheses. When N is 0 or the unclosed
- parentheses is the first non-white character in its line, line
+ parenthesis is the first non-white character in its line, line
up with the next non-white character after the unclosed
- parentheses. (default 'shiftwidth' * 2).
+ parenthesis. (default 'shiftwidth' * 2).
cino= cino=(0 >
if (c1 && (c2 || if (c1 && (c2 ||
@@ -435,7 +435,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-U*
UN When N is non-zero, do not ignore the indenting specified by
- ( or u in case that the unclosed parentheses is the first
+ ( or u in case that the unclosed parenthesis is the first
non-white character in its line. (default 0).
cino= or cino=(s cino=(s,U1 >
@@ -448,8 +448,8 @@ The examples below assume a 'shiftwidth' of 4.
*cino-w*
wN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively, or using "U0" and the unclosed
- parentheses is the first non-white character in its line, line
- up with the character immediately after the unclosed parentheses
+ parenthesis is the first non-white character in its line, line
+ up with the character immediately after the unclosed parenthesis
rather than the first non-white character. (default 0).
cino=(0 cino=(0,w1 >
@@ -460,11 +460,11 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-W*
WN When in unclosed parentheses and N is non-zero and either
- using "(0" or "u0", respectively and the unclosed parentheses is
+ using "(0" or "u0", respectively and the unclosed parenthesis is
the last non-white character in its line and it is not the
- closing parentheses, indent the following line N characters
+ closing parenthesis, indent the following line N characters
relative to the outer context (i.e. start of the line or the
- next unclosed parentheses). (default: 0).
+ next unclosed parenthesis). (default: 0).
cino=(0 cino=(0,W4 >
a_long_line( a_long_line(
@@ -491,8 +491,8 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-m*
mN When N is non-zero, line up a line starting with a closing
- parentheses with the first character of the line with the
- matching opening parentheses. (default 0).
+ parenthesis with the first character of the line with the
+ matching opening parenthesis. (default 0).
cino=(s cino=(s,m1 >
c = c1 && ( c = c1 && (
@@ -506,7 +506,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-M*
MN When N is non-zero, line up a line starting with a closing
- parentheses with the first character of the previous line.
+ parenthesis with the first character of the previous line.
(default 0).
cino= cino=M1 >
@@ -528,7 +528,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*javascript-cinoptions* *javascript-indenting* *cino-J*
JN Indent JavaScript object declarations correctly by not confusing
- them with labels. The value 'N' is currently unused but must be
+ them with labels. The value 'N' is currently unused but must be
non-zero (e.g. 'J1'). If you enable this you probably also want
to set |cino-j|. >
@@ -537,7 +537,7 @@ The examples below assume a 'shiftwidth' of 4.
that: this,
some: ok,
},
- "bar":{
+ "bar":{
a : 2,
b: "123abc",
x: 4,
@@ -565,7 +565,7 @@ The examples below assume a 'shiftwidth' of 4.
recognize preprocessor lines; right-shifting lines that start
with "#" does not work.
-
+ *cino-P*
PN When N is non-zero recognize C pragmas, and indent them like any
other code; does not concern other preprocessor directives.
When N is zero (default): don't recognize C pragmas, treating
@@ -606,14 +606,14 @@ the use of square and curly brackets, and otherwise by community convention.
These conventions are not universally followed, so the Clojure indent script
offers a few configurable options, listed below.
-If the current vim does not include |searchpairpos()|, the indent script falls
+If the current vim does not include searchpairpos(), the indent script falls
back to normal 'lisp' indenting, and the following options are ignored.
*g:clojure_maxlines*
-Set maximum scan distance of |searchpairpos()|. Larger values trade
-performance for correctness when dealing with very long forms. A value of 0
-will scan without limits.
+Set maximum scan distance of searchpairpos(). Larger values trade performance
+for correctness when dealing with very long forms. A value of 0 will scan
+without limits.
>
" Default
let g:clojure_maxlines = 100
@@ -814,6 +814,16 @@ Detail:
<!-- --> : -1
+MATLAB *ft-matlab-indent* *matlab-indent* *matlab-indenting*
+
+The setting Function indenting format in MATLAB Editor/Debugger Language
+Preferences corresponds to: >
+ :let g:MATLAB_function_indent = {0, 1 or 2 (default)}
+
+Where 0 is for Classic, 1 for Indent nested functions and 2 for Indent all
+functions.
+
+
PHP *ft-php-indent* *php-indent* *php-indenting*
NOTE: PHP files will be indented correctly only if PHP |syntax| is active.
@@ -887,7 +897,7 @@ To automatically remove '\r' characters when the 'fileformat' is set to Unix: >
*PHP_BracesAtCodeLevel*
To indent braces at the same level than the code they contain: >
:let g:PHP_BracesAtCodeLevel = 1
-
+
This will give the following result: >
if ($foo)
{
@@ -951,10 +961,12 @@ Function call arguments will indent 1 extra level. For two-space indentation: >
-------------
*PHP_IndentFunctionDeclarationParameters*
-Extra indentation levels to add to arguments in multi-line function definitions. >
+Extra indentation levels to add to arguments in multi-line function
+definitions. >
let g:PHP_IndentFunctionDeclarationParameters = 1
-Function arguments in declarations will indent 1 extra level. For two-space indentation: >
+Function arguments in declarations will indent 1 extra level. For two-space
+indentation: >
function call_the_thing(
$with_this,
@@ -980,7 +992,7 @@ Indent after a nested paren: >
Indent for a continuation line: >
let g:pyindent_continue = 'shiftwidth() * 2'
-The method uses |searchpair()| to look back for unclosed parenthesis. This
+The method uses |searchpair()| to look back for unclosed parentheses. This
can sometimes be slow, thus it timeouts after 150 msec. If you notice the
indenting isn't correct, you can set a larger timeout in msec: >
let g:pyindent_searchpair_timeout = 500
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index c824a9f9f6..e7d891bc33 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -61,22 +61,26 @@ tag char action in Insert mode ~
the cursor
|i_CTRL-Q| CTRL-Q same as CTRL-V, unless used for terminal
control flow
-|i_CTRL-R| CTRL-R {0-9a-z"%#*:=}
+|i_CTRL-SHIFT-Q| CTRL-SHIFT-Q {char}
+ like CTRL-Q unless |modifyOtherKeys| is active
+|i_CTRL-R| CTRL-R {register}
insert the contents of a register
-|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=}
+|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {register}
insert the contents of a register literally
-|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {0-9a-z"%#*:=}
+|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {register}
insert the contents of a register literally
and don't auto-indent
-|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {0-9a-z"%#*:=}
+|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {register}
insert the contents of a register literally
and fix indent.
- CTRL-S (used for terminal control flow)
+ CTRL-S not used or used for terminal control flow
|i_CTRL-T| CTRL-T insert one shiftwidth of indent in current
line
|i_CTRL-U| CTRL-U delete all entered characters in the current
line
|i_CTRL-V| CTRL-V {char} insert next non-digit literally
+|i_CTRL-SHIFT-V| CTRL-SHIFT-V {char}
+ like CTRL-V unless |modifyOtherKeys| is active
|i_CTRL-V_digit| CTRL-V {number} insert three digit decimal number as a single
byte.
|i_CTRL-W| CTRL-W delete word before the cursor
@@ -203,9 +207,9 @@ tag char note action in Normal mode ~
|CTRL-N| CTRL-N 1 same as "j"
|CTRL-O| CTRL-O 1 go to N older entry in jump list
|CTRL-P| CTRL-P 1 same as "k"
- CTRL-Q (used for terminal control flow)
+ CTRL-Q not used, or used for terminal control flow
|CTRL-R| CTRL-R 2 redo changes which were undone with 'u'
- CTRL-S (used for terminal control flow)
+ CTRL-S not used, or used for terminal control flow
|CTRL-T| CTRL-T jump to N older Tag in tag list
|CTRL-U| CTRL-U scroll N lines Upwards (default: half a
screen)
@@ -231,8 +235,7 @@ tag char note action in Normal mode ~
2 filter Nmove text through the {filter}
command
|!!| !!{filter} 2 filter N lines through the {filter} command
-|quote| "{a-zA-Z0-9.%#:-"} use register {a-zA-Z0-9.%#:-"} for next
- delete, yank or put (uppercase to append)
+|quote| "{register} use {register} for next delete, yank or put
({.%#:} only work with put)
|#| # 1 search backward for the Nth occurrence of
the ident under the cursor
@@ -350,8 +353,8 @@ tag char note action in Normal mode ~
register x]
|Y| ["x]Y yank N lines [into register x]; synonym for
"yy"
-|ZZ| ZZ store current file if modified, and exit
-|ZQ| ZQ exit current file always
+|ZZ| ZZ write if buffer changed and close window
+|ZQ| ZQ close window without writing
|[| [{char} square bracket command (see |[| below)
\ not used
|]| ]{char} square bracket command (see |]| below)
@@ -768,10 +771,10 @@ tag char note action in Normal mode ~
lines down
|gk| gk 1 like "k", but when 'wrap' on go N screen
lines up
-|gn| gn 1,2 find the next match with the last used
- search pattern and Visually select it
|gm| gm 1 go to character at middle of the screenline
|gM| gM 1 go to character at middle of the text line
+|gn| gn 1,2 find the next match with the last used
+ search pattern and Visually select it
|go| go 1 cursor to byte N in the buffer
|gp| ["x]gp 2 put the text [from register x] after the
cursor N times, leave the cursor after it
@@ -816,7 +819,7 @@ tag char note action in Normal mode ~
|zD| zD delete folds recursively
|zE| zE eliminate all folds
|zF| zF create a fold for N lines
-|zG| zG mark word as good spelled word
+|zG| zG temporarily mark word as correctly spelled
|zH| zH when 'wrap' off scroll half a screenwidth
to the right
|zL| zL when 'wrap' off scroll half a screenwidth
@@ -825,7 +828,7 @@ tag char note action in Normal mode ~
|zN| zN set 'foldenable'
|zO| zO open folds recursively
|zR| zR set 'foldlevel' to the deepest fold
-|zW| zW mark word as wrong (bad) spelled word
+|zW| zW temporarily mark word as incorrectly spelled
|zX| zX re-apply 'foldlevel'
|z^| z^ cursor on line N (default line above
window), otherwise like "z-"
@@ -837,7 +840,7 @@ tag char note action in Normal mode ~
position the cursor at the end (right side)
of the screen
|zf| zf{motion} create a fold for Nmove text
-|zg| zg mark word as good spelled word
+|zg| zg permanently mark word as correctly spelled
|zh| zh when 'wrap' off scroll screen N characters
to the right
|zi| zi toggle 'foldenable'
@@ -858,7 +861,7 @@ tag char note action in Normal mode ~
|zuW| zuW undo |zW|
|zuG| zuG undo |zG|
|zv| zv open enough folds to view the cursor line
-|zw| zw mark word as wrong (bad) spelled word
+|zw| zw permanently mark word as incorrectly spelled
|zx| zx re-apply 'foldlevel' and do "zv"
|zz| zz redraw, cursor line at center of window
|z<Left>| z<Left> same as "zh"
@@ -1044,7 +1047,7 @@ tag command action in Command-line editing mode ~
|c_CTRL-R_CTRL-O| CTRL-R CTRL-O {regname}
insert the contents of a register or object
under the cursor literally
- CTRL-S (used for terminal control flow)
+ CTRL-S not used, or used for terminal control flow
|c_CTRL-T| CTRL-T previous match when 'incsearch' is active
|c_CTRL-U| CTRL-U remove all characters
|c_CTRL-V| CTRL-V insert next non-digit literally, insert three
@@ -1232,11 +1235,11 @@ tag command action ~
|:cunmenu| :cunme[nu] remove menu for Command-line mode
|:cwindow| :cw[indow] open or close quickfix window
|:delete| :d[elete] delete lines
-|:delmarks| :delm[arks] delete marks
|:debug| :deb[ug] run a command in debugging mode
|:debuggreedy| :debugg[reedy] read debug mode commands from normal input
|:delcommand| :delc[ommand] delete user-defined command
|:delfunction| :delf[unction] delete a user function
+|:delmarks| :delm[arks] delete marks
|:diffupdate| :dif[fupdate] update 'diff' buffers
|:diffget| :diffg[et] remove differences in current buffer
|:diffoff| :diffo[ff] switch off diff mode
@@ -1248,7 +1251,6 @@ tag command action ~
|:display| :di[splay] display registers
|:djump| :dj[ump] jump to #define
|:dl| :dl short for |:delete| with the 'l' flag
-|:del| :del[ete]l short for |:delete| with the 'l' flag
|:dlist| :dli[st] list #defines
|:doautocmd| :do[autocmd] apply autocommands to current buffer
|:doautoall| :doautoa[ll] apply autocommands for all loaded buffers
@@ -1269,7 +1271,7 @@ tag command action ~
|:emenu| :em[enu] execute a menu by name
|:endif| :en[dif] end previous :if
|:endfor| :endfo[r] end previous :for
-|:endfunction| :endf[unction] end of a user function
+|:endfunction| :endf[unction] end of a user function started with :function
|:endtry| :endt[ry] end previous :try
|:endwhile| :endw[hile] end previous :while
|:enew| :ene[w] edit a new, unnamed buffer
@@ -1674,7 +1676,7 @@ tag command action ~
|:wqall| :wqa[ll] write all changed buffers and quit Vim
|:wshada| :wsh[ada] write to ShaDa file
|:wundo| :wu[ndo] write undo information to a file
-|:xit| :x[it] write if buffer changed and quit window or Vim
+|:xit| :x[it] write if buffer changed and close window
|:xall| :xa[ll] same as ":wqall"
|:xmapclear| :xmapc[lear] remove all mappings for Visual mode
|:xmap| :xm[ap] like ":map" but for Visual mode
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 6902ed5fd4..c8a4168ab2 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -95,7 +95,7 @@ CTRL-K {char1} [char2]
CTRL-N Find next keyword (see |i_CTRL-N|).
CTRL-P Find previous keyword (see |i_CTRL-P|).
-CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
+CTRL-R {register} *i_CTRL-R*
Insert the contents of a register. Between typing CTRL-R and
the second character, '"' will be displayed to indicate that
you are expected to enter the name of a register.
@@ -132,7 +132,7 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
sequence will be broken.
See |registers| about registers.
-CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
+CTRL-R CTRL-R {register} *i_CTRL-R_CTRL-R*
Insert the contents of a register. Works like using a single
CTRL-R, but the text is inserted literally, not as if typed.
This differs when the register contains characters like <BS>.
@@ -143,8 +143,10 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
you also want to avoid these, use CTRL-R CTRL-O, see below.
The '.' register (last inserted text) is still inserted as
typed.
+ After this command, the '.' register contains the text from
+ the register as if it was inserted by typing it.
-CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
+CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O*
Insert the contents of a register literally and don't
auto-indent. Does the same as pasting with the mouse
|<MiddleMouse>|. When the register is linewise this will
@@ -152,13 +154,19 @@ CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
Does not replace characters!
The '.' register (last inserted text) is still inserted as
typed.
+ After this command, the '.' register contains the command
+ typed and not the text. I.e., the literals "^R^O" and not the
+ text from the register.
-CTRL-R CTRL-P {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-P*
+CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P*
Insert the contents of a register literally and fix the
indent, like |[<MiddleMouse>|.
Does not replace characters!
The '.' register (last inserted text) is still inserted as
typed.
+ After this command, the '.' register contains the command
+ typed and not the text. I.e., the literals "^R^P" and not the
+ text from the register.
*i_CTRL-T*
CTRL-T Insert one shiftwidth of indent at the start of the current
@@ -284,6 +292,7 @@ If you enter a value of 10, it will end up in the file as a 0. The 10 is a
the buffer to a file, the <NL> character is translated into <Nul>. The <NL>
character is written at the end of each line. Thus if you want to insert a
<NL> character in a file you will have to make a line break.
+Also see 'fileformat'.
*i_CTRL-X* *insert_expand*
CTRL-X enters a sub-mode where several commands can be used. Most of these
@@ -358,7 +367,7 @@ CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O*
CTRL-L when 'insertmode' is set: go to Normal mode *i_CTRL-L*
CTRL-G u break undo sequence, start new change *i_CTRL-G_u*
CTRL-G U don't break undo with next left/right cursor *i_CTRL-G_U*
- movement, if the cursor stays within
+ movement, if the cursor stays within the
same the line
-----------------------------------------------------------------------
@@ -1760,6 +1769,7 @@ a Append text after the cursor [count] times. If the
*A*
A Append text at the end of the line [count] times.
+ For using "A" in Visual block mode see |v_b_A|.
<insert> or *i* *insert* *<Insert>*
i Insert text before the cursor [count] times.
@@ -1772,6 +1782,7 @@ I Insert text before the first non-blank in the line
When the 'H' flag is present in 'cpoptions' and the
line only contains blanks, insert start just before
the last blank.
+ For using "I" in Visual block mode see |v_b_I|.
*gI*
gI Insert text in column 1 [count] times.
@@ -1937,11 +1948,11 @@ If the 'fileformats' option is not empty Vim tries to recognize the type of
changed, the detected format is only used while reading the file.
A similar thing happens with 'fileencodings'.
-On non-Windows systems the message "[dos format]" is shown if
-a file is read in DOS format, to remind you that something unusual is done.
-On Macintosh and Windows the message "[unix format]" is shown if
-a file is read in Unix format.
-On non-Macintosh systems, the message "[Mac format]" is shown if a file is
+On non-Win32 systems the message "[dos format]" is shown if a file is read in
+DOS format, to remind you that something unusual is done.
+On Macintosh and Win32 the message "[unix format]" is shown if a file is read
+in Unix format.
+On non-Macintosh systems, the message "[mac format]" is shown if a file is
read in Mac format.
An example on how to use ":r !": >
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index d858985e3f..925b3e5dbb 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -139,11 +139,11 @@ Vim would never have become what it is now, without the help of these people!
Flemming Madsen X11 client-server, various features and patches
Tony Mechelynck answers many user questions
Paul Moore Python interface extensions, many patches
- Katsuhito Nagano Work on multi-byte versions
- Sung-Hyun Nam Work on multi-byte versions
+ Katsuhito Nagano Work on multibyte versions
+ Sung-Hyun Nam Work on multibyte versions
Vince Negri Win32 GUI and generic console enhancements
Steve Oualline Author of the first Vim book |frombook|
- Dominique Pelle valgrind reports and many fixes
+ Dominique Pelle Valgrind reports and many fixes
A.Politz Many bug reports and some fixes
George V. Reilly Win32 port, Win32 GUI start-off
Stephen Riehm bug collector
@@ -324,7 +324,7 @@ notation meaning equivalent decimal value(s) ~
<CSI> command sequence intro ALT-Esc 155 *<CSI>*
<xCSI> CSI when typed in the GUI *<xCSI>*
-<EOL> end-of-line (can be <CR>, <LF> or <CR><LF>,
+<EOL> end-of-line (can be <CR>, <NL> or <CR><NL>,
depends on system and 'fileformat') *<EOL>*
<Ignore> cancel wait-for-character *<Ignore>*
<NOP> no-op: do nothing (useful in mappings) *<Nop>*
diff --git a/runtime/doc/makehtml.awk b/runtime/doc/makehtml.awk
index 6e93c01c54..50f5611fa7 100644
--- a/runtime/doc/makehtml.awk
+++ b/runtime/doc/makehtml.awk
@@ -65,7 +65,7 @@ substr($0,length($0),1) == "~" { print "<B><FONT COLOR=\"PURPLE\">" substr($0,1,
#
#ad hoc code
#
-/^"\|\& / {gsub(/\|/,"\\&#124;"); }
+/^"\|& / {gsub(/\|/,"\\&#124;"); }
/ = b / {gsub(/ b /," \\&#98; "); }
#
# one letter tag
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 73ac3763d0..ee42edf154 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -176,6 +176,12 @@ whether to use the "," mapping or the longer one. To avoid this add the
<nowait> argument. Then the mapping will be used when it matches, Vim does
not wait for more characters to be typed. However, if the characters were
already typed they are used.
+Note that this works when the <nowait> mapping fully matches and is found
+before any partial matches. This works when:
+- There is only one matching buffer-local mapping, since these are always
+ found before global mappings.
+- There is another buffer-local mapping that partly matches, but it is
+ defined earlier (last defined mapping is found first).
*:map-<silent>* *:map-silent*
To define a mapping which will not be echoed on the command line, add
@@ -217,14 +223,23 @@ have a look at |maparg()|.
If the first argument to one of these commands is "<expr>" and it is used to
define a new mapping or abbreviation, the argument is an expression. The
expression is evaluated to obtain the {rhs} that is used. Example: >
- :inoremap <expr> . InsertDot()
-The result of the InsertDot() function will be inserted. It could check the
+ :inoremap <expr> . <SID>InsertDot()
+The result of the s:InsertDot() function will be inserted. It could check the
text before the cursor and start omni completion when some condition is met.
+Using a script-local function is preferred, to avoid polluting the global
+namespace. Use <SID> in the RHS so that the script that the mapping was
+defined in can be found.
For abbreviations |v:char| is set to the character that was typed to trigger
the abbreviation. You can use this to decide how to expand the {lhs}. You
should not either insert or change the v:char.
-
+
+In case you want the mapping to not do anything, you can have the expression
+evaluate to an empty string. If something changed that requires Vim to
+go through the main loop (e.g. to update the display), return "\<Ignore>".
+This is similar to "nothing" but makes Vim return from the loop that waits for
+input.
+
Also, keep in mind that the expression may be evaluated when looking for
typeahead, before the previous command has been executed. For example: >
func StoreColumn()
@@ -233,8 +248,8 @@ typeahead, before the previous command has been executed. For example: >
endfunc
nnoremap <expr> x StoreColumn()
nmap ! f!x
-You will notice that g:column has the value from before executing "fx",
-because "z" is evaluated before "fx" is executed.
+You will notice that g:column has the value from before executing "f!",
+because "x" is evaluated before "f!" is executed.
This can be solved by inserting <Ignore> before the character that is
expression-mapped: >
nmap ! f!<Ignore>x
@@ -277,15 +292,8 @@ Here is an example that inserts a list number that increases: >
CTRL-L inserts the next number, CTRL-R resets the count. CTRL-R returns an
empty string, so that nothing is inserted.
-Note that there are some tricks to make special keys work and escape CSI bytes
-in the text. The |:map| command also does this, thus you must avoid that it
-is done twice. This does not work: >
- :imap <expr> <F3> "<Char-0x611B>"
-Because the <Char- sequence is escaped for being a |:imap| argument and then
-again for using <expr>. This does work: >
- :imap <expr> <F3> "\u611B"
-Using 0x80 as a single byte before other text does not work, it will be seen
-as a special key.
+Note that using 0x80 as a single byte before other text does not work, it will
+be seen as a special key.
*<Cmd>* *:map-cmd*
The <Cmd> pseudokey begins a "command mapping", which executes the command
@@ -301,14 +309,17 @@ preserved, so tricks with |gv| are not needed. Commands can be invoked
directly in cmdline-mode (which would otherwise require timer hacks).
Unlike <expr> mappings, there are no special restrictions on the <Cmd>
-command: it is executed as if an (unrestricted) |autocmd| was invoked or an
-async event event was processed.
+command: it is executed as if an (unrestricted) |autocommand| was invoked
+or an async event event was processed.
Note:
- Because <Cmd> avoids mode-changes (unlike ":") it does not trigger
|CmdlineEnter| and |CmdlineLeave| events. This helps performance.
- For the same reason, |keycodes| like <C-R><C-W> are interpreted as plain,
unmapped keys.
+- The command is not echo'ed, no need for <silent>.
+- In Visual mode you can use `line('v')` and `col('v')` to get one end of the
+ Visual area, the cursor is at the other end.
- In select-mode, |:map| and |:vmap| command mappings are executed in
visual-mode. Use |:smap| to handle select-mode.
@@ -382,6 +393,8 @@ Some commands work both in Insert mode and Command-line mode, some not:
:cmap :cnoremap :cunmap :cmapclear - yes -
:lmap :lnoremap :lunmap :lmapclear yes* yes* yes*
+* If 'iminsert' is 1, see |language-mapping| below.
+
The original Vi did not have separate mappings for
Normal/Visual/Operator-pending mode and for Insert/Command-line mode.
Therefore the ":map" and ":map!" commands enter and display mappings for
@@ -599,7 +612,7 @@ construct can be used:
<Char-033> character 27
<Char-0x7f> character 127
<S-Char-114> character 114 ('r') shifted ('R')
-This is useful to specify a (multi-byte) character in a 'keymap' file.
+This is useful to specify a (multibyte) character in a 'keymap' file.
Upper and lowercase differences are ignored.
*map-comments*
@@ -788,7 +801,7 @@ otherwise it is interpreted as two key presses:
1.11 MAPPING AN OPERATOR *:map-operator*
An operator is used before a {motion} command. To define your own operator
-you must create mapping that first sets the 'operatorfunc' option and then
+you must create a mapping that first sets the 'operatorfunc' option and then
invoke the |g@| operator. After the user types the {motion} command the
specified function will be called.
@@ -806,35 +819,47 @@ g@{motion} Call the function set by the 'operatorfunc' option.
Here is an example that counts the number of spaces with <F4>: >
- nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
- vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>
+ nnoremap <expr> <F4> CountSpaces()
+ xnoremap <expr> <F4> CountSpaces()
+ " doubling <F4> works on a line
+ nnoremap <expr> <F4><F4> CountSpaces() .. '_'
- function! CountSpaces(type, ...)
- let sel_save = &selection
- let &selection = "inclusive"
- let reg_save = @@
-
- if a:0 " Invoked from Visual mode, use gv command.
- silent exe "normal! gvy"
- elseif a:type == 'line'
- silent exe "normal! '[V']y"
- else
- silent exe "normal! `[v`]y"
+ function CountSpaces(type = '') abort
+ if a:type == ''
+ set opfunc=CountSpaces
+ return 'g@'
endif
- echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
-
- let &selection = sel_save
- let @@ = reg_save
+ let sel_save = &selection
+ let reg_save = getreginfo('"')
+ let cb_save = &clipboard
+ let visual_marks_save = [getpos("'<"), getpos("'>")]
+
+ try
+ set clipboard= selection=inclusive
+ let commands = #{line: "'[V']y", char: "`[v`]y", block: "`[\<c-v>`]y"}
+ silent exe 'noautocmd keepjumps normal! ' .. get(commands, a:type, '')
+ echom getreg('"')->count(' ')
+ finally
+ call setreg('"', reg_save)
+ call setpos("'<", visual_marks_save[0])
+ call setpos("'>", visual_marks_save[1])
+ let &clipboard = cb_save
+ let &selection = sel_save
+ endtry
endfunction
+An <expr> mapping is used to be able to fetch any prefixed count and register.
+This also avoids using a command line, which would trigger CmdlineEnter and
+CmdlineLeave autocommands.
+
Note that the 'selection' option is temporarily set to "inclusive" to be able
to yank exactly the right text by using Visual mode from the '[ to the ']
mark.
-Also note that there is a separate mapping for Visual mode. It removes the
-"'<,'>" range that ":" inserts in Visual mode and invokes the function with
-visualmode() and an extra argument.
+Also note that the 'clipboard' option is temporarily emptied to avoid
+clobbering the `"*` or `"+` registers, if its value contains the item `unnamed`
+or `unnamedplus`.
==============================================================================
2. Abbreviations *abbreviations* *Abbreviations*
@@ -973,7 +998,8 @@ See |:verbose-cmd| for more information.
See |:map-<buffer>| for the optional <buffer> argument.
*:una* *:unabbreviate*
-:una[bbreviate] {lhs} Remove abbreviation for {lhs} from the list. If none
+:una[bbreviate] [<buffer>] {lhs}
+ Remove abbreviation for {lhs} from the list. If none
is found, remove abbreviations in which {lhs} matches
with the {rhs}. This is done so that you can even
remove abbreviations after expansion. To avoid
@@ -988,7 +1014,8 @@ See |:verbose-cmd| for more information.
same as ":ab", but for Command-line mode only.
*:cuna* *:cunabbrev*
-:cuna[bbrev] {lhs} same as ":una", but for Command-line mode only.
+:cuna[bbrev] [<buffer>] {lhs}
+ Same as ":una", but for Command-line mode only.
*:cnorea* *:cnoreabbrev*
:cnorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
@@ -1000,7 +1027,8 @@ See |:verbose-cmd| for more information.
same as ":ab", but for Insert mode only.
*:iuna* *:iunabbrev*
-:iuna[bbrev] {lhs} same as ":una", but for insert mode only.
+:iuna[bbrev] [<buffer>] {lhs}
+ Same as ":una", but for insert mode only.
*:inorea* *:inoreabbrev*
:inorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
@@ -1100,9 +1128,9 @@ Otherwise, using "<SID>" outside of a script context is an error.
If you need to get the script number to use in a complicated script, you can
use this function: >
- function s:SID()
- return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
- endfun
+ func s:ScriptNumber()
+ return matchstr(expand('<SID>'), '<SNR>\zs\d\+\ze_')
+ endfunc
The "<SNR>" will be shown when listing functions and mappings. This is useful
to find out what they are defined to.
@@ -1175,15 +1203,15 @@ last defined. Example: >
See |:verbose-cmd| for more information.
*E174* *E182*
-:com[mand][!] [{attr}...] {cmd} {rep}
+:com[mand][!] [{attr}...] {cmd} {repl}
Define a user command. The name of the command is
- {cmd} and its replacement text is {rep}. The command's
- attributes (see below) are {attr}. If the command
- already exists, an error is reported, unless a ! is
- specified, in which case the command is redefined.
- There is one exception: When sourcing a script again,
- a command that was previously defined in that script
- will be silently replaced.
+ {cmd} and its replacement text is {repl}. The
+ command's attributes (see below) are {attr}. If the
+ command already exists, an error is reported, unless a
+ ! is specified, in which case the command is
+ redefined. There is one exception: When sourcing a
+ script again, a command that was previously defined in
+ that script will be silently replaced.
:delc[ommand] {cmd} *:delc* *:delcommand* *E184*
@@ -1390,11 +1418,11 @@ feature. Use the full name for new scripts.
Replacement text ~
-The replacement text for a user defined command is scanned for special escape
-sequences, using <...> notation. Escape sequences are replaced with values
-from the entered command line, and all other text is copied unchanged. The
-resulting string is executed as an Ex command. To avoid the replacement use
-<lt> in place of the initial <. Thus to include "<bang>" literally use
+The replacement text {repl} for a user defined command is scanned for special
+escape sequences, using <...> notation. Escape sequences are replaced with
+values from the entered command line, and all other text is copied unchanged.
+The resulting string is executed as an Ex command. To avoid the replacement
+use <lt> in place of the initial <. Thus to include "<bang>" literally use
"<lt>bang>".
The valid escape sequences are
@@ -1412,7 +1440,7 @@ The valid escape sequences are
<bang> (See the '-bang' attribute) Expands to a ! if the
command was executed with a ! modifier, otherwise
expands to nothing.
- *<mods>*
+ *<mods>* *<q-mods>* *:command-modifiers*
<mods> The command modifiers, if specified. Otherwise, expands to
nothing. Supported modifiers are |:aboveleft|, |:belowright|,
|:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|,
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index a6410a09cb..a6c797a860 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -22,7 +22,7 @@ Getting started *mbyte-first*
This is a summary of the multibyte features in Vim. If you are lucky it works
as described and you can start using Vim without much trouble. If something
doesn't work you will have to read the rest. Don't be surprised if it takes
-quite a bit of work and experimenting to make Vim use all the multi-byte
+quite a bit of work and experimenting to make Vim use all the multibyte
features. Unfortunately, every system has its own way to deal with multibyte
languages and it is quite complicated.
@@ -85,12 +85,12 @@ You can also set 'guifont' alone, the Nvim GUI will try to find a matching
INPUT
-There are several ways to enter multi-byte characters:
+There are several ways to enter multibyte characters:
- For X11 XIM can be used. See |XIM|.
- For MS-Windows IME can be used. See |IME|.
- For all systems keymaps can be used. See |mbyte-keymap|.
-The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
+The options 'iminsert', 'imsearch' and 'imcmdline' can be used to choose
the different input methods or disable them temporarily.
==============================================================================
@@ -103,8 +103,8 @@ in, or just use a certain locale inside Vim.
WHAT IS A LOCALE? *locale*
-There are many of languages in the world. And there are different cultures
-and environments at least as much as the number of languages. A linguistic
+There are many languages in the world. And there are different cultures and
+environments at least as many as the number of languages. A linguistic
environment corresponding to an area is called "locale". This includes
information about the used language, the charset, collating order for sorting,
date format, currency format and so on. For Vim only the language and charset
@@ -198,11 +198,11 @@ encoded with one byte, we call this a single-byte encoding. The most often
used one is called "latin1". This limits the number of characters to 256.
Some of these are control characters, thus even fewer can be used for text.
-When some characters use two or more bytes, we call this a multi-byte
+When some characters use two or more bytes, we call this a multibyte
encoding. This allows using much more than 256 characters, which is required
for most East Asian languages.
-Most multi-byte encodings use one byte for the first 127 characters. These
+Most multibyte encodings use one byte for the first 127 characters. These
are equal to ASCII, which makes it easy to exchange plain-ASCII text, no
matter what language is used. Thus you might see the right text even when the
encoding was set wrong.
@@ -400,7 +400,7 @@ is suitable for complex input, such as CJK.
of the two ways: FrontEnd system and BackEnd system. In the FrontEnd
system, input events are snatched by the |IM-server| first, then |IM-server|
give the application the result of input. On the other hand, the BackEnd
- system works reverse order. MS Windows adopt BackEnd system. In X, most of
+ system works reverse order. MS-Windows adopt BackEnd system. In X, most of
|IM-server|s adopt FrontEnd system. The demerit of BackEnd system is the
large overhead in communication, but it provides safe synchronization with
no restrictions on applications.
@@ -512,7 +512,7 @@ input_server_name is your |IM-server| name (check your |IM-server|
your_input_style is one of |OverTheSpot|, |OffTheSpot|, |Root|. See
also |xim-input-style|.
-*international may not necessary if you use X11R6.
+*international may not be necessary if you use X11R6.
*.inputMethod and *.preeditType are optional if you use X11R6.
For example, when you are using kinput2 as |IM-server|, >
@@ -921,7 +921,7 @@ not everybody is able to type a composing character.
==============================================================================
Overview of options *mbyte-options*
-These options are relevant for editing multi-byte files.
+These options are relevant for editing multibyte files.
'fileencoding' Encoding of a file. When it's different from "utf-8"
conversion is done when reading or writing the file.
@@ -941,7 +941,7 @@ These options are relevant for editing multi-byte files.
==============================================================================
-Contributions specifically for the multi-byte features by:
+Contributions specifically for the multibyte features by:
Chi-Deok Hwang <hwang@mizi.co.kr>
SungHyun Nam <goweol@gmail.com>
K.Nagano <nagano@atese.advantest.co.jp>
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 745160da8a..6fbd9ec922 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -17,13 +17,14 @@ The ":messages" command can be used to view previously given messages. This
is especially useful when messages have been overwritten or truncated. This
depends on the 'shortmess' option.
- :messages Show all messages.
+ :mes[sages] Show all messages.
- :{count}messages Show the {count} most recent messages.
+ :{count}mes[sages] Show the {count} most recent messages.
- :messages clear Clear all messages.
+ :mes[sages] clear Clear all messages.
- :{count}messages clear Clear messages, keeping only the {count} most
+ :{count}mes[sages] clear
+ Clear messages, keeping only the {count} most
recent ones.
The number of remembered messages is fixed at 20 for the tiny version and 200
@@ -67,7 +68,7 @@ Or view a list of recent messages with: >
See `:messages` above.
LIST OF MESSAGES
- *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
+ *E222* *E228* *E232* *E293* *E298* *E304* *E317*
*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
*E323* *E341* *E473* *E570* *E685* *E292* >
Add to read buffer
@@ -761,6 +762,9 @@ and the screen is about to be redrawn:
-> Press <Enter> or <Space> to redraw the screen and continue, without that
key being used otherwise.
-> Press ':' or any other Normal mode command character to start that command.
+ Note that after an external command some special keys, such as the cursor
+ keys, may not work normally, because the terminal is still set to a state
+ for executing the external command.
-> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This
works the same way as at the |more-prompt|. Only works when 'more' is on.
-> Pressing 'j', 'f', 'd' or <Down> is ignored when messages scrolled off the
diff --git a/runtime/doc/mlang.txt b/runtime/doc/mlang.txt
index 5217b2c160..b57d2b592a 100644
--- a/runtime/doc/mlang.txt
+++ b/runtime/doc/mlang.txt
@@ -7,7 +7,7 @@
Multi-language features *multilang* *multi-lang*
This is about using messages and menus in various languages. For editing
-multi-byte text see |multibyte|.
+multibyte text see |multibyte|.
The basics are explained in the user manual: |usr_45.txt|.
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index a6c072e489..9f8acff88a 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -182,11 +182,14 @@ l or *l*
*^*
^ To the first non-blank character of the line.
- |exclusive| motion.
+ |exclusive| motion. Any count is ignored.
*$* *<End>* *<kEnd>*
$ or <End> To the end of the line. When a count is given also go
- [count - 1] lines downward. |inclusive| motion.
+ [count - 1] lines downward, or as far is possible.
+ |inclusive| motion. If a count of 2 of larger is
+ given and the cursor is on the last line, that is an
+ error an the cursor doesn't move.
In Visual mode the cursor goes to just after the last
character in the line.
When 'virtualedit' is active, "$" may move the cursor
@@ -478,10 +481,11 @@ a set of section macros, specified by the pairs of characters in the
'sections' option. The default is "SHNHH HUnhsh", which defines a section to
start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh".
-The "]" and "[" commands stop at the '{' or '}' in the first column. This is
-useful to find the start or end of a function in a C program. Note that the
-first character of the command determines the search direction and the
-second character the type of brace found.
+The "]]" and "[[" commands stop at the '{' in the first column. This is
+useful to find the start of a function in a C program. To search for a '}' in
+the first column, the end of a C function, use "][" (forward) or "[]"
+(backward). Note that the first character of the command determines the
+search direction.
If your '{' or '}' are not in the first column, and you would like to use "[["
and "]]" anyway, try these mappings: >
@@ -944,6 +948,7 @@ These commands are not marks themselves, but jump to a mark:
- numbered marks '0 - '9
- last insert position '^
- last change position '.
+ - last affected text area '[ and ']
- the Visual area '< and '>
- line numbers in placed signs
- line numbers in quickfix positions
@@ -1024,11 +1029,11 @@ The maximum number of entries is fixed at 100.
For example, after three jump commands you have this jump list:
- jump line col file/text ~
- 3 1 0 some text ~
- 2 70 0 another line ~
- 1 1154 23 end. ~
- > ~
+ jump line col file/text ~
+ 3 1 0 some text ~
+ 2 70 0 another line ~
+ 1 1154 23 end. ~
+ > ~
The "file/text" column shows the file name, or the text at the jump if it is
in the current file (an indent is removed and a long line is truncated to fit
@@ -1037,11 +1042,11 @@ in the window).
You are currently in line 1167. If you then use the CTRL-O command, the
cursor is put in line 1154. This results in:
- jump line col file/text ~
- 2 1 0 some text ~
- 1 70 0 another line ~
- > 0 1154 23 end. ~
- 1 1167 0 foo bar ~
+ jump line col file/text ~
+ 2 1 0 some text ~
+ 1 70 0 another line ~
+ > 0 1154 23 end. ~
+ 1 1167 0 foo bar ~
The pointer will be set at the last used jump position. The next CTRL-O
command will use the entry above it, the next CTRL-I command will use the
@@ -1068,12 +1073,12 @@ that calling setpos() does not do this.
After the CTRL-O command that got you into line 1154 you could give another
jump command (e.g., "G"). The jump list would then become:
- jump line col file/text ~
- 4 1 0 some text ~
- 3 70 0 another line ~
- 2 1167 0 foo bar ~
- 1 1154 23 end. ~
- > ~
+ jump line col file/text ~
+ 4 1 0 some text ~
+ 3 70 0 another line ~
+ 2 1167 0 foo bar ~
+ 1 1154 23 end. ~
+ > ~
The line numbers will be adjusted for deleted and inserted lines. This fails
if you stop editing a file without writing, like with ":n!".
@@ -1168,13 +1173,13 @@ sequence of small changes in a line, for example "xxxxx", adds many positions
to the change list. When 'textwidth' is zero 'wrapmargin' is used. When that
also isn't set a fixed number of 79 is used. Detail: For the computations
bytes are used, not characters, to avoid a speed penalty (this only matters
-for multi-byte encodings).
+for multibyte encodings).
Note that when text has been inserted or deleted the cursor position might be
a bit different from the position of the change. Especially when lines have
been deleted.
-When the |:keepjumps| command modifier is used the position of a change is not
+When the `:keepjumps` command modifier is used the position of a change is not
remembered.
*:changes*
@@ -1215,7 +1220,7 @@ remembered.
#if, #ifdef, #else, #elif, #endif
C preprocessor conditionals (when the
cursor is on the # or no ([{
- following)
+ is following)
For other items the matchit plugin can be used, see
|matchit|. This plugin also helps to skip matches in
comments.
@@ -1244,19 +1249,19 @@ remembered.
#if/#else/#endif makes the movement linewise.
*[(*
-[( go to [count] previous unmatched '('.
+[( Go to [count] previous unmatched '('.
|exclusive| motion.
*[{*
-[{ go to [count] previous unmatched '{'.
+[{ Go to [count] previous unmatched '{'.
|exclusive| motion.
*])*
-]) go to [count] next unmatched ')'.
+]) Go to [count] next unmatched ')'.
|exclusive| motion.
*]}*
-]} go to [count] next unmatched '}'.
+]} Go to [count] next unmatched '}'.
|exclusive| motion.
The above four commands can be used to go to the start or end of the current
@@ -1304,17 +1309,21 @@ file looks like this: >
body_two();
}
}
+
+[To try this out copy the text and put it in a new buffer, the help text above
+confuses the jump commands]
+
Starting with the cursor on "body_two()", using "[m" will jump to the '{' at
the start of "method_two()" (obviously this is much more useful when the
method is long!). Using "2[m" will jump to the start of "method_one()".
Using "3[m" will jump to the start of the class.
*[#*
-[# go to [count] previous unmatched "#if" or "#else".
+[# Go to [count] previous unmatched "#if" or "#else".
|exclusive| motion.
*]#*
-]# go to [count] next unmatched "#else" or "#endif".
+]# Go to [count] next unmatched "#else" or "#endif".
|exclusive| motion.
These two commands work in C programs that contain #if/#else/#endif
@@ -1322,11 +1331,11 @@ constructs. It brings you to the start or end of the #if/#else/#endif where
the current line is included. You can then use "%" to go to the matching line.
*[star* *[/*
-[* or [/ go to [count] previous start of a C comment "/*".
+[* or [/ Go to [count] previous start of a C comment "/*".
|exclusive| motion.
*]star* *]/*
-]* or ]/ go to [count] next end of a C comment "*/".
+]* or ]/ Go to [count] next end of a C comment "*/".
|exclusive| motion.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 63a9db9d0d..269080e750 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -144,11 +144,11 @@ the option value, use '\"' instead. This example sets the 'titlestring'
option to 'hi "there"': >
:set titlestring=hi\ \"there\"
-For Windows backslashes in file names are mostly not removed. More
-precise: For options that expect a file name (those where environment
-variables are expanded) a backslash before a normal file name character is not
-removed. But a backslash before a special character (space, backslash, comma,
-etc.) is used like explained above.
+For Win32 backslashes in file names are mostly not removed. More precise: For
+options that expect a file name (those where environment variables are
+expanded) a backslash before a normal file name character is not removed. But
+a backslash before a special character (space, backslash, comma, etc.) is used
+like explained above.
There is one special situation, when the value starts with "\\": >
:set dir=\\machine\path results in "\\machine\path"
:set dir=\\\\machine\\path results in "\\machine\path"
@@ -394,10 +394,11 @@ to set options automatically for one or more files:
*modeline* *vim:* *vi:* *ex:* *E520*
There are two forms of modelines. The first form:
- [text]{white}{vi:|vim:|ex:}[white]{options}
+ [text{white}]{vi:|vim:|ex:}[white]{options}
-[text] any text or empty
-{white} at least one blank character (<Space> or <Tab>)
+[text{white}] empty or any text followed by at least one blank
+ character (<Space> or <Tab>); "ex:" always requires at
+ least one blank character
{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:"
[white] optional white space
{options} a list of option settings, separated with white space
@@ -410,10 +411,11 @@ Examples:
The second form (this is compatible with some versions of Vi):
- [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
+ [text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
-[text] any text or empty
-{white} at least one blank character (<Space> or <Tab>)
+[text{white}] empty or any text followed by at least one blank
+ character (<Space> or <Tab>); "ex:" always requires at
+ least one blank character
{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:"
[white] optional white space
se[t] the string "set " or "se " (note the space); When
@@ -474,9 +476,9 @@ If an error is detected the rest of the line is skipped.
If you want to include a ':' in a set command precede it with a '\'. The
backslash in front of the ':' will be removed. Example:
- /* vi:set dir=c\:\tmp: */ ~
-This sets the 'dir' option to "c:\tmp". Only a single backslash before the
-':' is removed. Thus to include "\:" you have to specify "\\:".
+ /* vi:set fillchars=stl\:^,vert\:\|: */ ~
+This sets the 'fillchars' option to "stl:^,vert:\|". Only a single backslash
+before the ':' is removed. Thus to include "\:" you have to specify "\\:".
*E992*
No other commands than "set" are supported, for security reasons (somebody
might create a Trojan horse text file with modelines). And not all options
@@ -589,9 +591,9 @@ A jump table for the options with a short description can be found at |Q_op|.
(or Vim is run inside an xterm invoked with "-cjkwidth" option.),
this option should be set to "double" to match the width perceived
by Vim with the width of glyphs in the font. Perhaps it also has
- to be set to "double" under CJK Windows XP when the system locale is
- set to one of CJK locales.
- See Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11).
+ to be set to "double" under CJK MS-Windows when the system locale is
+ set to one of CJK locales. See Unicode Standard Annex #11
+ (http://www.unicode.org/reports/tr11).
Vim may set this option automatically at startup time when Vim is
compiled with the |+termresponse| feature and if t_u7 is set to the
@@ -836,9 +838,9 @@ A jump table for the options with a short description can be found at |Q_op|.
impossible!). Writing may fail because of this.
- A directory "." means to put the backup file in the same directory
as the edited file.
- - A directory starting with "./" (or ".\" for Windows) means to
- put the backup file relative to where the edited file is. The
- leading "." is replaced with the path name of the edited file.
+ - A directory starting with "./" (or ".\" for MS-Windows) means to put
+ the backup file relative to where the edited file is. The leading
+ "." is replaced with the path name of the edited file.
("." inside a directory name has no special meaning).
- Spaces after the comma are ignored, other spaces are considered part
of the directory name. To have a space at the start of a directory
@@ -944,7 +946,7 @@ A jump table for the options with a short description can be found at |Q_op|.
(mostly used in |Normal-mode| or |Cmdline-mode|).
esc hitting <Esc> in |Normal-mode|.
ex In |Visual-mode|, hitting |Q| results in an error.
- hangul Error occurred when using hangul input.
+ hangul Ignored.
insertmode Pressing <Esc> in 'insertmode'.
lang Calling the beep module for Lua/Mzscheme/TCL.
mess No output available for |g<|.
@@ -1100,6 +1102,7 @@ A jump table for the options with a short description can be found at |Q_op|.
This option is used together with 'bufhidden' and 'swapfile' to
specify special kinds of buffers. See |special-buffers|.
+ Also see |win_gettype()|, which returns the type of the window.
Be careful with changing this option, it can have many side effects!
@@ -1392,7 +1395,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'completeslash'* *'csl'*
'completeslash' 'csl' string (default: "")
local to buffer
- {not in Vi} {only for MS-Windows}
+ {only for MS-Windows}
When this option is set it overrules 'shellslash' for completion:
- When this option is set to "slash", a forward slash is used for path
completion in insert mode. This is useful when editing HTML tag, or
@@ -1855,7 +1858,7 @@ A jump table for the options with a short description can be found at |Q_op|.
"x" delete each combining character on its own. When it is off (the
default) the character along with its combining characters are
deleted.
- Note: When 'delcombine' is set "xx" may work different from "2x"!
+ Note: When 'delcombine' is set "xx" may work differently from "2x"!
This is useful for Arabic, Hebrew and many other languages where one
may have combining characters overtop of base characters, and want
@@ -2009,6 +2012,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'directory' 'dir' string (default "$XDG_DATA_HOME/nvim/swap//")
global
List of directory names for the swap file, separated with commas.
+
+ Possible items:
- The swap file will be created in the first directory where this is
possible. If it is not possible in any directory, but last
directory listed in the option does not exist, it is created.
@@ -2018,13 +2023,14 @@ A jump table for the options with a short description can be found at |Q_op|.
the edited file. On Unix, a dot is prepended to the file name, so
it doesn't show in a directory listing. On MS-Windows the "hidden"
attribute is set and a dot prepended if possible.
- - A directory starting with "./" (or ".\" for Windows) means to
- put the swap file relative to where the edited file is. The leading
- "." is replaced with the path name of the edited file.
+ - A directory starting with "./" (or ".\" for MS-Windows) means to put
+ the swap file relative to where the edited file is. The leading "."
+ is replaced with the path name of the edited file.
- For Unix and Win32, if a directory ends in two path separators "//",
the swap file name will be built from the complete path to the file
- with all path separators substituted to percent '%' signs. This will
- ensure file name uniqueness in the preserve directory.
+ with all path separators replaced by percent '%' signs (including
+ the colon following the drive letter on Win32). This will ensure
+ file name uniqueness in the preserve directory.
On Win32, it is also possible to end with "\\". However, When a
separating comma is following, you must use "//", since "\\" will
include the comma in the file name. Therefore it is recommended to
@@ -2044,9 +2050,10 @@ A jump table for the options with a short description can be found at |Q_op|.
the same file twice will result in a warning. Using "/tmp" on Unix is
discouraged: When the system crashes you lose the swap file.
"/var/tmp" is often not cleared when rebooting, thus is a better
- choice than "/tmp". But it can contain a lot of files, your swap
- files get lost in the crowd. That is why a "tmp" directory in your
- home directory is tried first.
+ choice than "/tmp". But others on the computer may be able to see the
+ files, and it can contain a lot of files, your swap files get lost in
+ the crowd. That is why a "tmp" directory in your home directory is
+ tried first.
The use of |:set+=| and |:set-=| is preferred when adding or removing
directories from the list. This avoids problems when a future version
uses another default.
@@ -2086,7 +2093,9 @@ A jump table for the options with a short description can be found at |Q_op|.
'emoji' 'emo' boolean (default: on)
global
When on all Unicode emoji characters are considered to be full width.
-
+ This excludes "text emoji" characters, which are normally displayed as
+ single width. Unfortunately there is no good specification for this
+ and it has been determined on trial-and-error basis.
*'encoding'* *'enc'* *E543*
'encoding' 'enc'
@@ -2283,7 +2292,7 @@ A jump table for the options with a short description can be found at |Q_op|.
local to buffer
This gives the <EOL> of the current buffer, which is used for
reading/writing the buffer from/to a file:
- dos <CR> <NL>
+ dos <CR><NL>
unix <NL>
mac <CR>
When "dos" is used, CTRL-Z at the end of a file is ignored.
@@ -2970,7 +2979,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'go-v'*
'v' Use a vertical button layout for dialogs. When not included,
a horizontal layout is preferred, but when it doesn't fit a
- vertical layout is used anyway.
+ vertical layout is used anyway. Not supported in GTK 3.
*'go-p'*
'p' Use Pointer callbacks for X11 GUI. This is required for some
window managers. If the cursor is not blinking or hollow at
@@ -3013,7 +3022,7 @@ A jump table for the options with a short description can be found at |Q_op|.
<
*'helpfile'* *'hf'*
-'helpfile' 'hf' string (default (MSDOS) "$VIMRUNTIME\doc\help.txt"
+'helpfile' 'hf' string (default (MS-Windows) "$VIMRUNTIME\doc\help.txt"
(others) "$VIMRUNTIME/doc/help.txt")
global
Name of the main help file. All distributed help files should be
@@ -3420,7 +3429,8 @@ A jump table for the options with a short description can be found at |Q_op|.
Keywords are used in searching and recognizing with many commands:
"w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See
'isfname' for a description of the format of this option. For '@'
- characters above 255 check the "word" character class.
+ characters above 255 check the "word" character class (any character
+ that is not white space or punctuation).
For C programs you could use "a-z,A-Z,48-57,_,.,-,>".
For a help file it is set to all non-blank printable characters except
'*', '"' and '|' (so that CTRL-] on a command finds the help for that
@@ -3527,8 +3537,8 @@ A jump table for the options with a short description can be found at |Q_op|.
be able to execute Normal mode commands.
This is the opposite of the 'keymap' option, where characters are
mapped in Insert mode.
- Also consider resetting 'langremap' to avoid 'langmap' applies to
- characters resulting from a mapping.
+ Also consider setting 'langremap' to off, to prevent 'langmap' from
+ applying to characters resulting from a mapping.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -3545,7 +3555,7 @@ A jump table for the options with a short description can be found at |Q_op|.
characters. Example: "abc;ABC"
Example: "aA,fgh;FGH,cCdDeE"
Special characters need to be preceded with a backslash. These are
- ";", ',' and backslash itself.
+ ";", ',', '"', '|' and backslash itself.
This will allow you to activate vim actions without having to switch
back and forth between the languages. Your language characters will
@@ -3719,8 +3729,10 @@ A jump table for the options with a short description can be found at |Q_op|.
*lcs-lead*
lead:c Character to show for leading spaces. When omitted,
leading spaces are blank. Overrides the "space"
- setting for leading spaces.
- *lcs-trail*
+ setting for leading spaces. You can combine it with
+ "tab:", for example: >
+ :set listchars+=tab:>-,lead:.
+< *lcs-trail*
trail:c Character to show for trailing spaces. When omitted,
trailing spaces are blank. Overrides the "space"
setting for trailing spaces.
@@ -3769,6 +3781,8 @@ A jump table for the options with a short description can be found at |Q_op|.
Only switch it off when working with old Vi scripts. In any other
situation write patterns that work when 'magic' is on. Include "\M"
when you want to |/\M|.
+ In |Vim9| script the value of 'magic' is ignored, patterns behave like
+ it is always set.
*'makeef'* *'mef'*
'makeef' 'mef' string (default: "")
@@ -3827,7 +3841,7 @@ A jump table for the options with a short description can be found at |Q_op|.
jump between two double quotes.
The characters must be separated by a colon.
The pairs must be separated by a comma. Example for including '<' and
- '>' (HTML): >
+ '>' (for HTML): >
:set mps+=<:>
< A more exotic example, to jump between the '=' and ';' in an
@@ -3994,7 +4008,7 @@ A jump table for the options with a short description can be found at |Q_op|.
the |more-prompt|. When this option is off there are no pauses, the
listing continues until finished.
- *'mouse'* *E538*
+ *'mouse'*
'mouse' string (default "")
global
@@ -4205,6 +4219,15 @@ A jump table for the options with a short description can be found at |Q_op|.
bin If included, numbers starting with "0b" or "0B" will be
considered to be binary. Example: Using CTRL-X on
"0b1000" subtracts one, resulting in "0b0111".
+ unsigned If included, numbers are recognized as unsigned. Thus a
+ leading dash or negative sign won't be considered as part of
+ the number. Examples:
+ Using CTRL-X on "2020" in "9-2020" results in "9-2019"
+ (without "unsigned" it would become "9-2021").
+ Using CTRL-A on "2020" in "9-2020" results in "9-2021"
+ (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.
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.
@@ -4747,7 +4770,7 @@ A jump table for the options with a short description can be found at |Q_op|.
screen. If the statusline is given by 'statusline' (i.e. not empty),
this option takes precedence over 'ruler' and 'rulerformat'
If the number of characters displayed is different from the number of
- bytes in the text (e.g., for a TAB or a multi-byte character), both
+ bytes in the text (e.g., for a TAB or a multibyte character), both
the text column (byte number) and the screen column are shown,
separated with a dash.
For an empty line "0-1" is shown.
@@ -5166,8 +5189,7 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons.
*'shell'* *'sh'* *E91*
-'shell' 'sh' string (default $SHELL or "sh",
- Windows: "cmd.exe")
+'shell' 'sh' string (default $SHELL or "sh", Win32: "cmd.exe")
global
Name of the shell to use for ! and :! commands. When changing the
value also check these options: 'shellpipe', 'shellslash'
@@ -5176,8 +5198,8 @@ A jump table for the options with a short description can be found at |Q_op|.
See |option-backslash| about including spaces and backslashes.
Environment variables are expanded |:set_env|.
- If the name of the shell contains a space, you might need to enclose
- it in quotes. Example: >
+ If the name of the shell contains a space, you need to enclose it in
+ quotes. Example with quotes: >
:set shell=\"c:\program\ files\unix\sh.exe\"\ -f
< Note the backslash before each quote (to avoid starting a comment) and
each space (to avoid ending the option value), so better use |:let-&|
@@ -5218,9 +5240,9 @@ A jump table for the options with a short description can be found at |Q_op|.
'shellcmdflag' 'shcf' string (default: "-c"; Windows: "/s /c")
global
Flag passed to the shell to execute "!" and ":!" commands; e.g.,
- `bash.exe -c ls` or `cmd.exe /s /c "dir"`. For Windows
- systems, the default is set according to the value of 'shell', to
- reduce the need to set this option by the user.
+ `bash.exe -c ls` or `cmd.exe /s /c "dir"`. For MS-Windows, the
+ default is set according to the value of 'shell', to reduce the need
+ to set this option by the user.
On Unix it can have more than one flag. Each white space separated
part is passed as an argument to the shell command.
See |option-backslash| about including spaces and backslashes.
@@ -5230,7 +5252,8 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons.
*'shellpipe'* *'sp'*
-'shellpipe' 'sp' string (default ">", "| tee", "|& tee" or "2>&1| tee")
+'shellpipe' 'sp' string (default ">", ">%s 2>&1", "| tee", "|& tee" or
+ "2>&1| tee")
global
String to be used to put the output of the ":make" command in the
error file. See also |:make_makeprg|. See |option-backslash| about
@@ -5238,15 +5261,15 @@ A jump table for the options with a short description can be found at |Q_op|.
The name of the temporary file can be represented by "%s" if necessary
(the file name is appended automatically if no %s appears in the value
of this option).
- For Windows the default is ">". The output is directly saved in a file
- and not echoed to the screen.
- For Unix the default it "| tee". The stdout of the compiler is saved
+ For MS-Windows the default is ">%s 2>&1". The output is directly
+ saved in a file and not echoed to the screen.
+ For Unix the default is "| tee". The stdout of the compiler is saved
in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the
- 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the
- default becomes "2>&1| tee". This means that stderr is also included.
- Before using the 'shell' option a path is removed, thus "/bin/sh" uses
- "sh".
+ 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
+ "bash" or "fish" the default becomes "2>&1| tee". This means that
+ stderr is also included. Before using the 'shell' option a path is
+ removed, thus "/bin/sh" uses "sh".
The initialization of this option is done after reading the vimrc
and the other initializations, so that when the 'shell' option is set
there, the 'shellpipe' option changes automatically, unless it was
@@ -5286,13 +5309,13 @@ A jump table for the options with a short description can be found at |Q_op|.
The name of the temporary file can be represented by "%s" if necessary
(the file name is appended automatically if no %s appears in the value
of this option).
- The default is ">". For Unix, if the 'shell' option is "csh", "tcsh"
- or "zsh" during initializations, the default becomes ">&". If the
- 'shell' option is "sh", "ksh" or "bash" the default becomes
- ">%s 2>&1". This means that stderr is also included.
- For Win32, the Unix checks are done and additionally "cmd" is checked
- for, which makes the default ">%s 2>&1". Also, the same names with
- ".exe" appended are checked for.
+ The default is ">". For Unix, if the 'shell' option is "csh" or
+ "tcsh" during initializations, the default becomes ">&". If the
+ 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
+ "bash" or "fish", the default becomes ">%s 2>&1". This means that
+ stderr is also included. For Win32, the Unix checks are done and
+ additionally "cmd" is checked for, which makes the default ">%s 2>&1".
+ Also, the same names with ".exe" appended are checked for.
The initialization of this option is done after reading the vimrc
and the other initializations, so that when the 'shell' option is set
there, the 'shellredir' option changes automatically unless it was
@@ -5305,11 +5328,11 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shellslash'* *'ssl'* *'noshellslash'* *'nossl'*
'shellslash' 'ssl' boolean (default off)
global
- {only for Windows}
+ {only for MS-Windows}
When set, a forward slash is used when expanding file names. This is
- useful when a Unix-like shell is used instead of command.com or
- cmd.exe. Backward slashes can still be typed, but they are changed to
- forward slashes by Vim.
+ useful when a Unix-like shell is used instead of cmd.exe. Backward
+ slashes can still be typed, but they are changed to forward slashes by
+ Vim.
Note that setting or resetting this option has no effect for some
existing file names, thus this option needs to be set before opening
any file for best results. This might change in the future.
@@ -5887,8 +5910,8 @@ A jump table for the options with a short description can be found at |Q_op|.
N N Printer page number. (Only works in the 'printheader' option.)
l N Line number.
L N Number of lines in buffer.
- c N Column number.
- v N Virtual column number.
+ c N Column number (byte index).
+ v N Virtual column number (screen column).
V N Virtual column number as -{num}. Not displayed if equal to 'c'.
p N Percentage through file in lines as in |CTRL-G|.
P S Percentage through file of displayed window. This is like the
@@ -5897,7 +5920,9 @@ A jump table for the options with a short description can be found at |Q_op|.
a S Argument list status as in default title. ({current} of {max})
Empty if the argument file count is zero or one.
{ NF Evaluate expression between '%{' and '}' and substitute result.
- Note that there is no '%' before the closing '}'.
+ Note that there is no '%' before the closing '}'. The
+ expression cannot contain a '}' character, call a function to
+ work around that. See |stl-%{| below.
( - Start of item group. Can be used for setting the width and
alignment of a section. Must be followed by %) somewhere.
) - End of item group. No width fields allowed.
@@ -5960,13 +5985,13 @@ A jump table for the options with a short description can be found at |Q_op|.
:set statusline=...%(\ [%M%R%H]%)...
< Beware that an expression is evaluated each and every time the status
line is displayed.
- *g:actual_curbuf* *g:actual_curwin*
- The current buffer and current window will be set temporarily to that
- of the window (and buffer) whose statusline is currently being drawn.
- The expression will evaluate in this context. The variable
- "g:actual_curbuf" is set to the `bufnr()` number of the real current
- buffer and "g:actual_curwin" to the |window-ID| of the real current
- window. These values are strings.
+ *stl-%{* *g:actual_curbuf* *g:actual_curwin*
+ While evaluating %{} the current buffer and current window will be set
+ temporarily to that of the window (and buffer) whose statusline is
+ currently being drawn. The expression will evaluate in this context.
+ The variable "g:actual_curbuf" is set to the `bufnr()` number of the
+ real current buffer and "g:actual_curwin" to the |window-ID| of the
+ real current window. These values are strings.
The 'statusline' option will be evaluated in the |sandbox| if set from
a modeline, see |sandbox-option|.
@@ -6504,8 +6529,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'undolevels' 'ul' number (default 1000)
global or local to buffer |global-local|
Maximum number of changes that can be undone. Since undo information
- is kept in memory, higher numbers will cause more memory to be used
- (nevertheless, a single change can use an unlimited amount of memory).
+ is kept in memory, higher numbers will cause more memory to be used.
+ Nevertheless, a single change can already use a large amount of memory.
Set to 0 for Vi compatibility: One level of undo and "u" undoes
itself: >
set ul=0
@@ -6608,7 +6633,7 @@ A jump table for the options with a short description can be found at |Q_op|.
>= 14 Anything pending in a ":finally" clause.
>= 15 Every executed Ex command from a script (truncated at 200
characters).
- >= 16 Every executed Ex command
+ >= 16 Every executed Ex command.
This option can also be set with the "-V" argument. See |-V|.
This option is also set by the |:verbose| command.
@@ -6713,8 +6738,8 @@ A jump table for the options with a short description can be found at |Q_op|.
":map <BS> X" to make backspace delete the character in front of the
cursor.
When 'l' is included and it is used after an operator at the end of a
- line then it will not move to the next line. This makes "dl", "cl",
- "yl" etc. work normally.
+ line (not an empty line) then it will not move to the next line. This
+ makes "dl", "cl", "yl" etc. work normally.
*'wildchar'* *'wc'*
'wildchar' 'wc' number (Vim default: <Tab>, Vi default: CTRL-E)
@@ -6808,23 +6833,31 @@ A jump table for the options with a short description can be found at |Q_op|.
part specifies what to do for each consecutive use of 'wildchar'. The
first part specifies the behavior for the first use of 'wildchar',
The second part for the second use, etc.
- These are the possible values for each part:
+
+ Each part consists of a colon separated list consisting of the
+ following possible values:
"" Complete only the first match.
"full" Complete the next full match. After the last match,
the original string is used and then the first match
- again.
+ again. Will also start 'wildmenu' if it is enabled.
"longest" Complete till longest common string. If this doesn't
result in a longer string, use the next part.
- "longest:full" Like "longest", but also start 'wildmenu' if it is
- enabled.
"list" When more than one match, list all matches.
+ "lastused" When completing buffer names and more than one buffer
+ matches, sort buffers by time last used (other than
+ the current buffer).
+ When there is only a single match, it is fully completed in all cases.
+
+ Examples of useful colon-separated values:
+ "longest:full" Like "longest", but also start 'wildmenu' if it is
+ enabled. Will not complete to the next full match.
"list:full" When more than one match, list all matches and
complete first match.
"list:longest" When more than one match, list all matches and
complete till longest common string.
- "list:lastused" When more than one buffer matches, sort buffers
- by time last used (other than the current buffer).
- When there is only a single match, it is fully completed in all cases.
+ "list:lastused" When more than one buffer matches, list all matches
+ and sort buffers by time last used (other than the
+ current buffer).
Examples: >
:set wildmode=full
@@ -6882,15 +6915,15 @@ A jump table for the options with a short description can be found at |Q_op|.
*'window'* *'wi'*
'window' 'wi' number (default screen height - 1)
global
- Window height. Do not confuse this with the height of the Vim window,
- use 'lines' for that.
- Used for |CTRL-F| and |CTRL-B| when there is only one window and the
- value is smaller than 'lines' minus one. The screen will scroll
- 'window' minus two lines, with a minimum of one.
+ Window height used for |CTRL-F| and |CTRL-B| when there is only one
+ window and the value is smaller than 'lines' minus one. The screen
+ will scroll 'window' minus two lines, with a minimum of one.
When 'window' is equal to 'lines' minus one CTRL-F and CTRL-B scroll
in a much smarter way, taking care of wrapping lines.
When resizing the Vim window, the value is smaller than 1 or more than
or equal to 'lines' it will be set to 'lines' minus 1.
+ Note: Do not confuse this with the height of the Vim window, use
+ 'lines' for that.
*'winheight'* *'wh'* *E591*
'winheight' 'wh' number (default 1)
@@ -7049,6 +7082,8 @@ A jump table for the options with a short description can be found at |Q_op|.
fail (and make sure not to exit Vim until the write was successful).
See |backup-table| for another explanation.
When the 'backupskip' pattern matches, a backup is not made anyway.
+ Depending on 'backupcopy' the backup is a new file or the original
+ file renamed (and a new file is written).
*'writedelay'* *'wd'*
'writedelay' 'wd' number (default 0)
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 7129c6cd58..e74f3b72bf 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -219,7 +219,7 @@ This is like executing two search commands after each other, except that:
*last-pattern*
The last used pattern and offset are remembered. They can be used to repeat
the search, possibly in another direction or with another count. Note that
-two patterns are remembered: One for 'normal' search commands and one for the
+two patterns are remembered: One for "normal" search commands and one for the
substitute command ":s". Each time an empty pattern is given, the previously
used pattern is used. However, if there is no previous search command, a
previous substitute pattern is used, if possible.
@@ -351,8 +351,8 @@ For starters, read chapter 27 of the user manual |usr_27.txt|.
*/atom*
5. An atom can be one of a long list of items. Many atoms match one character
in the text. It is often an ordinary character or a character class.
- Braces can be used to make a pattern into an atom. The "\z(\)" construct
- is only for syntax highlighting.
+ Parentheses can be used to make a pattern into an atom. The "\z(\)"
+ construct is only for syntax highlighting.
atom ::= ordinary-atom |/ordinary-atom|
or \( pattern \) |/\(|
@@ -384,15 +384,19 @@ the pattern will not match. This is only useful when debugging Vim.
==============================================================================
3. Magic */magic*
-Some characters in the pattern are taken literally. They match with the same
-character in the text. When preceded with a backslash however, these
-characters get a special meaning.
+Some characters in the pattern, such as letters, are taken literally. They
+match exactly the same character in the text. When preceded with a backslash
+however, these characters may get a special meaning. For example, "a" matches
+the letter "a", while "\a" matches any alphabetic character.
Other characters have a special meaning without a backslash. They need to be
-preceded with a backslash to match literally.
+preceded with a backslash to match literally. For example "." matches any
+character while "\." matches a dot.
If a character is taken literally or not depends on the 'magic' option and the
-items mentioned next.
+items in the pattern mentioned next. The 'magic' option should always be set,
+but it can be switched off for Vi compatibility. We mention the effect of
+'nomagic' here for completeness, but we recommend against using that.
*/\m* */\M*
Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
ignoring the actual value of the 'magic' option.
@@ -401,30 +405,28 @@ Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
Use of "\v" means that after it, all ASCII characters except '0'-'9', 'a'-'z',
'A'-'Z' and '_' have special meaning: "very magic"
-Use of "\V" means that after it, only a backslash and terminating character
-(usually / or ?) have special meaning: "very nomagic"
+Use of "\V" means that after it, only a backslash and the terminating
+character (usually / or ?) have special meaning: "very nomagic"
Examples:
after: \v \m \M \V matches ~
'magic' 'nomagic'
- $ $ $ \$ matches end-of-line
- . . \. \. matches any character
+ a a a a literal 'a'
+ \a \a \a \a any alphabetic character
+ . . \. \. any character
+ \. \. . . literal dot
+ $ $ $ \$ end-of-line
* * \* \* any number of the previous atom
~ ~ \~ \~ latest substitute string
- () \(\) \(\) \(\) grouping into an atom
- | \| \| \| separating alternatives
- \a \a \a \a alphabetic character
+ () \(\) \(\) \(\) group as an atom
+ | \| \| \| nothing: separates alternatives
\\ \\ \\ \\ literal backslash
- \. \. . . literal dot
- \{ { { { literal '{'
- a a a a literal 'a'
+ \{ { { { literal curly brace
{only Vim supports \m, \M, \v and \V}
-It is recommended to always keep the 'magic' option at the default setting,
-which is 'magic'. This avoids portability problems. To make a pattern immune
-to the 'magic' option being set or not, put "\m" or "\M" at the start of the
-pattern.
+If you want to you can make a pattern immune to the 'magic' option being set
+or not by putting "\m" or "\M" at the start of the pattern.
==============================================================================
4. Overview of pattern items *pattern-overview*
@@ -666,7 +668,7 @@ overview.
Note that using "\&" works the same as using "\@=": "foo\&.." is the
same as "\(foo\)\@=..". But using "\&" is easier, you don't need the
- braces.
+ parentheses.
*/\@!*
@@ -787,11 +789,12 @@ An ordinary atom can be:
^beep( the start of the C function "beep" (probably).
*/\^*
-\^ Matches literal '^'. Can be used at any position in the pattern.
+\^ Matches literal '^'. Can be used at any position in the pattern, but
+ not inside [].
*/\_^*
\_^ Matches start-of-line. |/zero-width| Can be used at any position in
- the pattern.
+ the pattern, but not inside [].
Example matches ~
\_s*\_^foo white space and blank lines and then "foo" at
start-of-line
@@ -802,12 +805,13 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
|/zero-width|
*/\$*
-\$ Matches literal '$'. Can be used at any position in the pattern.
+\$ Matches literal '$'. Can be used at any position in the pattern, but
+ not inside [].
*/\_$*
\_$ Matches end-of-line. |/zero-width| Can be used at any position in the
- pattern. Note that "a\_$b" never matches, since "b" cannot match an
- end-of-line. Use "a\nb" instead |/\n|.
+ pattern, but not inside []. Note that "a\_$b" never matches, since
+ "b" cannot match an end-of-line. Use "a\nb" instead |/\n|.
Example matches ~
foo\_$\_s* "foo" at end-of-line and following white space and
blank lines
@@ -830,8 +834,9 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
|/zero-width|
*/\zs*
-\zs Matches at any position, and sets the start of the match there: The
- next char is the first char of the whole match. |/zero-width|
+\zs Matches at any position, but not inside [], and sets the start of the
+ match there: The next char is the first char of the whole match.
+ |/zero-width|
Example: >
/^\s*\zsif
< matches an "if" at the start of a line, ignoring white space.
@@ -842,8 +847,9 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
This cannot be followed by a multi. *E888*
*/\ze*
-\ze Matches at any position, and sets the end of the match there: The
- previous char is the last char of the whole match. |/zero-width|
+\ze Matches at any position, but not inside [], and sets the end of the
+ match there: The previous char is the last char of the whole match.
+ |/zero-width|
Can be used multiple times, the last one encountered in a matching
branch is used.
Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
@@ -928,7 +934,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
These three can be used to match specific columns in a buffer or
string. The "23" can be any column number. The first column is 1.
Actually, the column is the byte number (thus it's not exactly right
- for multi-byte characters).
+ for multibyte characters).
WARNING: When inserting or deleting text Vim does not automatically
update the matches. This means Syntax highlighting quickly becomes
wrong.
@@ -983,7 +989,7 @@ Character classes:
\p printable character (see 'isprint' option) */\p*
\P like "\p", but excluding digits */\P*
-NOTE: the above also work for multi-byte characters. The ones below only
+NOTE: the above also work for multibyte characters. The ones below only
match ASCII characters, as indicated by the range.
*whitespace* *white-space*
@@ -1054,8 +1060,8 @@ x A single character, with no special meaning, matches itself
[] (with 'nomagic': \[]) */[]* */\[]* */\_[]* */collection*
\_[]
- A collection. This is a sequence of characters enclosed in brackets.
- It matches any single character in the collection.
+ A collection. This is a sequence of characters enclosed in square
+ brackets. It matches any single character in the collection.
Example matches ~
[xyz] any 'x', 'y' or 'z'
[a-zA-Z]$ any alphabetic character at the end of a line
@@ -1114,15 +1120,16 @@ x A single character, with no special meaning, matches itself
*[:ident:]* [:ident:] identifier character (same as "\i")
*[:keyword:]* [:keyword:] keyword character (same as "\k")
*[:fname:]* [:fname:] file name character (same as "\f")
- The brackets in character class expressions are additional to the
- brackets delimiting a collection. For example, the following is a
- plausible pattern for a Unix filename: "[-./[:alnum:]_~]\+" That is,
- a list of at least one character, each of which is either '-', '.',
- '/', alphabetic, numeric, '_' or '~'.
+ The square brackets in character class expressions are additional to
+ the square brackets delimiting a collection. For example, the
+ following is a plausible pattern for a UNIX filename:
+ "[-./[:alnum:]_~]\+". That is, a list of at least one character,
+ each of which is either '-', '.', '/', alphabetic, numeric, '_' or
+ '~'.
These items only work for 8-bit characters, except [:lower:] and
- [:upper:] also work for multi-byte characters when using the new
+ [:upper:] also work for multibyte characters when using the new
regexp engine. See |two-engines|. In the future these items may
- work for multi-byte characters. For now, to get all "alpha"
+ work for multibyte characters. For now, to get all "alpha"
characters you can use: [[:lower:][:upper:]].
The "Func" column shows what library function is used. The
@@ -1161,7 +1168,7 @@ x A single character, with no special meaning, matches itself
\b <BS>
\n line break, see above |/[\n]|
\d123 decimal number of character
- \o40 octal number of character up to 0377
+ \o40 octal number of character up to 0o377
\x20 hexadecimal number of character up to 0xff
\u20AC hex. number of multibyte character up to 0xffff
\U1234 hex. number of multibyte character up to 0xffffffff
@@ -1198,7 +1205,8 @@ x A single character, with no special meaning, matches itself
\%d123 Matches the character specified with a decimal number. Must be
followed by a non-digit.
\%o40 Matches the character specified with an octal number up to 0377.
- Numbers below 040 must be followed by a non-octal digit or a non-digit.
+ Numbers below 0o40 must be followed by a non-octal digit or a
+ non-digit.
\%x2a Matches the character specified with up to two hexadecimal characters.
\%u20AC Matches the character specified with up to four hexadecimal
characters.
@@ -1245,8 +1253,8 @@ When working with expression evaluation, a <NL> character in the pattern
matches a <NL> in the string. The use of "\n" (backslash n) to match a <NL>
doesn't work there, it only works to match text in the buffer.
- *pattern-multi-byte*
-Patterns will also work with multi-byte characters, mostly as you would
+ *pattern-multi-byte* *pattern-multibyte*
+Patterns will also work with multibyte characters, mostly as you would
expect. But invalid bytes may cause trouble, a pattern with an invalid byte
will probably never match.
@@ -1267,7 +1275,7 @@ not match in "càt" (where the a has the composing character 0x0300), but
0xe1, it does not have a compositing character). It does match "cat" (where
the a is just an a).
-When a composing character appears at the start of the pattern of after an
+When a composing character appears at the start of the pattern or after an
item that doesn't include the composing character, a match is found at any
character that includes this composing character.
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 7312ab721b..5adafd7877 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -437,9 +437,13 @@ settings are described below, in |netrw-browser-options|, and in
*g:netrw_silent* =0 : transfers done normally
=1 : transfers done silently
- *g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one
+ *g:netrw_use_errorwindow* =2: messages from netrw will use a popup window
+ Move the mouse and pause to remove the popup window.
+ (default value if popup windows are availble)
+ =1 : messages from netrw will use a separate one
line window. This window provides reliable
- delivery of messages. (default)
+ delivery of messages.
+ (default value if popup windows are not availble)
=0 : messages from netrw will use echoerr ;
messages don't always seem to show up this
way, but one doesn't have to quit the window.
@@ -725,6 +729,8 @@ just as easily as if they were local files! >
See |netrw-activate| for more on how to encourage your vim to use plugins
such as netrw.
+For password-free use of scp:, see |netrw-ssh-hack|.
+
==============================================================================
7. Ex Commands *netrw-ex* {{{1
@@ -1063,7 +1069,7 @@ QUICK HELP *netrw-quickhelp* {{{2
Reverse sorting order.........................|netrw-r|
- *netrw-quickmap* *netrw-quickmaps*
+ *netrw-quickmap* *netrw-quickmaps*
QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
>
--- ----------------- ----
@@ -1080,7 +1086,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
a Cycles between normal display, |netrw-a|
hiding (suppress display of files matching g:netrw_list_hide)
and showing (display only files which match g:netrw_list_hide)
- c Make browsing directory the current directory |netrw-c|
+ cd Make browsing directory the current directory |netrw-cd|
C Setting the editing window |netrw-C|
d Make a directory |netrw-d|
D Attempt to remove the file(s)/directory(ies) |netrw-D|
@@ -2098,7 +2104,7 @@ the two directories the same, use the "cd" map (type cd). That map will
set Vim's notion of the current directory to netrw's current browsing
directory.
-*netrw-c* : This map's name has been changed from "c" to cd (see |netrw-cd|).
+|netrw-cd|: This map's name was changed from "c" to cd (see |netrw-cd|).
This change was done to allow for |netrw-cb| and |netrw-cB| maps.
Associated setting variable: |g:netrw_keepdir|
@@ -2752,7 +2758,7 @@ your browsing preferences. (see also: |netrw-settings|)
=0 keep the current directory the same as the
browsing directory.
The current browsing directory is contained in
- b:netrw_curdir (also see |netrw-c|)
+ b:netrw_curdir (also see |netrw-cd|)
*g:netrw_keepj* ="keepj" (default) netrw attempts to keep the
|:jumps| table unaffected.
@@ -3053,7 +3059,7 @@ your browsing preferences. (see also: |netrw-settings|)
(see |netrw-c-tab|).
*g:netrw_xstrlen* Controls how netrw computes string lengths,
- including multibyte characters' string
+ including multi-byte characters' string
length. (thanks to N Weibull, T Mechelynck)
=0: uses Vim's built-in strlen()
=1: number of codepoints (Latin a + combining
@@ -3123,7 +3129,8 @@ a file using the local browser (by putting the cursor on it) and pressing
Related topics:
* To see what the current directory is, use |:pwd|
- * To make the currently browsed directory the current directory, see |netrw-c|
+ * To make the currently browsed directory the current directory, see
+ |netrw-cd|
* To automatically make the currently browsed directory the current
directory, see |g:netrw_keepdir|.
@@ -3798,9 +3805,15 @@ netrw:
or
http://vim.sourceforge.net/scripts/script.php?script_id=120
- Decho.vim is provided as a "vimball"; see |vimball-intro|.
+ Decho.vim is provided as a "vimball"; see |vimball-intro|. You
+ should edit the Decho.vba.gz file and source it in: >
- 2. Edit the <netrw.vim> file by typing: >
+ vim Decho.vba.gz
+ :so %
+ :q
+<
+ 2. To turn on debug tracing in netrw, then edit the <netrw.vim>
+ file by typing: >
vim netrw.vim
:DechoOn
@@ -3822,14 +3835,34 @@ netrw:
read/write your file over the network in a separate tab or
server vim window.
- To save the file, use >
+ Change the netrw.vimrc file to include the Decho plugin: >
+
+ set nocp
+ so $HOME/.vim/plugin/Decho.vim
+ so $HOME/.vim/plugin/netrwPlugin.vim
+<
+ You should continue to run vim with >
+
+ vim -u netrw.vimrc --noplugins -i NONE [some path here]
+<
+ to avoid entanglements with options and other plugins.
+
+ To save the file: under linux, the output will be in a separate
+ remote server window; in it, just save the file with >
+
+ :w! DBG
+
+< Under a vim that doesn't support clientserver, your debugging
+ output will appear in another tab: >
:tabnext
:set bt=
:w! DBG
+<
+ Furthermore, it'd be helpful if you would type >
-< Furthermore, it'd be helpful if you would type >
:Dsep <command>
+
< where <command> is the command you're about to type next,
thereby making it easier to associate which part of the
debugging trace is due to which command.
@@ -3837,17 +3870,34 @@ netrw:
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
<
==============================================================================
12. History *netrw-history* {{{1
+ v170: Mar 11, 2020 * (reported by Reiner Herrmann) netrw+tree
+ would not hide with the ^\..* pattern
+ correctly.
+ * (Marcin Szamotulski) NetrwOptionRestore
+ did not restore options correctly that
+ had a single quote in the option string.
+ Apr 13, 2020 * implemented error handling via popup
+ windows (see |popup_beval()|)
+ Apr 30, 2020 * (reported by Manatsu Takahashi) while
+ using Lexplore, a modified file could
+ be overwritten. Sol'n: will not overwrite,
+ but will emit an |E37| (although one cannot
+ add an ! to override)
+ Jun 07, 2020 * (reported by Jo Totland) repeatedly invoking
+ :Lexplore and quitting it left unused
+ hidden buffers. Netrw will now set netrw
+ buffers created by :Lexplore to |bh|=wipe.
v169: Dec 20, 2019 * (reported by amkarthik) that netrw's x
(|netrw-x|) would throw an error when
attempting to open a local directory.
v168: Dec 12, 2019 * scp timeout error message not reported,
hopefully now fixed (Shane Xb Qian)
-
v167: Nov 29, 2019 * netrw does a save&restore on @* and @+.
That causes problems with the clipboard.
Now restores occurs only if @* or @+ have
@@ -4305,4 +4355,4 @@ netrw:
==============================================================================
Modelines: {{{1
- vim:tw=78:ts=8:noet:ft=help:norl:fdm=marker
+vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index 7a5e7166ba..c715644847 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -4,7 +4,7 @@
| Zip File Interface |
+====================+
-Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
+Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
@@ -33,10 +33,11 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
also write to the file. Currently, one may not make a new file in
zip archives via the plugin.
+ COMMANDS~
*zip-x*
- x : may extract a listed file when the cursor is atop it
+ x : extract a listed file when the cursor is atop it
- OPTIONS
+ OPTIONS~
*g:zip_nomax*
@@ -101,6 +102,10 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
==============================================================================
4. History *zip-history* {{{1
+ v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
+ opened but the swapfile held unencrypted contents.
+ The solution is to edit the contents of a zip file
+ using the |:noswapfile| modifier.
v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
the command actually to be attempted in zip#Read()
and zip#Write()
@@ -149,4 +154,4 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing
==============================================================================
-vim:tw=78:ts=8:noet:ft=help:fdm=marker
+vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker
diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt
index d744735b96..e7de5b9ee3 100644
--- a/runtime/doc/print.txt
+++ b/runtime/doc/print.txt
@@ -101,7 +101,7 @@ If 'printencoding' is empty or Vim cannot find the file then it will use
encoding file. If Vim is unable to find a character encoding file then it
will use the "latin1" print character encoding file.
-When 'encoding' is set to a multi-byte encoding, Vim will try to convert
+When 'encoding' is set to a multibyte encoding, Vim will try to convert
characters to the printing encoding for printing (if 'printencoding' is empty
then the conversion will be to latin1). Conversion to a printing encoding
other than latin1 will require Vim to be compiled with the |+iconv| feature.
@@ -251,7 +251,7 @@ Japanese text you would do the following; >
:set printmbcharset=JIS_X_1983
If 'printmbcharset' is not one of the above values then it is assumed to
-specify a custom multi-byte character set and no check will be made that it is
+specify a custom multibyte character set and no check will be made that it is
compatible with the value for 'printencoding'. Vim will look for a file
defining the character set in the "print" directory in 'runtimepath'.
@@ -286,7 +286,7 @@ printing of characters in the ASCII code range.
a:yes Use ASCII character set for codes in the ASCII
a:no (default) code range.
-The following is an example of specifying two multi-byte fonts, one for normal
+The following is an example of specifying two multibyte fonts, one for normal
and italic printing and one for bold and bold-italic printing, and using
Courier to print codes in the ASCII code range but using the national
character set: >
@@ -402,10 +402,10 @@ There are currently a number of limitations with PostScript printing:
possible to get all the characters in an encoding to print by installing a
new version of the Courier font family.
-- Multi-byte support - Currently Vim will try to convert multi-byte characters
+- Multi-byte support - Currently Vim will try to convert multibyte characters
to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
empty). Any characters that are not successfully converted are shown as
- unknown characters. Printing will fail if Vim cannot convert the multi-byte
+ unknown characters. Printing will fail if Vim cannot convert the multibyte
to the 8-bit encoding.
==============================================================================
@@ -490,7 +490,7 @@ print ASCII text using the national character set you may see some unexpected
characters. If you want true ASCII code printing then you need to configure
Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
-It is possible to define your own multi-byte character set although this
+It is possible to define your own multibyte character set although this
should not be attempted lightly. A discussion on the process if beyond the
scope of these help files. You can find details on CMap (character map) files
in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0',
@@ -597,22 +597,15 @@ X11
http://www.cs.wisc.edu/~ghost/gv/
-Windows
+MS-Windows
- GSview. Obtainable from:
http://www.cs.wisc.edu/~ghost/gsview/
-DOS
-
-- ps_view. Obtainable from:
-
- ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/
- ftp://ftp.dante.de/tex-archive/support/ps_view/
-
Linux
-- GSview. Linux version of the popular Windows previewer.
+- GSview. Linux version of the popular MS-Windows previewer.
Obtainable from:
http://www.cs.wisc.edu/~ghost/gsview/
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index fab3b11430..db6b759af6 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -225,8 +225,7 @@ processing a quickfix or location list command, it will be aborted.
e.g., a compiler will not compile the same file again,
`git commit` will abort the committing process, `fc`
(built-in for shells like bash and zsh) will not
- execute the command, etc. will not compile the same
- file again.
+ execute the command, etc.
{N} can also be zero, in which case Vim exits
normally.
WARNING: All changes in files are lost. It works like
@@ -311,7 +310,7 @@ processing a quickfix or location list command, it will be aborted.
*:cex* *:cexpr* *E777*
:cex[pr][!] {expr} Create a quickfix list using the result of {expr} and
jump to the first error.
- If {expr} is a String, then each new-line terminated
+ If {expr} is a String, then each newline terminated
line in the String is processed using the global value
of 'errorformat' and the result is added to the
quickfix list.
@@ -484,7 +483,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
etc.
< When the current file can't be |abandon|ed and the [!]
is not present, the command fails.
- When an error is detected execution stops.
+ When going to the next entry fails execution stops.
The last buffer (or where an error occurred) becomes
the current buffer.
{cmd} can contain '|' to concatenate several commands.
@@ -926,11 +925,11 @@ or simpler >
"$*" can be given multiple times, for example: >
:set makeprg=gcc\ -o\ $*\ $*
-The 'shellpipe' option defaults to ">" on Windows. This means that the output
-of the compiler is saved in a file and not shown on the screen directly. For
-Unix "| tee" is used. The compiler output is shown on the screen and saved in
-a file the same time. Depending on the shell used "|& tee" or "2>&1| tee" is
-the default, so stderr output will be included.
+The 'shellpipe' option defaults to ">%s 2>&1" for Win32.
+This means that the output of the compiler is saved in a file and not shown on
+the screen directly. For Unix "| tee" is used. The compiler output is shown
+on the screen and saved in a file the same time. Depending on the shell used
+"|& tee" or "2>&1| tee" is the default, so stderr output will be included.
If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful
for compilers that write to an errorfile themselves.
@@ -995,8 +994,6 @@ commands can be combined to create a NewGrep command: >
the error list to the matches. Files matching
'wildignore' are ignored; files in 'suffixes' are
searched last.
- Without the 'g' flag each line is added only once.
- With 'g' every match is added.
{pattern} is a Vim search pattern. Instead of
enclosing it in / any non-ID character (see
@@ -1007,6 +1004,28 @@ commands can be combined to create a NewGrep command: >
'smartcase' is not used.
If {pattern} is empty (e.g. // is specified), the last
used search pattern is used. |last-pattern|
+
+ Flags:
+ 'g' Without the 'g' flag each line is added only
+ once. With 'g' every match is added.
+
+ 'j' Without the 'j' flag Vim jumps to the first
+ match. With 'j' only the quickfix list is
+ updated. With the [!] any changes in the current
+ buffer are abandoned.
+
+ 'f' When the 'f' flag is specified, fuzzy string
+ matching is used to find matching lines. In this
+ case, {pattern} is treated as a literal string
+ instead of a regular expression. See
+ |matchfuzzy()| for more info about fuzzy
+ matching.
+
+ |QuickFixCmdPre| and |QuickFixCmdPost| are triggered.
+ A file that is opened for matching may use a buffer
+ number, but it is reused if possible to avoid
+ consuming buffer numbers.
+
:{count}vim[grep] ...
When a number is put before the command this is used
as the maximum number of matches to find. Use
@@ -1014,11 +1033,6 @@ commands can be combined to create a NewGrep command: >
Useful if you only want to check if there is a match
and quit quickly when it's found.
- Without the 'j' flag Vim jumps to the first match.
- With 'j' only the quickfix list is updated.
- With the [!] any changes in the current buffer are
- abandoned.
-
Every second or so the searched file name is displayed
to give you an idea of the progress made.
Examples: >
@@ -1090,7 +1104,7 @@ id-utils) in a similar way to its compiler integration (see |:make| above).
allowed with |:bufdo|.
An example that uses the argument list and avoids
errors for files without matches: >
- :silent argdo try
+ :silent argdo try
\ | grepadd! something %
\ | catch /E480:/
\ | endtry"
@@ -1266,7 +1280,7 @@ You can force the compiler to ignore makefiles by defining
b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
existence only).
-If the compiler chose not to use make, it need to choose a right program for
+If the compiler chose not to use make, it needs to choose a right program for
processing your input. If b:tex_flavor or g:tex_flavor (in this precedence)
variable exists, it defines TeX flavor for :make (actually, this is the name
of executed command), and if both variables do not exist, it defaults to
@@ -1658,7 +1672,7 @@ special problem here is that it doesn't print information on leaving the
directory and that it doesn't print the absolute path.
To solve the problem with relative paths and missing "leave directory"
-messages Vim uses following algorithm:
+messages Vim uses the following algorithm:
1) Check if the given directory is a subdirectory of the current directory.
If this is true, store it as the current directory.
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index 4a47fd4b57..fb20a583c9 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -292,7 +292,7 @@ moving around:
|i_CTRL-A| CTRL-A insert previously inserted text
|i_CTRL-@| CTRL-@ insert previously inserted text and stop
Insert mode
-|i_CTRL-R| CTRL-R {0-9a-z%#:.-="} insert the contents of a register
+|i_CTRL-R| CTRL-R {register} insert the contents of a register
|i_CTRL-N| CTRL-N insert next match of identifier before the
cursor
@@ -621,7 +621,7 @@ Short explanation of each option: *option-list*
'binary' 'bin' read/write/edit file in binary mode
'bomb' prepend a Byte Order Mark to the file
'breakat' 'brk' characters that may cause a line break
-'breakindent' 'bri' wrapped line repeats indent
+'breakindent' 'bri' wrapped line repeats indent
'breakindentopt' 'briopt' settings for 'breakindent'
'browsedir' 'bsdir' which directory to start browsing in
'bufhidden' 'bh' what to do when buffer is no longer in window
@@ -680,7 +680,7 @@ Short explanation of each option: *option-list*
'eventignore' 'ei' autocommand events that are ignored
'expandtab' 'et' use spaces when <Tab> is inserted
'exrc' 'ex' read .nvimrc and .exrc in the current directory
-'fileencoding' 'fenc' file encoding for multi-byte text
+'fileencoding' 'fenc' file encoding for multibyte text
'fileencodings' 'fencs' automatically detected character encodings
'fileformat' 'ff' file format used for file I/O
'fileformats' 'ffs' automatically detected values for 'fileformat'
@@ -869,6 +869,7 @@ Short explanation of each option: *option-list*
'spellcapcheck' 'spc' pattern to locate end of a sentence
'spellfile' 'spf' files where |zg| and |zw| store words
'spelllang' 'spl' language(s) to do spell checking for
+'spelloptions' 'spo' options for spell checking
'spellsuggest' 'sps' method(s) used to suggest spelling corrections
'splitbelow' 'sb' new window from split is below the current one
'splitright' 'spr' new window is put right of the current one
@@ -1014,8 +1015,7 @@ Short explanation of each option: *option-list*
three digits)
|c_CTRL-K| CTRL-K {char1} {char2}
enter digraph (See |Q_di|)
-|c_CTRL-R| CTRL-R {0-9a-z"%#:-=}
- insert the contents of a register
+|c_CTRL-R| CTRL-R {register} insert the contents of a register
|c_<Left>| <Left>/<Right> cursor left/right
|c_<S-Left>| <S-Left>/<S-Right> cursor one word left/right
diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt
index 7789d4bdbc..9ef5a37452 100644
--- a/runtime/doc/recover.txt
+++ b/runtime/doc/recover.txt
@@ -56,13 +56,13 @@ Disadvantages:
directories (although Vim tries to avoid that by comparing the path name).
This will result in bogus ATTENTION warning messages.
- When you use your home directory, and somebody else tries to edit the same
- file, he will not see your swap file and will not get the ATTENTION warning
- message.
+ file, that user will not see your swap file and will not get the ATTENTION
+ warning message.
If you want to put swap files in a fixed place, put a command resembling the
following ones in your vimrc:
:set dir=~/tmp (for Unix)
- :set dir=c:\\tmp (for Windows)
+ :set dir=c:\\tmp (for Win32)
This is also very handy when editing files on floppy. Of course you will have
to create that "tmp" directory for this to work!
@@ -106,8 +106,9 @@ If you want to make sure that your changes are in the swap file use this
command:
*:pre* *:preserve* *E313* *E314*
-:pre[serve] Write all text for all buffers into swap file. The
- original file is no longer needed for recovery.
+:pre[serve] Write all text for the current buffer into its swap
+ file. The original file is no longer needed for
+ recovery. This sets a flag in the current buffer.
A Vim swap file can be recognized by the first six characters: "b0VIM ".
After that comes the version number, e.g., "3.0".
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 3a7337d2e8..b237d70760 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -70,7 +70,7 @@ The default for [range] is the whole buffer (1,$). Use "CTRL-C" to interrupt
the command. If an error message is given for a line, the command for that
line is aborted and the global command continues with the next marked or
unmarked line.
- *E147*
+ *E147*
When the command is used recursively, it only works on one line. Giving a
range is then not allowed. This is useful to find all lines that match a
pattern and do not match another pattern: >
@@ -117,6 +117,11 @@ q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"}
recorded macro and the yank will overwrite the
recorded macro.
+ Note: The recording happens while you type, replaying
+ the register happens as if the keys come from a
+ mapping. This matters, for example, for undo, which
+ only syncs when commands were typed.
+
q Stops recording.
Implementation note: The 'q' that stops recording is
not stored in the register, unless it was the result
@@ -129,7 +134,7 @@ q Stops recording.
used.
The register is executed like a mapping, that means
that the difference between 'wildchar' and 'wildcharm'
- applies.
+ applies, and undo might not be synced in the same way.
For "@=" you are prompted to enter an expression. The
result of the expression is then executed.
See also |@:|.
@@ -153,7 +158,7 @@ q Stops recording.
[addr] (default is current line).
:[addr]@ *:@@*
-:[addr]@@ Repeat the previous :@{0-9a-z"}. First set cursor at
+:[addr]@@ Repeat the previous :@{register}. First set cursor at
line [addr] (default is current line).
==============================================================================
@@ -206,10 +211,10 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
When {file} contains wildcards it is expanded to all
matching files. Example: >
- :runtime! plugin/*.vim
+ :runtime! plugin/**/*.vim
< This is what Vim uses to load the plugin files when
starting up. This similar command: >
- :runtime plugin/*.vim
+ :runtime plugin/**/*.vim
< would source the first file only.
When 'verbose' is one or higher, there is a message
@@ -248,6 +253,9 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
directories are added to 'runtimepath'. This is
useful in your .vimrc. The plugins will then be
loaded during initialization, see |load-plugins|.
+ Note that for ftdetect scripts to be loaded
+ you will need to write `filetype plugin indent on`
+ AFTER all `packadd!` commands.
Also see |pack-add|.
@@ -366,7 +374,7 @@ nested as deep as the number of files that can be opened at one time (about
You can use the "<sfile>" string (literally, this is not a special key) inside
of the sourced file, in places where a file name is expected. It will be
replaced by the file name of the sourced file. For example, if you have a
-"other.vimrc" file in the same directory as your |init.vim| file, you can
+"other.vimrc" file in the same directory as your |init.vim| file, you can
source it from your |init.vim| file with this command: >
:source <sfile>:h/other.vimrc
@@ -388,7 +396,7 @@ because the <CR> from the first lines will be lost.
On other systems, Vim expects ":source"ed files to end in a <NL>. These
always work. If you are using a file with <CR><NL> <EOL>s (for example, a
-file made on Windows), all lines will have a trailing <CR>. This may cause
+file made on MS-Windows), all lines will have a trailing <CR>. This may cause
problems for some commands (e.g., mappings). There is no automatic <EOL>
detection, because it's common to start with a line that defines a mapping
that ends in a <CR>, which will confuse the automaton.
@@ -505,7 +513,7 @@ When Vim starts up, after processing your .vimrc, it scans all directories in
directories are added to 'runtimepath'. Then all the plugins are loaded.
See |packload-two-steps| for how these two steps can be useful.
-In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
+In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
"~/.local/share/nvim/site/pack/foo/start/foobar" to 'runtimepath'.
If the "foobar" plugin kicks in and sets the 'filetype' to "some", Vim will
@@ -591,8 +599,8 @@ Creating Vim packages *package-create*
This assumes you write one or more plugins that you distribute as a package.
If you have two unrelated plugins you would use two packages, so that Vim
-users can chose what they include or not. Or you can decide to use one
-package with optional plugins, and tell the user to add the ones he wants with
+users can choose what they include or not. Or you can decide to use one
+package with optional plugins, and tell the user to add the preferred ones with
`:packadd`.
Decide how you want to distribute the package. You can create an archive or
@@ -613,9 +621,9 @@ Your directory layout would be like this:
opt/fooextra/doc/tags " help tags
This allows for the user to do: >
- mkdir ~/.local/share/nvim/site/pack/myfoobar
- cd ~/.local/share/nvim/site/pack/myfoobar
- git clone https://github.com/you/foobar.git
+ mkdir ~/.local/share/nvim/site/pack
+ cd ~/.local/share/nvim/site/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.
@@ -628,7 +636,7 @@ You could add this packadd command in one of your plugins, to be executed when
the optional plugin is needed.
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 his
+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
@@ -815,7 +823,7 @@ DEFINING BREAKPOINTS
valid in the script where it has been defined and if that
script is called from several other scripts, this will stop
whenever that particular variable will become visible or
- unaccessible again.
+ inaccessible again.
The [lnum] is the line number of the breakpoint. Vim will stop at or after
this line. When omitted line 1 is used.
diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt
index 550a696de0..d45a2dce7e 100644
--- a/runtime/doc/rileft.txt
+++ b/runtime/doc/rileft.txt
@@ -64,7 +64,7 @@ o Invocations
+ 'rightleft' ('rl') sets window orientation to right-to-left.
+ 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages,
allows one to remove a composing character which gets superimposed
- on those that proceeded them (some languages require this).
+ on those that preceded them (some languages require this).
+ 'rightleftcmd' ('rlc') sets the command-line within certain modes
(such as search) to be utilized in right-to-left orientation as well.
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
index e3ba4ba181..e8ed29c1a4 100644
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -42,8 +42,8 @@ When signs are defined for a file, Vim will automatically add a column of two
characters to display them in. When the last sign is unplaced the column
disappears again. This behavior can be changed with the 'signcolumn' option.
-The color of the column is set with the SignColumn group |hl-SignColumn|.
-Example to set the color: >
+The color of the column is set with the SignColumn highlight group
+|hl-SignColumn|. Example to set the color: >
:highlight SignColumn guibg=darkgrey
<
@@ -68,9 +68,13 @@ other plugins using signs.
*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
-independent of the sign group. The default priority for a sign is 10. The
+independently of the sign group. The default priority for a sign is 10. 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
+displayed.
+
When the line on which the sign is placed is deleted, the sign is moved to the
next line (or the last line of the buffer, if there is no next line). When
the delete is undone the sign does not move back.
@@ -127,6 +131,9 @@ See |sign_define()| for the equivalent Vim script function.
texthl={group}
Highlighting group used for the text item.
+ Example: >
+ :sign define MySign text=>> texthl=Search linehl=DiffText
+<
DELETING A SIGN *:sign-undefine* *E155*
@@ -136,7 +143,9 @@ See |sign_undefine()| for the equivalent Vim script function.
Deletes a previously defined sign. If signs with this {name}
are still placed this will cause trouble.
-
+ Example: >
+ :sign undefine MySign
+<
LISTING SIGNS *:sign-list* *E156*
@@ -190,6 +199,10 @@ See |sign_place()| for the equivalent Vim script function.
Same, but use buffer {nr}. If the buffer argument is not
given, place the sign in the current buffer.
+ Example: >
+ :sign place 10 line=99 name=sign3
+ :sign place 10 line=99 name=sign3 buffer=3
+<
*E885*
:sign place {id} name={name} file={fname}
Change the placed sign {id} in file {fname} to use the defined
@@ -202,10 +215,17 @@ See |sign_place()| for the equivalent Vim script function.
"priority={prio}" attribute can be used to change the priority
of an existing sign.
+ Example: >
+ :sign place 23 name=sign1 file=/path/to/edit.py
+<
:sign place {id} name={name} [buffer={nr}]
Same, but use buffer {nr}. If the buffer argument is not
given, use the current buffer.
+ Example: >
+ :sign place 23 name=sign1
+ :sign place 23 name=sign1 buffer=7
+<
REMOVING SIGNS *:sign-unplace* *E159*
@@ -337,4 +357,363 @@ See |sign_jump()| for the equivalent Vim script function.
Same but jump to the sign in group {group}
+==============================================================================
+3. Functions *sign-functions-details*
+
+sign_define({name} [, {dict}]) *sign_define()*
+sign_define({list})
+ Define a new sign named {name} or modify the attributes of an
+ existing sign. This is similar to the |:sign-define| command.
+
+ Prefix {name} with a unique text to avoid name collisions.
+ There is no {group} like with placing signs.
+
+ The {name} can be a String or a Number. The optional {dict}
+ argument specifies the sign attributes. The following values
+ are supported:
+ icon full path to the bitmap file for the sign.
+ linehl highlight group used for the whole line the
+ sign is placed in.
+ text text that is displayed when there is no icon
+ or the GUI is not being used.
+ texthl highlight group used for the text item
+ numhl highlight group used for 'number' column at the
+ associated line. Overrides |hl-LineNr|,
+ |hl-CursorLineNr|.
+
+ If the sign named {name} already exists, then the attributes
+ of the sign are updated.
+
+ The one argument {list} can be used to define a list of signs.
+ Each list item is a dictionary with the above items in {dict}
+ and a "name" item for the sign name.
+
+ Returns 0 on success and -1 on failure. When the one argument
+ {list} is used, then returns a List of values one for each
+ defined sign.
+
+ Examples: >
+ call sign_define("mySign", {
+ \ "text" : "=>",
+ \ "texthl" : "Error",
+ \ "linehl" : "Search"})
+ call sign_define([
+ \ {'name' : 'sign1',
+ \ 'text' : '=>'},
+ \ {'name' : 'sign2',
+ \ 'text' : '!!'}
+ \ ])
+<
+sign_getdefined([{name}]) *sign_getdefined()*
+ Get a list of defined signs and their attributes.
+ This is similar to the |:sign-list| command.
+
+ If the {name} is not supplied, then a list of all the defined
+ signs is returned. Otherwise the attribute of the specified
+ sign is returned.
+
+ Each list item in the returned value is a dictionary with the
+ following entries:
+ icon full path to the bitmap file of the sign
+ linehl highlight group used for the whole line the
+ sign is placed in.
+ name name of the sign
+ text text that is displayed when there is no icon
+ or the GUI is not being used.
+ texthl highlight group used for the text item
+ numhl highlight group used for 'number' column at the
+ associated line. Overrides |hl-LineNr|,
+ |hl-CursorLineNr|.
+
+ Returns an empty List if there are no signs and when {name} is
+ not found.
+
+ Examples: >
+ " Get a list of all the defined signs
+ echo sign_getdefined()
+
+ " Get the attribute of the sign named mySign
+ echo sign_getdefined("mySign")
+<
+sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
+ Return a list of signs placed in a buffer or all the buffers.
+ This is similar to the |:sign-place-list| command.
+
+ If the optional buffer name {expr} is specified, then only the
+ list of signs placed in that buffer is returned. For the use
+ of {expr}, see |bufname()|. The optional {dict} can contain
+ the following entries:
+ group select only signs in this group
+ id select sign with this identifier
+ lnum select signs placed in this line. For the use
+ of {lnum}, see |line()|.
+ If {group} is '*', then signs in all the groups including the
+ global group are returned. If {group} is not supplied or is an
+ empty string, then only signs in the global group are
+ returned. If no arguments are supplied, then signs in the
+ global group placed in all the buffers are returned.
+ See |sign-group|.
+
+ Each list item in the returned value is a dictionary with the
+ following entries:
+ bufnr number of the buffer with the sign
+ signs list of signs placed in {bufnr}. Each list
+ item is a dictionary with the below listed
+ entries
+
+ The dictionary for each sign contains the following entries:
+ group sign group. Set to '' for the global group.
+ id identifier of the sign
+ lnum line number where the sign is placed
+ name name of the defined sign
+ priority sign priority
+
+ The returned signs in a buffer are ordered by their line
+ number and priority.
+
+ Returns an empty list on failure or if there are no placed
+ signs.
+
+ Examples: >
+ " Get a List of signs placed in eval.c in the
+ " global group
+ echo sign_getplaced("eval.c")
+
+ " Get a List of signs in group 'g1' placed in eval.c
+ echo sign_getplaced("eval.c", {'group' : 'g1'})
+
+ " Get a List of signs placed at line 10 in eval.c
+ echo sign_getplaced("eval.c", {'lnum' : 10})
+
+ " Get sign with identifier 10 placed in a.py
+ echo sign_getplaced("a.py", {'id' : 10})
+
+ " Get sign with id 20 in group 'g1' placed in a.py
+ echo sign_getplaced("a.py", {'group' : 'g1',
+ \ 'id' : 20})
+
+ " Get a List of all the placed signs
+ echo sign_getplaced()
+<
+ *sign_jump()*
+sign_jump({id}, {group}, {expr})
+ Open the buffer {expr} or jump to the window that contains
+ {expr} and position the cursor at sign {id} in group {group}.
+ This is similar to the |:sign-jump| command.
+
+ For the use of {expr}, see |bufname()|.
+
+ Returns the line number of the sign. Returns -1 if the
+ arguments are invalid.
+
+ Example: >
+ " Jump to sign 10 in the current buffer
+ call sign_jump(10, '', '')
+<
+
+ *sign_place()*
+sign_place({id}, {group}, {name}, {expr} [, {dict}])
+ Place the sign defined as {name} at line {lnum} in file or
+ buffer {expr} and assign {id} and {group} to sign. This is
+ similar to the |:sign-place| command.
+
+ If the sign identifier {id} is zero, then a new identifier is
+ allocated. Otherwise the specified number is used. {group} is
+ the sign group name. To use the global sign group, use an
+ empty string. {group} functions as a namespace for {id}, thus
+ two groups can use the same IDs. Refer to |sign-identifier|
+ and |sign-group| for more information.
+
+ {name} refers to a defined sign.
+ {expr} refers to a buffer name or number. For the accepted
+ values, see |bufname()|.
+
+ The optional {dict} argument supports the following entries:
+ lnum line number in the file or buffer
+ {expr} where the sign is to be placed.
+ For the accepted values, see |line()|.
+ priority priority of the sign. See
+ |sign-priority| for more information.
+
+ If the optional {dict} is not specified, then it modifies the
+ placed sign {id} in group {group} to use the defined sign
+ {name}.
+
+ Returns the sign identifier on success and -1 on failure.
+
+ Examples: >
+ " Place a sign named sign1 with id 5 at line 20 in
+ " buffer json.c
+ call sign_place(5, '', 'sign1', 'json.c',
+ \ {'lnum' : 20})
+
+ " Updates sign 5 in buffer json.c to use sign2
+ call sign_place(5, '', 'sign2', 'json.c')
+
+ " Place a sign named sign3 at line 30 in
+ " buffer json.c with a new identifier
+ let id = sign_place(0, '', 'sign3', 'json.c',
+ \ {'lnum' : 30})
+
+ " Place a sign named sign4 with id 10 in group 'g3'
+ " at line 40 in buffer json.c with priority 90
+ call sign_place(10, 'g3', 'sign4', 'json.c',
+ \ {'lnum' : 40, 'priority' : 90})
+<
+
+ *sign_placelist()*
+sign_placelist({list})
+ Place one or more signs. This is similar to the
+ |sign_place()| function. The {list} argument specifies the
+ List of signs to place. Each list item is a dict with the
+ following sign attributes:
+ buffer buffer name or number. For the accepted
+ values, see |bufname()|.
+ group sign group. {group} functions as a namespace
+ for {id}, thus two groups can use the same
+ IDs. If not specified or set to an empty
+ string, then the global group is used. See
+ |sign-group| for more information.
+ id sign identifier. If not specified or zero,
+ then a new unique identifier is allocated.
+ Otherwise the specified number is used. See
+ |sign-identifier| for more information.
+ lnum line number in the buffer {expr} where the
+ sign is to be placed. For the accepted values,
+ see |line()|.
+ name name of the sign to place. See |sign_define()|
+ for more information.
+ 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
+ |sign-priority| for more information.
+
+ If {id} refers to an existing sign, then the existing sign is
+ modified to use the specified {name} and/or {priority}.
+
+ Returns a List of sign identifiers. If failed to place a
+ sign, the corresponding list item is set to -1.
+
+ Examples: >
+ " Place sign s1 with id 5 at line 20 and id 10 at line
+ " 30 in buffer a.c
+ let [n1, n2] = sign_placelist([
+ \ {'id' : 5,
+ \ 'name' : 's1',
+ \ 'buffer' : 'a.c',
+ \ 'lnum' : 20},
+ \ {'id' : 10,
+ \ 'name' : 's1',
+ \ 'buffer' : 'a.c',
+ \ 'lnum' : 30}
+ \ ])
+
+ " Place sign s1 in buffer a.c at line 40 and 50
+ " with auto-generated identifiers
+ let [n1, n2] = sign_placelist([
+ \ {'name' : 's1',
+ \ 'buffer' : 'a.c',
+ \ 'lnum' : 40},
+ \ {'name' : 's1',
+ \ 'buffer' : 'a.c',
+ \ 'lnum' : 50}
+ \ ])
+<
+
+sign_undefine([{name}]) *sign_undefine()*
+sign_undefine({list})
+ Deletes a previously defined sign {name}. This is similar to
+ the |:sign-undefine| command. If {name} is not supplied, then
+ deletes all the defined signs.
+
+ The one argument {list} can be used to undefine a list of
+ signs. Each list item is the name of a sign.
+
+ Returns 0 on success and -1 on failure. For the one argument
+ {list} call, returns a list of values one for each undefined
+ sign.
+
+ Examples: >
+ " Delete a sign named mySign
+ call sign_undefine("mySign")
+
+ " Delete signs 'sign1' and 'sign2'
+ call sign_undefine(["sign1", "sign2"])
+
+ " Delete all the signs
+ call sign_undefine()
+<
+
+sign_unplace({group} [, {dict}]) *sign_unplace()*
+ Remove a previously placed sign in one or more buffers. This
+ is similar to the |:sign-unplace| command.
+
+ {group} is the sign group name. To use the global sign group,
+ use an empty string. If {group} is set to '*', then all the
+ groups including the global group are used.
+ The signs in {group} are selected based on the entries in
+ {dict}. The following optional entries in {dict} are
+ supported:
+ buffer buffer name or number. See |bufname()|.
+ id sign identifier
+ If {dict} is not supplied, then all the signs in {group} are
+ removed.
+
+ Returns 0 on success and -1 on failure.
+
+ Examples: >
+ " Remove sign 10 from buffer a.vim
+ call sign_unplace('', {'buffer' : "a.vim", 'id' : 10})
+
+ " Remove sign 20 in group 'g1' from buffer 3
+ call sign_unplace('g1', {'buffer' : 3, 'id' : 20})
+
+ " Remove all the signs in group 'g2' from buffer 10
+ call sign_unplace('g2', {'buffer' : 10})
+
+ " Remove sign 30 in group 'g3' from all the buffers
+ call sign_unplace('g3', {'id' : 30})
+
+ " Remove all the signs placed in buffer 5
+ call sign_unplace('*', {'buffer' : 5})
+
+ " Remove the signs in group 'g4' from all the buffers
+ call sign_unplace('g4')
+
+ " Remove sign 40 from all the buffers
+ call sign_unplace('*', {'id' : 40})
+
+ " Remove all the placed signs from all the buffers
+ call sign_unplace('*')
+<
+sign_unplacelist({list}) *sign_unplacelist()*
+ Remove previously placed signs from one or more buffers. This
+ is similar to the |sign_unplace()| function.
+
+ The {list} argument specifies the List of signs to remove.
+ Each list item is a dict with the following sign attributes:
+ buffer buffer name or number. For the accepted
+ values, see |bufname()|. If not specified,
+ then the specified sign is removed from all
+ the buffers.
+ group sign group name. If not specified or set to an
+ empty string, then the global sign group is
+ used. If set to '*', then all the groups
+ including the global group are used.
+ id sign identifier. If not specified, then all
+ the signs in the specified group are removed.
+
+ Returns a List where an entry is set to 0 if the corresponding
+ sign was successfully removed or -1 on failure.
+
+ Example: >
+ " Remove sign with id 10 from buffer a.vim and sign
+ " with id 20 from buffer b.vim
+ call sign_unplacelist([
+ \ {'id' : 10, 'buffer' : "a.vim"},
+ \ {'id' : 20, 'buffer' : 'b.vim'},
+ \ ])
+<
+
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 0eef976819..f722747ce9 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -854,7 +854,7 @@ time ":mkspell" is used. Vim will then convert everything to 'encoding' and
generate a spell file for 'encoding'. If some of the used characters to not
fit in 'encoding' you will get an error message.
*spell-affix-mbyte*
-When using a multi-byte encoding it's possible to use more different affix
+When using a multibyte encoding it's possible to use more different affix
flags. But Myspell doesn't support that, thus you may not want to use it
anyway. For compatibility use an 8-bit encoding.
@@ -1411,7 +1411,7 @@ are spelling mistakes this may not be quite right.
Common words can be specified with the COMMON item. This will give better
suggestions when editing a short file. Example:
- COMMON the of to and a in is it you that he was for on are ~
+ COMMON the of to and a in is it you that he she was for on are ~
The words must be separated by white space, up to 25 per line.
When multiple regions are specified in a ":mkspell" command the common words
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index d3647246fa..ae9022c56c 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -42,9 +42,12 @@ filename One or more file names. The first one will be the current
In most cases (except -s, -es, |--embed|, --headless) if stdin
is not a TTY then it is read as text, so "-" is implied: >
echo text | nvim file
-< The buffer will be marked modified, because it contains text
- that needs to be saved (except for readonly |-R| mode).
-
+< The buffer will be marked as modified, because it contains
+ text that needs to be saved (except for readonly |-R| mode).
+ If you don't like that, put these lines in your init.vim: >
+ " Don't set 'modified' when reading from stdin
+ au StdinReadPost * set nomodified
+<
To read stdin as Normal commands use |-s| with "-": >
echo "ifoo" | nvim -s -
< To read stdin as Ex commands use |-es| or |-e|: >
@@ -390,7 +393,7 @@ accordingly. Vim proceeds in this order:
1. Set the 'shell' option *SHELL* *COMSPEC*
The environment variable SHELL, if it exists, is used to set the
- 'shell' option. On Windows, the COMSPEC variable is used
+ 'shell' option. On Win32, the COMSPEC variable is used
if SHELL is not set.
2. Process the arguments
@@ -518,7 +521,8 @@ accordingly. Vim proceeds in this order:
displayed yet).
When switching screens, it happens now. Redrawing starts.
If the "-q" flag was given to Vim, the first error is jumped to.
- Buffers for all windows will be loaded.
+ Buffers for all windows will be loaded, without triggering |BufAdd|
+ autocommands.
14. Execute startup commands
If a "-t" flag was given to Vim, the tag is jumped to.
@@ -621,7 +625,7 @@ Nvim will try to get the value for $VIMRUNTIME in this order:
1. Environment variable $VIMRUNTIME, if it is set.
2. Directory path "$VIM/vim{version}", if it exists, where {version} is the
- Vim version number without '-' or '.'. For example: "$VIM/vim54".
+ Vim version number without '-' or '.'. For example: "$VIM/vim82".
3. Directory path "$VIM/runtime", if it exists.
4. Value of $VIM environment variable. This is for backwards compatibility
with older Vim versions.
@@ -766,7 +770,11 @@ resulting file, when executed with a ":source" command:
"options". Script-local mappings will not be written.
2. Restores global variables that start with an uppercase letter and contain
at least one lowercase letter, if 'sessionoptions' contains "globals".
-3. Unloads all currently loaded buffers.
+3. Closes all windows in the current tab page, except the current one; closes
+ all tab pages except the current one (this results in currently loaded
+ buffers to be unloaded, some may become hidden if 'hidden' is set or
+ otherwise specified); wipes out the current buffer, if it is empty
+ and unnamed.
4. Restores the current directory if 'sessionoptions' contains "curdir", or
sets the current directory to where the Session file is if 'sessionoptions'
contains "sesdir".
@@ -938,8 +946,8 @@ about to abandon with ":bdel", use ":wsh". The '[' and ']' marks are not
stored, but the '"' mark is. The '"' mark is very useful for jumping to the
cursor position when the file was last exited. No marks are saved for files
that start with any string given with the "r" flag in 'shada'. This can be
-used to avoid saving marks for files on removable media (for Windows you would
-use "ra:,rb:".
+used to avoid saving marks for files on removable media (for MS-Windows you
+would use "ra:,rb:").
The |v:oldfiles| variable is filled with the file names that the ShaDa file
has marks for.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index aeee02a1e0..95e00720b1 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -37,14 +37,14 @@ If the VIM environment variable is not set, Vim will try to find
the path in another way (see |$VIMRUNTIME|). Usually this works just
fine. If it doesn't, try setting the VIM environment variable to the
directory where the Vim stuff is located. For example, if your syntax files
-are in the "/usr/vim/vim50/syntax" directory, set $VIMRUNTIME to
-"/usr/vim/vim50". You must do this in the shell, before starting Vim.
+are in the "/usr/vim/vim82/syntax" directory, set $VIMRUNTIME to
+"/usr/vim/vim82". You must do this in the shell, before starting Vim.
This command also sources the |menu.vim| script when the GUI is running or
will start soon. See |'go-M'| about avoiding that.
*:syn-on* *:syntax-on*
-The `:syntax enable` command will keep your current color settings. This
-allows using `:highlight` commands to set your preferred colors before or
+The `:syntax enable` command will keep most of your current color settings.
+This allows using `:highlight` commands to set your preferred colors before or
after using this command. If you want Vim to overrule your settings with the
defaults, use: >
:syntax on
@@ -56,10 +56,10 @@ with: >
For a color terminal see |:hi-normal-cterm|.
For setting up your own colors syntax highlighting see |syncolor|.
-NOTE: The syntax files on Windows have lines that end in <CR><NL>. The files
-for Unix end in <NL>. This means you should use the right type of file for
-your system. Although on Windows the right format is automatically selected
-if the 'fileformats' option is not empty.
+NOTE: The syntax files on MS-Windows have lines that end in <CR><NL>.
+The files for Unix end in <NL>. This means you should use the right type of
+file for your system. Although on MS-Windows the right format is
+automatically selected if the 'fileformats' option is not empty.
NOTE: When using reverse video ("gvim -fg white -bg black"), the default value
of 'background' will not be set until the GUI window is opened, which is after
@@ -194,7 +194,7 @@ The name for a highlight or syntax group must consist of ASCII letters, digits
and the underscore. As a regexp: "[a-zA-Z0-9_]*". However, Vim does not give
an error when using other characters.
-To be able to allow each user to pick his favorite set of colors, there must
+To be able to allow each user to pick their favorite set of colors, there must
be preferred names for highlight groups that are common for many languages.
These are the suggested group names (if syntax highlighting works properly
you can see the actual color, except for "Ignore"):
@@ -453,6 +453,16 @@ conversion. See |-E| and |-s-ex| for details. It is probably best to create a
script to replace all the -c commands and use it with the -u flag instead of
specifying each command separately.
+ *hl-TOhtmlProgress* *TOhtml-progress-color*
+When displayed, the progress bar will show colored boxes along the statusline
+as the HTML conversion proceeds. By default, the background color as the
+current "DiffDelete" highlight group is used. If "DiffDelete" and "StatusLine"
+have the same background color, TOhtml will automatically adjust the color to
+differ. If you do not like the automatically selected colors, you can define
+your own highlight colors for the progress bar. Example: >
+
+ hi TOhtmlProgress guifg=#c0ffee ctermbg=7
+<
*g:html_number_lines*
Default: current 'number' setting.
When 0, buffer text is displayed in the generated HTML without line numbering.
@@ -484,8 +494,8 @@ For example: >
<
*g:html_use_css*
Default: 1.
-When 1, generate valid HTML 4.01 markup with CSS1 styling, supported in all
-modern browsers and most old browsers.
+When 1, generate valid HTML 5 markup with CSS styling, supported in all modern
+browsers and many old browsers.
When 0, generate <font> tags and similar outdated markup. This is not
recommended but it may work better in really old browsers, email clients,
forum posts, and similar situations where basic CSS support is unavailable.
@@ -557,23 +567,43 @@ affected in this way as follows:
Example, to make the fold column and line numbers uncopyable: >
:let g:html_prevent_copy = "fn"
<
-This feature is currently implemented by inserting read-only <input> elements
-into the markup to contain the uncopyable areas. This does not work well in
-all cases. When pasting to some applications which understand HTML, the
-<input> elements also get pasted. But plain-text paste destinations should
-always work.
+The method used to prevent copying in the generated page depends on the value
+of |g:html_use_input_for_pc|.
+
+ *g:html_use_input_for_pc*
+Default: "fallback"
+If |g:html_prevent_copy| is non-empty, then:
+
+When "all", read-only <input> elements are used in place of normal text for
+uncopyable regions. In some browsers, especially older browsers, after
+selecting an entire page and copying the selection, the <input> tags are not
+pasted with the page text. If |g:html_no_invalid| is 0, the <input> tags have
+invalid type; this works in more browsers, but the page will not validate.
+Note: this method does NOT work in recent versions of Chrome and equivalent
+browsers; the <input> tags get pasted with the text.
+
+When "fallback" (default value), the same <input> elements are generated for
+older browsers, but newer browsers (detected by CSS feature query) hide the
+<input> elements and instead use generated content in an ::before pseudoelement
+to display the uncopyable text. This method should work with the largest
+number of browsers, both old and new.
+
+When "none", the <input> elements are not generated at all. Only the
+generated-content method is used. This means that old browsers, notably
+Internet Explorer, will either copy the text intended not to be copyable, or
+the non-copyable text may not appear at all. However, this is the most
+standards-based method, and there will be much less markup.
*g:html_no_invalid*
Default: 0.
-When 0, if |g:html_prevent_copy| is non-empty, an invalid attribute is
-intentionally inserted into the <input> element for the uncopyable areas. This
-increases the number of applications you can paste to without also pasting the
-<input> elements. Specifically, Microsoft Word will not paste the <input>
-elements if they contain this invalid attribute.
-When 1, no invalid markup is ever intentionally inserted, and the generated
-page should validate. However, be careful pasting into Microsoft Word when
-|g:html_prevent_copy| is non-empty; it can be hard to get rid of the <input>
-elements which get pasted.
+When 0, if |g:html_prevent_copy| is non-empty and |g:html_use_input_for_pc| is
+not "none", an invalid attribute is intentionally inserted into the <input>
+element for the uncopyable areas. This prevents pasting the <input> elements
+in some applications. Specifically, some versions of Microsoft Word will not
+paste the <input> elements if they contain this invalid attribute. When 1, no
+invalid markup is inserted, and the generated page should validate. However,
+<input> elements may be pasted into some applications and can be difficult to
+remove afterward.
*g:html_hover_unfold*
Default: 0.
@@ -895,7 +925,7 @@ SELECTEMPTY, ... The indentation preceding the begin/end keywords has to
match (spaces are not considered equal to a tab). >
let baan_fold_sql=1
Note: Block folding can result in many small folds. It is suggested to |:set|
-the options 'foldminlines' and 'foldnestmax' in |init.vim| or use |:setlocal|
+the options 'foldminlines' and 'foldnestmax' in |init.vim| or use |:setlocal|
in .../after/syntax/baan.vim (see |after-directory|). Eg: >
set foldminlines=5
set foldnestmax=6
@@ -913,10 +943,12 @@ Basic.
C *c.vim* *ft-c-syntax*
A few things in C highlighting are optional. To enable them assign any value
-to the respective variable. Example: >
+(including zero) to the respective variable. Example: >
:let c_comment_strings = 1
-To disable them use ":unlet". Example: >
+ :let c_no_bracket_error = 0
+To disable them use `:unlet`. Example: >
:unlet c_comment_strings
+Setting the value to zero doesn't work!
An alternative is to switch to the C++ highlighting: >
:set filetype=cpp
@@ -932,8 +964,8 @@ Variable Highlight ~
except { and } in first column
Default is to highlight them, otherwise you
can't spot a missing ")".
-*c_curly_error* highlight a missing }; this forces syncing from the
- start of the file, can be slow
+*c_curly_error* highlight a missing } by finding all pairs; this
+ forces syncing from the start of the file, can be slow
*c_no_ansi* don't do standard ANSI types and constants
*c_ansi_typedefs* ... but do standard ANSI types
*c_ansi_constants* ... but do standard ANSI constants
@@ -1135,15 +1167,37 @@ startup vimrc: >
:let filetype_w = "cweb"
+DART *dart.vim* *ft-dart-syntax*
+
+Dart is an object-oriented, typed, class defined, garbage collected language
+used for developing mobile, desktop, web, and back-end applications. Dart uses
+a C-like syntax derived from C, Java, and JavaScript, with features adopted
+from Smalltalk, Python, Ruby, and others.
+
+More information about the language and its development environment at the
+official Dart language website at https://dart.dev
+
+dart.vim syntax detects and highlights Dart statements, reserved words,
+type declarations, storage classes, conditionals, loops, interpolated values,
+and comments. There is no support idioms from Flutter or any other Dart
+framework.
+
+Changes, fixes? Submit an issue or pull request via:
+
+https://github.com/pr3d4t0r/dart-vim-syntax/
+
+
DESKTOP *desktop.vim* *ft-desktop-syntax*
Primary goal of this syntax file is to highlight .desktop and .directory files
according to freedesktop.org standard:
-http://standards.freedesktop.org/desktop-entry-spec/latest/
-But actually almost none implements this standard fully. Thus it will
-highlight all Unix ini files. But you can force strict highlighting according
-to standard by placing this in your vimrc file: >
- :let enforce_freedesktop_standard = 1
+https://specifications.freedesktop.org/desktop-entry-spec/latest/
+To highlight nonstandard extensions that does not begin with X-, set >
+ let g:desktop_enable_nonstd = 1
+Note that this may cause wrong highlight.
+To highlight KDE-reserved features, set >
+ let g:desktop_enable_kde = 1
+g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
DIFF *diff.vim*
@@ -1326,26 +1380,26 @@ to your startup file.
EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax*
-Two syntax highlighting files exists for Euphoria. One for Euphoria
-version 3.1.1, which is the default syntax highlighting file, and one for
+Two syntax highlighting files exist for Euphoria. One for Euphoria
+version 3.1.1, which is the default syntax highlighting file, and one for
Euphoria version 4.0.5 or later.
-Euphoria version 3.1.1 (http://www.rapideuphoria.com/) is still necessary
-for developing applications for the DOS platform, which Euphoria version 4
+Euphoria version 3.1.1 (http://www.rapideuphoria.com/) is still necessary
+for developing applications for the DOS platform, which Euphoria version 4
(http://www.openeuphoria.org/) does not support.
-The following file extensions are auto-detected as Euphoria file type:
-
+The following file extensions are auto-detected as Euphoria file type:
+
*.e, *.eu, *.ew, *.ex, *.exu, *.exw
*.E, *.EU, *.EW, *.EX, *.EXU, *.EXW
-To select syntax highlighting file for Euphoria, as well as for
+To select syntax highlighting file for Euphoria, as well as for
auto-detecting the *.e and *.E file extensions as Euphoria file type,
add the following line to your startup file: >
:let filetype_euphoria="euphoria3"
- or
+ or
:let filetype_euphoria="euphoria4"
@@ -1656,8 +1710,8 @@ The coloring scheme for tags in the HTML file works as follows.
The <> of opening tags are colored differently than the </> of a closing tag.
This is on purpose! For opening tags the 'Function' color is used, while for
-closing tags the 'Type' color is used (See syntax.vim to check how those are
-defined for you)
+closing tags the 'Identifier' color is used (See syntax.vim to check how those
+are defined for you)
Known tag names are colored the same way as statements in C. Unknown tag
names are colored with the same color as the <> or </> respectively which
@@ -1852,7 +1906,7 @@ 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 chose another background for those statements.
+have opted to choose another background for those statements.
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
@@ -1892,6 +1946,16 @@ 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*
+
+The json syntax file provides syntax highlighting with conceal support by
+default. To disable concealment: >
+ let g:vim_json_conceal = 0
+
+To disable syntax highlighting of errors: >
+ let g:vim_json_warnings = 0
+
+
LACE *lace.vim* *ft-lace-syntax*
Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the
@@ -2141,9 +2205,10 @@ can use them.
For example, Linux and BSD distributions use groff as their default text
processing package. In order to activate the extra syntax highlighting
-features for groff, add the following option to your start-up files: >
+features for groff, arrange for files to be recognized as groff (see
+|ft-groff-syntax|) or add the following option to your start-up files: >
- :let b:nroff_is_groff = 1
+ :let nroff_is_groff = 1
Groff is different from the old AT&T n/troff that you may still find in
Solaris. Groff macro and request names can be longer than 2 characters and
@@ -2221,7 +2286,7 @@ contain very long structures that Vim does not synchronize anymore.
PAPP *papp.vim* *ft-papp-syntax*
-The PApp syntax file handles .papp files and, to a lesser extend, .pxml
+The PApp syntax file handles .papp files and, to a lesser extent, .pxml
and .pxsl files which are all a mixture of perl/xml/html/other using xml
as the top-level file format. By default everything inside phtml or pxml
sections is treated as a string with embedded preprocessor commands. If
@@ -2239,11 +2304,12 @@ http://papp.plan9.de.
PASCAL *pascal.vim* *ft-pascal-syntax*
-Files matching "*.p" could be Progress or Pascal. If the automatic detection
-doesn't work for you, or you don't edit Progress at all, use this in your
-startup vimrc: >
+Files matching "*.p" could be Progress or Pascal and those matching "*.pp"
+could be Puppet or Pascal. If the automatic detection doesn't work for you,
+or you only edit Pascal files, use this in your startup vimrc: >
- :let filetype_p = "pascal"
+ :let filetype_p = "pascal"
+ :let filetype_pp = "pascal"
The Pascal syntax file has been extended to take into account some extensions
provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler.
@@ -2593,12 +2659,12 @@ Note: only existence of these options matter, not their value. You can replace
QUAKE *quake.vim* *ft-quake-syntax*
-The Quake syntax definition should work for most any FPS (First Person
-Shooter) based on one of the Quake engines. However, the command names vary
-a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the
-syntax definition checks for the existence of three global variables to allow
-users to specify what commands are legal in their files. The three variables
-can be set for the following effects:
+The Quake syntax definition should work for most FPS (First Person Shooter)
+based on one of the Quake engines. However, the command names vary a bit
+between the three games (Quake, Quake 2, and Quake 3 Arena) so the syntax
+definition checks for the existence of three global variables to allow users
+to specify what commands are legal in their files. The three variables can
+be set for the following effects:
set to highlight commands only available in Quake: >
:let quake_is_quake1 = 1
@@ -2667,6 +2733,13 @@ This will add highlighting for the commands that BASH (version 2.05a and
later, and part earlier) adds.
+REGO *rego.vim* *ft-rego-syntax*
+
+Rego is a query language developed by Styra. It is mostly used as a policy
+language for kubernetes, but can be applied to almost anything. Files with
+the following extensions are recognized as rego files: .rego.
+
+
RESTRUCTURED TEXT *rst.vim* *ft-rst-syntax*
Syntax highlighting is enabled for code blocks within the document for a
@@ -2679,10 +2752,10 @@ To set a user-defined list of code block syntax highlighting: >
To assign multiple code block types to a single syntax, define
`rst_syntax_code_list` as a mapping: >
let rst_syntax_code_list = {
- \ 'cpp' = ['cpp', 'c++'],
- \ 'bash' = ['bash', 'sh'],
+ \ 'cpp': ['cpp', 'c++'],
+ \ 'bash': ['bash', 'sh'],
...
- }
+ \ }
To use color highlighting for emphasis text: >
let rst_use_emphasis_colors = 1
@@ -2903,7 +2976,7 @@ vimrc file: >
(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
- *ft-posix-synax* *ft-dash-syntax*
+ *ft-posix-syntax* *ft-dash-syntax*
SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
This covers syntax highlighting for the older Unix (Bourne) sh, and newer
@@ -2927,7 +3000,7 @@ variables in your vimrc:
ksh: >
let g:is_kornshell = 1
-< posix: (using this is the nearly the same as setting g:is_kornshell to 1) >
+< posix: (using this is nearly the same as setting g:is_kornshell to 1) >
let g:is_posix = 1
< bash: >
let g:is_bash = 1
@@ -3080,6 +3153,7 @@ redrawing can become slow.
TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
+ *syntax-tex* *syntax-latex*
Tex Contents~
Tex: Want Syntax Folding? |tex-folding|
@@ -3096,6 +3170,7 @@ TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
Tex: Selective Conceal Mode |g:tex_conceal|
Tex: Controlling iskeyword |g:tex_isk|
Tex: Fine Subscript and Superscript Control |tex-supersub|
+ Tex: Match Check Control |tex-matchcheck|
*tex-folding* *g:tex_fold_enabled*
Tex: Want Syntax Folding? ~
@@ -3316,9 +3391,25 @@ syntax highlighting script handles this with the following logic:
For example, I use Luxi Mono Bold; it doesn't support subscript
characters for "hklmnpst", so I put >
let g:tex_subscripts= "[0-9aeijoruvx,+-/().]"
-< in ~/.config/nvim/ftplugin/tex/tex.vim in order to avoid having
+< in ~/.config/nvim/ftplugin/tex/tex.vim in order to avoid having
inscrutable utf-8 glyphs appear.
+ *tex-matchcheck* *g:tex_matchcheck*
+ Tex: Match Check Control~
+
+ Sometimes one actually wants mismatched parentheses, square braces,
+ and or curly braces; for example, \text{(1,10] is a range from but
+ not including 1 to and including 10}. This wish, of course, conflicts
+ with the desire to provide delimiter mismatch detection. To
+ accommodate these conflicting goals, syntax/tex.vim provides >
+ g:tex_matchcheck = '[({[]'
+< which is shown along with its default setting. So, if one doesn't
+ want [] and () to be checked for mismatches, try using >
+ let g:tex_matchcheck= '[{}]'
+< If you don't want matching to occur inside bold and italicized
+ regions, >
+ let g:tex_excludematcher= 1
+< will prevent the texMatcher group from being included in those regions.
TF *tf.vim* *ft-tf-syntax*
@@ -3430,26 +3521,26 @@ It will look much better with a font in a quadratic cell size, e.g. for X: >
YAML *yaml.vim* *ft-yaml-syntax*
*g:yaml_schema* *b:yaml_schema*
-A YAML schema is a combination of a set of tags and a mechanism for resolving
-non-specific tags. For user this means that YAML parser may, depending on
-plain scalar contents, treat plain scalar (which can actually be only string
-and nothing else) as a value of the other type: null, boolean, floating-point,
-integer. `g:yaml_schema` option determines according to which schema values
+A YAML schema is a combination of a set of tags and a mechanism for resolving
+non-specific tags. For user this means that YAML parser may, depending on
+plain scalar contents, treat plain scalar (which can actually be only string
+and nothing else) as a value of the other type: null, boolean, floating-point,
+integer. `g:yaml_schema` option determines according to which schema values
will be highlighted specially. Supported schemas are
Schema Description ~
failsafe No additional highlighting.
json Supports JSON-style numbers, booleans and null.
core Supports more number, boolean and null styles.
-pyyaml In addition to core schema supports highlighting timestamps,
- but there are some differences in what is recognized as
- numbers and many additional boolean values not present in core
+pyyaml In addition to core schema supports highlighting timestamps,
+ but there are some differences in what is recognized as
+ numbers and many additional boolean values not present in core
schema.
Default schema is `core`.
-Note that schemas are not actually limited to plain scalars, but this is the
-only difference between schemas defined in YAML specification and the only
+Note that schemas are not actually limited to plain scalars, but this is the
+only difference between schemas defined in YAML specification and the only
difference defined in the syntax file.
@@ -3532,7 +3623,7 @@ DEFINING FOLDLEVEL *:syn-foldlevel*
start: Use level of item containing start of line.
minimum: Use lowest local-minimum level of items on line.
- The default is 'start'. Use 'minimum' to search a line horizontally
+ The default is "start". Use "minimum" to search a line horizontally
for the lowest level contained on the line that is followed by a
higher level. This produces more natural folds when syntax items
may close and open horizontally within a line.
@@ -3569,7 +3660,7 @@ SYNTAX ISKEYWORD SETTING *:syn-iskeyword*
clear: Syntax specific iskeyword setting is disabled and the
buffer-local 'iskeyword' setting is used.
- {option} Set the syntax 'iskeyword' option to a new value.
+ {option} Set the syntax 'iskeyword' option to a new value.
Example: >
:syntax iskeyword @,48-57,192-255,$,_
@@ -3677,9 +3768,9 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end*
[keepend]
[extend]
[excludenl]
- start={start_pattern} ..
- [skip={skip_pattern}]
- end={end_pattern} ..
+ start={start-pattern} ..
+ [skip={skip-pattern}]
+ end={end-pattern} ..
[{options}]
This defines one region. It may span several lines.
@@ -3701,12 +3792,12 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end*
extend a containing match or item. Only
useful for end patterns. Must be given before
the patterns it applies to. |:syn-excludenl|
- start={start_pattern} The search pattern that defines the start of
+ start={start-pattern} The search pattern that defines the start of
the region. See |:syn-pattern| below.
- skip={skip_pattern} The search pattern that defines text inside
+ skip={skip-pattern} The search pattern that defines text inside
the region where not to look for the end
pattern. See |:syn-pattern| below.
- end={end_pattern} The search pattern that defines the end of
+ end={end-pattern} The search pattern that defines the end of
the region. See |:syn-pattern| below.
Example: >
@@ -4229,7 +4320,7 @@ Notes:
- A negative offset for an end pattern may not always work, because the end
pattern may be detected when the highlighting should already have stopped.
- Before Vim 7.2 the offsets were counted in bytes instead of characters.
- This didn't work well for multi-byte characters, so it was changed with the
+ This didn't work well for multibyte characters, so it was changed with the
Vim 7.2 release.
- The start of a match cannot be in a line other than where the pattern
matched. This doesn't work: "a\nb"ms=e. You can make the highlighting
@@ -4417,8 +4508,8 @@ two different ways:
(e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'.
All matching files are loaded. Using a relative path is
recommended, because it allows a user to replace the included file
- with his own version, without replacing the file that does the ":syn
- include".
+ with their own version, without replacing the file that does the
+ ":syn include".
*E847*
The maximum number of includes is 999.
@@ -4538,7 +4629,7 @@ matches, nextgroup, etc. But there are a few differences:
- A line continuation pattern can be given. It is used to decide which group
of lines need to be searched like they were one line. This means that the
search for a match with the specified items starts in the first of the
- consecutive that contain the continuation pattern.
+ consecutive lines that contain the continuation pattern.
- When using "nextgroup" or "contains", this only works within one line (or
group of continued lines).
- When using a region, it must start and end in the same line (or group of
@@ -4850,8 +4941,8 @@ ctermbg={color-nr} *highlight-ctermbg*
*E419* *E420*
When Vim knows the normal foreground and background colors, "fg" and
"bg" can be used as color names. This only works after setting the
- colors for the Normal group and for the Windows console. Example, for
- reverse video: >
+ colors for the Normal group and for the MS-Windows console. Example,
+ for reverse video: >
:highlight Visual ctermfg=bg ctermbg=fg
< Note that the colors are used that are valid at the moment this
command are given. If the Normal group colors are changed later, the
@@ -5002,9 +5093,9 @@ MsgSeparator Separator for scrolled messages, `msgsep` flag of 'display'
*hl-MoreMsg*
MoreMsg |more-prompt|
*hl-NonText*
-NonText '@' at the end of the window, characters from 'showbreak'
- and other characters that do not really exist in the text
- (e.g., ">" displayed when a double-wide character doesn't
+NonText '@' at the end of the window, characters from 'showbreak'
+ and other characters that do not really exist in the text
+ (e.g., ">" displayed when a double-wide character doesn't
fit at the end of the line). See also |hl-EndOfBuffer|.
*hl-Normal*
Normal normal text
@@ -5131,6 +5222,12 @@ If you like Question highlighting for C comments, put this in your vimrc file: >
Without the "default" in the C syntax file, the highlighting would be
overruled when the syntax file is loaded.
+To have a link survive `:highlight clear`, which is useful if you have
+highlighting for a specific filetype and you want to keep it when selecting
+another color scheme, put a command like this in the
+"after/syntax/{filetype}.vim" file: >
+ highlight! default link cComment Question
+
==============================================================================
15. Cleaning up *:syn-clear* *E391*
@@ -5191,7 +5288,7 @@ script file to set these colors. Put this file in a directory in
the default colors. This way these colors will be used after the ":syntax
reset" command.
-For Unix you can use the file ~/.config/nvim/after/syntax/syncolor.vim.
+For Unix you can use the file ~/.config/nvim/after/syntax/syncolor.vim.
Example: >
if &background == "light"
diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index 1407fdd968..7f91fda9f4 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -129,7 +129,7 @@ something else.
:+tabclose " close the next tab page
:1tabclose " close the first tab page
:$tabclose " close the last tab page
- :tabclose -2 " close the two previous tab page
+ :tabclose -2 " close the 2nd previous tab page
:tabclose + " close the next tab page
:tabclose 3 " close the third tab page
:tabclose $ " close the last tab page
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index 7d09ca86ac..2c1b927e5a 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -179,6 +179,29 @@ commands explained above the tag stack will look like this:
The |gettagstack()| function returns the tag stack of a specified window. The
|settagstack()| function modifies the tag stack of a window.
+ *tagstack-examples*
+Write to the tag stack just like `:tag` but with a user-defined
+jumper#jump_to_tag function: >
+ " Store where we're jumping from before we jump.
+ let tag = expand('<cword>')
+ let pos = [bufnr()] + getcurpos()[1:]
+ let item = {'bufnr': pos[0], 'from': pos, 'tagname': tag}
+ if jumper#jump_to_tag(tag)
+ " Jump was successful, write previous location to tag stack.
+ let winid = win_getid()
+ let stack = gettagstack(winid)
+ let stack['items'] = [item]
+ call settagstack(winid, stack, 't')
+ endif
+<
+Set current index of the tag stack to 4: >
+ call settagstack(1005, {'curidx' : 4})
+<
+Push a new item onto the tag stack: >
+ let pos = [bufnr('myfile.txt'), 10, 1, 0]
+ let newtag = [{'tagname' : 'mytag', 'from' : pos}]
+ call settagstack(2, {'items' : newtag}, 'a')
+<
*E73*
When you try to use the tag stack while it doesn't contain anything you will
get an error message.
@@ -204,14 +227,14 @@ the same entry.
Example output:
>
- nr pri kind tag file
+ # pri kind tag file
1 F f mch_delay os_amiga.c
mch_delay(msec, ignoreinput)
> 2 F f mch_delay os_msdos.c
mch_delay(msec, ignoreinput)
3 F f mch_delay os_unix.c
mch_delay(msec, ignoreinput)
- Enter nr of choice (<CR> to abort):
+ Type number and <Enter> (empty cancels):
<
See |tag-priority| for the "pri" column. Note that
this depends on the current file, thus using
@@ -488,10 +511,13 @@ a tag for each "#defined" macro, typedefs, enums, etc.
Some programs that generate tags files:
ctags As found on most Unix systems. Only supports C. Only
does the basic work.
+universal ctags A maintained version of ctags based on exuberant
+ ctags. See https://ctags.io.
*Exuberant_ctags*
exuberant ctags This is a very good one. It works for C, C++, Java,
Fortran, Eiffel and others. It can generate tags for
many items. See http://ctags.sourceforge.net.
+ No new version since 2009.
JTags For Java, in Java. It can be found at
http://www.fleiner.com/jtags/.
ptags.py For Python, in Python. Found in your Python source
@@ -513,7 +539,7 @@ The first format is a normal tag, which is completely compatible with Vi. It
is the only format produced by traditional ctags implementations. This is
often used for functions that are global, also referenced in other files.
-The lines in the tags file can end in <LF> or <CR><LF>. On the Macintosh <CR>
+The lines in the tags file can end in <NL> or <CR><NL>. On the Macintosh <CR>
also works. The <CR> and <NL> characters can never appear inside a line.
The second format is new. It includes additional information in optional
@@ -893,8 +919,8 @@ The following is a hypothetical example of a function used for 'tagfunc'. It
uses the output of |taglist()| to generate the result: a list of tags in the
inverse order of file names.
>
- function! TagFunc(pattern, flags, info)
- function! CompareFilenames(item1, item2)
+ function TagFunc(pattern, flags, info)
+ function CompareFilenames(item1, item2)
let f1 = a:item1['filename']
let f2 = a:item2['filename']
return f1 >=# f2 ?
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 6a271c08d3..935d958729 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -289,7 +289,7 @@ border, the text is scrolled.
A selection can be started by pressing the left mouse button on the first
character, moving the mouse to the last character, then releasing the mouse
button. You will not always see the selection until you release the button,
-only in some versions (GUI, Windows) will the dragging be shown immediately.
+only in some versions (GUI, Win32) will the dragging be shown immediately.
Note that you can make the text scroll by moving the mouse at least one
character in the first/last line in the window when 'scrolloff' is non-zero.
@@ -306,7 +306,7 @@ alt key is pressed (it may move the window).
*double-click*
Double, triple and quadruple clicks are supported when the GUI is active, for
-Windows and for an xterm. For selecting text, extra clicks extend the
+Win32 and for an xterm. For selecting text, extra clicks extend the
selection:
click select ~
double word or % match *<2-LeftMouse>*
@@ -318,9 +318,8 @@ A double click on a word selects that word. 'iskeyword' is used to specify
which characters are included in a word. A double click on a character
that has a match selects until that match (like using "v%"). If the match is
an #if/#else/#endif block, the selection becomes linewise.
-For MS-DOS and xterm the time for double clicking can be set with the
-'mousetime' option. For the other systems this time is defined outside of
-Vim.
+For MS-Windows and xterm the time for double clicking can be set with the
+'mousetime' option. For the other systems this time is defined outside of Vim.
An example, for using a double click to jump to the tag under the cursor: >
:map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR>
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
new file mode 100644
index 0000000000..b2ce6d670d
--- /dev/null
+++ b/runtime/doc/testing.txt
@@ -0,0 +1,169 @@
+*testing.txt* Nvim
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+
+
+Testing Vim and Vim script *testing-support*
+
+Expression evaluation is explained in |eval.txt|. This file goes into details
+about writing tests in Vim script. This can be used for testing Vim itself
+and for testing plugins.
+
+1. Testing Vim |testing|
+2. Test functions |test-functions-details|
+3. Assert funtions |assert-functions-details|
+
+==============================================================================
+1. Testing Vim *testing*
+
+Vim can be tested after building it, usually with "make test".
+The tests are located in the directory "src/testdir".
+
+There are several types of tests added over time:
+ test33.in oldest, don't add any of these
+ test_something.in old style tests
+ test_something.vim new style tests
+
+ *new-style-testing*
+New tests should be added as new style tests. These use functions such as
+|assert_equal()| to keep the test commands and the expected result in one
+place.
+ *old-style-testing*
+In some cases an old style test needs to be used. E.g. when testing Vim
+without the |+eval| feature.
+
+Find more information in the file src/testdir/README.txt.
+
+==============================================================================
+2. Test functions *test-functions-details*
+
+test_garbagecollect_now() *test_garbagecollect_now()*
+ Like garbagecollect(), but executed right away. This must
+ only be called directly to avoid any structure to exist
+ internally, and |v:testing| must have been set before calling
+ any function.
+
+==============================================================================
+3. Assert functions *assert-functions-details*
+
+
+assert_beeps({cmd}) *assert_beeps()*
+ Run {cmd} and add an error message to |v:errors| if it does
+ NOT produce a beep or visual bell.
+ Also see |assert_fails()|, |assert_nobeep()| and
+ |assert-return|.
+
+ *assert_equal()*
+assert_equal({expected}, {actual} [, {msg}])
+ When {expected} and {actual} are not equal an error message is
+ added to |v:errors| and 1 is returned. Otherwise zero is
+ returned |assert-return|.
+ 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.
+ When {msg} is omitted an error in the form "Expected
+ {expected} but got {actual}" is produced.
+ 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' ~
+
+ *assert_equalfile()*
+assert_equalfile({fname-one}, {fname-two})
+ When the files {fname-one} and {fname-two} do not contain
+ exactly the same text an error message is added to |v:errors|.
+ Also see |assert-return|.
+ When {fname-one} or {fname-two} does not exist the error will
+ mention that.
+
+assert_exception({error} [, {msg}]) *assert_exception()*
+ When v:exception does not contain the string {error} an error
+ message is added to |v:errors|. Also see |assert-return|.
+ This can be used to assert that a command throws an exception.
+ Using the error number, followed by a colon, avoids problems
+ with translations: >
+ try
+ commandthatfails
+ call assert_false(1, 'command should have failed')
+ catch
+ call assert_exception('E492:')
+ endtry
+
+assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
+ Run {cmd} and add an error message to |v:errors| if it does
+ NOT produce an error. Also see |assert-return|.
+ When {error} is given it must match in |v:errmsg|.
+ Note that beeping is not considered an error, and some failing
+ commands only beep. Use |assert_beeps()| for those.
+
+assert_false({actual} [, {msg}]) *assert_false()*
+ When {actual} is not false an error message is added to
+ |v:errors|, like with |assert_equal()|.
+ Also see |assert-return|.
+ A value is false when it is zero. When {actual} is not a
+ number the assert fails.
+ When {msg} is omitted an error in the form
+ "Expected False but got {actual}" is produced.
+
+assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
+ This asserts number and |Float| values. When {actual} is lower
+ than {lower} or higher than {upper} an error message is added
+ to |v:errors|. Also see |assert-return|.
+ When {msg} is omitted an error in the form
+ "Expected range {lower} - {upper}, but got {actual}" is
+ produced.
+
+ *assert_match()*
+assert_match({pattern}, {actual} [, {msg}])
+ When {pattern} does not match {actual} an error message is
+ added to |v:errors|. Also see |assert-return|.
+
+ {pattern} is used as with |=~|: The matching is always done
+ like 'magic' was set and 'cpoptions' is empty, no matter what
+ the actual value of 'magic' or 'cpoptions' is.
+
+ {actual} is used as a string, automatic conversion applies.
+ Use "^" and "$" to match with the start and end of the text.
+ Use both to match the whole text.
+
+ When {msg} is omitted an error in the form
+ "Pattern {pattern} does not match {actual}" is produced.
+ Example: >
+ 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' ~
+
+assert_nobeep({cmd}) *assert_nobeep()*
+ Run {cmd} and add an error message to |v:errors| if it
+ produces a beep or visual bell.
+ Also see |assert_beeps()|.
+
+ *assert_notequal()*
+assert_notequal({expected}, {actual} [, {msg}])
+ The opposite of `assert_equal()`: add an error message to
+ |v:errors| when {expected} and {actual} are equal.
+ Also see |assert-return|.
+
+ *assert_notmatch()*
+assert_notmatch({pattern}, {actual} [, {msg}])
+ The opposite of `assert_match()`: add an error message to
+ |v:errors| when {pattern} matches {actual}.
+ Also see |assert-return|.
+
+assert_report({msg}) *assert_report()*
+ Report a test failure directly, using {msg}.
+ Always returns one.
+
+assert_true({actual} [, {msg}]) *assert_true()*
+ When {actual} is not true an error message is added to
+ |v:errors|, like with |assert_equal()|.
+ Also see |assert-return|.
+ A value is |TRUE| when it is a non-zero number or |v:true|.
+ When {actual} is not a number or |v:true| the assert fails.
+ When {msg} is omitted an error in the form "Expected True but
+ got {actual}" is produced.
+
+
+ vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
index 1362b730b7..bcb2e48cbf 100644
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -446,4 +446,28 @@ A slightly more advanced version is used in the |matchparen| plugin.
autocmd InsertEnter * match none
<
+==============================================================================
+Opening help in the current window *help-curwin*
+
+By default, help is displayed in a split window. If you prefer it opens in
+the current window, try this custom `:HelpCurwin` command:
+>
+ command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
+ let s:did_open_help = v:false
+
+ function s:HelpCurwin(subject) abort
+ let mods = 'silent noautocmd keepalt'
+ if !s:did_open_help
+ execute mods .. ' help'
+ execute mods .. ' helpclose'
+ let s:did_open_help = v:true
+ endif
+ if !getcompletion(a:subject, 'help')->empty()
+ execute mods .. ' edit ' .. &helpfile
+ endif
+ return 'help ' .. a:subject
+ endfunction
+<
+
+
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
index 97a67befb9..79519da51e 100644
--- a/runtime/doc/uganda.txt
+++ b/runtime/doc/uganda.txt
@@ -212,7 +212,7 @@ Check the ICCF web site for the latest information! See |iccf| for the URL.
USA: The methods mentioned below can be used.
Sending a check to the Nehemiah Group Outreach Society (NGOS)
is no longer possible, unfortunately. We are looking for
- another way to get you an IRS tax receipt.
+ another way to get you an IRS tax receipt.
For sponsoring a child contact KCF in Canada (see below). US
checks can be sent to them to lower banking costs.
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index a500e87e35..b11d7581ed 100644
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -60,9 +60,9 @@ with the redo command. If you make a new change after the undo command,
the redo will not be possible anymore.
'u' included, the Vi-compatible way:
-The undo command undoes the previous change, and also the previous undo command.
-The redo command repeats the previous undo command. It does NOT repeat a
-change command, use "." for that.
+The undo command undoes the previous change, and also the previous undo
+command. The redo command repeats the previous undo command. It does NOT
+repeat a change command, use "." for that.
Examples Vim way Vi-compatible way ~
"uu" two times undo no-op
@@ -98,7 +98,7 @@ change again. But you can do something like this: >
:undojoin | delete
-After this an "u" command will undo the delete command and the previous
+After this a "u" command will undo the delete command and the previous
change.
To do the opposite, break a change into two undo blocks, in Insert mode use
@@ -257,7 +257,7 @@ respectively:
(the magic number at the start of the file is wrong), then
this fails, unless the ! was added.
If it exists and does look like an undo file it is
- overwritten. If there is no undo-history, nothing will be
+ overwritten. If there is no undo-history, nothing will be
written.
Implementation detail: Overwriting happens by first deleting
the existing file and then creating a new file with the same
@@ -371,7 +371,7 @@ back the text of three deletes ago with '"3P'.
*redo-register*
If you want to get back more than one part of deleted text, you can use a
special feature of the repeat command ".". It will increase the number of the
-register used. So if you first do ""1P", the following "." will result in a
+register used. So if you first do '"1P', the following "." will result in a
'"2P'. Repeating this will result in all numbered registers being inserted.
Example: If you deleted text with 'dd....' it can be restored with
diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt
index 3deaf181e5..52fbf06ec4 100644
--- a/runtime/doc/usr_01.txt
+++ b/runtime/doc/usr_01.txt
@@ -41,11 +41,11 @@ the commands and options used for it. Use these two commands:
Press CTRL-O to jump back (repeat to go further back).
Many links are in vertical bars, like this: |bars|. The bars themselves may
-be hidden or invisible, see below. An option name, like 'number', a command
+be hidden or invisible; see below. An option name, like 'number', a command
in double quotes like ":write" and any other word can also be used as a link.
Try it out: Move the cursor to CTRL-] and press CTRL-] on it.
-Other subjects can be found with the ":help" command, see |help.txt|.
+Other subjects can be found with the ":help" command; see |help.txt|.
The bars and stars are usually hidden with the |conceal| feature. They also
use |hl-Ignore|, using the same color for the text as the background. You can
@@ -69,7 +69,7 @@ For more info see |vimrc|.
*01.3* Using the Vim tutor *tutor* *vimtutor*
Instead of reading the text (boring!) you can use :Tutor to learn your first
-Vim commands. This is a 30 minute tutorial that teaches the most basic Vim
+Vim commands. This is a 30-minute tutorial that teaches the most basic Vim
functionality hands-on.
To start the tutorial, execute >
diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt
index c8fd7c3e35..f822e7d4b8 100644
--- a/runtime/doc/usr_02.txt
+++ b/runtime/doc/usr_02.txt
@@ -29,8 +29,8 @@ To start Vim, enter this command: >
gvim file.txt
-On Unix you can type this at any command prompt. If you are running Windows,
-open a command prompt window and enter the command. In either case, Vim
+On Unix you can type this at any command prompt. If you are running Microsoft
+Windows, open a Command Prompt and enter the command. In either case, Vim
starts editing a file called file.txt. Because this is a new file, you get a
blank window. This is what your screen will look like:
@@ -42,7 +42,7 @@ blank window. This is what your screen will look like:
|~ |
|"file.txt" [New file] |
+---------------------------------------+
- ('#" is the cursor position.)
+ ('#' is the cursor position.)
The tilde (~) lines indicate lines not in the file. In other words, when Vim
runs out of file to display, it displays tilde lines. At the bottom of the
@@ -253,11 +253,11 @@ restores the character.
g intelligent turtle ~
-The next u command restores the next-to-last character deleted:
+The next "u" command restores the next-to-last character deleted:
ng intelligent turtle ~
-The next u command gives you the u, and so on:
+The next "u" command gives you the u, and so on:
ung intelligent turtle ~
oung intelligent turtle ~
@@ -364,7 +364,7 @@ To exit, use the "ZZ" command. This command writes the file and exits.
Unlike many other editors, Vim does not automatically make a backup
file. If you type "ZZ", your changes are committed and there's no
turning back. You can configure the Vim editor to produce backup
- files, see |07.4|.
+ files; see |07.4|.
DISCARDING CHANGES
@@ -387,7 +387,7 @@ message and refuse to exit:
E37: No write since last change (use ! to override) ~
By specifying the override, you are in effect telling Vim, "I know that what
-I'm doing looks stupid, but I'm a big boy and really want to do this."
+I'm doing looks stupid, but I really want to do this."
If you want to continue editing with Vim: The ":e!" command reloads the
original version of the file.
@@ -499,14 +499,14 @@ Summary: *help-summary* >
1) Use Ctrl-D after typing a topic and let Vim show all available topics.
Or press Tab to complete: >
- :help some<Tab>
+ :help some<Tab>
< More information on how to use the help: >
:help helphelp
2) Follow the links in bars to related help. You can go from the detailed
help to the user documentation, which describes certain commands more from
a user perspective and less detailed. E.g. after: >
- :help pattern.txt
+ :help pattern.txt
< You can see the user guide topics |03.9| and |usr_27.txt| in the
introduction.
@@ -518,29 +518,29 @@ Summary: *help-summary* >
< to open the help page which describes all option handling and then search
using regular expressions, e.g. textwidth.
Certain options have their own namespace, e.g.: >
- :help cpo-<letter>
+ :help cpo-<letter>
< for the corresponding flag of the 'cpoptions' settings, substitute <letter>
by a specific flag, e.g.: >
- :help cpo-;
-< And for the guioption flags: >
- :help go-<letter>
+ :help cpo-;
+< And for the 'guioptions' flags: >
+ :help go-<letter>
4) Normal mode commands do not have a prefix. To go to the help page for the
"gt" command: >
- :help gt
+ :help gt
5) Insert mode commands start with i_. Help for deleting a word: >
- :help i_CTRL-W
+ :help i_CTRL-W
6) Visual mode commands start with v_. Help for jumping to the other side of
the Visual area: >
- :help v_o
+ :help v_o
7) Command line editing and arguments start with c_. Help for using the
command argument %: >
- :help c_%
+ :help c_%
-8) Ex-commands always start with ":", so to go to the :s command help: >
+8) Ex-commands always start with ":", so to go to the ":s" command help: >
:help :s
9) Commands specifically for debugging start with ">". To go to the help
@@ -549,55 +549,56 @@ Summary: *help-summary* >
10) Key combinations. They usually start with a single letter indicating
the mode for which they can be used. E.g.: >
- :help i_CTRL-X
-< takes you to the family of Ctrl-X commands for insert mode which can be
- used to auto complete different things. Note, that certain keys will
+ :help i_CTRL-X
+< takes you to the family of CTRL-X commands for insert mode which can be
+ used to auto-complete different things. Note, that certain keys will
always be written the same, e.g. Control will always be CTRL.
For normal mode commands there is no prefix and the topic is available at
:h CTRL-<Letter>. E.g. >
- :help CTRL-W
+ :help CTRL-W
< In contrast >
:help c_CTRL-R
-< will describe what the Ctrl-R does when entering commands in the Command
+< will describe what the CTRL-R does when entering commands in the Command
line and >
- :help v_Ctrl-A
+ :help v_CTRL-A
< talks about incrementing numbers in visual mode and >
:help g_CTRL-A
-< talks about the g<C-A> command (e.g. you have to press "g" then <Ctrl-A>).
- Here the "g" stand for the normal command "g" which always expects a second
- key before doing something similar to the commands starting with "z"
+< talks about the "g<C-A>" command (e.g. you have to press "g" then
+ <CTRL-A>). Here the "g" stands for the normal command "g" which always
+ expects a second key before doing something similar to the commands
+ starting with "z".
11) Regexp items always start with /. So to get help for the "\+" quantifier
in Vim regexes: >
- :help /\+
+ :help /\+
< If you need to know everything about regular expressions, start reading
at: >
- :help pattern.txt
+ :help pattern.txt
12) Registers always start with "quote". To find out about the special ":"
register: >
- :help quote:
+ :help quote:
13) Vim Script is available at >
:help eval.txt
< Certain aspects of the language are available at :h expr-X where "X" is a
single letter. E.g. >
- :help expr-!
-< will take you to the topic describing the "!" (Not) operator for
- VimScript.
+ :help expr-!
+< will take you to the topic describing the "!" (Not) operator for Vim
+ Script.
Also important is >
- :help function-list
+ :help function-list
< to find a short description of all functions available. Help topics for
Vim script functions always include the "()", so: >
- :help append()
+ :help append()
< talks about the append Vim script function rather than how to append text
in the current buffer.
14) Mappings are talked about in the help page :h |map.txt|. Use >
- :help mapmode-i
+ :help mapmode-i
< to find out about the |:imap| command. Also use :map-topic
to find out about certain subtopics particular for mappings. e.g: >
- :help :map-local
+ :help :map-local
< for buffer-local mappings or >
:help map-bar
< for how the '|' is handled in mappings.
@@ -608,7 +609,7 @@ Summary: *help-summary* >
16) Window management commands always start with CTRL-W, so you find the
corresponding help at :h CTRL-W_letter. E.g. >
- :help CTRL-W_p
+ :help CTRL-W_p
< for moving the previous accessed window. You can also access >
:help windows.txt
< and read your way through if you are looking for window handling
@@ -617,57 +618,58 @@ Summary: *help-summary* >
17) Use |:helpgrep| to search in all help pages (and also of any installed
plugins). See |:helpgrep| for how to use it.
To search for a topic: >
- :helpgrep topic
+ :helpgrep topic
< This takes you to the first match. To go to the next one: >
:cnext
< All matches are available in the quickfix window which can be opened
with: >
- :copen
+ :copen
< Move around to the match you like and press Enter to jump to that help.
18) The user manual. This describes help topics for beginners in a rather
friendly way. Start at |usr_toc.txt| to find the table of content (as you
might have guessed): >
- :help usr_toc.txt
+ :help usr_toc.txt
< Skim over the contents to find interesting topics. The "Digraphs" and
"Entering special characters" items are in chapter 24, so to go to that
particular help page: >
- :help usr_24.txt
+ :help usr_24.txt
< Also if you want to access a certain chapter in the help, the chapter
number can be accessed directly like this: >
- :help 10.1
-< goes to chapter 10.1 in |usr_10.txt| and talks about recording macros.
+ :help 10.1
+< which goes to chapter 10.1 in |usr_10.txt| and talks about recording
+ macros.
19) Highlighting groups. Always start with hl-groupname. E.g. >
- :help hl-WarningMsg
+ :help hl-WarningMsg
< talks about the WarningMsg highlighting group.
-20) Syntax highlighting is namespaced to :syn-topic e.g. >
+20) Syntax highlighting is namespaced to :syn-topic. E.g. >
:help :syn-conceal
-< talks about the conceal argument for the :syn command.
+< talks about the conceal argument for the ":syn" command.
21) Quickfix commands usually start with :c while location list commands
usually start with :l
22) Autocommand events can be found by their name: >
- :help BufWinLeave
+ :help BufWinLeave
< To see all possible events: >
:help events
23) Command-line switches always start with "-". So for the help of the -f
command switch of Vim use: >
- :help -f
+ :help -f
24) Optional features always start with "+". To find out about the
conceal feature use: >
- :help +conceal
+ :help +conceal
25) Documentation for included filetype specific functionality is usually
available in the form ft-<filetype>-<functionality>. So >
- :help ft-c-syntax
+ :help ft-c-syntax
< talks about the C syntax file and the option it provides. Sometimes,
additional sections for omni completion >
- :help ft-php-omni
+ :help ft-php-omni
< or filetype plugins >
:help ft-tex-plugin
< are available.
@@ -677,9 +679,9 @@ Summary: *help-summary* >
< takes you exactly to the description of the swap error message and >
:help W10
< talks about the warning "Changing a readonly file".
- Sometimes however, those error codes are not described, but rather are
+ Sometimes, however, those error codes are not described, but rather are
listed at the Vim command that usually causes this. So: >
- :help E128
+ :help E128
< takes you to the |:function| command
diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt
index 2649534900..74674fdb42 100644
--- a/runtime/doc/usr_03.txt
+++ b/runtime/doc/usr_03.txt
@@ -30,10 +30,11 @@ Table of contents: |usr_toc.txt|
To move the cursor forward one word, use the "w" command. Like most Vim
commands, you can use a numeric prefix to move past multiple words. For
-example, "3w" moves three words. This figure shows how it works:
+example, "3w" moves three words. This figure shows how it works (starting at
+the position marked with "x"):
This is a line with example text ~
- --->-->->----------------->
+ x-->-->->----------------->
w w w 3w
Notice that "w" moves to the start of the next word if it already is at the
@@ -41,15 +42,15 @@ start of a word.
The "b" command moves backward to the start of the previous word:
This is a line with example text ~
- <----<--<-<---------<---
+ <----<--<-<---------<--x
b b b 2b b
There is also the "e" command that moves to the next end of a word and "ge",
which moves to the previous end of a word:
This is a line with example text ~
- <- <--- -----> ---->
- ge ge e e
+ <----<----x---->------------>
+ 2ge ge e 2e
If you are at the last word of a line, the "w" command will take you to the
first word in the next line. Thus you can use this to move through a
@@ -81,13 +82,13 @@ The "$" command moves the cursor to the end of a line. If your keyboard has
an <End> key it will do the same thing.
The "^" command moves to the first non-blank character of the line. The "0"
-command (zero) moves to the very first character of the line. The <Home> key
-does the same thing. In a picture:
+command (zero) moves to the very first character of the line, and the <Home>
+key does the same thing. In a picture ("." indicates a space):
^
- <------------
+ <-----------x
.....This is a line with example text ~
- <----------------- --------------->
+ <----------------x x-------------->
0 $
(the "....." indicates blanks here)
@@ -222,7 +223,8 @@ you can see? This figure shows the three commands you can use:
L --> | text sample text |
+---------------------------+
-Hints: "H" stands for Home, "M" for Middle and "L" for Last.
+Hints: "H" stands for Home, "M" for Middle and "L" for Last. Alternatively,
+"H" for high, "M" for Middle and "L" for low.
==============================================================================
*03.6* Telling where you are
@@ -299,22 +301,22 @@ To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down).
Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible
key mappings CTRL-Y will redo a change instead of scroll.)
-To scroll forward by a whole screen (except for two lines) use CTRL-F. The
-other way is backward, CTRL-B is the command to use. Fortunately CTRL-F is
-Forward and CTRL-B is Backward, that's easy to remember.
+To scroll forward by a whole screen (except for two lines) use CTRL-F. To
+scroll backwards, use CTRL-B. These should be easy to remember: F for
+Forwards and B for Backwards.
A common issue is that after moving down many lines with "j" your cursor is at
the bottom of the screen. You would like to see the context of the line with
the cursor. That's done with the "zz" command.
+------------------+ +------------------+
- | some text | | some text |
- | some text | | some text |
- | some text | | some text |
- | some text | zz --> | line with cursor |
- | some text | | some text |
- | some text | | some text |
- | line with cursor | | some text |
+ | earlier text | | earlier text |
+ | earlier text | | earlier text |
+ | earlier text | | earlier text |
+ | earlier text | zz --> | line with cursor |
+ | earlier text | | later text |
+ | earlier text | | later text |
+ | line with cursor | | later text |
+------------------+ +------------------+
The "zt" command puts the cursor line at the top, "zb" at the bottom. There
@@ -346,7 +348,8 @@ to find the first #include after the cursor: >
And then type "n" several times. You will move to each #include in the text.
You can also use a count if you know which match you want. Thus "3n" finds
-the third match. Using a count with "/" doesn't work.
+the third match. You can also use a count with "/": "4/the" goes to the
+fourth match of "the".
The "?" command works like "/" but searches backwards: >
@@ -354,7 +357,7 @@ The "?" command works like "/" but searches backwards: >
The "N" command repeats the last search the opposite direction. Thus using
"N" after a "/" command searches backwards, using "N" after "?" searches
-forward.
+forwards.
IGNORING CASE
@@ -458,8 +461,8 @@ essential ones:
:set nowrapscan
This stops the search at the end of the file. Or, when you are searching
-backwards, at the start of the file. The 'wrapscan' option is on by default,
-thus searching wraps around the end of the file.
+backwards, it stops the search at the start of the file. The 'wrapscan'
+option is on by default, thus searching wraps around the end of the file.
>
:set noincsearch
@@ -481,7 +484,8 @@ Vim. Example: >
Go:set hlsearch<Esc>
"G" moves to the end of the file. "o" starts a new line, where you type the
-":set" command. You end insert mode with <Esc>. Then write the file: >
+":set" command. You end insert mode with <Esc>. Then write and close the
+file: >
ZZ
@@ -495,8 +499,8 @@ Regular expressions are an extremely powerful and compact way to specify a
search pattern. Unfortunately, this power comes at a price, because regular
expressions are a bit tricky to specify.
In this section we mention only a few essential ones. More about search
-patterns and commands in chapter 27 |usr_27.txt|. You can find the full
-explanation here: |pattern|.
+patterns and commands can be found in chapter 27 |usr_27.txt|. You can find
+the full explanation here: |pattern|.
BEGINNING AND END OF A LINE
@@ -522,9 +526,9 @@ And with "/^the" we find this one:
the solder holding one of the chips melted and the ~
xxx
-You can try searching with "/^the$", it will only match a single line
-consisting of "the". White space does matter here, thus if a line contains a
-space after the word, like "the ", the pattern will not match.
+You can try searching with "/^the$"; it will only match a single line
+consisting entirely of "the". White space does matter here, thus if a line
+contains a space after the word, like "the ", the pattern will not match.
MATCHING ANY SINGLE CHARACTER
@@ -559,20 +563,20 @@ where you came from, use this command: >
This ` is a backtick or open single-quote character.
If you use the same command a second time you will jump back again. That's
-because the ` command is a jump itself, and the position from before this jump
-is remembered.
+because the "`" command is a jump itself, and the position from before this
+jump is remembered.
Generally, every time you do a command that can move the cursor further than
within the same line, this is called a jump. This includes the search
commands "/" and "n" (it doesn't matter how far away the match is). But not
the character searches with "fx" and "tx" or the word movements "w" and "e".
- Also, "j" and "k" are not considered to be a jump. Even when you use a
+ Also, "j" and "k" are not considered to be a jump, even when you use a
count to make them move the cursor quite a long way away.
-The `` command jumps back and forth, between two points. The CTRL-O command
+The "``" command jumps back and forth, between two points. The CTRL-O command
jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer
-positions (Hint: I is just next to O on the keyboard). Consider this sequence
-of commands: >
+positions (Hint: for many common keyboard layouts, I is just next to O).
+Consider this sequence of commands: >
33G
/^The
@@ -610,9 +614,9 @@ Thus to move to the a mark:
>
`a
-The command 'mark (single quotation mark, or apostrophe) moves you to the
-beginning of the line containing the mark. This differs from the `mark
-command, which moves you to marked column.
+The command "'mark" (single quotation mark, or apostrophe) moves you to the
+beginning of the line containing the mark. This differs from the "`mark"
+command, which also moves you to the marked column.
The marks can be very useful when working on two related parts in a file.
Suppose you have some text near the start of the file you need to look at,
diff --git a/runtime/doc/usr_04.txt b/runtime/doc/usr_04.txt
index a327a09a71..b2dd617542 100644
--- a/runtime/doc/usr_04.txt
+++ b/runtime/doc/usr_04.txt
@@ -33,7 +33,7 @@ using a count: "4x" deletes four characters.
move word command. In fact, the "d" command may be followed by any motion
command, and it deletes from the current location to the place where the
cursor winds up.
- The "4w" command, for example, moves the cursor over four words. The d4w
+ The "4w" command, for example, moves the cursor over four words. The "d4w"
command deletes four words.
To err is human. To really foul up you need a computer. ~
@@ -91,14 +91,14 @@ This "c2wbe<Esc>" contains these bits:
be insert this text
<Esc> back to Normal mode
-If you have paid attention, you will have noticed something strange: The space
-before "human" isn't deleted. There is a saying that for every problem there
-is an answer that is simple, clear, and wrong. That is the case with the
-example used here for the "cw" command. The c operator works just like the
-d operator, with one exception: "cw". It actually works like "ce", change to
-end of word. Thus the space after the word isn't included. This is an
-exception that dates back to the old Vi. Since many people are used to it
-now, the inconsistency has remained in Vim.
+You will have noticed something strange: The space before "human" isn't
+deleted. There is a saying that for every problem there is an answer that is
+simple, clear, and wrong. That is the case with the example used here for the
+"cw" command. The c operator works just like the d operator, with one
+exception: "cw". It actually works like "ce", change to end of word. Thus
+the space after the word isn't included. This is an exception that dates back
+to the old Vi. Since many people are used to it now, the inconsistency has
+remained in Vim.
MORE CHANGES
@@ -114,7 +114,7 @@ Insert mode and append new text.
SHORTCUTS
Some operator-motion commands are used so often that they have been given a
-single letter command:
+single-letter command:
x stands for dl (delete character under the cursor)
X stands for dh (delete character left of the cursor)
@@ -138,6 +138,7 @@ REPLACING WITH ONE CHARACTER
The "r" command is not an operator. It waits for you to type a character, and
will replace the character under the cursor with it. You could do the same
with "cl" or with the "s" command, but with "r" you don't have to press <Esc>
+to get back out of insert mode.
there is somerhing grong here ~
rT rt rw
@@ -160,11 +161,11 @@ line break.
==============================================================================
*04.3* Repeating a change
-The "." command is one of the most simple yet powerful commands in Vim. It
+The "." command is one of the simplest yet powerful commands in Vim. It
repeats the last change. For instance, suppose you are editing an HTML file
and want to delete all the <B> tags. You position the cursor on the first <
and delete the <B> with the command "df>". You then go to the < of the next
-</B> and kill it using the "." command. The "." command executes the last
+</B> and delete it using the "." command. The "." command executes the last
change command (in this case, "df>"). To delete another tag, position the
cursor on the < and use the "." command.
@@ -176,8 +177,8 @@ cursor on the < and use the "." command.
f< find next < ------------->
. repeat df> -->
-The "." command works for all changes you make, except for the "u" (undo),
-CTRL-R (redo) and commands that start with a colon (:).
+The "." command works for all changes you make, except for "u" (undo), CTRL-R
+(redo) and commands that start with a colon (:).
Another example: You want to change the word "four" to "five". It appears
several times in your text. You can do this quickly with this sequence of
@@ -269,8 +270,8 @@ where they open a new line below or above the cursor.
==============================================================================
*04.5* Moving text
-When you delete something with the "d", "x", or another command, the text is
-saved. You can paste it back by using the p command. (The Vim name for
+When you delete something with "d", "x", or another command, the text is
+saved. You can paste it back by using the "p" command. (The Vim name for
this is put).
Take a look at how this works. First you will delete an entire line, by
putting the cursor on the line you want to delete and typing "dd". Now you
@@ -362,11 +363,11 @@ Use "y$" to yank to the end of the line.
If you are using the GUI version of Vim (gvim), you can find the "Copy" item
in the "Edit" menu. First select some text with Visual mode, then use the
-Edit/Copy menu. The selected text is now copied to the clipboard. You can
-paste the text in other programs. In Vim itself too.
+Edit/Copy menu item. The selected text is now copied to the clipboard. You
+can paste the text in other programs. In Vim itself too.
If you have copied text to the clipboard in another application, you can paste
-it in Vim with the Edit/Paste menu. This works in Normal mode and Insert
+it in Vim with the Edit/Paste menu item. This works in Normal mode and Insert
mode. In Visual mode the selected text is replaced with the pasted text.
The "Cut" menu item deletes the text before it's put on the clipboard. The
@@ -385,7 +386,7 @@ To put text from the clipboard back into the text: >
"*p
This only works on versions of Vim that include clipboard support. More about
-the clipboard in section |09.3| and here: |clipboard|.
+the clipboard can be found in section |09.3| and here: |clipboard|.
==============================================================================
*04.8* Text objects
@@ -401,8 +402,8 @@ to do this: "daw".
The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw"
stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white
-space after the word is also deleted (the white space before the word at the
-end of the line).
+space after the word is also deleted (or the white space before the word if at
+the end of the line).
Using text objects is the third way to make changes in Vim. We already had
operator-motion and Visual mode. Now we add operator-text object.
@@ -429,11 +430,11 @@ sentence "Another line.":
some text. ~
"cis" consists of the "c" (change) operator and the "is" text object. This
-stands for "Inner Sentence". There is also the "as" (a sentence) object. The
-difference is that "as" includes the white space after the sentence and "is"
-doesn't. If you would delete a sentence, you want to delete the white space
-at the same time, thus use "das". If you want to type new text the white
-space can remain, thus you use "cis".
+stands for "Inner Sentence". There is also the "as" ("A Sentence") object.
+The difference is that "as" includes the white space after the sentence and
+"is" doesn't. If you would delete a sentence, you want to delete the white
+space at the same time, thus use "das". If you want to type new text the
+white space can remain, thus you use "cis".
You can also use text objects in Visual mode. It will include the text object
in the Visual selection. Visual mode continues, thus you can do this several
@@ -462,21 +463,21 @@ of characters to replace. It will not continue on the next line.
You can switch between Insert mode and Replace mode with the <Insert> key.
-When you use <BS> (backspace) to make correction, you will notice that the
-old text is put back. Thus it works like an undo command for the last typed
-character.
+When you use <BS> (backspace) to make a correction, you will notice that the
+old text is put back. Thus it works like an undo command for the previously
+typed character.
==============================================================================
*04.10* Conclusion
The operators, movement commands and text objects give you the possibility to
-make lots of combinations. Now that you know how it works, you can use N
+make lots of combinations. Now that you know how they work, you can use N
operators with M movement commands to make N * M commands!
-You can find a list of operators here: |operator|
+You can find a list of operators here: |operator|.
For example, there are many other ways to delete pieces of text. Here are a
-few often used ones:
+few common ones:
x delete character under the cursor (short for "dl")
X delete character before the cursor (short for "dh")
@@ -492,14 +493,14 @@ If you use "c" instead of "d" they become change commands. And with "y" you
yank the text. And so forth.
-There are a few often used commands to make changes that didn't fit somewhere
+There are a few common commands to make changes that didn't fit somewhere
else:
- ~ change case of the character under the cursor, and move the
+ ~ Change case of the character under the cursor, and move the
cursor to the next character. This is not an operator (unless
'tildeop' is set), thus you can't use it with a motion
- command. It does work in Visual mode and changes case for
- all the selected text then.
+ command. It does work in Visual mode, where it changes case
+ for all the selected text.
I Start Insert mode after moving the cursor to the first
non-blank in the line.
diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt
index 70a0ad97c1..d8634ac6ed 100644
--- a/runtime/doc/usr_05.txt
+++ b/runtime/doc/usr_05.txt
@@ -45,8 +45,8 @@ This file is always used and is recommended:
~/AppData/Local/nvim/init.vim (Windows) ~
The vimrc file can contain all the commands that you type after a colon. The
-most simple ones are for setting options. For example, if you want Vim to
-always start with the 'ignorecase' option on, add this line your vimrc file: >
+simplest ones are for setting options. For example, if you want Vim to always
+start with the 'incsearch' option on, add this line your vimrc file: >
set ignorecase
diff --git a/runtime/doc/usr_07.txt b/runtime/doc/usr_07.txt
index c44a54d76c..649be8d7ce 100644
--- a/runtime/doc/usr_07.txt
+++ b/runtime/doc/usr_07.txt
@@ -227,8 +227,8 @@ the file.
FILE MARKS
-In chapter 4 was explained how you can place a mark in a file with "mx" and
-jump to that position with "`x". That works within one file. If you edit
+In section |03.10| was explained how you can place a mark in a file with "mx"
+and jump to that position with "`x". That works within one file. If you edit
another file and place marks there, these are specific for that file. Thus
each file has its own set of marks, they are local to the file.
So far we were using marks with a lowercase letter. There are also marks
diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt
index 559ca6f1ef..8e69307a94 100644
--- a/runtime/doc/usr_08.txt
+++ b/runtime/doc/usr_08.txt
@@ -401,7 +401,7 @@ Another way to start in diff mode can be done from inside Vim. Edit the
"main.c" file, then make a split and show the differences: >
:edit main.c
- :vertical diffsplit main.c~
+ :vertical diffsplit main.c~
The ":vertical" command is used to make the window split vertically. If you
omit this, you will get a horizontal split.
diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt
index 3646786052..5365f90314 100644
--- a/runtime/doc/usr_10.txt
+++ b/runtime/doc/usr_10.txt
@@ -370,7 +370,8 @@ into "barfoo".
was specified in this example. This is different from ":substitute", which
works on one line without a range.
The command isn't perfect, since it also matches lines where "//" appears
-halfway in a line, and the substitution will also take place before the "//".
+halfway through a line, and the substitution will also take place before the
+"//".
Just like with ":substitute", any pattern can be used. When you learn more
complicated patterns later, you can use them here.
@@ -634,9 +635,9 @@ using it. To check the current value of 'textwidth': >
:set textwidth
Now lines will be broken to take only up to 78 characters. However, when you
-insert text halfway through a line or delete a few words, the line will get
-too long or too short as Vim won't automatically reformat the text. To tell
-Vim to format the current paragraph:
+insert text halfway through a line, or when you delete a few words, the lines
+will get too long or too short. Vim doesn't automatically reformat the text.
+To tell Vim to format the current paragraph: >
gqap
@@ -686,7 +687,7 @@ with any motion command, with text objects and in Visual mode.
lowercase. This can be shortened to "guu". "gUgU" is shortened to "gUU" and
"g~g~" to "g~~". Example: >
- g~~
+ g~~
< Some GIRLS have Fun ----> sOME girls HAVE fUN ~
==============================================================================
diff --git a/runtime/doc/usr_11.txt b/runtime/doc/usr_11.txt
index c26f1e8f09..361fe51caa 100644
--- a/runtime/doc/usr_11.txt
+++ b/runtime/doc/usr_11.txt
@@ -211,8 +211,11 @@ will automatically delete it:
- The flag that the file was modified is not set.
- The process is not running.
+You can programmatically deal with this situation with the |FileChangedShell|
+autocommand event.
-UNREADABLE SWAP FILE
+
+UNREADABLE SWAP FILE ~
Sometimes the line
@@ -253,7 +256,7 @@ O Open the file readonly. Use this when you just want to view the file and
E Edit the file anyway. Use this with caution! If the file is being edited
in another Vim, you might end up with two versions of the file. Vim will
- try to warn you when this happens, but better be safe then sorry.
+ try to warn you when this happens, but better be safe than sorry.
R Recover the file from the swap file. Use this if you know that the swap
file contains changes that you want to recover.
@@ -290,7 +293,7 @@ machines. Therefore, don't rely on Vim always warning you.
If you really don't want to see this message, you can add the 'A' flag to the
'shortmess' option. But it's very unusual that you need this.
-For programatic access to the swap file, see |swapinfo()|.
+For programmatic access to the swap file, see |swapinfo()|.
==============================================================================
*11.4* Further reading
diff --git a/runtime/doc/usr_12.txt b/runtime/doc/usr_12.txt
index 21efa36a25..51a25b1593 100644
--- a/runtime/doc/usr_12.txt
+++ b/runtime/doc/usr_12.txt
@@ -180,14 +180,14 @@ after it. That way you don't have this problem again.
The |:global| command can be combined with the |:move| command to move all the
lines before the first line, resulting in a reversed file. The command is: >
- :global/^/m 0
+ :global/^/move 0
Abbreviated: >
:g/^/m 0
The "^" regular expression matches the beginning of the line (even if the line
-is blank). The |:move| command moves the matching line to after the mythical
+is blank). The |:move| command moves the matching line to after the imaginary
zeroth line, so the current matching line becomes the first line of the file.
As the |:global| command is not confused by the changing line numbering,
|:global| proceeds to match all remaining lines of the file and puts each as
diff --git a/runtime/doc/usr_20.txt b/runtime/doc/usr_20.txt
index 8eee7aedb7..29252705d6 100644
--- a/runtime/doc/usr_20.txt
+++ b/runtime/doc/usr_20.txt
@@ -327,10 +327,10 @@ for next.
==============================================================================
*20.5* Command line window
-Typing the text in the command line works different from typing text in Insert
-mode. It doesn't allow many commands to change the text. For most commands
-that's OK, but sometimes you have to type a complicated command. That's where
-the command line window is useful.
+Typing the text in the command line works differently from typing text in
+Insert mode. It doesn't allow many commands to change the text. For most
+commands that's OK, but sometimes you have to type a complicated command.
+That's where the command line window is useful.
Open the command line window with this command: >
diff --git a/runtime/doc/usr_22.txt b/runtime/doc/usr_22.txt
index 96fc02aaa5..56fe5ada2b 100644
--- a/runtime/doc/usr_22.txt
+++ b/runtime/doc/usr_22.txt
@@ -74,9 +74,9 @@ higher. Pressing "-" does the same thing, without the need to move to the
You can press <F1> to get help on the things you can do in the netrw file
browser. This is what you get: >
- 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help
+ 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help
- MAPS netrw-maps
+ MAPS netrw-maps
<F1>.............Help.......................................|netrw-help|
<cr>.............Browsing...................................|netrw-cr|
<del>............Deleting Files or Directories..............|netrw-delete|
@@ -84,7 +84,7 @@ browser. This is what you get: >
a................Hiding Files or Directories................|netrw-a|
mb...............Bookmarking a Directory....................|netrw-mb|
gb...............Changing to a Bookmarked Directory.........|netrw-gb|
- c................Make Browsing Directory The Current Dir....|netrw-c|
+ cd...............Make Browsing Directory The Current Dir....|netrw-c|
d................Make A New Directory.......................|netrw-d|
D................Deleting Files or Directories..............|netrw-D|
<c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
@@ -121,7 +121,7 @@ The following normal-mode commands may be used to control the browser display:
As a sampling of extra normal-mode commands:
- c Change Vim's notion of the current directory to be
+ cd Change Vim's notion of the current directory to be
the same as the browser directory. (see
|g:netrw_keepdir| to control this, too)
R Rename the file or directory under the cursor; a
diff --git a/runtime/doc/usr_23.txt b/runtime/doc/usr_23.txt
index 810da05ff8..2f88793db2 100644
--- a/runtime/doc/usr_23.txt
+++ b/runtime/doc/usr_23.txt
@@ -26,9 +26,9 @@ start a new line. One to move the carriage back to the first position
(carriage return, <CR>), another to move the paper up (line feed, <LF>).
When computers came out, storage was expensive. Some people decided that
they did not need two characters for end-of-line. The Unix people decided
-they could use <Line Feed> only for end-of-line. The Apple people
-standardized on <CR>. The MS-DOS (and Microsoft Windows) folks decided to
-keep the old <CR><LF>.
+they could use <New Line> or <NL> only for end-of-line. The Apple people
+standardized on <CR>. The Microsoft Windows folks decided to keep the old
+<CR><NL> (we use <NL> for line feed in the help text).
This means that if you try to move a file from one system to another, you
have line-break problems. The Vim editor automatically recognizes the
different file formats and handles things properly behind your back.
@@ -53,20 +53,20 @@ which format you have, execute the following command: >
The three names that Vim uses are:
- unix <LF>
- dos <CR><LF>
+ unix <NL>
+ dos <CR><NL>
mac <CR>
USING THE MAC FORMAT
-On Unix, <LF> is used to break a line. It's not unusual to have a <CR>
+On Unix, <NL> is used to break a line. It's not unusual to have a <CR>
character halfway in a line. Incidentally, this happens quite often in Vi
(and Vim) scripts.
On the Macintosh, where <CR> is the line break character, it's possible to
-have a <LF> character halfway in a line.
+have a <NL> character halfway in a line.
The result is that it's not possible to be 100% sure whether a file
-containing both <CR> and <LF> characters is a Mac or a Unix file. Therefore,
+containing both <CR> and <NL> characters is a Mac or a Unix file. Therefore,
Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check
for this type of file. To check for this format anyway, add "mac" to
'fileformats': >
diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt
index 3c4ff6f55e..efda2bc33d 100644
--- a/runtime/doc/usr_24.txt
+++ b/runtime/doc/usr_24.txt
@@ -563,9 +563,9 @@ that combination. Thus CTRL-K dP also works. Since there is no digraph for
"dP" Vim will also search for a "Pd" digraph.
Note:
- The digraphs depend on the character set that Vim assumes you
- are using. Always use ":digraphs" to find out which digraphs are
- currently available.
+ The digraphs depend on the character set that Vim assumes you are
+ using. Always use ":digraphs" to find out which digraphs are currently
+ available.
You can define your own digraphs. Example: >
diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt
index 637523b9ee..230603de70 100644
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -83,7 +83,7 @@ matter if 'ignorecase' or 'smartcase' was changed.
Note:
If your search takes much longer than you expected, you can interrupt
- it with CTRL-C on Unix and CTRL-Break on Windows.
+ it with CTRL-C on Unix and CTRL-Break on MS-Windows.
==============================================================================
*27.2* Wrapping around the file end
@@ -434,7 +434,7 @@ redefined without changing the search pattern.
/\f\+
-The "\f" items stands for file name characters. Thus this matches a sequence
+The "\f" item stands for file name characters. Thus this matches a sequence
of characters that can be a file name.
Which characters can be part of a file name depends on the system you are
using. On MS-Windows, the backslash is included, on Unix it is not. This is
diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt
index b729c7a263..98d1780cc4 100644
--- a/runtime/doc/usr_30.txt
+++ b/runtime/doc/usr_30.txt
@@ -336,7 +336,7 @@ How to do that is explained here: |indent-expression|.
==============================================================================
*30.4* Other indenting
-The most simple form of automatic indenting is with the 'autoindent' option.
+The simplest form of automatic indenting is with the 'autoindent' option.
It uses the indent from the previous line. A bit smarter is the 'smartindent'
option. This is useful for languages where no indent file is available.
'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'.
diff --git a/runtime/doc/usr_31.txt b/runtime/doc/usr_31.txt
index 74de3f1042..a35f392324 100644
--- a/runtime/doc/usr_31.txt
+++ b/runtime/doc/usr_31.txt
@@ -198,9 +198,9 @@ is not possible in most terminals.
You can start the X-Windows version of gvim with an argument to specify the
size and position of the window: >
- gvim -geometry {width}x{height}+{x_offset}+{y_offset}
+ gvim -geometry {width}x{height}+{x-offset}+{y-offset}
-{width} and {height} are in characters, {x_offset} and {y_offset} are in
+{width} and {height} are in characters, {x-offset} and {y-offset} are in
pixels. Example: >
gvim -geometry 80x25+100+300
diff --git a/runtime/doc/usr_40.txt b/runtime/doc/usr_40.txt
index 9a1fe50f31..5b1254e2ae 100644
--- a/runtime/doc/usr_40.txt
+++ b/runtime/doc/usr_40.txt
@@ -453,12 +453,12 @@ matching BufWritePre autocommands and executes them, and then it
performs the ":write".
The general form of the :autocmd command is as follows: >
- :autocmd [group] {events} {file_pattern} [++nested] {command}
+ :autocmd [group] {events} {file-pattern} [++nested] {command}
The [group] name is optional. It is used in managing and calling the commands
(more on this later). The {events} parameter is a list of events (comma
separated) that trigger the command.
- {file_pattern} is a filename, usually with wildcards. For example, using
+ {file-pattern} is a filename, usually with wildcards. For example, using
"*.txt" makes the autocommand be used for all files whose name end in ".txt".
The optional [++nested] flag allows for nesting of autocommands (see below),
and finally, {command} is the command to be executed.
@@ -489,7 +489,7 @@ See |autocmd-events| for a complete list of events.
PATTERNS
-The {file_pattern} argument can actually be a comma-separated list of file
+The {file-pattern} argument can actually be a comma-separated list of file
patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h".
The usual file wildcards can be used. Here is a summary of the most often
used ones:
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 41948f577e..4cba5a33d0 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -41,6 +41,12 @@ prefer. And you can use any colon command in it (commands that start with a
specific file type. A complicated macro can be defined by a separate Vim
script file. You can think of other uses yourself.
+ If you are familiar with Python, you can find a comparison between
+ Python and Vim script here, with pointers to other documents:
+ https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0
+ And if you are familiar with JavaScript:
+ https://w0rp.com/blog/post/vim-script-for-the-javascripter/
+
Let's start with a simple example: >
:let i = 1
@@ -93,6 +99,8 @@ and the value of the variable i. Since i is one, this will print:
Then there is the ":let i += 1" command. This does the same thing as
":let i = i + 1". This adds one to the variable i and assigns the new value
to the same variable.
+Note: this is how it works in legacy Vim script, which is what we discuss in
+this file.
The example was given to explain the commands, but would you really want to
make such a loop, it can be written much more compact: >
@@ -107,21 +115,29 @@ if you are impatient.
FOUR KINDS OF NUMBERS
-Numbers can be decimal, hexadecimal, octal or binary. A hexadecimal number
-starts with "0x" or "0X". For example "0x1f" is decimal 31. An octal number
-starts with a zero. "017" is decimal 15. A binary number starts with "0b" or
-"0B". For example "0b101" is decimal 5. Careful: don't put a zero before a
-decimal number, it will be interpreted as an octal number!
- The ":echo" command always prints decimal numbers. Example: >
+Numbers can be decimal, hexadecimal, octal or binary.
+
+A hexadecimal number starts with "0x" or "0X". For example "0x1f" is decimal
+31.
+
+An octal number starts with "0o", "0O" or a zero and another digit. "0o17" is
+decimal 15. Using just a zero prefix is not supported in Vim9 script.
+
+A binary number starts with "0b" or "0B". For example "0b101" is decimal 5.
+
+A decimal number is just digits. Careful: don't put a zero before a decimal
+number, it will be interpreted as an octal number in legacy script!
+
+The ":echo" command always prints decimal numbers. Example: >
- :echo 0x7f 036
+ :echo 0x7f 0o36
< 127 30 ~
A number is made negative with a minus sign. This also works for hexadecimal,
octal and binary numbers. A minus sign is also used for subtraction. Compare
this with the previous example: >
- :echo 0x7f -036
+ :echo 0x7f -0o36
< 97 ~
White space in an expression is ignored. However, it's recommended to use it
@@ -129,7 +145,7 @@ for separating items, to make the expression easier to read. For example, to
avoid the confusion with a negative number above, put a space between the
minus sign and the following number: >
- :echo 0x7f - 036
+ :echo 0x7f - 0o36
==============================================================================
*41.2* Variables
@@ -319,9 +335,9 @@ Grouping is done with parentheses. No surprises here. Example: >
:echo (10 + 5) * 2
< 30 ~
-Strings can be concatenated with ".". Example: >
+Strings can be concatenated with ".." (see |expr6|). Example: >
- :echo "foo" . "bar"
+ :echo "foo" .. "bar"
< foobar ~
When the ":echo" command gets multiple arguments, it separates them with a
@@ -488,9 +504,9 @@ So far the commands in the script were executed by Vim directly. The
very powerful way to build commands and execute them.
An example is to jump to a tag, which is contained in a variable: >
- :execute "tag " . tag_name
+ :execute "tag " .. tag_name
-The "." is used to concatenate the string "tag " with the value of variable
+The ".." is used to concatenate the string "tag " with the value of variable
"tag_name". Suppose "tag_name" has the value "get_cmd", then the command that
will be executed is: >
@@ -506,7 +522,7 @@ This jumps to the first line and formats all lines with the "=" operator.
To make ":normal" work with an expression, combine ":execute" with it.
Example: >
- :execute "normal " . normal_commands
+ :execute "normal " .. normal_commands
The variable "normal_commands" must contain the Normal mode commands.
Make sure that the argument for ":normal" is a complete command. Otherwise
@@ -523,12 +539,12 @@ If you don't want to execute a string but evaluate it to get its expression
value, you can use the eval() function: >
:let optname = "path"
- :let optval = eval('&' . optname)
+ :let optval = eval('&' .. optname)
A "&" character is prepended to "path", thus the argument to eval() is
"&path". The result will then be the value of the 'path' option.
The same thing can be done with: >
- :exe 'let optval = &' . optname
+ :exe 'let optval = &' .. optname
==============================================================================
*41.6* Using functions
@@ -848,6 +864,7 @@ Insert mode completion: *completion-functions*
complete_check() check if completion should be aborted
complete_info() get current completion information
pumvisible() check if the popup menu is displayed
+ pum_getpos() position and size of popup menu if visible
Folding: *folding-functions*
foldclosed() check for a closed fold at a specific line
@@ -1127,7 +1144,7 @@ Example: >
: let n = n + len(split(getline(lnum)))
: let lnum = lnum + 1
: endwhile
- : echo "found " . n . " words"
+ : echo "found " .. n .. " words"
:endfunction
You can call this function with: >
@@ -1140,7 +1157,7 @@ It will be executed once and echo the number of words.
range, with the cursor in that line. Example: >
:function Number()
- : echo "line " . line(".") . " contains: " . getline(".")
+ : echo "line " .. line(".") .. " contains: " .. getline(".")
:endfunction
If you call this function with: >
@@ -1164,11 +1181,11 @@ so on. The variable "a:0" contains the number of extra arguments.
:function Show(start, ...)
: echohl Title
- : echo "start is " . a:start
+ : echo "start is " .. a:start
: echohl None
: let index = 1
: while index <= a:0
- : echo " Arg " . index . " is " . a:{index}
+ : echo " Arg " .. index .. " is " .. a:{index}
: let index = index + 1
: endwhile
: echo ""
@@ -1576,10 +1593,10 @@ Another useful mechanism is the ":finally" command: >
:let tmp = tempname()
:try
- : exe ".,$write " . tmp
- : exe "!filter " . tmp
+ : exe ".,$write " .. tmp
+ : exe "!filter " .. tmp
: .,$delete
- : exe "$read " . tmp
+ : exe "$read " .. tmp
:finally
: call delete(tmp)
:endtry
@@ -1600,7 +1617,7 @@ Here is a summary of items that apply to Vim scripts. They are also mentioned
elsewhere, but form a nice checklist.
The end-of-line character depends on the system. For Unix a single <NL>
-character is used. For Windows <CR><LF> is used. This is important when
+character is used. For Windows <CR><NL> is used. This is important when
using mappings that end in a <CR>. See |:source_crnl|.
@@ -1887,9 +1904,9 @@ for this mapping, but the user might already use it for something else. To
allow the user to define which keys a mapping in a plugin uses, the <Leader>
item can be used: >
- 22 map <unique> <Leader>a <Plug>TypecorrAdd
+ 22 map <unique> <Leader>a <Plug>TypecorrAdd;
-The "<Plug>TypecorrAdd" thing will do the work, more about that further on.
+The "<Plug>TypecorrAdd;" thing will do the work, more about that further on.
The user can set the "mapleader" variable to the key sequence that he wants
this mapping to start with. Thus if the user has done: >
@@ -1905,15 +1922,15 @@ already happened to exist. |:map-<unique>|
But what if the user wants to define his own key sequence? We can allow that
with this mechanism: >
- 21 if !hasmapto('<Plug>TypecorrAdd')
- 22 map <unique> <Leader>a <Plug>TypecorrAdd
+ 21 if !hasmapto('<Plug>TypecorrAdd;')
+ 22 map <unique> <Leader>a <Plug>TypecorrAdd;
23 endif
-This checks if a mapping to "<Plug>TypecorrAdd" already exists, and only
+This checks if a mapping to "<Plug>TypecorrAdd;" already exists, and only
defines the mapping from "<Leader>a" if it doesn't. The user then has a
chance of putting this in his vimrc file: >
- map ,c <Plug>TypecorrAdd
+ map ,c <Plug>TypecorrAdd;
Then the mapped key sequence will be ",c" instead of "_a" or "\a".
@@ -1930,8 +1947,8 @@ prepending it with "s:".
We will define a function that adds a new typing correction: >
30 function s:Add(from, correct)
- 31 let to = input("type the correction for " . a:from . ": ")
- 32 exe ":iabbrev " . a:from . " " . to
+ 31 let to = input("type the correction for " .. a:from .. ": ")
+ 32 exe ":iabbrev " .. a:from .. " " .. to
..
36 endfunction
@@ -1943,15 +1960,15 @@ function (without the "s:"), which is again another function.
<SID> can be used with mappings. It generates a script ID, which identifies
the current script. In our typing correction plugin we use it like this: >
- 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add
+ 24 noremap <unique> <script> <Plug>TypecorrAdd; <SID>Add
..
28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR>
Thus when a user types "\a", this sequence is invoked: >
- \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add()
+ \a -> <Plug>TypecorrAdd; -> <SID>Add -> :call <SID>Add()
-If another script would also map <SID>Add, it would get another script ID and
+If another script also maps <SID>Add, it will get another script ID and
thus define another mapping.
Note that instead of s:Add() we use <SID>Add() here. That is because the
@@ -1992,9 +2009,9 @@ difference between using <SID> and <Plug>:
To make it very unlikely that other plugins use the same sequence of
characters, use this structure: <Plug> scriptname mapname
In our example the scriptname is "Typecorr" and the mapname is "Add".
- This results in "<Plug>TypecorrAdd". Only the first character of
- scriptname and mapname is uppercase, so that we can see where mapname
- starts.
+ We add a semicolon as the terminator. This results in
+ "<Plug>TypecorrAdd;". Only the first character of scriptname and
+ mapname is uppercase, so that we can see where mapname starts.
<SID> is the script ID, a unique identifier for a script.
Internally Vim translates <SID> to "<SNR>123_", where "123" can be any
@@ -2036,7 +2053,7 @@ a few lines to count the number of corrections: >
30 function s:Add(from, correct)
..
34 let s:count = s:count + 1
- 35 echo s:count . " corrections now"
+ 35 echo s:count .. " corrections now"
36 endfunction
First s:count is initialized to 4 in the script itself. When later the
@@ -2069,21 +2086,21 @@ Here is the resulting complete example: >
18 \ synchronization
19 let s:count = 4
20
- 21 if !hasmapto('<Plug>TypecorrAdd')
- 22 map <unique> <Leader>a <Plug>TypecorrAdd
+ 21 if !hasmapto('<Plug>TypecorrAdd;')
+ 22 map <unique> <Leader>a <Plug>TypecorrAdd;
23 endif
- 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add
+ 24 noremap <unique> <script> <Plug>TypecorrAdd; <SID>Add
25
26 noremenu <script> Plugin.Add\ Correction <SID>Add
27
28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR>
29
30 function s:Add(from, correct)
- 31 let to = input("type the correction for " . a:from . ": ")
- 32 exe ":iabbrev " . a:from . " " . to
+ 31 let to = input("type the correction for " .. a:from .. ": ")
+ 32 exe ":iabbrev " .. a:from .. " " .. to
33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif
34 let s:count = s:count + 1
- 35 echo s:count . " corrections now"
+ 35 echo s:count .. " corrections now"
36 endfunction
37
38 if !exists(":Correct")
@@ -2122,7 +2139,7 @@ Here is a simple example for a plugin help file, called "typecorr.txt": >
6 There are currently only a few corrections. Add your own if you like.
7
8 Mappings:
- 9 <Leader>a or <Plug>TypecorrAdd
+ 9 <Leader>a or <Plug>TypecorrAdd;
10 Add a correction for the word under the cursor.
11
12 Commands:
@@ -2260,13 +2277,13 @@ To make sure mappings will only work in the current buffer use the >
command. This needs to be combined with the two-step mapping explained above.
An example of how to define functionality in a filetype plugin: >
- if !hasmapto('<Plug>JavaImport')
- map <buffer> <unique> <LocalLeader>i <Plug>JavaImport
+ if !hasmapto('<Plug>JavaImport;')
+ map <buffer> <unique> <LocalLeader>i <Plug>JavaImport;
endif
- noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc>
+ noremap <buffer> <unique> <Plug>JavaImport; oimport ""<Left><Esc>
|hasmapto()| is used to check if the user has already defined a map to
-<Plug>JavaImport. If not, then the filetype plugin defines the default
+<Plug>JavaImport;. If not, then the filetype plugin defines the default
mapping. This starts with |<LocalLeader>|, which allows the user to select
the key(s) he wants filetype plugin mappings to start with. The default is a
backslash.
@@ -2283,12 +2300,12 @@ plugin for the mail filetype: >
" Add mappings, unless the user didn't want this.
if !exists("no_plugin_maps") && !exists("no_mail_maps")
" Quote text by inserting "> "
- if !hasmapto('<Plug>MailQuote')
- vmap <buffer> <LocalLeader>q <Plug>MailQuote
- nmap <buffer> <LocalLeader>q <Plug>MailQuote
+ if !hasmapto('<Plug>MailQuote;')
+ vmap <buffer> <LocalLeader>q <Plug>MailQuote;
+ nmap <buffer> <LocalLeader>q <Plug>MailQuote;
endif
- vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>
- nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>
+ vnoremap <buffer> <Plug>MailQuote; :s/^/> /<CR>
+ nnoremap <buffer> <Plug>MailQuote; :.,$s/^/> /<CR>
endif
Two global variables are used:
@@ -2331,7 +2348,7 @@ should be undone. Set the b:undo_ftplugin variable to the commands that will
undo the settings in your filetype plugin. Example: >
let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<"
- \ . "| unlet b:match_ignorecase b:match_words b:match_skip"
+ \ .. "| unlet b:match_ignorecase b:match_words b:match_skip"
Using ":setlocal" with "<" after the option name resets the option to its
global value. That is mostly the best way to reset the option value.
@@ -2452,17 +2469,17 @@ The following example shows how it's done: >
map <F19> :call BufNetWrite('something')<CR>
let s:did_load = 1
- exe 'au FuncUndefined BufNet* source ' . expand('<sfile>')
+ exe 'au FuncUndefined BufNet* source ' .. expand('<sfile>')
finish
endif
function BufNetRead(...)
- echo 'BufNetRead(' . string(a:000) . ')'
+ echo 'BufNetRead(' .. string(a:000) .. ')'
" read functionality here
endfunction
function BufNetWrite(...)
- echo 'BufNetWrite(' . string(a:000) . ')'
+ echo 'BufNetWrite(' .. string(a:000) .. ')'
" write functionality here
endfunction
diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt
index 501f02e745..99da1359c2 100644
--- a/runtime/doc/usr_42.txt
+++ b/runtime/doc/usr_42.txt
@@ -209,8 +209,8 @@ argument: >
:amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR>
Don't use "<silent>" too often. It is not needed for short commands. If you
-make a menu for someone else, being able the see the executed command will
-give him a hint about what he could have typed, instead of using the mouse.
+make a menu for someone else, being able to see the executed command will give
+him a hint about what he could have typed, instead of using the mouse.
LISTING MENUS
diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt
index 722c3de26c..5c04c26434 100644
--- a/runtime/doc/usr_44.txt
+++ b/runtime/doc/usr_44.txt
@@ -673,21 +673,10 @@ syntax file, earlier in 'runtimepath' was already loaded: >
finish
endif
-To be compatible with Vim 5.8 use: >
-
- if version < 600
- syntax clear
- elseif exists("b:current_syntax")
- finish
- endif
-
Set "b:current_syntax" to the name of the syntax at the end. Don't forget
that included files do this too, you might have to reset "b:current_syntax" if
you include two files.
-If you want your syntax file to work with Vim 5.x, add a check for v:version.
-Find an syntax file in the Vim 7.2 distribution for an example.
-
Do not include anything that is a user preference. Don't set 'tabstop',
'expandtab', etc. These belong in a filetype plugin.
diff --git a/runtime/doc/usr_45.txt b/runtime/doc/usr_45.txt
index 1ce6969d37..bc95f3405e 100644
--- a/runtime/doc/usr_45.txt
+++ b/runtime/doc/usr_45.txt
@@ -2,7 +2,7 @@
VIM USER MANUAL - by Bram Moolenaar
- Select your language
+ Select your language (locale)
The messages in Vim can be given in several languages. This chapter explains
diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt
index 69846f1bcf..f466a8ece9 100644
--- a/runtime/doc/usr_toc.txt
+++ b/runtime/doc/usr_toc.txt
@@ -42,7 +42,7 @@ Tuning Vim
|usr_42.txt| Add new menus
|usr_43.txt| Using filetypes
|usr_44.txt| Your own syntax highlighted
-|usr_45.txt| Select your language
+|usr_45.txt| Select your language (locale)
Reference manual
@@ -327,7 +327,7 @@ Make Vim work as you like it.
|44.11| Installing a syntax file
|44.12| Portable syntax file layout
-|usr_45.txt| Select your language
+|usr_45.txt| Select your language (locale)
|45.1| Language for Messages
|45.2| Language for Menus
|45.3| Using another encoding
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 5fb7c4ce50..d5c07d9622 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -92,7 +92,7 @@ g8 Print the hex values of the bytes used in the
encoding because it contains illegal bytes.
Does not wrap around the end of the file.
Note that when the cursor is on an illegal byte or the
- cursor is halfway through a multi-byte character the
+ cursor is halfway through a multibyte character the
command won't move the cursor.
*:p* *:pr* *:print* *E749*
@@ -134,19 +134,21 @@ g8 Print the hex values of the bytes used in the
quit
<
*:z* *E144*
-:{range}z[+-^.=]{count} Display several lines of text surrounding the line
- specified with {range}, or around the current line
- if there is no {range}. If there is a {count}, that's
- how many lines you'll see; if there is only one window
- then twice the value of the 'scroll' option is used,
+:[range]z[+-^.=][count] Display several lines of text surrounding the line
+ specified with [range], or around the current line
+ if there is no [range].
+
+ If there is a [count], that's how many lines you'll
+ see; if there is no [count] and only one window then
+ twice the value of the 'scroll' option is used,
otherwise the current window height minus 3 is used.
+ This is the value of "scr" in the table below.
- If there is a {count} the 'window' option is set to
+ If there is a [count] the 'window' option is set to
its value.
:z can be used either alone or followed by any of
- several punctuation marks. These have the following
- effect:
+ several marks. These have the following effect:
mark first line last line new cursor line ~
---- ---------- --------- ------------
@@ -160,7 +162,7 @@ g8 Print the hex values of the bytes used in the
If the mark is "=", a line of dashes is printed
around the current line.
-:{range}z#[+-^.=]{count} *:z#*
+:[range]z#[+-^.=][count] *:z#*
Like ":z", but number the lines.
{not in all versions of Vi, not with these arguments}
@@ -260,6 +262,7 @@ g8 Print the hex values of the bytes used in the
use it to append a Vim command. See |:bar|.
Any "%" in {cmd} is expanded to the current file name.
+ Any "#" in {cmd} is expanded to the alternate file name.
Special characters are not escaped, use quotes or
|shellescape()|: >
:!ls "%"
@@ -338,7 +341,7 @@ g8 Print the hex values of the bytes used in the
locked or the variable type is changed, then further
command output messages will cause errors.
To get the output of one command the |execute()|
- function can be used.
+ function can be used instead of redirection.
:redi[r] =>> {var} Append messages to an existing variable. Only string
variables can be used.
@@ -358,7 +361,7 @@ g8 Print the hex values of the bytes used in the
it in / any non-ID character (see |'isident'|) can be
used, so long as it does not appear in {pat}. Without
the enclosing character the pattern cannot include the
- bar character.
+ bar character. 'ignorecase' is not used.
The pattern is matched against the relevant part of
the output, not necessarily the whole line. Only some
@@ -502,6 +505,9 @@ gO Show a filetype-specific, navigable "outline" of the
if at a visible position.
Queued messages are processed during the sleep.
+ *:sl!* *:sleep!*
+:[N]sl[eep]! [N] [m] Same as above, but hide the cursor.
+
==============================================================================
2. Using Vim like less or more *less*
@@ -514,7 +520,7 @@ up mappings to simulate the commands that less supports. Otherwise, you can
still use the Vim commands.
This isn't perfect. For example, when viewing a short file Vim will still use
-the whole screen. But it works good enough for most uses, and you get syntax
+the whole screen. But it works well enough for most uses, and you get syntax
highlighting.
The "h" key will give you a short overview of the available commands.
diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt
index beecca2480..cef2859eb5 100644
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -11,9 +11,10 @@ Differences between Vim and Vi *vi-differences*
==============================================================================
1. Limits *limits*
-Vim has only a few limits for the files that can be edited.
+Vim has only a few limits for the files that can be edited {Vi: can not handle
+<Nul> characters and characters above 128, has limited line length, many other
+limits}.
- *E340*
Maximum line length 2147483647 characters
Maximum number of lines 2147483647 lines
Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is
@@ -358,7 +359,7 @@ Editing binary files. |edit-binary|
last line in the file.
Multi-language support. |multi-lang|
- Files in double-byte or multi-byte encodings can be edited. There is
+ Files in double-byte or multibyte encodings can be edited. There is
UTF-8 support to be able to edit various languages at the same time,
without switching fonts. |UTF-8|
Messages and menus are available in different languages.
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt
index eadc1c04a0..2c39fdb53c 100644
--- a/runtime/doc/vim_diff.txt
+++ b/runtime/doc/vim_diff.txt
@@ -498,13 +498,23 @@ Test functions:
test_alloc_fail()
test_autochdir()
test_disable_char_avail()
+ test_feedinput()
+ test_garbagecollect_soon
+ test_getvalue()
+ test_ignore_error()
+ 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_scrollbar()
+ test_setmouse()
test_settime()
TUI:
diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt
index fd3d93ed98..f7828f0289 100644
--- a/runtime/doc/visual.txt
+++ b/runtime/doc/visual.txt
@@ -103,6 +103,7 @@ gn Search forward for the last used search pattern, like
E.g., "dgn" deletes the text of the next match.
If Visual mode is active, extends the selection
until the end of the next match.
+ 'wrapscan' applies
Note: Unlike `n` the search direction does not depend
on the previous search command.
@@ -111,7 +112,7 @@ gN Like |gn| but searches backward, like with `N`.
*<LeftMouse>*
<LeftMouse> Set the current cursor position. If Visual mode is
- active it is stopped. Only when 'mouse' option is
+ active it is stopped. Only when 'mouse' option
contains 'n' or 'a'. If the position is within 'so'
lines from the last line on the screen the text is
scrolled up. If the position is within 'so' lines from
@@ -122,7 +123,7 @@ gN Like |gn| but searches backward, like with `N`.
<RightMouse> Start Visual mode if it is not active. The text from
the cursor position to the position of the click is
highlighted. If Visual mode was already active move
- the start or end of the highlighted text, which ever
+ the start or end of the highlighted text, whichever
is closest, to the position of the click. Only when
'mouse' option contains 'n' or 'a'.
@@ -225,7 +226,7 @@ The objects that can be used are:
is inner sentence |v_is|
ap a paragraph (with white space) |v_ap|
ip inner paragraph |v_ip|
- ab a () block (with parenthesis) |v_ab|
+ ab a () block (with parentheses) |v_ab|
ib inner () block |v_ib|
aB a {} block (with braces) |v_aB|
iB inner {} block |v_iB|
@@ -336,7 +337,7 @@ Visual-block Shift *v_b_>*
The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The
LHS of the block determines the point from which to apply a right shift, and
padding includes TABs optimally according to 'ts' and 'et'. The LHS of the
-block determines the point upto which to shift left.
+block determines the point up to which to shift left.
See |v_b_>_example|.
See |v_b_<_example|.
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index 35efb1bbce..3a58cc08d9 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -115,6 +115,12 @@ status line, the '^' character is used for the current window, and '=' for
other windows. If 'mouse' is enabled, a status line can be dragged to resize
windows.
+ *filler-lines*
+The lines after the last buffer line in a window are called filler lines.
+These lines start with a tilde (~) character. By default, these are
+highlighted as NonText (|hl-NonText|). The EndOfBuffer highlight group
+(|hl-EndOfBuffer|) can be used to change the highlighting of filler lines.
+
==============================================================================
3. Opening and closing a window *opening-window* *E36*
@@ -177,15 +183,12 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N*
This behaves like a ":split" first, and then an ":enew"
command.
-:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
- Like |:new|, but split vertically. If 'equalalways' is set
- and 'eadirection' isn't "ver" the windows will be spread out
- horizontally, unless a width was specified.
-
:[N]new [++opt] [+cmd] {file}
:[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
Create a new window and start editing file {file} in it. This
- behaves like a ":split" first, and then an ":e" command.
+ behaves almost like a ":split" first, and then an ":edit"
+ command, but the alternate file name in the original window is
+ set to {file}.
If [+cmd] is given, execute the command when the file has been
loaded |+cmd|.
Also see |++opt|.
@@ -193,7 +196,12 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N*
height). Reduces the current window height to create room
(and others, if the 'equalalways' option is set).
-:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview*
+:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
+ Like |:new|, but split vertically. If 'equalalways' is set
+ and 'eadirection' isn't "ver" the windows will be spread out
+ horizontally, unless a width was specified.
+
+:[N]sv[iew] [++opt] [+cmd] [file] *:sv* *:sview* *splitview*
Same as ":split", but set 'readonly' option for this buffer.
:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfi* *:sfind* *splitfind*
@@ -269,8 +277,9 @@ CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
Without {count}: Quit the current window. If {count} is
given quit the {count} window
- When quitting the last window (not counting a help window),
- exit Vim.
+ *edit-window*
+ When quitting the last edit window (not counting help or
+ preview windows), exit Vim.
When 'hidden' is set, and there is only one window for the
current buffer, it becomes hidden. When 'hidden' is not set,
@@ -287,6 +296,10 @@ CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
:+quit " quit the next window
:+2quit " quit the second next window
<
+ When closing a help window, and this is not the only window,
+ Vim will try to restore the previous window layout, see
+ |:helpclose|.
+
:q[uit]!
:{count}q[uit]!
Without {count}: Quit the current window. If {count} is
@@ -306,9 +319,9 @@ CTRL-W c *CTRL-W_c* *:clo* *:close*
[!] is used, the buffer becomes hidden (unless there is another
window editing it).
- When there is only one window in the current tab page and
- there is another tab page, this closes the current tab page.
- |tab-page|.
+ When there is only one |edit-window| in the current tab page
+ and there is another tab page, this closes the current tab
+ page. |tab-page|.
This command fails when: *E444*
- There is only one window on the screen.
@@ -480,14 +493,14 @@ CTRL-W J Move the current window to be at the very bottom, using the
CTRL-W H Move the current window to be at the far left, using the
full height of the screen. This works like closing the
current window and then creating another one with
- ":vert topleft split", except that the current window contents
+ `:vert topleft split`, except that the current window contents
is used for the new window.
*CTRL-W_L*
CTRL-W L Move the current window to be at the far right, using the full
height of the screen. This works like closing the
current window and then creating another one with
- ":vert botright split", except that the current window
+ `:vert botright split`, except that the current window
contents is used for the new window.
*CTRL-W_T*
@@ -518,6 +531,10 @@ CTRL-W + Increase current window height by N (default 1).
CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
CTRL-W _ Set current window height to N (default: highest possible).
+:{winnr}res[ize] [+-]N
+ Like `:resize` above, but apply the size to window {winnr}
+ instead of the current window.
+
z{nr}<CR> Set current window height to {nr}.
*CTRL-W_<*
@@ -526,7 +543,7 @@ CTRL-W < Decrease current window width by N (default 1).
*CTRL-W_>*
CTRL-W > Increase current window width by N (default 1).
-:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
+:vert[ical] res[ize] [N] *:vertical-resize* *CTRL-W_bar*
CTRL-W | Set current window width to N (default: widest possible).
You can also resize a window by dragging a status line up or down with the
@@ -743,7 +760,7 @@ can also get to them with the buffer list commands, like ":bnext".
Examples: >
- :windo set nolist nofoldcolumn | normal zn
+ :windo set nolist foldcolumn=0 | normal! zn
This resets the 'list' option and disables folding in all windows. >
@@ -751,7 +768,7 @@ This resets the 'list' option and disables folding in all windows. >
This resets the 'fileencoding' in each buffer and writes it if this changed
the buffer. The result is that all buffers will use the 'encoding' encoding
-(if conversion works properly).
+(if conversion succeeds).
==============================================================================
9. Tag or file name under the cursor *window-tag*
@@ -1034,7 +1051,9 @@ list of buffers. |unlisted-buffer|
<
*:bad* *:badd*
:bad[d] [+lnum] {fname}
- Add file name {fname} to the buffer list, without loading it.
+ Add file name {fname} to the buffer list, without loading it,
+ if it wasn't listed yet. If the buffer was previously
+ deleted, not wiped, it will be made listed again.
If "lnum" is specified, the cursor will be positioned at that
line when the buffer is first entered. Note that other
commands after the + will be ignored.
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 724a96cb01..f0d2b36a84 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Apr 05
+" Last Change: 2021 Apr 17
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -392,8 +392,8 @@ au BufNewFile,BufRead configure.in,configure.ac setf config
" CUDA Cumpute Unified Device Architecture
au BufNewFile,BufRead *.cu,*.cuh setf cuda
-" Dockerfile
-au BufNewFile,BufRead Dockerfile,*.Dockerfile setf dockerfile
+" Dockerfilb; Podman uses the same syntax with name Containerfile
+au BufNewFile,BufRead Containerfile,Dockerfile,*.Dockerfile setf dockerfile
" WildPackets EtherPeek Decoder
au BufNewFile,BufRead *.dcd setf dcd
@@ -791,11 +791,11 @@ au BufNewFile,BufRead *.inf,*.INF setf inform
au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng
" Innovation Data Processing
-au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
-au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
+au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
+au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
-au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
-au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
+au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
+au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
" Ipfilter
au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter
@@ -1094,7 +1094,7 @@ au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
au BufRead,BufNewfile *.n1ql,*.nql setf n1ql
" Nano
-au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc
+au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc
" Nastran input/DMAP
"au BufNewFile,BufRead *.dat setf nastran
@@ -1191,11 +1191,14 @@ au BufNewFile,BufRead *.pp call dist#ft#FTpp()
" Delphi or Lazarus program file
au BufNewFile,BufRead *.dpr,*.lpr setf pascal
+" Free Pascal makefile definition file
+au BufNewFile,BufRead *.fpc setf fpcmake
+
" PDF
au BufNewFile,BufRead *.pdf setf pdf
" PCMK - HAE - crm configure edit
-au BufNewFile,BufRead *.pcmk setf pcmk
+au BufNewFile,BufRead *.pcmk setf pcmk
" Perl
if has("fname_case")
@@ -1204,8 +1207,6 @@ else
au BufNewFile,BufRead *.pl call dist#ft#FTpl()
endif
au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl
-au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6
-au BufNewFile,BufRead *.raku,*.rakumod setf perl6
" Perl, XPM or XPM2
au BufNewFile,BufRead *.pm
@@ -1219,7 +1220,6 @@ au BufNewFile,BufRead *.pm
" Perl POD
au BufNewFile,BufRead *.pod setf pod
-au BufNewFile,BufRead *.pod6 setf pod6
" Php, php3, php4, etc.
" Also Phtml (was used for PHP 2 in the past)
@@ -1227,7 +1227,7 @@ au BufNewFile,BufRead *.pod6 setf pod6
au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php
" PHP config
-au BufNewFile,BufRead php.ini,php.ini-* setf dosini
+au BufNewFile,BufRead php.ini-* setf dosini
" Pike and Cmod
au BufNewFile,BufRead *.pike,*.pmod setf pike
@@ -1362,6 +1362,9 @@ au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python
" Radiance
au BufNewFile,BufRead *.rad,*.mat setf radiance
+" Raku (formelly Perl6)
+au BufNewFile,BufRead *.pm6,*.p6,*.t6,*.pod6,*.raku,*.rakumod,*.rakudoc,*.rakutest setf raku
+
" Ratpoison config/command files
au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison
@@ -1384,13 +1387,6 @@ au BufNewFile,BufRead *.rego setf rego
" Rexx
au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit setf rexx
-" R (Splus)
-if has("fname_case")
- au BufNewFile,BufRead *.s,*.S setf r
-else
- au BufNewFile,BufRead *.s setf r
-endif
-
" R Help file
if has("fname_case")
au BufNewFile,BufRead *.rd,*.Rd setf rhelp
@@ -1564,7 +1560,8 @@ au BufNewFile,BufRead *.decl,*.dcl,*.dec
au BufNewFile,BufRead catalog setf catalog
" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
-" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
+" Gentoo ebuilds, Arch Linux PKGBUILDs and Alpine Linux APKBUILDs are actually
+" bash scripts.
" 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-fc[-.],*.ebuild,*.bash,*.eclass,PKGBUILD,APKBUILD call dist#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
@@ -1720,10 +1717,10 @@ au BufNewFile,BufRead *.cm setf voscm
" Swift
au BufNewFile,BufRead *.swift setf swift
-au BufNewFile,BufRead *.swift.gyb setf swiftgyb
+au BufNewFile,BufRead *.swift.gyb setf swiftgyb
" Swift Intermediate Language
-au BufNewFile,BufRead *.sil setf sil
+au BufNewFile,BufRead *.sil setf sil
" Sysctl
au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl
@@ -2159,7 +2156,7 @@ au BufNewFile,BufRead *fvwm2rc*
au BufNewFile,BufRead */tmp/lltmp* call s:StarSetf('gedcom')
" Git
-au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* call s:StarSetf('gitconfig')
+au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* call s:StarSetf('gitconfig')
" Gitolite
au BufNewFile,BufRead */gitolite-admin/conf/* call s:StarSetf('gitolite')
diff --git a/runtime/ftplugin/ada.vim b/runtime/ftplugin/ada.vim
index 1f2d690b95..688d912126 100644
--- a/runtime/ftplugin/ada.vim
+++ b/runtime/ftplugin/ada.vim
@@ -155,40 +155,41 @@ if exists("g:ada_abbrev")
endif
" Section: Commands, Mapping, Menus {{{1
-"
-call ada#Map_Popup (
- \ 'Tag.List',
- \ 'l',
- \ 'call ada#List_Tag ()')
-call ada#Map_Popup (
- \'Tag.Jump',
- \'j',
- \'call ada#Jump_Tag ()')
-call ada#Map_Menu (
- \'Tag.Create File',
- \':AdaTagFile',
- \'call ada#Create_Tags (''file'')')
-call ada#Map_Menu (
- \'Tag.Create Dir',
- \':AdaTagDir',
- \'call ada#Create_Tags (''dir'')')
-
-call ada#Map_Menu (
- \'Highlight.Toggle Space Errors',
- \ ':AdaSpaces',
- \'call ada#Switch_Syntax_Option (''space_errors'')')
-call ada#Map_Menu (
- \'Highlight.Toggle Lines Errors',
- \ ':AdaLines',
- \'call ada#Switch_Syntax_Option (''line_errors'')')
-call ada#Map_Menu (
- \'Highlight.Toggle Rainbow Color',
- \ ':AdaRainbow',
- \'call ada#Switch_Syntax_Option (''rainbow_color'')')
-call ada#Map_Menu (
- \'Highlight.Toggle Standard Types',
- \ ':AdaTypes',
- \'call ada#Switch_Syntax_Option (''standard_types'')')
+if !exists(':AdaTagFile')
+ call ada#Map_Popup (
+ \ 'Tag.List',
+ \ 'l',
+ \ 'call ada#List_Tag ()')
+ call ada#Map_Popup (
+ \'Tag.Jump',
+ \'j',
+ \'call ada#Jump_Tag ()')
+ call ada#Map_Menu (
+ \'Tag.Create File',
+ \':AdaTagFile',
+ \'call ada#Create_Tags (''file'')')
+ call ada#Map_Menu (
+ \'Tag.Create Dir',
+ \':AdaTagDir',
+ \'call ada#Create_Tags (''dir'')')
+
+ call ada#Map_Menu (
+ \'Highlight.Toggle Space Errors',
+ \ ':AdaSpaces',
+ \'call ada#Switch_Syntax_Option (''space_errors'')')
+ call ada#Map_Menu (
+ \'Highlight.Toggle Lines Errors',
+ \ ':AdaLines',
+ \'call ada#Switch_Syntax_Option (''line_errors'')')
+ call ada#Map_Menu (
+ \'Highlight.Toggle Rainbow Color',
+ \ ':AdaRainbow',
+ \'call ada#Switch_Syntax_Option (''rainbow_color'')')
+ call ada#Map_Menu (
+ \'Highlight.Toggle Standard Types',
+ \ ':AdaTypes',
+ \'call ada#Switch_Syntax_Option (''standard_types'')')
+endif
" 1}}}
" Reset cpoptions
diff --git a/runtime/ftplugin/asm.vim b/runtime/ftplugin/asm.vim
new file mode 100644
index 0000000000..0914bf634a
--- /dev/null
+++ b/runtime/ftplugin/asm.vim
@@ -0,0 +1,11 @@
+" Vim filetype plugin file
+" Language: asm
+" Maintainer: Colin Caine <cmcaine at the common googlemail domain>
+" Last Changed: 23 May 2020
+
+if exists("b:did_ftplugin") | finish | endif
+
+setl comments=:;,s1:/*,mb:*,ex:*/,://
+setl commentstring=;%s
+
+let b:did_ftplugin = 1
diff --git a/runtime/ftplugin/awk.vim b/runtime/ftplugin/awk.vim
index dcefc85ec3..1bca3ad3cf 100644
--- a/runtime/ftplugin/awk.vim
+++ b/runtime/ftplugin/awk.vim
@@ -1,9 +1,11 @@
" Vim filetype plugin
-" Language: awk, nawk, gawk, mawk
-" Maintainer: Antonio Colombo <azc100@gmail.com>
-" Last Change: 2017 Feb 17
+" Language: awk, nawk, gawk, mawk
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
+" Last Change: 2020 Sep 28
" This plugin was prepared by Mark Sikora
+" This plugin was updated as proposed by Doug Kearns
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -13,6 +15,42 @@ endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
-let b:undo_ftplugin = "setl commentstring<"
+let s:cpo_save = &cpo
+set cpo&vim
+setlocal comments=:#
setlocal commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+setlocal define=function
+setlocal suffixesadd+=.awk
+
+let b:undo_ftplugin = "setl fo< com< cms< def< sua<" .
+ \ " | unlet! b:browsefilter"
+
+" TODO: set this in scripts.vim?
+if exists("g:awk_is_gawk")
+ setlocal include=@include
+ setlocal suffixesadd+=.gawk
+ if has("unix") || has("win32unix")
+ setlocal formatprg=gawk\ -f-\ -o/dev/stdout
+ let b:undo_ftplugin .= " | setl fp<"
+ endif
+
+ let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'")
+ let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd
+ let path = substitute(path, ':', ',', 'g')
+
+ let &l:path = path
+ let b:undo_ftplugin .= " | setl inc< path<"
+endif
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Awk Source Files (*.awk,*.gawk)\t*.awk;*.gawk\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8
diff --git a/runtime/ftplugin/bash.vim b/runtime/ftplugin/bash.vim
index a3d01fc2ad..7bd9787b6c 100644
--- a/runtime/ftplugin/bash.vim
+++ b/runtime/ftplugin/bash.vim
@@ -11,21 +11,10 @@ if exists("b:did_ftplugin")
finish
endif
+unlet! b:is_sh
+unlet! b:is_kornshell
let b:is_bash = 1
-if exists("b:is_sh")
- unlet b:is_sh
-endif
-if exists("b:is_kornshell")
- unlet b:is_kornshell
-endif
-" Setting 'filetype' here directly won't work, since we are being invoked
-" through an autocommand. Do it later, on the BufWinEnter event.
-augroup bash_filetype
- au BufWinEnter * call SetBashFt()
-augroup END
+runtime! ftplugin/sh.vim ftplugin/sh_*.vim ftplugin/sh/*.vim
-func SetBashFt()
- au! bash_filetype
- set ft=sh
-endfunc
+" vim: ts=8
diff --git a/runtime/ftplugin/basic.vim b/runtime/ftplugin/basic.vim
new file mode 100644
index 0000000000..c6ec254dfc
--- /dev/null
+++ b/runtime/ftplugin/basic.vim
@@ -0,0 +1,27 @@
+" Vim filetype plugin file
+" Language: BASIC
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2015 Jan 10
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=:REM,:'
+setlocal commentstring='\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "BASIC Source Files (*.bas)\t*.bas\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms< sua<" .
+ \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/ftplugin/bzl.vim b/runtime/ftplugin/bzl.vim
index 0296b0c0b8..8ab876e9d6 100644
--- a/runtime/ftplugin/bzl.vim
+++ b/runtime/ftplugin/bzl.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Bazel (http://bazel.io)
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
-" Last Change: 2015 Aug 11
+" Last Change: 2021 Jan 19
""
" @section Introduction, intro
@@ -51,6 +51,8 @@ if get(g:, 'ft_bzl_fold', 0)
endif
if exists('*BzlFoldText')
+ let &cpo = s:save_cpo
+ unlet s:save_cpo
finish
endif
diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim
index 6047f9f863..00937c2383 100644
--- a/runtime/ftplugin/c.vim
+++ b/runtime/ftplugin/c.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2017 Sep 28
+" Last Change: 2020 Feb 01
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -15,12 +15,16 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo-=C
-let b:undo_ftplugin = "setl fo< com< ofu<"
+let b:undo_ftplugin = "setl fo< com< ofu< cms< def< inc<"
" 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
+" These options have the right value as default, but the user may have
+" overruled that.
+setlocal commentstring& define& include&
+
" Set completion with CTRL-X CTRL-O to autoloaded function.
if exists('&ofu')
setlocal ofu=ccomplete#Complete
diff --git a/runtime/ftplugin/clojure.vim b/runtime/ftplugin/clojure.vim
index 217711f26e..cb75506dbb 100644
--- a/runtime/ftplugin/clojure.vim
+++ b/runtime/ftplugin/clojure.vim
@@ -1,11 +1,11 @@
" Vim filetype plugin file
-" Language: Clojure
-" Author: Meikel Brandmeyer <mb@kotka.de>
-"
-" Maintainer: Sung Pae <self@sungpae.com>
-" URL: https://github.com/guns/vim-clojure-static
-" License: Same as Vim
-" Last Change: 18 July 2016
+" Language: Clojure
+" Maintainer: Alex Vear <av@axvr.io>
+" Former Maintainers: Sung Pae <self@sungpae.com>
+" Meikel Brandmeyer <mb@kotka.de>
+" URL: https://github.com/clojure-vim/clojure.vim
+" License: Vim (see :h license)
+" Last Change: 2021-02-13
if exists("b:did_ftplugin")
finish
@@ -43,7 +43,7 @@ setlocal commentstring=;\ %s
" specially and hence are not indented specially.
"
" -*- LISPWORDS -*-
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/f8594e7030cdfb0b7990ac92953c77a08a7220f0/clj/src/vim_clojure_static/generate.clj
setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
" Provide insert mode completions for special forms and clojure.core. As
@@ -57,21 +57,6 @@ for s:setting in ['omnifunc', 'completefunc']
endif
endfor
-" Take all directories of the CLOJURE_SOURCE_DIRS environment variable
-" and add them to the path option.
-"
-" This is a legacy option for VimClojure users.
-if exists('$CLOJURE_SOURCE_DIRS')
- for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':')
- let s:dir = fnameescape(s:dir)
- " Whitespace escaping for Windows
- let s:dir = substitute(s:dir, '\', '\\\\', 'g')
- let s:dir = substitute(s:dir, '\ ', '\\ ', 'g')
- execute "setlocal path+=" . s:dir . "/**"
- endfor
- let b:undo_ftplugin .= ' | setlocal path<'
-endif
-
" Skip brackets in ignored syntax regions when using the % command
if exists('loaded_matchit')
let b:match_words = &matchpairs
diff --git a/runtime/ftplugin/cobol.vim b/runtime/ftplugin/cobol.vim
index d96a1bf281..ec1e95456d 100644
--- a/runtime/ftplugin/cobol.vim
+++ b/runtime/ftplugin/cobol.vim
@@ -2,7 +2,7 @@
" Language: cobol
" Maintainer: Ankit Jain <ajatkj@yahoo.co.in>
" (formerly Tim Pope <vimNOSPAM@tpope.info>)
-" Last Update: By Ankit Jain (changed maintainer) on 22.03.2019
+" Last Update: By Ankit Jain (add gtk support) on 15.08.2020
" Insert mode mappings: <C-T> <C-D> <Tab>
" Normal mode mappings: < > << >> [[ ]] [] ][
@@ -37,7 +37,8 @@ if exists("loaded_matchit")
\ '-\@<!\<\%(delete\|rewrite\|start\|write\|read\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>:\<end-\%(delete\|rewrite\|start\|write\|read\)\>' .s:ordot
endif
-if has("gui_win32") && !exists("b:browsefilter")
+" add gtk support
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n".
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/cpp.vim b/runtime/ftplugin/cpp.vim
index 8c3f211da8..f9d31cbec3 100644
--- a/runtime/ftplugin/cpp.vim
+++ b/runtime/ftplugin/cpp.vim
@@ -1,12 +1,17 @@
" Vim filetype plugin file
" Language: C++
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2001 Jan 15
+" Last Change: 2020 Jul 26
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
-" Behaves just like C
+" Behaves mostly just like C
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim
+
+" C++ uses templates with <things>
+" Disabled, because it gives an error for typing an unmatched ">".
+" set matchpairs+=<:>
+" let b:undo_ftplugin ..= ' | setl matchpairs<'
diff --git a/runtime/ftplugin/css.vim b/runtime/ftplugin/css.vim
index ea4424418c..ece2def4ee 100644
--- a/runtime/ftplugin/css.vim
+++ b/runtime/ftplugin/css.vim
@@ -1,7 +1,8 @@
" Vim filetype plugin file
-" Language: CSS
-" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2008-07-09
+" Language: CSS
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Last Change: 2020 Dec 21
if exists("b:did_ftplugin")
finish
@@ -11,11 +12,12 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
-let b:undo_ftplugin = "setl com< cms< inc< fo< ofu<"
+let b:undo_ftplugin = "setl com< cms< inc< fo< ofu< isk<"
setlocal comments=s1:/*,mb:*,ex:*/ commentstring&
setlocal formatoptions-=t formatoptions+=croql
setlocal omnifunc=csscomplete#CompleteCSS
+setlocal iskeyword+=-
let &l:include = '^\s*@import\s\+\%(url(\)\='
diff --git a/runtime/ftplugin/diff.vim b/runtime/ftplugin/diff.vim
index 3fe1b84a04..0464290475 100644
--- a/runtime/ftplugin/diff.vim
+++ b/runtime/ftplugin/diff.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Diff
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Jul 27
+" Last Change: 2020 Jul 18
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -13,3 +13,6 @@ let b:undo_ftplugin = "setl modeline<"
" Don't use modelines in a diff, they apply to the diffed file
setlocal nomodeline
+
+" If there are comments they start with #
+let &commentstring = "# %s"
diff --git a/runtime/ftplugin/dosbatch.vim b/runtime/ftplugin/dosbatch.vim
index 070bdc4ba2..0c5cde2503 100644
--- a/runtime/ftplugin/dosbatch.vim
+++ b/runtime/ftplugin/dosbatch.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: MS-DOS .bat files
" Maintainer: Mike Williams <mrw@eandem.co.uk>
-" Last Change: 14th April 2019
+" Last Change: 7th May 2020
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -19,12 +19,21 @@ setlocal comments=b:rem,b:@rem,b:REM,b:@REM,:::
setlocal commentstring=::\ %s
setlocal formatoptions-=t formatoptions+=rol
+" Lookup DOS keywords using Windows command help.
+if executable('help.exe')
+ if has('terminal')
+ setlocal keywordprg=:term\ help.exe
+ else
+ setlocal keywordprg=help.exe
+ endif
+endif
+
" Define patterns for the browse file filter
if has("gui_win32") && !exists("b:browsefilter")
let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n"
endif
-let b:undo_ftplugin = "setlocal comments< formatoptions<"
+let b:undo_ftplugin = "setlocal comments< formatoptions< keywordprg<"
\ . "| unlet! b:browsefiler"
let &cpo = s:cpo_save
diff --git a/runtime/ftplugin/dune.vim b/runtime/ftplugin/dune.vim
index 8b1f8b4125..86c99c097f 100644
--- a/runtime/ftplugin/dune.vim
+++ b/runtime/ftplugin/dune.vim
@@ -1,7 +1,7 @@
" Language: Dune buildsystem
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" Anton Kochkov <anton.kochkov@gmail.com>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2018 Nov 3 - Added commentstring (Markus Mottl)
" 2017 Sep 6 - Initial version (Etienne Millon)
diff --git a/runtime/ftplugin/erlang.vim b/runtime/ftplugin/erlang.vim
index 2bbc345b43..c775247f51 100644
--- a/runtime/ftplugin/erlang.vim
+++ b/runtime/ftplugin/erlang.vim
@@ -1,87 +1,83 @@
" Vim ftplugin file
-" Language: Erlang
-" Author: Oscar Hellstrm <oscar@oscarh.net>
-" Contributors: Ricardo Catalinas Jimnez <jimenezrick@gmail.com>
+" Language: Erlang (http://www.erlang.org)
+" Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
+" Author: Oscar Hellström <oscar@oscarh.net>
+" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
" Eduardo Lopez (http://github.com/tapichu)
+" Arvid Bjurklint (http://github.com/slarwise)
+" Last Update: 2021-Jan-08
" License: Vim license
-" Version: 2012/01/25
+" URL: https://github.com/vim-erlang/vim-erlang-runtime
if exists('b:did_ftplugin')
- finish
-else
- let b:did_ftplugin = 1
-endif
-
-if exists('s:did_function_definitions')
- call s:SetErlangOptions()
- finish
-else
- let s:did_function_definitions = 1
+ finish
endif
+let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
-if !exists('g:erlang_keywordprg')
- let g:erlang_keywordprg = 'erl -man'
-endif
+let &l:keywordprg = get(g:, 'erlang_keywordprg', 'erl -man')
-if !exists('g:erlang_folding')
- let g:erlang_folding = 0
+if get(g:, 'erlang_folding', 0)
+ setlocal foldmethod=expr
+ setlocal foldexpr=GetErlangFold(v:lnum)
+ setlocal foldtext=ErlangFoldText()
endif
-let s:erlang_fun_begin = '^\a\w*(.*$'
-let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
-
-function s:SetErlangOptions()
- if g:erlang_folding
- setlocal foldmethod=expr
- setlocal foldexpr=GetErlangFold(v:lnum)
- setlocal foldtext=ErlangFoldText()
- endif
+setlocal comments=:%%%,:%%,:%
+setlocal commentstring=%%s
- setlocal comments=:%%%,:%%,:%
- setlocal commentstring=%%s
+setlocal formatoptions+=ro
- setlocal formatoptions+=ro
- let &l:keywordprg = g:erlang_keywordprg
-endfunction
+setlocal suffixesadd=.erl,.hrl
-function GetErlangFold(lnum)
- let lnum = a:lnum
- let line = getline(lnum)
+let &l:include = '^\s*-\%(include\|include_lib\)\s*("\zs\f*\ze")'
+let &l:define = '^\s*-\%(define\|record\|type\|opaque\)'
- if line =~ s:erlang_fun_end
- return '<1'
- endif
+let s:erlang_fun_begin = '^\a\w*(.*$'
+let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
- if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
- return '1'
- endif
+if !exists('*GetErlangFold')
+ function GetErlangFold(lnum)
+ let lnum = a:lnum
+ let line = getline(lnum)
- if line =~ s:erlang_fun_begin
- return '>1'
- endif
+ if line =~ s:erlang_fun_end
+ return '<1'
+ endif
- return '='
-endfunction
+ if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
+ return '1'
+ endif
-function ErlangFoldText()
- let line = getline(v:foldstart)
- let foldlen = v:foldend - v:foldstart + 1
- let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
- if foldlen < 10
- let lines = ' ' . lines
- endif
- let retval = '+' . v:folddashes . lines
+ if line =~ s:erlang_fun_begin
+ return '>1'
+ endif
- return retval
-endfunction
+ return '='
+ endfunction
+endif
-call s:SetErlangOptions()
+if !exists('*ErlangFoldText')
+ function ErlangFoldText()
+ let line = getline(v:foldstart)
+ let foldlen = v:foldend - v:foldstart + 1
+ let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
+ if foldlen < 10
+ let lines = ' ' . lines
+ endif
+ let retval = '+' . v:folddashes . lines
+
+ return retval
+ endfunction
+endif
-let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<"
- \ . " comments< commentstring< formatoptions<"
+let b:undo_ftplugin = "setlocal keywordprg< foldmethod< foldexpr< foldtext<"
+ \ . " comments< commentstring< formatoptions< suffixesadd< include<"
+ \ . " define<"
let &cpo = s:cpo_save
unlet s:cpo_save
+
+" vim: sw=2 et
diff --git a/runtime/ftplugin/falcon.vim b/runtime/ftplugin/falcon.vim
index 4fc135b4a1..affca38481 100644
--- a/runtime/ftplugin/falcon.vim
+++ b/runtime/ftplugin/falcon.vim
@@ -3,6 +3,7 @@
" Author: Steven Oliver <oliver.steven@gmail.com>
" Copyright: Copyright (c) 2009-2013 Steven Oliver
" License: You may redistribute this under the same terms as Vim itself
+" Last Update: 2020 Oct 10
" --------------------------------------------------------------------------
" Only do this when not done yet for this buffer
@@ -14,7 +15,7 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
-setlocal softtabstop=4 shiftwidth=4 fileencoding=utf-8
+setlocal softtabstop=4 shiftwidth=4
setlocal suffixesadd=.fal,.ftd
" Matchit support
diff --git a/runtime/ftplugin/fortran.vim b/runtime/ftplugin/fortran.vim
index 5d42409fd4..26dc90a184 100644
--- a/runtime/ftplugin/fortran.vim
+++ b/runtime/ftplugin/fortran.vim
@@ -1,12 +1,13 @@
" Vim settings file
" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, 77, 66)
-" Version: 0.50
-" Last Change: 2015 Nov. 30
+" Version: (v53) 2021 April 06
" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
" Usage: For instructions, do :help fortran-plugin from Vim
" Credits:
-" Useful suggestions were made by Stefano Zacchiroli, Hendrik Merx, Ben
-" Fritz, and David Barnett.
+" Version 0.1 was created in September 2000 by Ajit Thakkar.
+" Since then, useful suggestions and contributions have been made, in order, by:
+" Stefano Zacchiroli, Hendrik Merx, Ben Fritz, David Barnett, Eisuke Kawashima,
+" Doug Kearns, and Fritz Reese.
" Only do these settings when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -31,10 +32,10 @@ if !exists("b:fortran_fixed_source")
elseif exists("fortran_fixed_source")
" User guarantees fixed source form
let b:fortran_fixed_source = 1
- elseif expand("%:e") ==? "f\<90\|95\|03\|08\>"
+ elseif expand("%:e") =~? '^f\%(90\|95\|03\|08\)$'
" Free-form file extension defaults as in Intel ifort, gcc(gfortran), NAG, Pathscale, and Cray compilers
let b:fortran_fixed_source = 0
- elseif expand("%:e") ==? "f\|f77\|for"
+ elseif expand("%:e") =~? '^\%(f\|f77\|for\)$'
" Fixed-form file extension defaults
let b:fortran_fixed_source = 1
else
@@ -65,12 +66,19 @@ endif
" Set comments and textwidth according to source type
if (b:fortran_fixed_source == 1)
setlocal comments=:!,:*,:C
- " Fixed format requires a textwidth of 72 for code
- setlocal tw=72
+ " Fixed format requires a textwidth of 72 for code,
+ " but some vendor extensions allow longer lines
+ if exists("fortran_extended_line_length")
+ setlocal tw=132
+ elseif exists("fortran_cardimage_line_length")
+ setlocal tw=80
+ else
+ setlocal tw=72
" If you need to add "&" on continued lines so that the code is
" compatible with both free and fixed format, then you should do so
" in column 73 and uncomment the next line
" setlocal tw=73
+ endif
else
setlocal comments=:!
" Free format allows a textwidth of 132
@@ -118,7 +126,7 @@ if !exists("b:match_words")
endif
" File filters for :browse e
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Fortran Files (*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn)\t*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn\n" .
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/fpcmake.vim b/runtime/ftplugin/fpcmake.vim
new file mode 100644
index 0000000000..8d950838c7
--- /dev/null
+++ b/runtime/ftplugin/fpcmake.vim
@@ -0,0 +1,25 @@
+" Vim filetype plugin file
+" Language: Free Pascal Makefile Generator
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 Apr 23
+
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+runtime! ftplugin/make.vim
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Free Pascal Makefile Definition Files (*.fpc)\t*.fpc\n" ..
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = b:undo_ftplugin .. " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/framescript.vim b/runtime/ftplugin/framescript.vim
index 48fe0ace7c..66802cad0d 100644
--- a/runtime/ftplugin/framescript.vim
+++ b/runtime/ftplugin/framescript.vim
@@ -3,14 +3,14 @@
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-19
-let s:cpo_save = &cpo
-set cpo&vim
-
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
+let s:cpo_save = &cpo
+set cpo&vim
+
let b:undo_ftplugin = "setl com< cms< fo< inc< | unlet! b:matchwords"
setlocal comments=s1:/*,mb:*,ex:*/,:// commentstring=/*\ %s\ */
diff --git a/runtime/ftplugin/freebasic.vim b/runtime/ftplugin/freebasic.vim
new file mode 100644
index 0000000000..a2bb459f20
--- /dev/null
+++ b/runtime/ftplugin/freebasic.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language: FreeBasic
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2015 Jan 10
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+runtime! ftplugin/basic.vim
+
+" vim: ts=8
diff --git a/runtime/ftplugin/fstab.vim b/runtime/ftplugin/fstab.vim
new file mode 100644
index 0000000000..99805322cd
--- /dev/null
+++ b/runtime/ftplugin/fstab.vim
@@ -0,0 +1,19 @@
+" Vim ftplugin file
+" Language: fstab file
+" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
+" URL: https://raw.github.com/rid9/vim-fstab/master/ftplugin/fstab.vim
+" Last Change: 2021 Jan 02
+" Version: 1.0
+"
+" Credits:
+" Subhaditya Nath <sn03.general@gmail.com>
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal commentstring=#%s
+let b:undo_ftplugin = "setlocal commentstring<"
+
+" vim: ts=8 ft=vim
diff --git a/runtime/ftplugin/git.vim b/runtime/ftplugin/git.vim
index b3d5cff804..75b20f021e 100644
--- a/runtime/ftplugin/git.vim
+++ b/runtime/ftplugin/git.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
@@ -10,7 +10,7 @@ endif
let b:did_ftplugin = 1
if !exists('b:git_dir')
- if expand('%:p') =~# '[\/]\.git[\/]modules[\/]'
+ if expand('%:p') =~# '[\/]\.git[\/]modules[\/]\|:[\/][\/]\|^\a\a\+:'
" Stay out of the way
elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')
diff --git a/runtime/ftplugin/gprof.vim b/runtime/ftplugin/gprof.vim
index 750751c372..d4547ae9a6 100644
--- a/runtime/ftplugin/gprof.vim
+++ b/runtime/ftplugin/gprof.vim
@@ -1,6 +1,6 @@
" Language: gprof
" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
-" Last Change: 2013 Jun 09
+" Last Change: 2021 Apr 08
" When cursor is on one line of the gprof call graph,
" calling this function jumps to this function in the call graph.
@@ -16,7 +16,7 @@ fun! <SID>GprofJumpToFunctionIndex()
norm! $y%
call search('^' . escape(@", '[]'), 'sw')
norm! zz
- elseif l:line =~ '^\(\s\+[0-9\.]\+\)\{3}\s\+'
+ elseif l:line =~ '^\(\s*[0-9\.]\+\)\{3}\s\+'
" We're in line in the flat profile.
norm! 55|eby$
call search('^\[\d\+\].*\d\s\+' . escape(@", '[]*.') . '\>', 'sW')
diff --git a/runtime/ftplugin/haml.vim b/runtime/ftplugin/haml.vim
index e74530b556..6f30169958 100644
--- a/runtime/ftplugin/haml.vim
+++ b/runtime/ftplugin/haml.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -37,6 +37,8 @@ endif
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
let b:did_ftplugin = 1
+let &l:define .= empty(&l:define ? '' : '\|') . '^\s*\%(%\w*\)\=\%(\.[[:alnum:]_-]\+\)*#'
+
" Combine the new set of values with those previously included.
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
@@ -60,7 +62,7 @@ endif
setlocal comments= commentstring=-#\ %s
-let b:undo_ftplugin = "setl cms< com< "
+let b:undo_ftplugin = "setl def< cms< com< "
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
let &cpo = s:save_cpo
diff --git a/runtime/ftplugin/hamster.vim b/runtime/ftplugin/hamster.vim
index 6c0630fe04..5446e72286 100644
--- a/runtime/ftplugin/hamster.vim
+++ b/runtime/ftplugin/hamster.vim
@@ -2,7 +2,7 @@
" Language: Hamster Script
" Version: 2.0.6.0
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
-" Last Change: 2017 Mar 18
+" Last Change: 2021 Jan 19
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -57,6 +57,9 @@ if exists("loaded_matchit")
endif
setlocal ignorecase
+
let &cpo = s:cpo_save
unlet s:cpo_save
-setlocal cpo+=M " makes \%( match \)
+
+" Disabled, 'cpo' is a global option.
+" setlocal cpo+=M " makes \%( match \)
diff --git a/runtime/ftplugin/j.vim b/runtime/ftplugin/j.vim
index 9dc1692534..3cd0cb8e2b 100644
--- a/runtime/ftplugin/j.vim
+++ b/runtime/ftplugin/j.vim
@@ -1,8 +1,8 @@
" Vim filetype plugin
" Language: J
-" Maintainer: David Bürgin <676c7473@gmail.com>
-" URL: https://github.com/glts/vim-j
-" Last Change: 2015-09-27
+" Maintainer: David Bürgin <dbuergin@gluet.ch>
+" URL: https://gitlab.com/glts/vim-j
+" Last Change: 2015-10-27
if exists('b:did_ftplugin')
finish
@@ -25,7 +25,7 @@ setlocal include=\\v^\\s*(load\|require)\\s*'\\zs\\f+\\ze'
setlocal includeexpr=substitute(substitute(tr(v:fname,'\\','/'),'\\v^[^~][^/.]*(/[^/.]+)$','&\\1',''),'\\v^\\~[^/]+/','','')
setlocal suffixesadd=.ijs
-let b:undo_ftplugin = 'setlocal matchpairs< formatoptions< commentstring< comments< iskeyword< path< include< includeexpr< suffixesadd<'
+let b:undo_ftplugin = 'setlocal suffixesadd< includeexpr< include< path< matchpairs< formatoptions< commentstring< comments< iskeyword<'
" Section movement with ]] ][ [[ []. The start/end patterns below are amended
" inside the function in order to avoid matching on the current cursor line.
diff --git a/runtime/ftplugin/jproperties.vim b/runtime/ftplugin/jproperties.vim
index 5bdd8a7cf3..c0e7800058 100644
--- a/runtime/ftplugin/jproperties.vim
+++ b/runtime/ftplugin/jproperties.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Java properties file
-" Maintainer: David Bürgin <676c7473@gmail.com>
-" Last Change: 2013-11-19
+" Maintainer: None
+" Last Change: 2019 Dec 01
if exists("b:did_ftplugin")
finish
diff --git a/runtime/ftplugin/lisp.vim b/runtime/ftplugin/lisp.vim
index 130f30b146..db3ac96631 100644
--- a/runtime/ftplugin/lisp.vim
+++ b/runtime/ftplugin/lisp.vim
@@ -4,7 +4,7 @@
" URL: http://sites.google.com/site/khorser/opensource/vim
" Original author: Dorai Sitaram <ds26@gte.com>
" Original URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
-" Last Change: Oct 23, 2013
+" Last Change: Mar 10, 2021
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -14,13 +14,11 @@ endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
-setl comments=:;
+setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,mb:\|,ex:\|#
setl define=^\\s*(def\\k*
setl formatoptions-=t
setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94
setl lisp
setl commentstring=;%s
-setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|#
-
let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lisp< commentstring<"
diff --git a/runtime/ftplugin/m3build.vim b/runtime/ftplugin/m3build.vim
new file mode 100644
index 0000000000..9e1e169d38
--- /dev/null
+++ b/runtime/ftplugin/m3build.vim
@@ -0,0 +1,24 @@
+" Vim filetype plugin file
+" Language: Modula-3 Makefile
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 April 15
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+runtime! ftplugin/m3quake.vim
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Modula-3 Makefile (m3makefile m3overrides)\tm3makefile;m3overrides\n" ..
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/m3quake.vim b/runtime/ftplugin/m3quake.vim
new file mode 100644
index 0000000000..627aabdc3e
--- /dev/null
+++ b/runtime/ftplugin/m3quake.vim
@@ -0,0 +1,33 @@
+" Vim filetype plugin file
+" Language: Modula-3 Quake
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 April 15
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=s1:/*,mb:*,ex:*/,:%
+setlocal commentstring=%\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+if exists("loaded_matchit") && !exists("b:match_words")
+ let b:match_words = '\<\%(proc\|if\|foreach\)\>:\<else\>:\<end\>'
+endif
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Modula-3 Quake Source Files (*.quake)\t*.quake\n" ..
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms< " ..
+ \ "| unlet! b:browsefilter b:match_words"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/make.vim b/runtime/ftplugin/make.vim
index bfa8703082..168bc38eb3 100644
--- a/runtime/ftplugin/make.vim
+++ b/runtime/ftplugin/make.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Make
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2019 Apr 02
+" Last Change: 2020 Oct 16
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -9,10 +9,10 @@ if exists("b:did_ftplugin")
endif
let b:did_ftplugin = 1
-let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<"
+let b:undo_ftplugin = "setl et< sts< sw< fo< com< cms< inc<"
" Make sure a hard tab is used, required for most make programs
-setlocal noexpandtab softtabstop=0
+setlocal noexpandtab softtabstop=0 shiftwidth=0
" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
diff --git a/runtime/ftplugin/masm.vim b/runtime/ftplugin/masm.vim
new file mode 100644
index 0000000000..235469ac32
--- /dev/null
+++ b/runtime/ftplugin/masm.vim
@@ -0,0 +1,19 @@
+" Vim filetype plugin file
+" Language: Microsoft Macro Assembler (80x86)
+" Maintainer: Wu Yongwei <wuyongwei@gmail.com>
+" Last Change: 2020-05-09 23:02:05 +0800
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let b:undo_ftplugin = "setl iskeyword<"
+
+setlocal iskeyword=@,48-57,_,36,60,62,63,@-@
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/ftplugin/matlab.vim b/runtime/ftplugin/matlab.vim
index 205111c3c2..a1a282f19e 100644
--- a/runtime/ftplugin/matlab.vim
+++ b/runtime/ftplugin/matlab.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: matlab
" Maintainer: Jake Wasserman <jwasserman at gmail dot com>
-" Last Changed: 2014 Dec 30
+" Last Change: 2019 Sep 27
" Contributors:
" Charles Campbell
@@ -24,8 +24,9 @@ endif
setlocal suffixesadd=.m
setlocal suffixes+=.asv
+setlocal commentstring=%\ %s
-let b:undo_ftplugin = "setlocal suffixesadd< suffixes< "
+let b:undo_ftplugin = "setlocal suffixesadd< suffixes< commentstring< "
\ . "| unlet! b:match_words"
let &cpo = s:save_cpo
diff --git a/runtime/ftplugin/meson.vim b/runtime/ftplugin/meson.vim
new file mode 100644
index 0000000000..e432ebf196
--- /dev/null
+++ b/runtime/ftplugin/meson.vim
@@ -0,0 +1,19 @@
+" Vim filetype plugin file
+" Language: meson
+" License: VIM License
+" Original Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+" Last Change: 2018 Nov 27
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+setlocal commentstring=#\ %s
+setlocal comments=:#
+
+setlocal shiftwidth=2
+setlocal softtabstop=2
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/ftplugin/modula2.vim b/runtime/ftplugin/modula2.vim
new file mode 100644
index 0000000000..1d0e81ee70
--- /dev/null
+++ b/runtime/ftplugin/modula2.vim
@@ -0,0 +1,39 @@
+" Vim filetype plugin file
+" Language: Modula-2
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 Apr 08
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=s0:(*,mb:\ ,ex:*)
+setlocal commentstring=(*%s*)
+setlocal formatoptions-=t formatoptions+=croql
+
+if exists("loaded_matchit") && !exists("b:match_words")
+ " The second branch of the middle pattern is intended to match CASE labels
+ let b:match_words = '\<REPEAT\>:\<UNTIL\>,' ..
+ \ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOOP\|WHILE\|WITH\)\>' ..
+ \ ':' ..
+ \ '\<\%(ELSIF\|ELSE\)\>\|\%(^\s*\)\@<=\w\+\%(\s*\,\s*\w\+\)\=\s*\:=\@!' ..
+ \ ':' ..
+ \ '\<END\>'
+endif
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Modula-2 Source Files (*.def *.mod)\t*.def;*.mod\n" ..
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl com< cms< fo< " ..
+ \ "| unlet! b:browsefilter b:match_words"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/modula3.vim b/runtime/ftplugin/modula3.vim
new file mode 100644
index 0000000000..fc9eb57949
--- /dev/null
+++ b/runtime/ftplugin/modula3.vim
@@ -0,0 +1,38 @@
+" Vim filetype plugin file
+" Language: Modula-3
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 Apr 08
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=s0:(*,mb:\ ,ex:*)
+setlocal commentstring=(*%s*)
+setlocal formatoptions-=t formatoptions+=croql
+
+if exists("loaded_matchit") && !exists("b:match_words")
+ let b:match_words = '\<REPEAT\>:\<UNTIL\>,' ..
+ \ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOCK\|LOOP\|TRY\|TYPECASE\|WHILE\|WITH\)\>' ..
+ \ ':' ..
+ \ '\<\%(ELSIF\|ELSE\|EXCEPT\|FINALLY\)\>\|\%(^\s*\)\@<=\S.*=>' ..
+ \ ':' ..
+ \ '\<END\>'
+endif
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Modula-3 Source Files (*.m3)\t*.m3\n" ..
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl com< cms< fo< " ..
+ \ "| unlet! b:browsefilter b:match_words"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/nroff.vim b/runtime/ftplugin/nroff.vim
index 069c02e59a..cf62d02daa 100644
--- a/runtime/ftplugin/nroff.vim
+++ b/runtime/ftplugin/nroff.vim
@@ -1,7 +1,9 @@
" Vim filetype plugin
" Language: roff(7)
-" Maintainer: Chris Spiegel <cspiegel@gmail.com>
-" Last Change: 2019 Apr 24
+" Maintainer: Aman Verma
+" Homepage: https://github.com/a-vrma/vim-nroff-ftplugin
+" Previous Maintainer: Chris Spiegel <cspiegel@gmail.com>
+" Last Change: 2020 Nov 21
if exists("b:did_ftplugin")
finish
@@ -9,3 +11,7 @@ endif
let b:did_ftplugin = 1
setlocal commentstring=.\\\"%s
+setlocal comments=:.\\\"
+setlocal sections+=Sh
+
+let b:undo_ftplugin = 'setlocal commentstring< comments< sections<'
diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim
index d9336421cf..8a628604fa 100644
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -5,7 +5,7 @@
" Pierre Vittet <pierre-vittet@pvittet.com>
" Stefano Zacchiroli <zack@bononia.it>
" Vincent Aravantinos <firstname.name@imag.fr>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2013 Oct 27 - Added commentstring (MM)
" 2013 Jul 26 - load default compiler settings (MM)
@@ -38,7 +38,8 @@ let s:cposet=&cpoptions
set cpo&vim
" Comment string
-setlocal comments=
+setlocal comments=sr:(*\ ,mb:\ ,ex:*)
+setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal commentstring=(*%s*)
" Add mappings, unless the user didn't want this.
@@ -158,6 +159,8 @@ let b:undo_ftplugin = "setlocal efm< foldmethod< foldexpr<"
" - Only definitions below, executed once -------------------------------------
if exists("*OMLetFoldLevel")
+ let &cpoptions = s:cposet
+ unlet s:cposet
finish
endif
@@ -391,8 +394,8 @@ endfunction
endif
endfun
- " This variable contain a dictionnary of list. Each element of the dictionnary
- " represent an annotation system. An annotation system is a list with:
+ " This variable contains a dictionary of lists. Each element of the dictionary
+ " represents an annotation system. An annotation system is a list with:
" - annotation file name as its key
" - annotation file path as first element of the contained list
" - build path as second element of the contained list
@@ -521,7 +524,7 @@ endfunction
"c. link this stuff with what the user wants
" ie. get the expression selected/under the cursor
- let s:ocaml_word_char = '\w|[-]|'''
+ let s:ocaml_word_char = '\w|[\xc0-\xff]|'''
"In: the current mode (eg. "visual", "normal", etc.)
"Out: the borders of the expression we are looking for the type
@@ -634,7 +637,7 @@ endfunction
nnoremap <silent> <Plug>OCamlPrintType :<C-U>call Ocaml_print_type("normal")<CR>
xnoremap <silent> <Plug>OCamlPrintType :<C-U>call Ocaml_print_type("visual")<CR>`<
-let &cpoptions=s:cposet
+let &cpoptions = s:cposet
unlet s:cposet
" vim:sw=2 fdm=indent
diff --git a/runtime/ftplugin/pascal.vim b/runtime/ftplugin/pascal.vim
index 5ff18b9601..2de92563ae 100644
--- a/runtime/ftplugin/pascal.vim
+++ b/runtime/ftplugin/pascal.vim
@@ -1,20 +1,50 @@
" Vim filetype plugin file
-" Language: pascal
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
-" Last Changed: 11 Apr 2011
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
+" Language: Pascal
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Change: 2021 Apr 23
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
+let s:cpo_save = &cpo
+set cpo&vim
+
+set comments=s:(*,m:\ ,e:*),s:{,m:\ ,e:}
+set commentstring={%s}
+
+if exists("pascal_delphi")
+ set comments+=:///
+endif
+
+if !exists("pascal_traditional")
+ set commentstring=//\ %s
+ set comments+=://
+endif
+
+setlocal formatoptions-=t formatoptions+=croql
+
if exists("loaded_matchit")
- let b:match_ignorecase = 1 " (pascal is case-insensitive)
+ let b:match_ignorecase = 1 " (Pascal is case-insensitive)
+
+ let b:match_words = '\<\%(asm\|begin\|case\|\%(\%(=\|packed\)\s*\)\@<=\%(class\|object\)\|\%(=\s*\)\@<=interface\|record\|try\)\>'
+ let b:match_words .= ':\%(^\s*\)\@<=\%(except\|finally\|else\|otherwise\)\>'
+ let b:match_words .= ':\<end\>\.\@!'
+
+ let b:match_words .= ',\<repeat\>:\<until\>'
+ " let b:match_words .= ',\<if\>:\<else\>' " FIXME - else clashing with middle else. It seems like a debatable use anyway.
+ let b:match_words .= ',\<unit\>:\<\%(\%(^\s*\)\@<=interface\|implementation\|initialization\|finalization\)\>:\<end\.'
+endif
- let b:match_words = '\<\%(begin\|case\|record\|object\|try\)\>'
- let b:match_words .= ':\<^\s*\%(except\|finally\)\>:\<end\>'
- let b:match_words .= ',\<repeat\>:\<until\>'
- let b:match_words .= ',\<if\>:\<else\>'
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Pascal Source Files (*.pas *.pp *.inc)\t*.pas;*.pp;*.inc\n" .
+ \ "All Files (*.*)\t*.*\n"
endif
-" Undo the stuff we changed.
-let b:undo_ftplugin = "unlet! b:match_words"
+let b:undo_ftplugin = "setl fo< cms< com< " ..
+ \ "| unlet! b:browsefilter b:match_words b:match_ignorecase"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/pbtxt.vim b/runtime/ftplugin/pbtxt.vim
new file mode 100644
index 0000000000..e3c1bf7650
--- /dev/null
+++ b/runtime/ftplugin/pbtxt.vim
@@ -0,0 +1,21 @@
+" Vim filetype plugin file
+" Language: Protobuf Text Format
+" Maintainer: Lakshay Garg <lakshayg@outlook.in>
+" Last Change: 2020 Nov 17
+" Homepage: https://github.com/lakshayg/vim-pbtxt
+
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal commentstring=#\ %s
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/ftplugin/perl.vim b/runtime/ftplugin/perl.vim
index e7acf654f3..603ba49502 100644
--- a/runtime/ftplugin/perl.vim
+++ b/runtime/ftplugin/perl.vim
@@ -1,9 +1,9 @@
" Vim filetype plugin file
" Language: Perl
" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2015-02-09
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" Last Change: 2020 Apr 15
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
diff --git a/runtime/ftplugin/perl6.vim b/runtime/ftplugin/perl6.vim
deleted file mode 100644
index 5318df63bc..0000000000
--- a/runtime/ftplugin/perl6.vim
+++ /dev/null
@@ -1,77 +0,0 @@
-" Vim filetype plugin file
-" Language: Perl 6
-" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2013-07-21
-" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
-"
-" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
-
-if exists("b:did_ftplugin") | finish | endif
-let b:did_ftplugin = 1
-
-" Make sure the continuation lines below do not cause problems in
-" compatibility mode.
-let s:save_cpo = &cpo
-set cpo-=C
-
-setlocal formatoptions-=t
-setlocal formatoptions+=crqol
-setlocal keywordprg=p6doc
-
-setlocal comments=:#
-setlocal commentstring=#%s
-
-" Change the browse dialog on Win32 to show mainly Perl-related files
-if has("gui_win32")
- let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
- \ "Perl Modules (*.pm)\t*.pm\n" .
- \ "Perl Documentation Files (*.pod)\t*.pod\n" .
- \ "All Files (*.*)\t*.*\n"
-endif
-
-" Provided by Ned Konz <ned at bike-nomad dot com>
-"---------------------------------------------
-setlocal include=\\<\\(use\\\|require\\)\\>
-setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','')
-setlocal define=[^A-Za-z_]
-
-" The following line changes a global variable but is necessary to make
-" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
-" the problem. If this causes a " problem for you, add an
-" after/ftplugin/perl6.vim file that contains
-" set isfname-=:
-set isfname+=:
-setlocal iskeyword=48-57,_,A-Z,a-z,:,-
-
-" Set this once, globally.
-if !exists("perlpath")
- if executable("perl6")
- try
- if &shellxquote != '"'
- let perlpath = system('perl6 -e "@*INC.join(q/,/).say"')
- else
- let perlpath = system("perl6 -e '@*INC.join(q/,/).say'")
- endif
- let perlpath = substitute(perlpath,',.$',',,','')
- catch /E145:/
- let perlpath = ".,,"
- endtry
- else
- " If we can't call perl to get its path, just default to using the
- " current directory and the directory of the current file.
- let perlpath = ".,,"
- endif
-endif
-
-let &l:path=perlpath
-"---------------------------------------------
-
-" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" .
- \ " | unlet! b:browsefilter"
-
-" Restore the saved compatibility options.
-let &cpo = s:save_cpo
-unlet s:save_cpo
diff --git a/runtime/ftplugin/poke.vim b/runtime/ftplugin/poke.vim
new file mode 100644
index 0000000000..2be86695c8
--- /dev/null
+++ b/runtime/ftplugin/poke.vim
@@ -0,0 +1,32 @@
+" Vim filetype plugin file
+" Language: GNU Poke
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 March 11
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+setlocal commentstring=//\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+setlocal include=load
+setlocal suffixesadd=.pk
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Poke Files (*.pk)\t*.pk\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms< inc< sua<" .
+ \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8
diff --git a/runtime/ftplugin/ps1.vim b/runtime/ftplugin/ps1.vim
new file mode 100644
index 0000000000..aac3bc9903
--- /dev/null
+++ b/runtime/ftplugin/ps1.vim
@@ -0,0 +1,59 @@
+" Vim filetype plugin file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2021 Apr 02
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin") | finish | endif
+
+" Don't load another plug-in for this buffer
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal tw=0
+setlocal commentstring=#%s
+setlocal formatoptions=tcqro
+" Enable autocompletion of hyphenated PowerShell commands,
+" e.g. Get-Content or Get-ADUser
+setlocal iskeyword+=-
+
+" Change the browse dialog on Win32 to show mainly PowerShell-related files
+if has("gui_win32")
+ let b:browsefilter =
+ \ "All PowerShell Files (*.ps1, *.psd1, *.psm1, *.ps1xml)\t*.ps1;*.psd1;*.psm1;*.ps1xml\n" .
+ \ "PowerShell Script Files (*.ps1)\t*.ps1\n" .
+ \ "PowerShell Module Files (*.psd1, *.psm1)\t*.psd1;*.psm1\n" .
+ \ "PowerShell XML Files (*.ps1xml)\t*.ps1xml\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+" Look up keywords by Get-Help:
+" check for PowerShell Core in Windows, Linux or MacOS
+if executable('pwsh') | let s:pwsh_cmd = 'pwsh'
+ " on Windows Subsystem for Linux, check for PowerShell Core in Windows
+elseif exists('$WSLENV') && executable('pwsh.exe') | let s:pwsh_cmd = 'pwsh.exe'
+ " check for PowerShell <= 5.1 in Windows
+elseif executable('powershell.exe') | let s:pwsh_cmd = 'powershell.exe'
+endif
+
+if exists('s:pwsh_cmd')
+ if !has('gui_running') && executable('less') &&
+ \ !(exists('$ConEmuBuild') && &term =~? '^xterm')
+ " For exclusion of ConEmu, see https://github.com/Maximus5/ConEmu/issues/2048
+ command! -buffer -nargs=1 GetHelp silent exe '!' . s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full "<args>" | ' . (has('unix') ? 'LESS= less' : 'less') | redraw!
+ elseif has('terminal')
+ command! -buffer -nargs=1 GetHelp silent exe 'term ' . s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full "<args>"' . (executable('less') ? ' | less' : '')
+ else
+ command! -buffer -nargs=1 GetHelp echo system(s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full <args>')
+ endif
+endif
+setlocal keywordprg=:GetHelp
+
+" Undo the stuff we changed
+let b:undo_ftplugin = "setlocal tw< cms< fo< iskeyword< keywordprg<" .
+ \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/ftplugin/ps1xml.vim b/runtime/ftplugin/ps1xml.vim
new file mode 100644
index 0000000000..837a3309b4
--- /dev/null
+++ b/runtime/ftplugin/ps1xml.vim
@@ -0,0 +1,34 @@
+" Vim filetype plugin file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2021 Apr 02
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin") | finish | endif
+
+" Don't load another plug-in for this buffer
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal tw=0
+setlocal commentstring=#%s
+setlocal formatoptions=tcqro
+
+" Change the browse dialog on Win32 to show mainly PowerShell-related files
+if has("gui_win32")
+ let b:browsefilter =
+ \ "All PowerShell Files (*.ps1, *.psd1, *.psm1, *.ps1xml)\t*.ps1;*.psd1;*.psm1;*.ps1xml\n" .
+ \ "PowerShell Script Files (*.ps1)\t*.ps1\n" .
+ \ "PowerShell Module Files (*.psd1, *.psm1)\t*.psd1;*.psm1\n" .
+ \ "PowerShell XML Files (*.ps1xml)\t*.ps1xml\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+" Undo the stuff we changed
+let b:undo_ftplugin = "setlocal tw< cms< fo<" .
+ \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/ftplugin/python.vim b/runtime/ftplugin/python.vim
index 64c1a87a69..000ddf52a3 100644
--- a/runtime/ftplugin/python.vim
+++ b/runtime/ftplugin/python.vim
@@ -3,7 +3,7 @@
" Maintainer: Tom Picton <tom@tompicton.co.uk>
" Previous Maintainer: James Sully <sullyj3@gmail.com>
" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: Sun 17 Mar 2019
+" Last Change: Mon, 5 October 2020
" https://github.com/tpict/vim-ftplugin-python
if exists("b:did_ftplugin") | finish | endif
@@ -14,6 +14,7 @@ set cpo&vim
setlocal cinkeys-=0#
setlocal indentkeys-=0#
setlocal include=^\\s*\\(from\\\|import\\)
+setlocal define=^\\s*\\(def\\\|class\\)
" For imports with leading .., append / and replace additional .s with ../
let b:grandparent_match = '^\(.\.\)\(\.*\)'
@@ -38,7 +39,7 @@ setlocal comments=b:#,fb:-
setlocal commentstring=#\ %s
if has('python3')
- setlocal omnifunc=python3complete#Complete
+ setlocal omnifunc=python3complete#Complete
elseif has('python')
setlocal omnifunc=pythoncomplete#Complete
endif
@@ -115,35 +116,18 @@ endif
if !exists("g:python_recommended_style") || g:python_recommended_style != 0
" As suggested by PEP8.
- setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
+ setlocal expandtab tabstop=4 softtabstop=4 shiftwidth=4
endif
-" First time: try finding "pydoc".
-if !exists('g:pydoc_executable')
- if executable('pydoc')
- let g:pydoc_executable = 1
- else
- let g:pydoc_executable = 0
- endif
-endif
-
-" Windows-specific pydoc setup
-if has('win32') || has('win64')
- if executable('python')
- " available as Tools\scripts\pydoc.py
- let g:pydoc_executable = 1
- else
- let g:pydoc_executable = 0
- endif
-endif
-
-" If "pydoc" was found use it for keywordprg.
-if g:pydoc_executable
- if has('win32') || has('win64')
- setlocal keywordprg=python\ -m\ pydoc\
- else
- setlocal keywordprg=pydoc
- endif
+" Use pydoc for keywordprg.
+" Unix users preferentially get pydoc3, then pydoc2.
+" Windows doesn't have a standalone pydoc executable in $PATH by default, nor
+" does it have separate python2/3 executables, so Windows users just get
+" whichever version corresponds to their installed Python version.
+if executable('python3')
+ setlocal keywordprg=python3\ -m\ pydoc
+elseif executable('python')
+ setlocal keywordprg=python\ -m\ pydoc
endif
" Script for filetype switching to undo the local stuff we may have changed
diff --git a/runtime/ftplugin/r.vim b/runtime/ftplugin/r.vim
index 4ea3073922..a78afa2e7e 100644
--- a/runtime/ftplugin/r.vim
+++ b/runtime/ftplugin/r.vim
@@ -2,7 +2,7 @@
" Language: R
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Tue Apr 07, 2015 04:38PM
+" Last Change: Sat Aug 15, 2020 11:37AM
" Only do this when not yet done for this buffer
if exists("b:did_ftplugin")
@@ -20,7 +20,7 @@ setlocal formatoptions-=t
setlocal commentstring=#\ %s
setlocal comments=:#',:###,:##,:#
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "R Source Files (*.R)\t*.R\n" .
\ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst)\t*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
\ "All Files (*.*)\t*.*\n"
diff --git a/runtime/ftplugin/raku.vim b/runtime/ftplugin/raku.vim
new file mode 100644
index 0000000000..941222bd38
--- /dev/null
+++ b/runtime/ftplugin/raku.vim
@@ -0,0 +1,127 @@
+" Vim filetype plugin file
+" Language: Raku
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Homepage: https://github.com/Raku/vim-raku
+" Bugs/requests: https://github.com/Raku/vim-raku/issues
+" Last Change: 2021-04-16
+" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+"
+" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+
+" Make sure the continuation lines below do not cause problems in
+" compatibility mode.
+let s:save_cpo = &cpo
+set cpo-=C
+
+setlocal formatoptions-=t
+setlocal formatoptions+=crqol
+setlocal keywordprg=p6doc
+
+setlocal comments=:#\|,:#=,:#
+setlocal commentstring=#%s
+
+" Provided by Ned Konz <ned at bike-nomad dot com>
+"---------------------------------------------
+setlocal include=\\<\\(use\\\|require\\)\\>
+setlocal includeexpr=substitute(v:fname,'::','/','g')
+setlocal suffixesadd=.rakumod,.rakudoc,.pm6,.pm
+setlocal define=[^A-Za-z_]
+
+" The following line changes a global variable but is necessary to make
+" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
+" the problem. If this causes a problem for you, add an
+" after/ftplugin/raku.vim file that contains
+" set isfname-=:
+set isfname+=:
+setlocal iskeyword=@,48-57,_,192-255,-
+
+" Raku exposes its CompUnits through $*REPO, but mapping module names to
+" compunit paths is nontrivial. Probably it's more convenient to rely on
+" people using zef, which has a handy store of sources for modules it has
+" installed.
+func s:compareReverseFtime(a, b)
+ let atime = getftime(a:a)
+ let btime = getftime(a:b)
+ return atime > btime ? -1 : atime == btime ? 0 : 1
+endfunc
+
+let &l:path = "lib,."
+if exists('$RAKULIB')
+ let &l:path = &l:path . "," . $RAKULIB
+endif
+let &l:path = &l:path . "," . join(
+ \ sort(glob("~/.zef/store/*/*/lib", 0, 1), "s:compareReverseFtime"),
+ \ ',')
+
+" Convert ascii-based ops into their single-character unicode equivalent
+if get(g:, 'raku_unicode_abbrevs', 0)
+ iabbrev <buffer> !(<) ⊄
+ iabbrev <buffer> !(<=) ⊈
+ iabbrev <buffer> !(>) ⊅
+ iabbrev <buffer> !(>=) ⊉
+ iabbrev <buffer> !(cont) ∌
+ iabbrev <buffer> !(elem) ∉
+ iabbrev <buffer> != ≠
+ iabbrev <buffer> (&) ∩
+ iabbrev <buffer> (+) ⊎
+ iabbrev <buffer> (-) ∖
+ iabbrev <buffer> (.) ⊍
+ iabbrev <buffer> (<) ⊂
+ iabbrev <buffer> (<+) ≼
+ iabbrev <buffer> (<=) ⊆
+ iabbrev <buffer> (>) ⊃
+ iabbrev <buffer> (>+) ≽
+ iabbrev <buffer> (>=) ⊇
+ iabbrev <buffer> (\|) ∪
+ iabbrev <buffer> (^) ⊖
+ iabbrev <buffer> (atomic) ⚛
+ iabbrev <buffer> (cont) ∋
+ iabbrev <buffer> (elem) ∈
+ iabbrev <buffer> * ×
+ iabbrev <buffer> **0 ⁰
+ iabbrev <buffer> **1 ¹
+ iabbrev <buffer> **2 ²
+ iabbrev <buffer> **3 ³
+ iabbrev <buffer> **4 ⁴
+ iabbrev <buffer> **5 ⁵
+ iabbrev <buffer> **6 ⁶
+ iabbrev <buffer> **7 ⁷
+ iabbrev <buffer> **8 ⁸
+ iabbrev <buffer> **9 ⁹
+ iabbrev <buffer> ... …
+ iabbrev <buffer> / ÷
+ iabbrev <buffer> << «
+ iabbrev <buffer> <<[=]<< «=«
+ iabbrev <buffer> <<[=]>> «=»
+ iabbrev <buffer> <= ≤
+ iabbrev <buffer> =~= ≅
+ iabbrev <buffer> >= ≥
+ iabbrev <buffer> >> »
+ iabbrev <buffer> >>[=]<< »=«
+ iabbrev <buffer> >>[=]>> »=»
+ iabbrev <buffer> Inf ∞
+ iabbrev <buffer> atomic-add-fetch ⚛+=
+ iabbrev <buffer> atomic-assign ⚛=
+ iabbrev <buffer> atomic-fetch ⚛
+ iabbrev <buffer> atomic-dec-fetch --⚛
+ iabbrev <buffer> atomic-fetch-dec ⚛--
+ iabbrev <buffer> atomic-fetch-inc ⚛++
+ iabbrev <buffer> atomic-inc-fetch ++⚛
+ iabbrev <buffer> atomic-sub-fetch ⚛−=
+ iabbrev <buffer> e 𝑒
+ iabbrev <buffer> o ∘
+ iabbrev <buffer> pi π
+ iabbrev <buffer> set() ∅
+ iabbrev <buffer> tau τ
+endif
+
+" Undo the stuff we changed.
+let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< isk< kp< path<" .
+ \ " | unlet! b:browsefilter"
+
+" Restore the saved compatibility options.
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/runtime/ftplugin/rhelp.vim b/runtime/ftplugin/rhelp.vim
index fdac38f3e9..d0b546d62d 100644
--- a/runtime/ftplugin/rhelp.vim
+++ b/runtime/ftplugin/rhelp.vim
@@ -2,7 +2,7 @@
" Language: R help file
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Tue Apr 07, 2015 04:37PM
+" Last Change: Sat Aug 15, 2020 12:01PM
" Only do this when not yet done for this buffer
if exists("b:did_ftplugin")
@@ -17,7 +17,7 @@ set cpo&vim
setlocal iskeyword=@,48-57,_,.
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/rmd.vim b/runtime/ftplugin/rmd.vim
index 7b0db8dbb5..2ee72ffc6c 100644
--- a/runtime/ftplugin/rmd.vim
+++ b/runtime/ftplugin/rmd.vim
@@ -2,7 +2,7 @@
" Language: R Markdown file
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Sun Jul 22, 2018 06:51PM
+" Last Change: Sat Aug 15, 2020 12:03PM
" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann)
" Only do this when not yet done for this buffer
@@ -46,7 +46,7 @@ runtime ftplugin/pandoc.vim
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/rnoweb.vim b/runtime/ftplugin/rnoweb.vim
index e184399dcb..dc5f1b5e06 100644
--- a/runtime/ftplugin/rnoweb.vim
+++ b/runtime/ftplugin/rnoweb.vim
@@ -2,7 +2,7 @@
" Language: Rnoweb
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Tue Apr 07, 2015 04:37PM
+" Last Change: Sat Aug 15, 2020 12:02PM
" Only do this when not yet done for this buffer
if exists("b:did_ftplugin")
@@ -24,7 +24,7 @@ setlocal iskeyword=@,48-57,_,.
setlocal suffixesadd=.bib,.tex
setlocal comments=b:%,b:#,b:##,b:###,b:#'
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/rpl.vim b/runtime/ftplugin/rpl.vim
index 909e141cc6..8b4d5b0d48 100644
--- a/runtime/ftplugin/rpl.vim
+++ b/runtime/ftplugin/rpl.vim
@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: RPL/2
-" Maintainer: Jol BERTRAND <rpl2@free.fr>
+" Maintainer: Joël BERTRAND <rpl2@free.fr>
" Last Change: 2012 Mar 07
" Version: 0.1
diff --git a/runtime/ftplugin/rrst.vim b/runtime/ftplugin/rrst.vim
index 3e82847d35..a56fd6478e 100644
--- a/runtime/ftplugin/rrst.vim
+++ b/runtime/ftplugin/rrst.vim
@@ -2,7 +2,7 @@
" Language: reStructuredText documentation format with R code
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Wed Nov 01, 2017 10:47PM
+" Last Change: Sat Aug 15, 2020 12:02PM
" Original work by Alex Zvoleff
" Only do this when not yet done for this buffer
@@ -37,7 +37,7 @@ if !exists("g:rrst_dynamic_comments") || (exists("g:rrst_dynamic_comments") && g
setlocal formatexpr=FormatRrst()
endif
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/rst.vim b/runtime/ftplugin/rst.vim
index f0646e9f36..ff7a402d10 100644
--- a/runtime/ftplugin/rst.vim
+++ b/runtime/ftplugin/rst.vim
@@ -3,7 +3,7 @@
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
" Original Maintainer: Nikolai Weibull <now@bitwi.se>
" Website: https://github.com/marshallward/vim-restructuredtext
-" Latest Revision: 2018-12-29
+" Latest Revision: 2020-03-31
if exists("b:did_ftplugin")
finish
@@ -34,7 +34,7 @@ if exists("g:rst_style") && g:rst_style != 0
setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8
endif
-if has('patch-7.3.867') " Introduced the TextChanged event.
+if g:rst_fold_enabled != 0 && has('patch-7.3.867') " Introduced the TextChanged event.
setlocal foldmethod=expr
setlocal foldexpr=RstFold#GetRstFold()
setlocal foldtext=RstFold#GetRstFoldText()
diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim
index 054c35e5fa..b4a8eaa0d8 100644
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -3,7 +3,7 @@
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2019 Jan 06
+" Last Change: 2019 Nov 06
if (exists("b:did_ftplugin"))
finish
@@ -24,20 +24,20 @@ if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
let b:match_words =
- \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' .
+ \ '{\|\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|=\@<!begin\)\>=\@!' .
\ ':' .
\ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' .
\ ':' .
- \ '\%(^\|[^.\:@$]\)\@<=\<end\:\@!\>' .
- \ ',{:},\[:\],(:)'
+ \ '}\|\%(^\|[^.\:@$=]\)\@<=\<end\:\@!\>' .
+ \ ',^=begin\>:^=end\>,' .
+ \ ',\[:\],(:)'
let b:match_skip =
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
- \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
- \ "Regexp\\|RegexpDelimiter\\|" .
- \ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
- \ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
- \ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
+ \ "\\<ruby\\%(String\\|.\+Delimiter\\|Character\\|.\+Escape\\|" .
+ \ "Regexp\\|Interpolation\\|Comment\\|Documentation\\|" .
+ \ "ConditionalModifier\\|RepeatModifier\\|RescueModifier\\|OptionalDo\\|" .
+ \ "MethodName\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
\ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'"
endif
@@ -87,7 +87,7 @@ endfunction
function! s:build_path(path) abort
let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',')
- if &g:path !~# '\v^\.%(,/%(usr|emx)/include)=,,$'
+ if &g:path !~# '\v^%(\.,)=%(/%(usr|emx)/include,)=,$'
let path = substitute(&g:path,',,$',',','') . ',' . path
endif
return path
@@ -152,7 +152,7 @@ endif
function! s:map(mode, flags, map) abort
let from = matchstr(a:map, '\S\+')
if empty(mapcheck(from, a:mode))
- exe a:mode.'map' '<buffer>' a:map
+ exe a:mode.'map' '<buffer>' a:flags a:map
let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from
endif
endfunction
@@ -311,13 +311,16 @@ function! s:synid() abort
endfunction
function! s:wrap_i(back,forward) abort
- execute 'norm k'.a:forward
+ execute 'norm! k'
+ execute 'norm '.a:forward
let line = line('.')
execute 'norm '.a:back
if line('.') == line - 1
return s:wrap_a(a:back,a:forward)
endif
- execute 'norm jV'.a:forward.'k'
+ execute 'norm! jV'
+ execute 'norm '.a:forward
+ execute 'norm! k'
endfunction
function! s:wrap_a(back,forward) abort
@@ -330,11 +333,15 @@ function! s:wrap_a(back,forward) abort
-
endwhile
if exists('after')
- execute 'norm V'.a:forward.'j'
+ execute 'norm! V'
+ execute 'norm '.a:forward
+ execute 'norm! j'
elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$'
- execute 'norm kV'.a:forward
+ execute 'norm! kV'
+ execute 'norm '.a:forward
else
- execute 'norm V'.a:forward
+ execute 'norm! V'
+ execute 'norm '.a:forward
endif
endfunction
@@ -366,7 +373,6 @@ function! RubyCursorFile() abort
endtry
let pre = matchstr(strpart(getline('.'), 0, col('.')-1), '.*\f\@<!')
let post = matchstr(strpart(getline('.'), col('.')), '\f\@!.*')
- let ext = getline('.') =~# '^\s*\%(require\%(_relative\)\=\|autoload\)\>' && cfile !~# '\.rb$' ? '.rb' : ''
if s:synid() ==# hlID('rubyConstant')
let cfile = substitute(cfile,'\.\w\+[?!=]\=$','','')
let cfile = substitute(cfile,'^::','','')
@@ -375,12 +381,15 @@ function! RubyCursorFile() abort
let cfile = substitute(cfile,'\(\l\|\d\)\(\u\)','\1_\2', 'g')
return tolower(cfile) . '.rb'
elseif getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$'
- let cfile = expand('%:p:h') . '/' . matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') . ext
+ let cfile = expand('%:p:h') . '/' . matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1')
+ let cfile .= cfile !~# '\.rb$' ? '.rb' : ''
elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$'
let target = matchstr(getline('.'),'\(["'']\)\.\.\zs/.\{-\}\ze\1')
- let cfile = expand('%:p:h') . target . ext
+ let cfile = expand('%:p:h') . target
+ let cfile .= cfile !~# '\.rb$' ? '.rb' : ''
elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$'
- let cfile = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') . ext
+ let cfile = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1')
+ let cfile .= cfile !~# '\.rb$' ? '.rb' : ''
elseif pre.post =~# '\<File.expand_path[( ].*[''"]\{2\}, *__FILE__\>' && cfile =~# '^\.\.'
let cfile = expand('%:p:h') . strpart(cfile, 2)
else
diff --git a/runtime/ftplugin/sass.vim b/runtime/ftplugin/sass.vim
index d6909e7ad5..9ce446137a 100644
--- a/runtime/ftplugin/sass.vim
+++ b/runtime/ftplugin/sass.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -13,11 +13,25 @@ let b:undo_ftplugin = "setl com< cms< def< inc< inex< ofu< sua<"
setlocal comments=://
setlocal commentstring=//\ %s
-setlocal define=^\\s*\\%(@mixin\\\|=\\)
-setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','')
+setlocal includeexpr=SassIncludeExpr(v:fname)
setlocal omnifunc=csscomplete#CompleteCSS
setlocal suffixesadd=.sass,.scss,.css
+if &filetype =~# '\<s[ac]ss]\>'
+ setlocal iskeyword+=-
+ setlocal iskeyword+=$
+ setlocal iskeyword+=%
+ let b:undo_ftplugin .= ' isk<'
+endif
+let &l:define = '^\C\v\s*%(\@function|\@mixin|\=)|^\s*%(\$[[:alnum:]-]+:|[%.][:alnum:]-]+\s*%(\{|$))@='
let &l:include = '^\s*@import\s\+\%(url(\)\=["'']\='
+function! SassIncludeExpr(file) abort
+ let partial = substitute(a:file, '\%(.*/\|^\)\zs', '_', '')
+ if !empty(findfile(partial))
+ return partial
+ endif
+ return a:file
+endfunction
+
" vim:set sw=2:
diff --git a/runtime/ftplugin/scheme.vim b/runtime/ftplugin/scheme.vim
index 62fd327e07..5778594c41 100644
--- a/runtime/ftplugin/scheme.vim
+++ b/runtime/ftplugin/scheme.vim
@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: Scheme (R7RS)
-" Last Change: 2018-03-05
+" Last Change: 2019 Nov 18
" Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
@@ -21,7 +21,7 @@ setl iskeyword=33,35-39,42-43,45-58,60-90,94,95,97-122,126
let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword<'
-setl lispwords=case
+setl lispwords+=case
setl lispwords+=define
setl lispwords+=define-record-type
setl lispwords+=define-syntax
diff --git a/runtime/ftplugin/sexplib.vim b/runtime/ftplugin/sexplib.vim
new file mode 100644
index 0000000000..27e1b28370
--- /dev/null
+++ b/runtime/ftplugin/sexplib.vim
@@ -0,0 +1,15 @@
+" Vim filetype plugin file
+" Language: Sexplib
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2017 Apr 12 - First version (MM)
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin=1
+
+" Comment string
+setl commentstring=;\ %s
+setl comments=:;
diff --git a/runtime/ftplugin/spec.vim b/runtime/ftplugin/spec.vim
index 2a961f8244..ce00021a69 100644
--- a/runtime/ftplugin/spec.vim
+++ b/runtime/ftplugin/spec.vim
@@ -73,23 +73,23 @@ if !exists("*s:SpecChangelog")
let chgline = -1
while (line <= line("$"))
let linestr = getline(line)
- if (name == "" && linestr =~? '^Name:')
+ if name == "" && linestr =~? '^Name:'
let nameline = line
let name = substitute(strpart(linestr,5), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
- elseif (ver == "" && linestr =~? '^Version:')
+ elseif ver == "" && linestr =~? '^Version:'
let verline = line
let ver = substitute(strpart(linestr,8), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
- elseif (rel == "" && linestr =~? '^Release:')
+ elseif rel == "" && linestr =~? '^Release:'
let relline = line
let rel = substitute(strpart(linestr,8), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
- elseif (linestr =~? '^%changelog')
+ elseif linestr =~? '^%changelog'
let chgline = line
execute line
break
endif
let line = line+1
endwhile
- if (nameline != -1 && verline != -1 && relline != -1)
+ if nameline != -1 && verline != -1 && relline != -1
let include_release_info = exists("g:spec_chglog_release_info")
let name = s:ParseRpmVars(name, nameline)
let ver = s:ParseRpmVars(ver, verline)
@@ -100,20 +100,20 @@ if !exists("*s:SpecChangelog")
call s:GetRelVer()
- if (chgline == -1)
+ if chgline == -1
let option = confirm("Can't find %changelog. Create one? ","&End of file\n&Here\n&Cancel",3)
- if (option == 1)
+ if option == 1
call append(line("$"),"")
call append(line("$"),"%changelog")
execute line("$")
let chgline = line(".")
- elseif (option == 2)
+ elseif option == 2
call append(line("."),"%changelog")
normal j
- chgline = line(".")
+ let chgline = line(".")
endif
endif
- if (chgline != -1)
+ if chgline != -1
let tmptime = v:lc_time
language time C
let parsed_format = "* ".strftime(format)." - ".ver."-".rel
@@ -122,16 +122,16 @@ if !exists("*s:SpecChangelog")
let wrong_format = 0
let wrong_release = 0
let insert_line = 0
- if (getline(chgline+1) != parsed_format)
+ if getline(chgline+1) != parsed_format
let wrong_format = 1
endif
- if (include_release_info && getline(chgline+2) != release_info)
+ if include_release_info && getline(chgline+2) != release_info
let wrong_release = 1
endif
- if (wrong_format || wrong_release)
- if (include_release_info && !wrong_release && !exists("g:spec_chglog_never_increase_release"))
+ if wrong_format || wrong_release
+ if include_release_info && !wrong_release && !exists("g:spec_chglog_never_increase_release")
let option = confirm("Increase release? ","&Yes\n&No",1)
- if (option == 1)
+ if option == 1
execute relline
normal 
let rel = substitute(strpart(getline(relline),8), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
@@ -171,24 +171,22 @@ if !exists("*s:ParseRpmVars")
let ret = ""
while (1)
let start = match(a:str, "\%{", end+1)
- if (start == -1)
+ if start == -1
let ret = ret . strpart(a:str, end+1)
break
endif
let ret = ret . strpart(a:str, end+1, start-(end+1))
let end = match(a:str, "}", start)
- if (end == -1)
+ if end == -1
let ret = ret . strpart(a:str, start)
break
endif
let varname = strpart(a:str, start+2, end-(start+2))
execute a:strline
- let definestr = "^[ \t]*%(?:global|define)[ \t]\\+" . varname . "[ \t]\\+\\(.*\\)$"
+ let definestr = "^[ \t]*%\\(define\\|global\\)[ \t]\\+".varname."[ \t]\\+\\(.*\\)$"
let linenum = search(definestr, "bW")
- if (linenum != -1)
- let ret = ret . substitute(getline(linenum), definestr, "\\1", "")
- else
- let ret = ret . strpart(str, start, end+1-start)
+ if linenum != 0
+ let ret = ret . substitute(getline(linenum), definestr, "\\2", "")
endif
endwhile
return ret
diff --git a/runtime/ftplugin/swift.vim b/runtime/ftplugin/swift.vim
new file mode 100644
index 0000000000..a86b782c22
--- /dev/null
+++ b/runtime/ftplugin/swift.vim
@@ -0,0 +1,23 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+" Last Change: 2021 Jan 08
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let b:did_ftplugin = 1
+let b:undo_ftplugin = "setlocal comments< expandtab< tabstop< shiftwidth< smartindent<"
+
+setlocal comments=s1:/*,mb:*,ex:*/,:///,://
+setlocal expandtab
+setlocal sw=4 sts=4
+setlocal smartindent
diff --git a/runtime/ftplugin/swiftgyb.vim b/runtime/ftplugin/swiftgyb.vim
new file mode 100644
index 0000000000..8e8fc2b791
--- /dev/null
+++ b/runtime/ftplugin/swiftgyb.vim
@@ -0,0 +1,11 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+runtime! ftplugin/swift.vim
diff --git a/runtime/ftplugin/systemd.vim b/runtime/ftplugin/systemd.vim
index 60b3fd996d..4c5c9a1dc1 100644
--- a/runtime/ftplugin/systemd.vim
+++ b/runtime/ftplugin/systemd.vim
@@ -1,7 +1,41 @@
" Vim filetype plugin file
-" Language: systemd.unit(5)
+" Language: systemd.unit(5)
+" Keyword Lookup Support: Enno Nagel <enno.nagel+vim@gmail.com>
if !exists('b:did_ftplugin')
" Looks a lot like dosini files.
runtime! ftplugin/dosini.vim
endif
+
+if !has('unix')
+ finish
+endif
+
+if !has('gui_running')
+ command! -buffer -nargs=1 Sman silent exe '!' . KeywordLookup_systemd(<q-args>) | redraw!
+elseif has('terminal')
+ command! -buffer -nargs=1 Sman silent exe 'term ' . KeywordLookup_systemd(<q-args>)
+else
+ finish
+endif
+
+if !exists('*KeywordLookup_systemd')
+ function KeywordLookup_systemd(keyword) abort
+ let matches = matchlist(getline(search('\v^\s*\[\s*.+\s*\]\s*$', 'nbWz')), '\v^\s*\[\s*(\k+).*\]\s*$')
+ if len(matches) > 1
+ let section = matches[1]
+ return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd.' . section
+ else
+ return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd'
+ endif
+ endfunction
+endif
+
+setlocal iskeyword+=-
+setlocal keywordprg=:Sman
+
+if !exists('b:undo_ftplugin') || empty(b:undo_ftplugin)
+ let b:undo_ftplugin = 'setlocal keywordprg< iskeyword<'
+else
+ let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
+endif
diff --git a/runtime/ftplugin/tidy.vim b/runtime/ftplugin/tidy.vim
new file mode 100644
index 0000000000..470548d83a
--- /dev/null
+++ b/runtime/ftplugin/tidy.vim
@@ -0,0 +1,32 @@
+" Vim filetype plugin file
+" Language: HMTL Tidy Configuration
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Sep 4
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=:#,://
+setlocal commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "HTML Tidy Files (tidyrc, .tidyrc, tidy.conf)\ttidyrc;.tidyrc;tidy.conf\n" .
+ \ "HTML Files (*.html, *.htm)\t*.html;*.htm\n" .
+ \ "XHTML Files (*.xhtml, *.xhtm)\t*.xhtml;*.xhtm\n" .
+ \ "XML Files (*.xml)\t*.xml\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms<" .
+ \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 34f5eb6db1..64b64b45e3 100644
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2018 Aug 07
+" Last Change: 2021 Apr 11
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -12,7 +12,7 @@ endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
-set cpo-=C
+set cpo&vim
if !exists('*VimFtpluginUndo')
func VimFtpluginUndo()
@@ -48,17 +48,24 @@ setlocal isk+=#
" Use :help to lookup the keyword under the cursor with K.
setlocal keywordprg=:help
-" Set 'comments' to format dashed lists in comments
-setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
+" if "\n" .. getline(1, 10)->join("\n") =~# '\n\s*vim9\%[script]\>'
+if "\n" .. join(getline(1, 10), "\n") =~# '\n\s*vim9\%[script]\>'
+ " Set 'comments' to format dashed lists in comments
+ setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#
+ " Comments starts with # in Vim9 script
+ setlocal commentstring=#%s
+else
+ setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
+ " Comments starts with a double quote in legacy script
+ setlocal commentstring=\"%s
+endif
+
" Format comments to be up to 78 characters long
if &tw == 0
setlocal tw=78
endif
-" Comments start with a double quote
-setlocal commentstring=\"%s
-
" Prefer Vim help instead of manpages.
setlocal keywordprg=:help
@@ -66,14 +73,14 @@ if !exists("no_plugin_maps") && !exists("no_vim_maps")
let b:did_add_maps = 1
" Move around functions.
- nnoremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
- vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "bW")<CR>
- nnoremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
- vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "W")<CR>
- nnoremap <silent><buffer> [] m':call search('^\s*endf\%[unction]\>', "bW")<CR>
- vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf\%[unction]\>', "bW")<CR>
- nnoremap <silent><buffer> ][ m':call search('^\s*endf\%[unction]\>', "W")<CR>
- vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf\%[unction]\>', "W")<CR>
+ nnoremap <silent><buffer> [[ m':call search('^\s*\(fu\%[nction]\\|def\)\>', "bW")<CR>
+ vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|def\)\>', "bW")<CR>
+ nnoremap <silent><buffer> ]] m':call search('^\s*\(fu\%[nction]\\|def\)\>', "W")<CR>
+ vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|def\)\>', "W")<CR>
+ nnoremap <silent><buffer> [] m':call search('^\s*end\(f\%[unction]\\|def\)\>', "bW")<CR>
+ vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|def\)\>', "bW")<CR>
+ nnoremap <silent><buffer> ][ m':call search('^\s*end\(f\%[unction]\\|def\)\>', "W")<CR>
+ vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|def\)\>', "W")<CR>
" Move around comments
nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
@@ -85,11 +92,17 @@ endif
" Let the matchit plugin know what items can be matched.
if exists("loaded_matchit")
let b:match_ignorecase = 0
+ " "func" can also be used as a type:
+ " var Ref: func
+ " or to list functions:
+ " func name
+ " require a parenthesis following, then there can be an "endfunc".
let b:match_words =
- \ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
- \ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
- \ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
- \ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' .
+ \ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\%(\%(^\||\)\s*\)\@<=\<retu\%[rn]\>:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' .
+ \ '\<\(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\<brea\%[k]\>:\%(\%(^\||\)\s*\)\@<=\<con\%[tinue]\>:\%(\%(^\||\)\s*\)\@<=\<end\(w\%[hile]\|fo\%[r]\)\>,' .
+ \ '\<if\>:\%(\%(^\||\)\s*\)\@<=\<el\%[seif]\>:\%(\%(^\||\)\s*\)\@<=\<en\%[dif]\>,' .
+ \ '{:},' .
+ \ '\<try\>:\%(\%(^\||\)\s*\)\@<=\<cat\%[ch]\>:\%(\%(^\||\)\s*\)\@<=\<fina\%[lly]\>:\%(\%(^\||\)\s*\)\@<=\<endt\%[ry]\>,' .
\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,'
" Ignore syntax region commands and settings, any 'en*' would clobber
" if-endif.
diff --git a/runtime/ftplugin/yaml.vim b/runtime/ftplugin/yaml.vim
index ceff36f7e4..db7cbd7ddb 100644
--- a/runtime/ftplugin/yaml.vim
+++ b/runtime/ftplugin/yaml.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: YAML (YAML Ain't Markup Language)
-" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2008-07-09
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se> (inactive)
+" Last Change: 2020 Mar 02
if exists("b:did_ftplugin")
finish
@@ -16,5 +16,10 @@ let b:undo_ftplugin = "setl com< cms< et< fo<"
setlocal comments=:# commentstring=#\ %s expandtab
setlocal formatoptions-=t formatoptions+=croql
+if !exists("g:yaml_recommended_style") || g:yaml_recommended_style != 0
+ let b:undo_ftplugin ..= " sw< sts<"
+ setlocal shiftwidth=2 softtabstop=2
+endif
+
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/indent/Makefile b/runtime/indent/Makefile
index d192605527..f6c44736d2 100644
--- a/runtime/indent/Makefile
+++ b/runtime/indent/Makefile
@@ -10,5 +10,5 @@ test:
VIMRUNTIME=$(VIMRUNTIME) $(VIM) --clean --not-a-term -u testdir/runtest.vim
-clean:
+clean testclean:
rm -f testdir/*.fail testdir/*.out
diff --git a/runtime/indent/bash.vim b/runtime/indent/bash.vim
new file mode 100644
index 0000000000..b91640687c
--- /dev/null
+++ b/runtime/indent/bash.vim
@@ -0,0 +1,18 @@
+" Vim indent file
+" Language: bash
+" Maintainer: Bram
+" Last Change: 2019 Sep 27
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+
+" The actual indenting is in sh.vim and controlled by buffer-local variables.
+unlet! b:is_sh
+unlet! b:is_kornshell
+let b:is_bash = 1
+
+runtime! indent/sh.vim
+
+" vim: ts=8
diff --git a/runtime/indent/cdl.vim b/runtime/indent/cdl.vim
index 5fae7b9046..4f9b7a8967 100644
--- a/runtime/indent/cdl.vim
+++ b/runtime/indent/cdl.vim
@@ -62,10 +62,14 @@ fun! CdlGetIndent(lnum)
" PREVIOUS LINE
let ind = indent(lnum)
let line = getline(lnum)
- let f = -1 " wether a '=' is a conditional or a asignment, -1 means we don't know yet
- " one 'closing' element at the beginning of the line has already reduced the
- " indent, but 'else', 'elseif' & 'then' increment it for the next line
- " '=' at the beginning has already de right indent (increased for asignments)
+
+ " Whether a '=' is a conditional or an assignment. -1 means we don't know
+ " yet.
+ " One 'closing' element at the beginning of the line has already reduced the
+ " indent, but 'else', 'elseif' & 'then' increment it for the next line.
+ " '=' at the beginning already has the right indent (increased for
+ " asignments).
+ let f = -1
let inicio = matchend(line, '^\c\s*\(else\a*\|then\|endif\|/[*/]\|[);={]\)')
if inicio > 0
let c = line[inicio-1]
diff --git a/runtime/indent/clojure.vim b/runtime/indent/clojure.vim
index 7c4186e29b..30a0b478e2 100644
--- a/runtime/indent/clojure.vim
+++ b/runtime/indent/clojure.vim
@@ -1,12 +1,11 @@
" Vim indent file
-" Language: Clojure
-" Author: Meikel Brandmeyer <mb@kotka.de>
-" URL: http://kotka.de/projects/clojure/vimclojure.html
-"
-" Maintainer: Sung Pae <self@sungpae.com>
-" URL: https://github.com/guns/vim-clojure-static
-" License: Same as Vim
-" Last Change: 18 July 2016
+" Language: Clojure
+" Maintainer: Alex Vear <av@axvr.io>
+" Former Maintainers: Sung Pae <self@sungpae.com>
+" Meikel Brandmeyer <mb@kotka.de>
+" URL: https://github.com/clojure-vim/clojure.vim
+" License: Vim (see :h license)
+" Last Change: 2021-02-13
if exists("b:did_indent")
finish
@@ -87,7 +86,7 @@ if exists("*searchpairpos")
function! s:match_pairs(open, close, stopat)
" Stop only on vector and map [ resp. {. Ignore the ones in strings and
" comments.
- if a:stopat == 0
+ if a:stopat == 0 && g:clojure_maxlines > 0
let stopat = max([line(".") - g:clojure_maxlines, 0])
else
let stopat = a:stopat
@@ -121,7 +120,7 @@ if exists("*searchpairpos")
if s:syn_id_name() !~? "string"
return -1
endif
- if s:current_char() != '\\'
+ if s:current_char() != '\'
return -1
endif
call cursor(0, col("$") - 1)
@@ -170,7 +169,35 @@ if exists("*searchpairpos")
call search('\S', 'W')
let w = s:strip_namespace_and_macro_chars(s:current_word())
+
if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
+
+ " `letfn` is a special-special-case.
+ if w ==# 'letfn'
+ " Earlier code left the cursor at:
+ " (letfn [...] ...)
+ " ^
+
+ " Search and get coordinates of first `[`
+ " (letfn [...] ...)
+ " ^
+ call search('\[', 'W')
+ let pos = getcurpos()
+ let letfn_bracket = [pos[1], pos[2]]
+
+ " Move cursor to start of the form this function was
+ " initially called on. Grab the coordinates of the
+ " closest outer `[`.
+ call cursor(a:position)
+ let outer_bracket = s:match_pairs('\[', '\]', 0)
+
+ " If the located square brackets are not the same,
+ " don't use special-case formatting.
+ if outer_bracket != letfn_bracket
+ return 0
+ endif
+ endif
+
return 1
endif
@@ -190,11 +217,7 @@ if exists("*searchpairpos")
" Check if form is a reader conditional, that is, it is prefixed by #?
" or @#?
function! s:is_reader_conditional_special_case(position)
- if getline(a:position[0])[a:position[1] - 3 : a:position[1] - 2] == "#?"
- return 1
- endif
-
- return 0
+ return getline(a:position[0])[a:position[1] - 3 : a:position[1] - 2] == "#?"
endfunction
" Returns 1 for opening brackets, -1 for _anything else_.
@@ -261,7 +284,7 @@ if exists("*searchpairpos")
call cursor(paren)
if s:is_method_special_case(paren)
- return [paren[0], paren[1] + shiftwidth() - 1]
+ return [paren[0], paren[1] + &shiftwidth - 1]
endif
if s:is_reader_conditional_special_case(paren)
@@ -292,6 +315,19 @@ if exists("*searchpairpos")
return paren
endif
+ " If the keyword begins with #, check if it is an anonymous
+ " function or set, in which case we indent by the shiftwidth
+ " (minus one if g:clojure_align_subforms = 1), or if it is
+ " ignored, in which case we use the ( position for indent.
+ if w[0] == "#"
+ " TODO: Handle #=() and other rare reader invocations?
+ if w[1] == '(' || w[1] == '{'
+ return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
+ elseif w[1] == '_'
+ return paren
+ endif
+ endif
+
" Test words without namespace qualifiers and leading reader macro
" metacharacters.
"
@@ -299,19 +335,19 @@ if exists("*searchpairpos")
let ww = s:strip_namespace_and_macro_chars(w)
if &lispwords =~# '\V\<' . ww . '\>'
- return [paren[0], paren[1] + shiftwidth() - 1]
+ return [paren[0], paren[1] + &shiftwidth - 1]
endif
if g:clojure_fuzzy_indent
\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
- return [paren[0], paren[1] + shiftwidth() - 1]
+ return [paren[0], paren[1] + &shiftwidth - 1]
endif
call search('\v\_s', 'cW')
call search('\v\S', 'W')
if paren[0] < line(".")
- return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : shiftwidth() - 1)]
+ return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
endif
call search('\v\S', 'bW')
diff --git a/runtime/indent/dune.vim b/runtime/indent/dune.vim
new file mode 100644
index 0000000000..0590d66d13
--- /dev/null
+++ b/runtime/indent/dune.vim
@@ -0,0 +1,13 @@
+" Vim indent file
+" Language: dune
+" Maintainers: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change: 2021 Jan 01
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" dune format-dune-file uses 1 space to indent
+setlocal softtabstop=1 shiftwidth=1 expandtab
diff --git a/runtime/indent/erlang.vim b/runtime/indent/erlang.vim
index 9228f18683..625cfde0c1 100644
--- a/runtime/indent/erlang.vim
+++ b/runtime/indent/erlang.vim
@@ -4,9 +4,9 @@
" Contributors: Edwin Fine <efine145_nospam01 at usa dot net>
" Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
-" Last Update: 2013-Jul-21
+" Last Update: 2020-Jun-11
" License: Vim license
-" URL: https://github.com/hcs42/vim-erlang
+" URL: https://github.com/vim-erlang/vim-erlang-runtime
" Note About Usage:
" This indentation script works best with the Erlang syntax file created by
@@ -56,7 +56,8 @@ endfunction
" Line tokenizer library {{{1
" ======================
-" Indtokens are "indentation tokens".
+" Indtokens are "indentation tokens". See their exact format in the
+" documentaiton of the s:GetTokensFromLine function.
" Purpose:
" Calculate the new virtual column after the given segment of a line.
@@ -119,9 +120,10 @@ endfunction
" Returns:
" indtokens = [indtoken]
" indtoken = [token, vcol, col]
-" token = string (examples: 'begin', '<variable>', '}')
-" vcol = integer (the virtual column of the first character of the token)
-" col = integer
+" token = string (examples: 'begin', '<quoted_atom>', '}')
+" vcol = integer (the virtual column of the first character of the token;
+" counting starts from 0)
+" col = integer (counting starts from 0)
function! s:GetTokensFromLine(line, string_continuation, atom_continuation,
\tabstop)
@@ -386,9 +388,12 @@ endfunction
" lnum: integer
" direction: 'up' | 'down'
" Returns:
-" result: [] -- the result is an empty list if we hit the beginning or end
-" of the file
-" | indtoken
+" result: [[], 0, 0]
+" -- the result is an empty list if we hit the beginning or end of
+" the file
+" | [indtoken, lnum, i]
+" -- the content, lnum and token index of the next (or previous)
+" indtoken
function! s:FindIndToken(lnum, dir)
let lnum = a:lnum
while 1
@@ -396,9 +401,12 @@ function! s:FindIndToken(lnum, dir)
let [lnum, indtokens] = s:TokenizeLine(lnum, a:dir)
if lnum ==# 0
" We hit the beginning or end of the file
- return []
+ return [[], 0, 0]
elseif !empty(indtokens)
- return indtokens[a:dir ==# 'up' ? -1 : 0]
+ " We found a non-empty line. If we were moving up, we return the last
+ " token of this line. Otherwise we return the first token if this line.
+ let i = (a:dir ==# 'up' ? len(indtokens) - 1 : 0)
+ return [indtokens[i], lnum, i]
endif
endwhile
endfunction
@@ -417,7 +425,7 @@ function! s:PrevIndToken(lnum, i)
" If the current line has a previous token, return that
if a:i > 0
- return s:all_tokens[a:lnum][a:i - 1]
+ return [s:all_tokens[a:lnum][a:i - 1], a:lnum, a:i - 1]
else
return s:FindIndToken(a:lnum, 'up')
endif
@@ -437,7 +445,7 @@ function! s:NextIndToken(lnum, i)
" If the current line has a next token, return that
if len(s:all_tokens[a:lnum]) > a:i + 1
- return s:all_tokens[a:lnum][a:i + 1]
+ return [s:all_tokens[a:lnum][a:i + 1], a:lnum, a:i + 1]
else
return s:FindIndToken(a:lnum, 'down')
endif
@@ -518,7 +526,9 @@ endfunction
" ok. % IsLineAtomContinuation = false
function! s:IsLineAtomContinuation(lnum)
if has('syntax_items')
- return synIDattr(synID(a:lnum, 1, 0), 'name') =~# '^erlangQuotedAtom'
+ let syn_name = synIDattr(synID(a:lnum, 1, 0), 'name')
+ return syn_name =~# '^erlangQuotedAtom' ||
+ \ syn_name =~# '^erlangQuotedRecord'
else
return 0
endif
@@ -535,7 +545,7 @@ endfunction
" is_standalone: bool
function! s:IsCatchStandalone(lnum, i)
call s:Log(' IsCatchStandalone called: lnum=' . a:lnum . ', i=' . a:i)
- let prev_indtoken = s:PrevIndToken(a:lnum, a:i)
+ let [prev_indtoken, _, _] = s:PrevIndToken(a:lnum, a:i)
" If we hit the beginning of the file, it is not a catch in a try block
if prev_indtoken == []
@@ -544,7 +554,7 @@ function! s:IsCatchStandalone(lnum, i)
let prev_token = prev_indtoken[0]
- if prev_token =~# '[A-Z_@0-9]'
+ if prev_token =~# '^[A-Z_@0-9]'
let is_standalone = 0
elseif prev_token =~# '[a-z]'
if index(['after', 'and', 'andalso', 'band', 'begin', 'bnot', 'bor', 'bsl',
@@ -659,11 +669,14 @@ endfunction
" stack: [token]
" token: string
" stored_vcol: integer
+" lnum: the line number of the "end of clause" mark (or 0 if we hit the
+" beginning of the file)
+" i: the index of the "end of clause" token within its own line
" Returns:
" result: [should_return, indent]
" should_return: bool -- if true, the caller should return `indent` to Vim
" indent -- integer
-function! s:BeginningOfClauseFound(stack, token, stored_vcol)
+function! s:BeginningOfClauseFound(stack, token, stored_vcol, lnum, i)
if !empty(a:stack) && a:stack[0] ==# 'when'
call s:Log(' BeginningOfClauseFound: "when" found in stack')
call s:Pop(a:stack)
@@ -681,13 +694,45 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol)
return [1, a:stored_vcol + shiftwidth()]
elseif a:stack[0] ==# ';'
call s:Pop(a:stack)
- if empty(a:stack)
- call s:Log(' Stack is ["->", ";"], so LTI is in a function head ' .
- \'-> return')
- return [0, a:stored_vcol]
- else
+
+ if !empty(a:stack)
return [1, s:UnexpectedToken(a:token, a:stack)]
endif
+
+ if a:lnum ==# 0
+ " Set lnum and i to be NextIndToken-friendly
+ let lnum = 1
+ let i = -1
+ else
+ let lnum = a:lnum
+ let i = a:i
+ endif
+
+ " Are we after a "-spec func() ...;" clause?
+ let [next1_indtoken, next1_lnum, next1_i] = s:NextIndToken(lnum, i)
+ if !empty(next1_indtoken) && next1_indtoken[0] =~# '-'
+ let [next2_indtoken, next2_lnum, next2_i] =
+ \s:NextIndToken(next1_lnum, next1_i)
+ if !empty(next2_indtoken) && next2_indtoken[0] =~# 'spec'
+ let [next3_indtoken, next3_lnum, next3_i] =
+ \s:NextIndToken(next2_lnum, next2_i)
+ if !empty(next3_indtoken)
+ let [next4_indtoken, next4_lnum, next4_i] =
+ \s:NextIndToken(next3_lnum, next3_i)
+ if !empty(next4_indtoken)
+ " Yes, we are.
+ call s:Log(' Stack is ["->", ";"], so LTI is in a "-spec" ' .
+ \'attribute -> return')
+ return [1, next4_indtoken[1]]
+ endif
+ endif
+ endif
+ endif
+
+ call s:Log(' Stack is ["->", ";"], so LTI is in a function head ' .
+ \'-> return')
+ return [1, a:stored_vcol]
+
else
return [1, s:UnexpectedToken(a:token, a:stack)]
endif
@@ -714,7 +759,7 @@ function! s:SearchEndPair(lnum, curr_col)
return s:SearchPair(
\ a:lnum, a:curr_col,
\ '\C\<\%(case\|try\|begin\|receive\|if\)\>\|' .
- \ '\<fun\>\%(\s\|\n\|%.*$\)*(',
+ \ '\<fun\>\%(\s\|\n\|%.*$\|[A-Z_@][a-zA-Z_@]*\)*(',
\ '',
\ '\<end\>')
endfunction
@@ -756,7 +801,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
" Hit the start of the file
if lnum ==# 0
let [ret, res] = s:BeginningOfClauseFound(stack, 'beginning_of_file',
- \stored_vcol)
+ \stored_vcol, 0, 0)
if ret | return res | endif
return 0
@@ -775,7 +820,8 @@ function! s:ErlangCalcIndent2(lnum, stack)
endif
if token ==# '<end_of_clause>'
- let [ret, res] = s:BeginningOfClauseFound(stack, token, stored_vcol)
+ let [ret, res] = s:BeginningOfClauseFound(stack, token, stored_vcol,
+ \lnum, i)
if ret | return res | endif
if stored_vcol ==# -1
@@ -787,7 +833,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
endif
elseif stack == ['prev_term_plus']
- if token =~# '[a-zA-Z_@]' ||
+ if token =~# '[a-zA-Z_@#]' ||
\ token ==# '<string>' || token ==# '<string_start>' ||
\ token ==# '<quoted_atom>' || token ==# '<quoted_atom_start>'
call s:Log(' previous token found: curr_vcol + plus = ' .
@@ -917,9 +963,18 @@ function! s:ErlangCalcIndent2(lnum, stack)
if ret | return res | endif
elseif token ==# 'fun'
- let next_indtoken = s:NextIndToken(lnum, i)
+ let [next_indtoken, next_lnum, next_i] = s:NextIndToken(lnum, i)
call s:Log(' Next indtoken = ' . string(next_indtoken))
+ if !empty(next_indtoken) && next_indtoken[0] =~# '^[A-Z_@]'
+ " The "fun" is followed by a variable, so we might have a named fun:
+ " "fun Fun() -> ok end". Thus we take the next token to decide
+ " whether this is a function definition ("fun()") or just a function
+ " reference ("fun Mod:Fun").
+ let [next_indtoken, _, _] = s:NextIndToken(next_lnum, next_i)
+ call s:Log(' Next indtoken = ' . string(next_indtoken))
+ endif
+
if !empty(next_indtoken) && next_indtoken[0] ==# '('
" We have an anonymous function definition
" (e.g. "fun () -> ok end")
@@ -1327,6 +1382,26 @@ function! ErlangIndent()
return -1
endif
+ " If the line starts with the comment, and so is the previous non-blank line
+ if currline =~# '^\s*%'
+ let lnum = prevnonblank(v:lnum - 1)
+ if lnum ==# 0
+ call s:Log('First non-empty line of the file -> return 0.')
+ return 0
+ else
+ let ml = matchlist(getline(lnum), '^\(\s*\)%')
+ " If the previous line also starts with a comment, then return the same
+ " indentation that line has. Otherwise exit from this special "if" and
+ " don't care that the current line is a comment.
+ if !empty(ml)
+ let new_col = s:CalcVCol(ml[1], 0, len(ml[1]) - 1, 0, &tabstop)
+ call s:Log('Comment line after another comment line -> ' .
+ \'use same indent: ' . new_col)
+ return new_col
+ endif
+ endif
+ endif
+
let ml = matchlist(currline,
\'^\(\s*\)\(\%(end\|of\|catch\|after\)\>\|[)\]}]\|>>\)')
@@ -1381,6 +1456,24 @@ function! ErlangIndent()
endfunction
+" ErlangShowTokensInLine functions {{{1
+" ================================
+
+" These functions are useful during development.
+
+function! ErlangShowTokensInLine(line)
+ echo "Line: " . a:line
+ let indtokens = s:GetTokensFromLine(a:line, 0, 0, &tabstop)
+ echo "Tokens:"
+ for it in indtokens
+ echo it
+ endfor
+endfunction
+
+function! ErlangShowTokensInCurrentLine()
+ return ErlangShowTokensInLine(getline('.'))
+endfunction
+
" Cleanup {{{1
" =======
diff --git a/runtime/indent/fortran.vim b/runtime/indent/fortran.vim
index 2ba69e86df..26ed33a54d 100644
--- a/runtime/indent/fortran.vim
+++ b/runtime/indent/fortran.vim
@@ -1,12 +1,13 @@
" Vim indent file
" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
-" Version: 47
-" Last Change: 2016 Oct. 29
+" Version: (v48) 2020 October 07
" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
" Usage: For instructions, do :help fortran-indent from Vim
" Credits:
-" Useful suggestions were made, in chronological order, by:
-" Albert Oliver Serra, Takuya Fujiwara and Philipp Edelmann.
+" Version 0.1 was created in September 2000 by Ajit Thakkar.
+" Since then, useful suggestions and contributions have been made, in order, by:
+" Albert Oliver Serra, Takuya Fujiwara, Philipp Edelmann, Eisuke Kawashima,
+" and Louis Cochen.
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -39,10 +40,10 @@ if !exists("b:fortran_fixed_source")
elseif exists("fortran_fixed_source")
" User guarantees fixed source form
let b:fortran_fixed_source = 1
- elseif expand("%:e") ==? "f\<90\|95\|03\|08\>"
+ elseif expand("%:e") =~? '^f\%(90\|95\|03\|08\)$'
" Free-form file extension defaults as in Intel ifort, gcc(gfortran), NAG, Pathscale, and Cray compilers
let b:fortran_fixed_source = 0
- elseif expand("%:e") ==? "f\|f77\|for"
+ elseif expand("%:e") =~? '^\%(f\|f77\|for\)$'
" Fixed-form file extension defaults
let b:fortran_fixed_source = 1
else
@@ -73,11 +74,15 @@ endif
if (b:fortran_fixed_source == 1)
setlocal indentexpr=FortranGetFixedIndent()
if exists("*FortranGetFixedIndent")
+ let &cpoptions = s:cposet
+ unlet s:cposet
finish
endif
else
setlocal indentexpr=FortranGetFreeIndent()
if exists("*FortranGetFreeIndent")
+ let &cpoptions = s:cposet
+ unlet s:cposet
finish
endif
endif
@@ -145,7 +150,7 @@ function FortranGetIndent(lnum)
\. 'type\|forall\|associate\|enum\|block\)\)\>'
let ind = ind - shiftwidth()
" Fix indent for case statement immediately after select
- if prevstat =~? '\<select\s\+\(case\|type\)\>'
+ if prevstat =~? '\<select\s*\(case\|type\)\>'
let ind = ind + shiftwidth()
endif
endif
@@ -212,7 +217,7 @@ function FortranGetFixedIndent()
return ind
endfunction
-let &cpoptions=s:cposet
+let &cpoptions = s:cposet
unlet s:cposet
" vim:sw=2 tw=130
diff --git a/runtime/indent/haml.vim b/runtime/indent/haml.vim
index e6416e6f53..baca1d49d9 100644
--- a/runtime/indent/haml.vim
+++ b/runtime/indent/haml.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2017 Jun 13
+" Last Change: 2019 Dec 05
if exists("b:did_indent")
finish
@@ -10,7 +10,7 @@ runtime! indent/ruby.vim
unlet! b:did_indent
let b:did_indent = 1
-setlocal autoindent sw=2 et
+setlocal autoindent
setlocal indentexpr=GetHamlIndent()
setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index 1d2043ae9e..7019bd4a82 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -1,9 +1,8 @@
" Vim indent script for HTML
-" Header: "{{{
" Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de>
-" Last Change: 2019 Mar 20
-" Version: 1.0
+" Last Change: 2021 Jan 26
+" Version: 1.0 "{{{
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.
" Supports template systems through hooks.
@@ -223,7 +222,7 @@ endfunc "}}}
call s:AddITags(s:indent_tags, [
\ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big',
\ 'blockquote', 'body', 'button', 'caption', 'center', 'cite', 'code',
- \ 'colgroup', 'del', 'dfn', 'dir', 'div', 'dl', 'em', 'fieldset', 'font',
+ \ 'colgroup', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', 'em', 'fieldset', 'font',
\ 'form', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'html',
\ 'i', 'iframe', 'ins', 'kbd', 'label', 'legend', 'li',
\ 'map', 'menu', 'noframes', 'noscript', 'object', 'ol',
@@ -587,7 +586,7 @@ func! s:Alien3()
return eval(b:hi_js1indent)
endif
if b:hi_indent.scripttype == "javascript"
- return GetJavascriptIndent()
+ return eval(b:hi_js1indent) + GetJavascriptIndent()
else
return -1
endif
@@ -816,7 +815,7 @@ func! s:Alien5()
let idx = match(prevtext, '^\s*\zs<!--')
if idx >= 0
" just below comment start, add a shiftwidth
- return idx + shiftwidth()
+ return indent(prevlnum) + shiftwidth()
endif
" Some files add 4 spaces just below a TODO line. It's difficult to detect
@@ -942,11 +941,11 @@ func! s:InsideTag(foundHtmlString)
let idx = match(text, '<' . s:tagname . '\s\+\zs\w')
endif
if idx == -1
- " after just "<tag" indent one level more
+ " after just "<tag" indent two levels more
let idx = match(text, '<' . s:tagname . '$')
if idx >= 0
- call cursor(lnum, idx)
- return virtcol('.') + shiftwidth()
+ call cursor(lnum, idx + 1)
+ return virtcol('.') - 1 + shiftwidth() * 2
endif
endif
if idx > 0
diff --git a/runtime/indent/j.vim b/runtime/indent/j.vim
index ea3d50936b..c308512ecc 100644
--- a/runtime/indent/j.vim
+++ b/runtime/indent/j.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: J
-" Maintainer: David Bürgin <676c7473@gmail.com>
-" URL: https://github.com/glts/vim-j
+" Maintainer: David Bürgin <dbuergin@gluet.ch>
+" URL: https://gitlab.com/glts/vim-j
" Last Change: 2015-01-11
if exists('b:did_indent')
diff --git a/runtime/indent/json.vim b/runtime/indent/json.vim
index b66a03d81b..c649e37013 100644
--- a/runtime/indent/json.vim
+++ b/runtime/indent/json.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: JSON
" Mantainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
-" Last Change: 2017 Jun 13
+" Last Change: 2020 Aug 30
" https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
" Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
" Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe
@@ -19,7 +19,7 @@ let b:did_indent = 1
setlocal nosmartindent
" Now, set up our indentation expression and keys that trigger it.
-setlocal indentexpr=GetJSONIndent()
+setlocal indentexpr=GetJSONIndent(v:lnum)
setlocal indentkeys=0{,0},0),0[,0],!^F,o,O,e
" Only define the function once.
@@ -86,26 +86,28 @@ endfunction
" 3. GetJSONIndent Function {{{1
" =========================
-function GetJSONIndent()
+function GetJSONIndent(...)
" 3.1. Setup {{{2
" ----------
+ " For the current line, use the first argument if given, else v:lnum
+ let clnum = a:0 ? a:1 : v:lnum
- " Set up variables for restoring position in file. Could use v:lnum here.
+ " Set up variables for restoring position in file. Could use clnum here.
let vcol = col('.')
" 3.2. Work on the current line {{{2
" -----------------------------
" Get the current line.
- let line = getline(v:lnum)
+ let line = getline(clnum)
let ind = -1
" If we got a closing bracket on an empty line, find its match and indent
" according to it.
let col = matchend(line, '^\s*[]}]')
- if col > 0 && !s:IsInString(v:lnum, col)
- call cursor(v:lnum, col)
+ if col > 0 && !s:IsInString(clnum, col)
+ call cursor(clnum, col)
let bs = strpart('{}[]', stridx('}]', line[col - 1]) * 2, 2)
let pairstart = escape(bs[0], '[')
@@ -122,14 +124,14 @@ function GetJSONIndent()
endif
" If we are in a multi-line string, don't do anything to it.
- if s:IsInString(v:lnum, matchend(line, '^\s*') + 1)
+ if s:IsInString(clnum, matchend(line, '^\s*') + 1)
return indent('.')
endif
" 3.3. Work on the previous line. {{{2
" -------------------------------
- let lnum = prevnonblank(v:lnum - 1)
+ let lnum = prevnonblank(clnum - 1)
if lnum == 0
return 0
@@ -151,7 +153,7 @@ function GetJSONIndent()
if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
return ind + shiftwidth()
else
- call cursor(v:lnum, vcol)
+ call cursor(clnum, vcol)
end
endif
diff --git a/runtime/indent/make.vim b/runtime/indent/make.vim
index 66a8a40173..4483efdbd8 100644
--- a/runtime/indent/make.vim
+++ b/runtime/indent/make.vim
@@ -20,8 +20,8 @@ let s:comment_rx = '^\s*#'
let s:rule_rx = '^[^ \t#:][^#:]*:\{1,2}\%([^=:]\|$\)'
let s:continued_rule_rx = '^[^#:]*:\{1,2}\%([^=:]\|$\)'
let s:continuation_rx = '\\$'
-let s:assignment_rx = '^\s*\h\w*\s*[+?]\==\s*\zs.*\\$'
-let s:folded_assignment_rx = '^\s*\h\w*\s*[+?]\=='
+let s:assignment_rx = '^\s*\h\w*\s*[+:?]\==\s*\zs.*\\$'
+let s:folded_assignment_rx = '^\s*\h\w*\s*[+:?]\=='
" TODO: This needs to be a lot more restrictive in what it matches.
let s:just_inserted_rule_rx = '^\s*[^#:]\+:\{1,2}$'
let s:conditional_directive_rx = '^ *\%(ifn\=\%(eq\|def\)\|else\)\>'
diff --git a/runtime/indent/matlab.vim b/runtime/indent/matlab.vim
index d2818a18ea..6390445c60 100644
--- a/runtime/indent/matlab.vim
+++ b/runtime/indent/matlab.vim
@@ -29,7 +29,7 @@ if exists("*GetMatlabIndent") | finish | endif
let s:keepcpo = &cpo
set cpo&vim
-let s:end = '\<end\>\%([^(]*)\)\@!' " Array indexing heuristic
+let s:end = '\<end\>\%([^({]*[)}]\)\@!' " Array indexing heuristic
let s:open_pat = 'for\|if\|parfor\|spmd\|switch\|try\|while\|classdef\|properties\|methods\|events\|enumeration'
let s:dedent_pat = '\C^\s*\zs\<\%(end\|else\|elseif\|catch\|\(case\|otherwise\|function\)\)\>'
let s:start_pat = '\C\<\%(function\|' . s:open_pat . '\)\>'
@@ -38,7 +38,7 @@ let s:zflag = has('patch-7.4.984') ? 'z' : ''
" Returns whether a comment or string envelops the specified column.
function! s:IsCommentOrString(lnum, col)
- return synIDattr(synID(a:lnum, a:col, 1), "name") =~# 'matlabComment\|matlabMultilineComment\|matlabString'
+ return synIDattr(synID(a:lnum, a:col, 1), "name") =~# 'matlabComment\|matlabMultilineComment\|matlabCellComment\|matlabString'
endfunction
" Returns whether the specified line continues on the next line.
@@ -105,7 +105,7 @@ function! GetMatlabIndent()
else
" Count how many blocks the previous line opens/closes
" Line continuations/brackets indent once per statement
- let result = indent(prevlnum) + shiftwidth() * (open - close
+ let result = (prevlnum > 0) * indent(prevlnum) + shiftwidth() * (open - close
\ + (b:MATLAB_bracketlevel ? -!curbracketlevel : !!curbracketlevel)
\ + (curbracketlevel <= 0) * (above_lc - b:MATLAB_waslc))
endif
diff --git a/runtime/indent/meson.vim b/runtime/indent/meson.vim
new file mode 100644
index 0000000000..f116781f74
--- /dev/null
+++ b/runtime/indent/meson.vim
@@ -0,0 +1,180 @@
+" Vim indent file
+" Language: Meson
+" License: VIM License
+" Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
+" Original Authors: David Bustos <bustos@caltech.edu>
+" Bram Moolenaar <Bram@vim.org>
+" Last Change: 2019 Oct 18
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" Some preliminary settings
+setlocal nolisp " Make sure lisp indenting doesn't supersede us
+setlocal autoindent " indentexpr isn't much help otherwise
+
+setlocal indentexpr=GetMesonIndent(v:lnum)
+setlocal indentkeys+==elif,=else,=endforeach,=endif,0)
+
+" Only define the function once.
+if exists("*GetMesonIndent")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Come here when loading the script the first time.
+
+let s:maxoff = 50 " maximum number of lines to look backwards for ()
+
+function GetMesonIndent(lnum)
+ echom getline(line("."))
+
+ " If this line is explicitly joined: If the previous line was also joined,
+ " line it up with that one, otherwise add two 'shiftwidth'
+ if getline(a:lnum - 1) =~ '\\$'
+ if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$'
+ return indent(a:lnum - 1)
+ endif
+ return indent(a:lnum - 1) + (exists("g:mesonindent_continue") ? eval(g:mesonindent_continue) : (shiftwidth() * 2))
+ endif
+
+ " If the start of the line is in a string don't change the indent.
+ if has('syntax_items')
+ \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$"
+ return -1
+ endif
+
+ " Search backwards for the previous non-empty line.
+ let plnum = prevnonblank(v:lnum - 1)
+
+ if plnum == 0
+ " This is the first non-empty line, use zero indent.
+ return 0
+ endif
+
+ " If the previous line is inside parenthesis, use the indent of the starting
+ " line.
+ " Trick: use the non-existing "dummy" variable to break out of the loop when
+ " going too far back.
+ call cursor(plnum, 1)
+ let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
+ \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
+ \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ if parlnum > 0
+ let plindent = indent(parlnum)
+ let plnumstart = parlnum
+ else
+ let plindent = indent(plnum)
+ let plnumstart = plnum
+ endif
+
+
+ " When inside parenthesis: If at the first line below the parenthesis add
+ " a 'shiftwidth', otherwise same as previous line.
+ " i = (a
+ " + b
+ " + c)
+ call cursor(a:lnum, 1)
+ let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
+ \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
+ \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ if p > 0
+ if p == plnum
+ " When the start is inside parenthesis, only indent one 'shiftwidth'.
+ let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
+ \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
+ \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ if pp > 0
+ return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth())
+ endif
+ return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : shiftwidth())
+ endif
+ if plnumstart == p
+ return indent(plnum)
+ endif
+ return plindent
+ endif
+
+
+ " Get the line and remove a trailing comment.
+ " Use syntax highlighting attributes when possible.
+ let pline = getline(plnum)
+ let pline_len = strlen(pline)
+ if has('syntax_items')
+ " If the last character in the line is a comment, do a binary search for
+ " the start of the comment. synID() is slow, a linear search would take
+ " too long on a long line.
+ if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$"
+ let min = 1
+ let max = pline_len
+ while min < max
+ let col = (min + max) / 2
+ if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$"
+ let max = col
+ else
+ let min = col + 1
+ endif
+ endwhile
+ let pline = strpart(pline, 0, min - 1)
+ endif
+ else
+ let col = 0
+ while col < pline_len
+ if pline[col] == '#'
+ let pline = strpart(pline, 0, col)
+ break
+ endif
+ let col = col + 1
+ endwhile
+ endif
+
+ " If the previous line ended the conditional/loop
+ if getline(plnum) =~ '^\s*\(endif\|endforeach\)\>\s*'
+ " Maintain indent
+ return -1
+ endif
+
+ " If the previous line ended with a builtin, indent this line
+ if pline =~ '^\s*\(foreach\|if\|else\|elif\)\>\s*'
+ return plindent + shiftwidth()
+ endif
+
+ " If the current line begins with a header keyword, deindent
+ if getline(a:lnum) =~ '^\s*\(else\|elif\|endif\|endforeach\)'
+
+ " Unless the previous line was a one-liner
+ if getline(plnumstart) =~ '^\s*\(foreach\|if\)\>\s*'
+ return plindent
+ endif
+
+ " Or the user has already dedented
+ if indent(a:lnum) <= plindent - shiftwidth()
+ return -1
+ endif
+
+ return plindent - shiftwidth()
+ endif
+
+ " When after a () construct we probably want to go back to the start line.
+ " a = (b
+ " + c)
+ " here
+ if parlnum > 0
+ return plindent
+ endif
+
+ return -1
+
+endfunction
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:sw=2
diff --git a/runtime/indent/ocaml.vim b/runtime/indent/ocaml.vim
index 8fe9de3d61..19c81f49c4 100644
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -3,7 +3,7 @@
" Maintainers: Jean-Francois Yuen <jfyuen@happycoders.org>
" Mike Leary <leary@nwlink.com>
" Markus Mottl <markus.mottl@gmail.com>
-" URL: http://www.ocaml.info/vim/indent/ocaml.vim
+" URL: https://github.com/ocaml/vim-ocaml
" 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)
@@ -30,7 +30,8 @@ setlocal nosmartindent
" Comment formatting
if !exists("no_ocaml_comments")
if (has("comments"))
- setlocal comments=sr:(*,mb:*,ex:*)
+ setlocal comments=sr:(*\ ,mb:\ ,ex:*)
+ setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal fo=cqort
endif
endif
diff --git a/runtime/indent/perl.vim b/runtime/indent/perl.vim
index 094d1d37ea..5fc8b7008a 100644
--- a/runtime/indent/perl.vim
+++ b/runtime/indent/perl.vim
@@ -1,9 +1,9 @@
" Vim indent file
" Language: Perl 5
" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2017-01-04
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" Last Change: 2020 Apr 15
" Suggestions and improvements by :
" Aaron J. Sherman (use syntax for hints)
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 67a1327dc9..0e623689d5 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -3,7 +3,7 @@
" Author: John Wellesz <John.wellesz (AT) gmail (DOT) com>
" URL: https://www.2072productions.com/vim/indent/php.vim
" Home: https://github.com/2072/PHP-Indenting-for-VIm
-" Last Change: 2019 Jully 21st
+" Last Change: 2020 Mar 05
" Version: 1.70
"
"
diff --git a/runtime/indent/ps1.vim b/runtime/indent/ps1.vim
new file mode 100644
index 0000000000..0f794db83b
--- /dev/null
+++ b/runtime/indent/ps1.vim
@@ -0,0 +1,17 @@
+" Vim indent file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2017 Oct 19
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" smartindent is good enough for powershell
+setlocal smartindent
+" disable the indent removal for # marks
+inoremap <buffer> # X#
+
+let b:undo_indent = "setl si<"
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim
index e53987a0de..f9236e63c7 100644
--- a/runtime/indent/python.vim
+++ b/runtime/indent/python.vim
@@ -28,6 +28,11 @@ set cpo&vim
let s:maxoff = 50 " maximum number of lines to look backwards for ()
+" See if the specified line is already user-dedented from the expected value.
+function s:Dedented(lnum, expected)
+ return indent(a:lnum) <= a:expected - shiftwidth()
+endfunction
+
function GetPythonIndent(lnum)
" If this line is explicitly joined: If the previous line was also joined,
@@ -158,12 +163,12 @@ function GetPythonIndent(lnum)
" If the previous line was a stop-execution statement...
if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
" See if the user has already dedented
- if indent(a:lnum) > indent(plnum) - shiftwidth()
- " If not, recommend one dedent
- return indent(plnum) - shiftwidth()
+ if s:Dedented(a:lnum, indent(plnum))
+ " If so, trust the user
+ return -1
endif
- " Otherwise, trust the user
- return -1
+ " If not, recommend one dedent
+ return indent(plnum) - shiftwidth()
endif
" If the current line begins with a keyword that lines up with "try"
@@ -191,7 +196,7 @@ function GetPythonIndent(lnum)
endif
" Or the user has already dedented
- if indent(a:lnum) <= plindent - shiftwidth()
+ if s:Dedented(a:lnum, plindent)
return -1
endif
@@ -203,7 +208,12 @@ function GetPythonIndent(lnum)
" + c)
" here
if parlnum > 0
- return plindent
+ " ...unless the user has already dedented
+ if s:Dedented(a:lnum, plindent)
+ return -1
+ else
+ return plindent
+ endif
endif
return -1
diff --git a/runtime/indent/perl6.vim b/runtime/indent/raku.vim
index 8561c8c58c..3f9b49ec77 100644
--- a/runtime/indent/perl6.vim
+++ b/runtime/indent/raku.vim
@@ -1,9 +1,9 @@
" Vim indent file
" Language: Perl 6
" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2017 Jun 13
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" Last Change: 2020 Apr 15
" Contributors: Andy Lester <andy@petdance.com>
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
"
@@ -36,7 +36,7 @@ let b:did_indent = 1
" Is syntax highlighting active ?
let b:indent_use_syntax = has("syntax")
-setlocal indentexpr=GetPerl6Indent()
+setlocal indentexpr=GetRakuIndent()
" we reset it first because the Perl 5 indent file might have been loaded due
" to a .pl/pm file extension, and indent files don't clean up afterwards
@@ -50,7 +50,7 @@ endif
let s:cpo_save = &cpo
set cpo-=C
-function! GetPerl6Indent()
+function! GetRakuIndent()
" Get the line to be indented
let cline = getline(v:lnum)
@@ -60,11 +60,6 @@ function! GetPerl6Indent()
return 0
endif
- " Don't reindent coments on first column
- if cline =~ '^#'
- return 0
- endif
-
" Get current syntax item at the line's first char
let csynid = ''
if b:indent_use_syntax
@@ -72,7 +67,7 @@ function! GetPerl6Indent()
endif
" Don't reindent POD and heredocs
- if csynid =~ "^p6Pod"
+ if csynid =~ "^rakuPod"
return indent(v:lnum)
endif
@@ -92,7 +87,7 @@ function! GetPerl6Indent()
let skippin = 2
while skippin
let synid = synIDattr(synID(lnum,1,0),"name")
- if (synid =~ "^p6Pod" || synid =~ "p6Comment")
+ if (synid =~ "^rakuPod" || synid =~ "rakuComment")
let lnum = prevnonblank(lnum - 1)
if lnum == 0
return 0
@@ -107,19 +102,19 @@ function! GetPerl6Indent()
endif
if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
- let ind = ind + shiftwidth()
+ let ind = ind + &sw
endif
if cline =~ '^\s*[)}\]»>]'
- let ind = ind - shiftwidth()
+ let ind = ind - &sw
endif
" Indent lines that begin with 'or' or 'and'
if cline =~ '^\s*\(or\|and\)\>'
if line !~ '^\s*\(or\|and\)\>'
- let ind = ind + shiftwidth()
+ let ind = ind + &sw
endif
elseif line =~ '^\s*\(or\|and\)\>'
- let ind = ind - shiftwidth()
+ let ind = ind - &sw
endif
return ind
diff --git a/runtime/indent/rmd.vim b/runtime/indent/rmd.vim
index 83fe4e4fed..8fd57257fa 100644
--- a/runtime/indent/rmd.vim
+++ b/runtime/indent/rmd.vim
@@ -2,7 +2,7 @@
" Language: Rmd
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Sun Aug 19, 2018 09:14PM
+" Last Change: Sun Mar 28, 2021 08:05PM
" Only load this indent file when no other was loaded.
@@ -13,7 +13,7 @@ runtime indent/r.vim
let s:RIndent = function(substitute(&indentexpr, "()", "", ""))
let b:did_indent = 1
-setlocal indentkeys=0{,0},:,!^F,o,O,e
+setlocal indentkeys=0{,0},<:>,!^F,o,O,e
setlocal indentexpr=GetRmdIndent()
if exists("*GetRmdIndent")
@@ -23,6 +23,21 @@ endif
let s:cpo_save = &cpo
set cpo&vim
+" Simple Python indentation algorithm
+function s:GetPyIndent()
+ let plnum = prevnonblank(v:lnum - 1)
+ let pline = getline(plnum)
+ let cline = getline(v:lnum)
+ if pline =~ '^s```\s*{\s*python '
+ return 0
+ elseif pline =~ ':$'
+ return indent(plnum) + &shiftwidth
+ elseif cline =~ 'else:$'
+ return indent(plnum) - &shiftwidth
+ endif
+ return indent(plnum)
+endfunction
+
function s:GetMdIndent()
let pline = getline(v:lnum - 1)
let cline = getline(v:lnum)
@@ -37,13 +52,14 @@ function s:GetMdIndent()
endfunction
function s:GetYamlIndent()
- let pline = getline(v:lnum - 1)
+ let plnum = prevnonblank(v:lnum - 1)
+ let pline = getline(plnum)
if pline =~ ':\s*$'
- return indent(v:lnum) + shiftwidth()
+ return indent(plnum) + shiftwidth()
elseif pline =~ '^\s*- '
return indent(v:lnum) + 2
endif
- return indent(prevnonblank(v:lnum - 1))
+ return indent(plnum)
endfunction
function GetRmdIndent()
@@ -52,9 +68,11 @@ function GetRmdIndent()
endif
if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW")
return s:RIndent()
- elseif v:lnum > 1 && search('^---$', "bnW") == 1 &&
- \ (search('^---$', "nW") > v:lnum || search('^...$', "nW") > v:lnum)
+ elseif v:lnum > 1 && (search('^---$', "bnW") == 1 &&
+ \ (search('^---$', "nW") > v:lnum || search('^\.\.\.$', "nW") > v:lnum))
return s:GetYamlIndent()
+ elseif search('^[ \t]*```{python', "bncW") > search('^[ \t]*```$', "bncW")
+ return s:GetPyIndent()
else
return s:GetMdIndent()
endif
diff --git a/runtime/indent/rpl.vim b/runtime/indent/rpl.vim
index fab258ed2b..8577c4d274 100644
--- a/runtime/indent/rpl.vim
+++ b/runtime/indent/rpl.vim
@@ -2,7 +2,7 @@
" Language: RPL/2
" Version: 0.2
" Last Change: 2017 Jun 13
-" Maintainer: BERTRAND Jol <rpl2@free.fr>
+" Maintainer: BERTRAND Joël <rpl2@free.fr>
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
diff --git a/runtime/indent/rst.vim b/runtime/indent/rst.vim
index c1ef8c9957..a31ad8e080 100644
--- a/runtime/indent/rst.vim
+++ b/runtime/indent/rst.vim
@@ -1,7 +1,9 @@
" Vim indent file
-" Language: reStructuredText Documentation Format
-" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2011-08-03
+" Vim reST indent file
+" Language: reStructuredText Documentation Format
+" Maintainer: Marshall Ward <marshall.ward@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2020-03-31
if exists("b:did_indent")
finish
@@ -18,6 +20,12 @@ endif
let s:itemization_pattern = '^\s*[-*+]\s'
let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+'
+let s:note_pattern = '^\.\. '
+
+function! s:get_paragraph_start()
+ let paragraph_mark_start = getpos("'{")[1]
+ return getline(paragraph_mark_start) =~ '\S' ? paragraph_mark_start : paragraph_mark_start + 1
+endfunction
function GetRSTIndent()
let lnum = prevnonblank(v:lnum - 1)
@@ -28,6 +36,13 @@ function GetRSTIndent()
let ind = indent(lnum)
let line = getline(lnum)
+ let psnum = s:get_paragraph_start()
+ if psnum != 0
+ if getline(psnum) =~ s:note_pattern
+ let ind = 3
+ endif
+ endif
+
if line =~ s:itemization_pattern
let ind += 2
elseif line =~ s:enumeration_pattern
diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim
index 5c420d7543..657aa763b1 100644
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -4,7 +4,6 @@
" Previous Maintainer: Nikolai Weibull <now at bitwi.se>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2019 Jan 06
" 0. Initialization {{{1
" =================
@@ -27,7 +26,12 @@ endif
if !exists('g:ruby_indent_block_style')
" Possible values: "expression", "do"
- let g:ruby_indent_block_style = 'expression'
+ let g:ruby_indent_block_style = 'do'
+endif
+
+if !exists('g:ruby_indent_hanging_elements')
+ " Non-zero means hanging indents are enabled, zero means disabled
+ let g:ruby_indent_hanging_elements = 1
endif
setlocal nosmartindent
@@ -51,15 +55,27 @@ set cpo&vim
" Syntax group names that are strings.
let s:syng_string =
- \ ['String', 'Interpolation', 'InterpolationDelimiter', 'NoInterpolation', 'StringEscape']
+ \ ['String', 'Interpolation', 'InterpolationDelimiter', 'StringEscape']
" Syntax group names that are strings or documentation.
let s:syng_stringdoc = s:syng_string + ['Documentation']
" Syntax group names that are or delimit strings/symbols/regexes or are comments.
-let s:syng_strcom = s:syng_stringdoc +
- \ ['Regexp', 'RegexpDelimiter', 'RegexpEscape',
- \ 'Symbol', 'StringDelimiter', 'ASCIICode', 'Comment']
+let s:syng_strcom = s:syng_stringdoc + [
+ \ 'Character',
+ \ 'Comment',
+ \ 'HeredocDelimiter',
+ \ 'PercentRegexpDelimiter',
+ \ 'PercentStringDelimiter',
+ \ 'PercentSymbolDelimiter',
+ \ 'Regexp',
+ \ 'RegexpCharClass',
+ \ 'RegexpDelimiter',
+ \ 'RegexpEscape',
+ \ 'StringDelimiter',
+ \ 'Symbol',
+ \ 'SymbolDelimiter',
+ \ ]
" Expression used to check whether we should skip a match with searchpair().
let s:skip_expr =
@@ -69,7 +85,7 @@ let s:skip_expr =
let s:ruby_indent_keywords =
\ '^\s*\zs\<\%(module\|class\|if\|for' .
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue' .
- \ '\|\%(\K\k*[!?]\?\)\=\s*def\):\@!\>' .
+ \ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
@@ -83,7 +99,7 @@ let s:ruby_deindent_keywords =
let s:end_start_regex =
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
- \ '\|\%(\K\k*[!?]\?\)\=\s*def\):\@!\>' .
+ \ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
" Regex that defines the middle-match for the 'end' keyword.
@@ -146,7 +162,7 @@ let s:block_regex =
let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex
" Regex that describes a leading operator (only a method call's dot for now)
-let s:leading_operator_regex = '^\s*[.]'
+let s:leading_operator_regex = '^\s*\%(&\=\.\)'
" 2. GetRubyIndent Function {{{1
" =========================
@@ -310,7 +326,11 @@ function! s:ClosingBracketOnEmptyLine(cline_info) abort
if searchpair(escape(bracket_pair[0], '\['), '', bracket_pair[1], 'bW', s:skip_expr) > 0
if closing_bracket == ')' && col('.') != col('$') - 1
- let ind = virtcol('.') - 1
+ if g:ruby_indent_hanging_elements
+ let ind = virtcol('.') - 1
+ else
+ let ind = indent(line('.'))
+ end
elseif g:ruby_indent_block_style == 'do'
let ind = indent(line('.'))
else " g:ruby_indent_block_style == 'expression'
@@ -535,7 +555,9 @@ function! s:AfterUnbalancedBracket(pline_info) abort
let [opening, closing] = s:ExtraBrackets(info.plnum)
if opening.pos != -1
- if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
+ if !g:ruby_indent_hanging_elements
+ return indent(info.plnum) + info.sw
+ elseif opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
if col('.') + 1 == col('$')
return indent(info.plnum) + info.sw
else
@@ -620,8 +642,7 @@ function! s:PreviousNotMSL(msl_info) abort
" TODO (2016-10-07) Wrong/unused? How could it be "1"?
return indent(info.plnum) - 1
" If previous line is a continuation return its indent.
- " TODO: the || s:IsInString() thing worries me a bit.
- elseif s:Match(info.plnum, s:non_bracket_continuation_regex) || s:IsInString(info.plnum, strlen(line))
+ elseif s:Match(info.plnum, s:non_bracket_continuation_regex)
return indent(info.plnum)
endif
endif
@@ -695,7 +716,10 @@ endfunction
" Check if the character at lnum:col is inside a string delimiter
function! s:IsInStringDelimiter(lnum, col) abort
- return s:IsInRubyGroup(['StringDelimiter'], a:lnum, a:col)
+ return s:IsInRubyGroup(
+ \ ['HeredocDelimiter', 'PercentStringDelimiter', 'StringDelimiter'],
+ \ a:lnum, a:col
+ \ )
endfunction
function! s:IsAssignment(str, pos) abort
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 3df6abbf97..d2fb1ba452 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -3,7 +3,7 @@
" Maintainer: Christian Brabandt <cb@256bit.org>
" Original Author: Nikolai Weibull <now@bitwi.se>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
-" Latest Revision: 2019-07-26
+" Latest Revision: 2019-10-24
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog:
@@ -134,7 +134,7 @@ function! GetShIndent()
" TODO: should we do the same for other "end" lines?
if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$'
let ind = indent(v:lnum)
- let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment"')
+ let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"')
if previous_line > 0
let ind = indent(previous_line)
endif
@@ -195,7 +195,7 @@ endfunction
function! s:is_function_definition(line)
return a:line =~ '^\s*\<\k\+\>\s*()\s*{' ||
\ a:line =~ '^\s*{' ||
- \ a:line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{'
+ \ a:line =~ '^\s*function\s*\k\+\s*\%(()\)\?\s*{'
endfunction
function! s:is_array(line)
diff --git a/runtime/indent/sqlanywhere.vim b/runtime/indent/sqlanywhere.vim
index ba35d76715..601c567adc 100644
--- a/runtime/indent/sqlanywhere.vim
+++ b/runtime/indent/sqlanywhere.vim
@@ -1,7 +1,8 @@
" Vim indent file
" Language: SQL
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
-" Last Change: 2017 Jun 13
+" Last Change By Maintainer: 2017 Jun 13
+" Last Change: by Stephen Wall, #5578, 2020 Jun 07
" Version: 3.0
" Download: http://vim.sourceforge.net/script.php?script_id=495
@@ -67,68 +68,73 @@ set cpo&vim
" IS is excluded, since it is difficult to determine when the
" ending block is (especially for procedures/functions).
let s:SQLBlockStart = '^\s*\%('.
- \ 'if\|else\|elseif\|elsif\|'.
- \ 'while\|loop\|do\|for\|'.
- \ 'begin\|'.
+ \ 'if\>.*\<then\|'.
+ \ 'then\|else\>\|'.
+ \ 'elseif\>.*\<then\|'.
+ \ 'elsif\>.(\<then\|'.
+ \ 'while\>.*\<loop\|'.
+ \ 'for\>.*\<loop\|'.
+ \ 'foreach\>.*\<loop\|'.
+ \ 'loop\|do\|declare\|begin\|'.
\ 'case\|when\|merge\|exception'.
\ '\)\>'
let s:SQLBlockEnd = '^\s*\(end\)\>'
-" The indent level is also based on unmatched paranethesis
+" The indent level is also based on unmatched parentheses
" If a line has an extra "(" increase the indent
" If a line has an extra ")" decrease the indent
-function! s:CountUnbalancedParan( line, paran_to_check )
+function! s:CountUnbalancedParen( line, paren_to_check )
let l = a:line
let lp = substitute(l, '[^(]', '', 'g')
let l = a:line
let rp = substitute(l, '[^)]', '', 'g')
- if a:paran_to_check =~ ')'
- " echom 'CountUnbalancedParan ) returning: ' .
+ if a:paren_to_check =~ ')'
+ " echom 'CountUnbalancedParen ) returning: ' .
" \ (strlen(rp) - strlen(lp))
return (strlen(rp) - strlen(lp))
- elseif a:paran_to_check =~ '('
- " echom 'CountUnbalancedParan ( returning: ' .
+ elseif a:paren_to_check =~ '('
+ " echom 'CountUnbalancedParen ( returning: ' .
" \ (strlen(lp) - strlen(rp))
return (strlen(lp) - strlen(rp))
else
- " echom 'CountUnbalancedParan unknown paran to check: ' .
- " \ a:paran_to_check
+ " echom 'CountUnbalancedParen unknown paren to check: ' .
+ " \ a:paren_to_check
return 0
endif
endfunction
" Unindent commands based on previous indent level
-function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
+function! s:CheckToIgnoreRightParen( prev_lnum, num_levels )
let lnum = a:prev_lnum
let line = getline(lnum)
let ends = 0
- let num_right_paran = a:num_levels
- let ignore_paran = 0
+ let num_right_paren = a:num_levels
+ let ignore_paren = 0
let vircol = 1
- while num_right_paran > 0
+ while num_right_paren > 0
silent! exec 'norm! '.lnum."G\<bar>".vircol."\<bar>"
- let right_paran = search( ')', 'W' )
- if right_paran != lnum
+ let right_paren = search( ')', 'W' )
+ if right_paren != lnum
" This should not happen since there should be at least
- " num_right_paran matches for this line
+ " num_right_paren matches for this line
break
endif
let vircol = virtcol(".")
" if getline(".") =~ '^)'
- let matching_paran = searchpair('(', '', ')', 'bW',
+ let matching_paren = searchpair('(', '', ')', 'bW',
\ 's:IsColComment(line("."), col("."))')
- if matching_paran < 1
+ if matching_paren < 1
" No match found
" echom 'CTIRP - no match found, ignoring'
break
endif
- if matching_paran == lnum
- " This was not an unmatched parantenses, start the search again
+ if matching_paren == lnum
+ " This was not an unmatched parentheses, start the search again
" again after this column
" echom 'CTIRP - same line match, ignoring'
continue
@@ -136,23 +142,23 @@ function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
" echom 'CTIRP - match: ' . line(".") . ' ' . getline(".")
- if getline(matching_paran) =~? '\(if\|while\)\>'
+ if getline(matching_paren) =~? '\(if\|while\)\>'
" echom 'CTIRP - if/while ignored: ' . line(".") . ' ' . getline(".")
- let ignore_paran = ignore_paran + 1
+ let ignore_paren = ignore_paren + 1
endif
" One match found, decrease and check for further matches
- let num_right_paran = num_right_paran - 1
+ let num_right_paren = num_right_paren - 1
endwhile
" Fallback - just move back one
" return a:prev_indent - shiftwidth()
- return ignore_paran
+ return ignore_paren
endfunction
" Based on the keyword provided, loop through previous non empty
-" non comment lines to find the statement that initated the keyword.
+" non comment lines to find the statement that initiated the keyword.
" Return its indent level
" CASE ..
" WHEN ...
@@ -295,26 +301,26 @@ function! GetSQLIndent()
" echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline
elseif prevline =~ '[()]'
if prevline =~ '('
- let num_unmatched_left = s:CountUnbalancedParan( prevline, '(' )
+ let num_unmatched_left = s:CountUnbalancedParen( prevline, '(' )
else
let num_unmatched_left = 0
endif
if prevline =~ ')'
- let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' )
+ let num_unmatched_right = s:CountUnbalancedParen( prevline, ')' )
else
let num_unmatched_right = 0
- " let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' )
+ " let num_unmatched_right = s:CountUnbalancedParen( prevline, ')' )
endif
if num_unmatched_left > 0
- " There is a open left paranethesis
+ " There is a open left parenthesis
" increase indent
let ind = ind + ( shiftwidth() * num_unmatched_left )
elseif num_unmatched_right > 0
- " if it is an unbalanced paranethesis only unindent if
+ " if it is an unbalanced parenthesis only unindent if
" it was part of a command (ie create table(..) )
" instead of part of an if (ie if (....) then) which should
" maintain the indent level
- let ignore = s:CheckToIgnoreRightParan( prevlnum, num_unmatched_right )
+ let ignore = s:CheckToIgnoreRightParen( prevlnum, num_unmatched_right )
" echom 'prevl - ) unbalanced - CTIRP - ignore: ' . ignore
if prevline =~ '^\s*)'
@@ -357,8 +363,8 @@ function! GetSQLIndent()
" elseif line =~ '^\s*)\s*;\?\s*$'
" elseif line =~ '^\s*)'
elseif line =~ '^\s*)'
- let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
- let ignore = s:CheckToIgnoreRightParan( v:lnum, num_unmatched_right )
+ let num_unmatched_right = s:CountUnbalancedParen( line, ')' )
+ let ignore = s:CheckToIgnoreRightParen( v:lnum, num_unmatched_right )
" If the line ends in a ), then reduce the indent
" This catches items like:
" CREATE TABLE T1(
@@ -368,7 +374,7 @@ function! GetSQLIndent()
" But we do not want to unindent a line like:
" IF ( c1 = 1
" AND c2 = 3 ) THEN
- " let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
+ " let num_unmatched_right = s:CountUnbalancedParen( line, ')' )
" if num_unmatched_right > 0
" elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
" let ind = ind - shiftwidth()
diff --git a/runtime/indent/sshconfig.vim b/runtime/indent/sshconfig.vim
new file mode 100644
index 0000000000..b456a9e3aa
--- /dev/null
+++ b/runtime/indent/sshconfig.vim
@@ -0,0 +1,34 @@
+" Vim indent file
+" Language: ssh config file
+" Maintainer: JasonKim <git@jasonk.me>
+" Last Change: 2020 May 16
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent
+setlocal indentexpr=GetSshconfigIndent(v:lnum)
+setlocal indentkeys=o,O,*<Return>,0=~host\ ,0=~match\ ,0#,!^F
+
+let b:undo_indent = "setlocal autoindent< indentexpr< indentkeys<"
+
+if exists("*GetSshconfigIndent")
+ finish
+endif
+
+function GetSshconfigIndent(lnum)
+ let sw = shiftwidth()
+ let prev_lnum = prevnonblank(a:lnum - 1)
+ let curr_lnum = a:lnum
+ let prev_line = getline(prev_lnum)
+ let curr_line = getline(curr_lnum)
+ if curr_line =~? '^\s*\(host\|match\)\s'
+ return 0
+ elseif prev_line =~? '^\s*\(host\|match\)\s'
+ return sw
+ else
+ return indent(prev_lnum)
+ endif
+endfunction
diff --git a/runtime/indent/systemverilog.vim b/runtime/indent/systemverilog.vim
index 91fba4c3b6..590fd4d998 100644
--- a/runtime/indent/systemverilog.vim
+++ b/runtime/indent/systemverilog.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: SystemVerilog
" Maintainer: kocha <kocha.lsifrontend@gmail.com>
-" Last Change: 12-Aug-2013.
+" Last Change: 05-Feb-2017 by Bilal Wasim
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -74,7 +74,7 @@ function SystemVerilogIndent()
" Indent after if/else/for/case/always/initial/specify/fork blocks
elseif last_line =~ '`\@<!\<\(if\|else\)\>' ||
- \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\|do\|foreach\|randcase\)\>' ||
+ \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\|do\|foreach\|forever\|randcase\)\>' ||
\ last_line =~ '^\s*\<\(always\|always_comb\|always_ff\|always_latch\)\>' ||
\ last_line =~ '^\s*\<\(initial\|specify\|fork\|final\)\>'
if last_line !~ '\(;\|\<end\>\)\s*' . sv_comment . '*$' ||
@@ -129,9 +129,9 @@ function SystemVerilogIndent()
" De-indent for the end of one-line block
elseif ( last_line !~ '\<begin\>' ||
\ last_line =~ '\(//\|/\*\).*\<begin\>' ) &&
- \ last_line2 =~ '\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|final\)\>.*' .
+ \ last_line2 =~ '\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|forever\|final\)\>.*' .
\ sv_comment . '*$' &&
- \ last_line2 !~ '\(//\|/\*\).*\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|final\)\>' &&
+ \ last_line2 !~ '\(//\|/\*\).*\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|forever\|final\)\>' &&
\ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' &&
\ ( last_line2 !~ '\<begin\>' ||
\ last_line2 =~ '\(//\|/\*\).*\<begin\>' )
@@ -194,7 +194,7 @@ function SystemVerilogIndent()
\ last_line !~ '^\s*\<\(property\|checker\|program\)\>' &&
\ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . sv_comment . '*$' &&
\ ( last_line =~
- \ '\<\(`\@<!if\|`\@<!else\|for\|case\%[[zx]]\|always\|initial\|do\|foreach\|randcase\|final\)\>' ||
+ \ '\<\(`\@<!if\|`\@<!else\|for\|case\%[[zx]]\|always\|initial\|do\|foreach\|forever\|randcase\|final\)\>' ||
\ last_line =~ ')\s*' . sv_comment . '*$' ||
\ last_line =~ sv_openstat . '\s*' . sv_comment . '*$' )
let ind = ind - offset
diff --git a/runtime/indent/testdir/html.in b/runtime/indent/testdir/html.in
index 9c776d61c6..1acf8c0402 100644
--- a/runtime/indent/testdir/html.in
+++ b/runtime/indent/testdir/html.in
@@ -2,6 +2,16 @@
" START_INDENT
+<html>
+ <body>
+<style>
+div#d1 { color: red; }
+div#d2 { color: green; }
+</style>
+ <script>
+ var v1 = "v1";
+var v2 = "v2";
+ </script>
<div>
<div>
text
@@ -23,4 +33,34 @@ bar">
text
</div>
+<dl>
+<dd>
+dd text
+</dd>
+<dt>
+dt text
+</dt>
+</dl>
+
+ </body>
+</html>
+
" END_INDENT
+
+% START_INDENT
+% INDENT_EXE let g:html_indent_style1 = "inc"
+% INDENT_EXE let g:html_indent_script1 = "zero"
+% INDENT_EXE call HtmlIndent_CheckUserSettings()
+<html>
+ <body>
+<style>
+div#d1 { color: red; }
+div#d2 { color: green; }
+</style>
+ <script>
+ var v1 = "v1";
+var v2 = "v2";
+ </script>
+</body>
+</html>
+% END_INDENT
diff --git a/runtime/indent/testdir/html.ok b/runtime/indent/testdir/html.ok
index ad819333cc..c0dfc9dc72 100644
--- a/runtime/indent/testdir/html.ok
+++ b/runtime/indent/testdir/html.ok
@@ -2,25 +2,65 @@
" START_INDENT
-<div>
- <div>
- text
- </div>
-</div>
-
-<div
- class="foo bar">
- text
-</div>
-
-<div class="foo bar"
- data="something">
- text
-</div>
-
-<div class="foo
- bar">
- text
-</div>
+<html>
+ <body>
+ <style>
+div#d1 { color: red; }
+div#d2 { color: green; }
+ </style>
+ <script>
+ var v1 = "v1";
+ var v2 = "v2";
+ </script>
+ <div>
+ <div>
+ text
+ </div>
+ </div>
+
+ <div
+ class="foo bar">
+ text
+ </div>
+
+ <div class="foo bar"
+ data="something">
+ text
+ </div>
+
+ <div class="foo
+ bar">
+ text
+ </div>
+
+ <dl>
+ <dd>
+ dd text
+ </dd>
+ <dt>
+ dt text
+ </dt>
+ </dl>
+
+ </body>
+</html>
" END_INDENT
+
+% START_INDENT
+% INDENT_EXE let g:html_indent_style1 = "inc"
+% INDENT_EXE let g:html_indent_script1 = "zero"
+% INDENT_EXE call HtmlIndent_CheckUserSettings()
+<html>
+ <body>
+ <style>
+ div#d1 { color: red; }
+ div#d2 { color: green; }
+ </style>
+ <script>
+var v1 = "v1";
+var v2 = "v2";
+ </script>
+ </body>
+</html>
+% END_INDENT
diff --git a/runtime/indent/testdir/matlab.in b/runtime/indent/testdir/matlab.in
index 5bba1a56dd..b997ec8d57 100644
--- a/runtime/indent/testdir/matlab.in
+++ b/runtime/indent/testdir/matlab.in
@@ -37,6 +37,7 @@ end
% START_INDENT
if true
A(1:end - 1)
+C{1:end - 1}
disp foo
end
% END_INDENT
@@ -50,6 +51,14 @@ disp bar
% END_INDENT
% START_INDENT
+if true
+% end
+%% end
+disp foo
+end
+% END_INDENT
+
+% START_INDENT
% INDENT_EXE let b:MATLAB_function_indent = 0
function foo
disp foo
diff --git a/runtime/indent/testdir/matlab.ok b/runtime/indent/testdir/matlab.ok
index b1112263b2..df4e7b2e33 100644
--- a/runtime/indent/testdir/matlab.ok
+++ b/runtime/indent/testdir/matlab.ok
@@ -37,6 +37,7 @@ end
% START_INDENT
if true
A(1:end - 1)
+ C{1:end - 1}
disp foo
end
% END_INDENT
@@ -50,6 +51,14 @@ disp bar
% END_INDENT
% START_INDENT
+if true
+ % end
+ %% end
+ disp foo
+end
+% END_INDENT
+
+% START_INDENT
% INDENT_EXE let b:MATLAB_function_indent = 0
function foo
disp foo
diff --git a/runtime/indent/testdir/runtest.vim b/runtime/indent/testdir/runtest.vim
index 945c2753e9..6bbd33cacd 100644
--- a/runtime/indent/testdir/runtest.vim
+++ b/runtime/indent/testdir/runtest.vim
@@ -117,6 +117,7 @@ for fname in glob('testdir/*.in', 1, 1)
echoerr 'Test ' . fname . ' FAILED!'
else
exe 'write ' . root . '.out'
+ echo "Test " . fname . " OK\n"
endif
quit! " close the indented file
diff --git a/runtime/indent/testdir/sshconfig.in b/runtime/indent/testdir/sshconfig.in
new file mode 100644
index 0000000000..87b998e465
--- /dev/null
+++ b/runtime/indent/testdir/sshconfig.in
@@ -0,0 +1,53 @@
+# vim: set filetype=sshconfig shiftwidth=4 expandtab :
+
+# START_INDENT
+Host myhost
+User myuser
+PasswordAuthentication no
+# END_INDENT
+
+# START_INDENT
+Host aaa
+User bbb
+Host ccc
+Host ddd
+# END_INDENT
+
+# START_INDENT
+host aaa
+HOST bbb
+hoSt ccc
+match ddd
+MATCH eee
+MatCH fff
+# END_INDENT
+
+# START_INDENT
+Host aaa
+User host
+PasswordAuthentication no
+Host *
+User user
+PasswordAuthentication no
+Host match
+User bbb
+# END_INDENT
+
+# START_INDENT
+Host tab
+User myuser
+# END_INDENT
+
+# START_INDENT
+Host mix
+User myuser
+# END_INDENT
+
+# START_INDENT
+Host aaa
+User bbb
+Match ccc
+User ddd
+HostKeyAlgorithms ssh-ed25519
+Match eee
+# END_INDENT
diff --git a/runtime/indent/testdir/sshconfig.ok b/runtime/indent/testdir/sshconfig.ok
new file mode 100644
index 0000000000..b24b7cf4e1
--- /dev/null
+++ b/runtime/indent/testdir/sshconfig.ok
@@ -0,0 +1,53 @@
+# vim: set filetype=sshconfig shiftwidth=4 expandtab :
+
+# START_INDENT
+Host myhost
+ User myuser
+ PasswordAuthentication no
+# END_INDENT
+
+# START_INDENT
+Host aaa
+ User bbb
+Host ccc
+Host ddd
+# END_INDENT
+
+# START_INDENT
+host aaa
+HOST bbb
+hoSt ccc
+match ddd
+MATCH eee
+MatCH fff
+# END_INDENT
+
+# START_INDENT
+Host aaa
+ User host
+ PasswordAuthentication no
+Host *
+ User user
+ PasswordAuthentication no
+Host match
+ User bbb
+# END_INDENT
+
+# START_INDENT
+Host tab
+ User myuser
+# END_INDENT
+
+# START_INDENT
+Host mix
+ User myuser
+# END_INDENT
+
+# START_INDENT
+Host aaa
+ User bbb
+Match ccc
+ User ddd
+ HostKeyAlgorithms ssh-ed25519
+Match eee
+# END_INDENT
diff --git a/runtime/indent/testdir/vim.in b/runtime/indent/testdir/vim.in
index ca105f6eda..699e4c243d 100644
--- a/runtime/indent/testdir/vim.in
+++ b/runtime/indent/testdir/vim.in
@@ -10,6 +10,26 @@ let cmd =
\ 'some '
\ 'string'
+if 1
+let x = [
+\ ]
+endif
+
+" TODO: add searchpair() to find matching {
+"for x in [
+"{
+"key: 'value'
+"},
+"]
+"eval 0
+"endfor
+
+for x in [
+{key: 'value'},
+]
+eval 0
+endfor
+
" END_INDENT
" START_INDENT
@@ -22,7 +42,26 @@ let cmd =
" END_INDENT
" START_INDENT
+" INDENT_EXE let g:vim_indent_cont = 5
+
+let list = [
+\ 'one',
+\ 'two']
+
+" END_INDENT
+
+" START_INDENT
" INDENT_EXE unlet g:vim_indent_cont
+
+let list = [
+'one',
+'two',
+]
+echo
+
+" END_INDENT
+
+" START_INDENT
" INDENT_AT this-line
func Some()
let f = x " this-line
@@ -44,3 +83,18 @@ let f = x
" prev-line
endfunc
" END_INDENT
+
+" START_INDENT
+let a =<< END
+nothing
+END
+" END_INDENT
+
+" START_INDENT
+" INDENT_AT this-line
+let a=<< trim END
+ blah
+ blah
+ blah this-line
+END
+" END_INDENT
diff --git a/runtime/indent/testdir/vim.ok b/runtime/indent/testdir/vim.ok
index 542861ec9c..f597d97e80 100644
--- a/runtime/indent/testdir/vim.ok
+++ b/runtime/indent/testdir/vim.ok
@@ -10,6 +10,26 @@ let cmd =
\ 'some '
\ 'string'
+if 1
+ let x = [
+ \ ]
+endif
+
+" TODO: add searchpair() to find matching {
+"for x in [
+"{
+"key: 'value'
+"},
+"]
+"eval 0
+"endfor
+
+for x in [
+ {key: 'value'},
+ ]
+ eval 0
+endfor
+
" END_INDENT
" START_INDENT
@@ -22,7 +42,26 @@ let cmd =
" END_INDENT
" START_INDENT
+" INDENT_EXE let g:vim_indent_cont = 5
+
+let list = [
+ \ 'one',
+ \ 'two']
+
+" END_INDENT
+
+" START_INDENT
" INDENT_EXE unlet g:vim_indent_cont
+
+let list = [
+ 'one',
+ 'two',
+ ]
+echo
+
+" END_INDENT
+
+" START_INDENT
" INDENT_AT this-line
func Some()
let f = x " this-line
@@ -44,3 +83,18 @@ func Some()
" prev-line
endfunc
" END_INDENT
+
+" START_INDENT
+let a =<< END
+ nothing
+END
+" END_INDENT
+
+" START_INDENT
+" INDENT_AT this-line
+let a=<< trim END
+ blah
+ blah
+ blah this-line
+END
+" END_INDENT
diff --git a/runtime/indent/testdir/yaml.in b/runtime/indent/testdir/yaml.in
new file mode 100644
index 0000000000..8515e1752c
--- /dev/null
+++ b/runtime/indent/testdir/yaml.in
@@ -0,0 +1,19 @@
+# vim: set ft=yaml sw=2 et :
+
+# START_INDENT
+map1:
+sub1:
+- list item
+map2:
+- another list
+# END_INDENT
+
+# START_INDENT
+map: &anchor
+map: val
+# END_INDENT
+
+# START_INDENT
+map: multiline
+value
+# END_INDENT
diff --git a/runtime/indent/testdir/yaml.ok b/runtime/indent/testdir/yaml.ok
new file mode 100644
index 0000000000..5ca2871fc9
--- /dev/null
+++ b/runtime/indent/testdir/yaml.ok
@@ -0,0 +1,19 @@
+# vim: set ft=yaml sw=2 et :
+
+# START_INDENT
+map1:
+ sub1:
+ - list item
+map2:
+ - another list
+# END_INDENT
+
+# START_INDENT
+map: &anchor
+map: val
+# END_INDENT
+
+# START_INDENT
+map: multiline
+ value
+# END_INDENT
diff --git a/runtime/indent/tilde.vim b/runtime/indent/tilde.vim
index 13082c8692..e722a0994c 100644
--- a/runtime/indent/tilde.vim
+++ b/runtime/indent/tilde.vim
@@ -1,5 +1,5 @@
"Description: Indent scheme for the tilde weblanguage
-"Author: Tobias Rundstrm <tobi@tobi.nu>
+"Author: Tobias Rundström <tobi@tobi.nu>
"URL: http://tilde.tildesoftware.net
"Last Change: May 8 09:15:09 CEST 2002
diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim
index cd735c3a3c..ee3d39490d 100644
--- a/runtime/indent/vim.vim
+++ b/runtime/indent/vim.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2016 Jun 27
+" Last Change: 2021 Apr 18
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -10,7 +10,8 @@ endif
let b:did_indent = 1
setlocal indentexpr=GetVimIndent()
-setlocal indentkeys+==end,=else,=cat,=fina,=END,0\\,0=\"\\\
+setlocal indentkeys+==end,=},=else,=cat,=finall,=END,0\\,0=\"\\\
+setlocal indentkeys-=0#
let b:undo_indent = "setl indentkeys< indentexpr<"
@@ -37,6 +38,9 @@ function GetVimIndentIntern()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
+ " The previous line, ignoring line continuation
+ let prev_text_end = lnum > 0 ? getline(lnum) : ''
+
" If the current line doesn't start with '\' or '"\ ' and below a line that
" starts with '\' or '"\ ', use the indent of the line above it.
let cur_text = getline(v:lnum)
@@ -50,13 +54,43 @@ function GetVimIndentIntern()
if lnum == 0
return 0
endif
+
+ " the start of the previous line, skipping over line continuation
let prev_text = getline(lnum)
+ let found_cont = 0
" Add a 'shiftwidth' after :if, :while, :try, :catch, :finally, :function
" and :else. Add it three times for a line that starts with '\' or '"\ '
" after a line that doesn't (or g:vim_indent_cont if it exists).
let ind = indent(lnum)
+
+ " In heredoc indenting works completely differently.
+ if has('syntax_items')
+ let syn_here = synIDattr(synID(v:lnum, 1, 1), "name")
+ if syn_here =~ 'vimLetHereDocStop'
+ " End of heredoc: use indent of matching start line
+ let lnum = v:lnum - 1
+ while lnum > 0
+ let attr = synIDattr(synID(lnum, 1, 1), "name")
+ if attr != '' && attr !~ 'vimLetHereDoc'
+ return indent(lnum)
+ endif
+ let lnum -= 1
+ endwhile
+ return 0
+ endif
+ if syn_here =~ 'vimLetHereDoc'
+ if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
+ " First line in heredoc: increase indent
+ return ind + shiftwidth()
+ endif
+ " Heredoc continues: no change in indent
+ return ind
+ endif
+ endif
+
if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat
+ let found_cont = 1
if exists("g:vim_indent_cont")
let ind = ind + g:vim_indent_cont
else
@@ -66,8 +100,10 @@ function GetVimIndentIntern()
let ind = ind + shiftwidth()
else
" A line starting with :au does not increment/decrement indent.
- if prev_text !~ '^\s*au\%[tocmd]'
- let i = match(prev_text, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>')
+ " A { may start a block or a dict. Assume that when a } follows it's a
+ " terminated dict.
+ if prev_text !~ '^\s*au\%[tocmd]' && prev_text !~ '^\s*{.*}'
+ let i = match(prev_text, '\(^\||\)\s*\(export\s\+\)\?\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\|finall\%[y]\|fu\%[nction]\|def\|el\%[seif]\)\>\)')
if i >= 0
let ind += shiftwidth()
if strpart(prev_text, i, 1) == '|' && has('syntax_items')
@@ -88,10 +124,54 @@ function GetVimIndentIntern()
endif
endif
+ " For a line starting with "}" find the matching "{". If it is at the start
+ " of the line align with it, probably end of a block.
+ " Use the mapped "%" from matchit to find the match, otherwise we may match
+ " a { inside a comment or string.
+ if cur_text =~ '^\s*}'
+ if maparg('%') != ''
+ exe v:lnum
+ silent! normal %
+ if line('.') < v:lnum && getline('.') =~ '^\s*{'
+ let ind = indent('.')
+ endif
+ else
+ " todo: use searchpair() to find a match
+ endif
+ endif
+
+ " Below a line starting with "}" find the matching "{". If it is at the
+ " end of the line we must be below the end of a dictionary.
+ if prev_text =~ '^\s*}'
+ if maparg('%') != ''
+ exe lnum
+ silent! normal %
+ if line('.') == lnum || getline('.') !~ '^\s*{'
+ let ind = ind - shiftwidth()
+ endif
+ else
+ " todo: use searchpair() to find a match
+ endif
+ endif
+
+ " Below a line starting with "]" we must be below the end of a list.
+ " Include a "}" and "},} in case a dictionary ends too.
+ if prev_text_end =~ '^\s*\(},\=\s*\)\=]'
+ let ind = ind - shiftwidth()
+ endif
+
+ let ends_in_comment = has('syntax_items')
+ \ && synIDattr(synID(lnum, len(getline(lnum)), 1), "name") =~ '\(Comment\|String\)$'
+
+ " A line ending in "{" or "[" is most likely the start of a dict/list literal,
+ " indent the next line more. Not for a continuation line or {{{.
+ if !ends_in_comment && prev_text_end =~ '\s[{[]\s*$' && !found_cont
+ let ind = ind + shiftwidth()
+ endif
" Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry,
" :endfun, :else and :augroup END.
- if cur_text =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
+ if cur_text =~ '^\s*\(ene\@!\|cat\|finall\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
let ind = ind - shiftwidth()
endif
diff --git a/runtime/indent/xml.vim b/runtime/indent/xml.vim
index 413a3ddb53..da65417939 100644
--- a/runtime/indent/xml.vim
+++ b/runtime/indent/xml.vim
@@ -2,8 +2,9 @@
" Maintainer: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Changed: 2019 Dec 02
+" Last Changed: 2020 Nov 4th
" Last Change:
+" 20200529 - Handle empty closing tags correctly
" 20191202 - Handle docbk filetype
" 20190726 - Correctly handle non-tagged data
" 20190204 - correctly handle wrap tags
@@ -45,7 +46,7 @@ if !exists('b:xml_indent_open')
endif
if !exists('b:xml_indent_close')
- let b:xml_indent_close = '.\{-}</'
+ let b:xml_indent_close = '.\{-}</\|/>.\{-}'
" end pre tag, e.g. </address>
" let b:xml_indent_close = '.\{-}</\(address\)\@!'
endif
@@ -81,7 +82,7 @@ endfun
" [-- return the sum of indents of a:lnum --]
fun! <SID>XmlIndentSum(line, style, add)
- if <SID>IsXMLContinuation(a:line) && a:style == 0
+ if <SID>IsXMLContinuation(a:line) && a:style == 0 && !<SID>IsXMLEmptyClosingTag(a:line)
" no complete tag, add one additional indent level
" but only for the current line
return a:add + shiftwidth()
@@ -131,13 +132,25 @@ fun! XmlIndentGet(lnum, use_syntax_check)
endif
let syn_name_end = synIDattr(synID(a:lnum, strlen(curline) - 1, 1), 'name')
let syn_name_start = synIDattr(synID(a:lnum, match(curline, '\S') + 1, 1), 'name')
+ let prev_syn_name_end = synIDattr(synID(ptag, strlen(pline) - 1, 1), 'name')
+ " not needed (yet?)
+ " let prev_syn_name_start = synIDattr(synID(ptag, match(pline, '\S') + 1, 1), 'name')
endif
if syn_name_end =~ 'Comment' && syn_name_start =~ 'Comment'
return <SID>XmlIndentComment(a:lnum)
elseif empty(syn_name_start) && empty(syn_name_end) && a:use_syntax_check
" non-xml tag content: use indent from 'autoindent'
- return pind + shiftwidth()
+ if pline =~ b:xml_indent_close
+ return pind
+ elseif !empty(prev_syn_name_end)
+ " only indent by an extra shiftwidth, if the previous line ends
+ " with an XML like tag
+ return pind + shiftwidth()
+ else
+ " no extra indent, looks like a text continuation line
+ return pind
+ endif
endif
" Get indent from previous tag line
@@ -157,15 +170,28 @@ func! <SID>HasNoTagEnd(line)
return a:line !~ '>\s*$'
endfunc
+func! <SID>IsXMLEmptyClosingTag(line)
+ " Checks whether the line ends with an empty closing tag such as <lb/>
+ return a:line =~? '<[^>]*/>\s*$'
+endfunc
+
" return indent for a commented line,
" the middle part might be indented one additional level
func! <SID>XmlIndentComment(lnum)
- let ptagopen = search(b:xml_indent_open, 'bnW')
+ let ptagopen = search('.\{-}<[:A-Z_a-z]\_[^/]\{-}>.\{-}', 'bnW')
let ptagclose = search(b:xml_indent_close, 'bnW')
if getline(a:lnum) =~ '<!--'
" if previous tag was a closing tag, do not add
" one additional level of indent
if ptagclose > ptagopen && a:lnum > ptagclose
+ " If the previous tag was closed on the same line as it was
+ " declared, we should indent with its indent level.
+ if !<SID>IsXMLContinuation(getline(ptagclose))
+ return indent(ptagclose)
+ else
+ return indent(ptagclose) - shiftwidth()
+ endif
+ elseif ptagclose == ptagopen
return indent(ptagclose)
else
" start of comment, add one indentation level
diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim
index 3eb16f845d..8dca5cd763 100644
--- a/runtime/indent/yaml.vim
+++ b/runtime/indent/yaml.vim
@@ -1,16 +1,14 @@
" Vim indent file
-" Language: YAML
-" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
-" Last Change: 2017 Jun 13
+" Language: YAML
+" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
+" Last Update: Lukas Reineke
+" Last Change: 2021 Jan 19
" Only load this indent file when no other was loaded.
if exists('b:did_indent')
finish
endif
-let s:save_cpo = &cpo
-set cpo&vim
-
let b:did_indent = 1
setlocal indentexpr=GetYAMLIndent(v:lnum)
@@ -24,12 +22,15 @@ if exists('*GetYAMLIndent')
finish
endif
+let s:save_cpo = &cpo
+set cpo&vim
+
function s:FindPrevLessIndentedLine(lnum, ...)
let prevlnum = prevnonblank(a:lnum-1)
let curindent = a:0 ? a:1 : indent(a:lnum)
while prevlnum
\&& indent(prevlnum) >= curindent
- \&& getline(prevlnum) =~# '^\s*#'
+ \&& getline(prevlnum) !~# '^\s*#'
let prevlnum = prevnonblank(prevlnum-1)
endwhile
return prevlnum
@@ -53,7 +54,7 @@ let s:c_ns_anchor_name = s:c_ns_anchor_char.'+'
let s:c_ns_anchor_property = '\v\&'.s:c_ns_anchor_name
let s:ns_word_char = '\v[[:alnum:]_\-]'
-let s:ns_tag_char = '\v%(%\x\x|'.s:ns_word_char.'|[#/;?:@&=+$.~*''()])'
+let s:ns_tag_char = '\v%('.s:ns_word_char.'|[#/;?:@&=+$.~*''()])'
let s:c_named_tag_handle = '\v\!'.s:ns_word_char.'+\!'
let s:c_secondary_tag_handle = '\v\!\!'
let s:c_primary_tag_handle = '\v\!'
@@ -62,7 +63,7 @@ let s:c_tag_handle = '\v%('.s:c_named_tag_handle.
\ '|'.s:c_primary_tag_handle.')'
let s:c_ns_shorthand_tag = '\v'.s:c_tag_handle . s:ns_tag_char.'+'
let s:c_non_specific_tag = '\v\!'
-let s:ns_uri_char = '\v%(%\x\x|'.s:ns_word_char.'\v|[#/;?:@&=+$,.!~*''()[\]])'
+let s:ns_uri_char = '\v%('.s:ns_word_char.'\v|[#/;?:@&=+$,.!~*''()[\]])'
let s:c_verbatim_tag = '\v\!\<'.s:ns_uri_char.'+\>'
let s:c_ns_tag_property = '\v'.s:c_verbatim_tag.
\ '\v|'.s:c_ns_shorthand_tag.
diff --git a/runtime/keymap/french-azerty.vim b/runtime/keymap/french-azerty.vim
new file mode 100644
index 0000000000..b0fd758e97
--- /dev/null
+++ b/runtime/keymap/french-azerty.vim
@@ -0,0 +1,81 @@
+" Vim Keymap file for French standard keyboard layout (without AltGr keys as
+" they don't work reliably in all version of vim)
+
+" Maintainer: Yerlan Sergaziyev <yerlaser@outlook.com>
+" Last Changed: 2020-07-18
+
+scriptencoding utf-8
+
+let b:keymap_name = "fr"
+
+loadkeymap
+1 & ASCII AMPERSAND
+2 é LATIN SMALL LETTER E WITH ACUTE
+3 " ASCII DOUBLE QUOTES
+4 ' ASCII SINGLE QUOTE
+5 ( ASCII LEFT PARENTHESIS
+6 - ASCII MINUS
+7 è LATIN SMALL LETTER E WITH GRAVE
+8 _ ASCII UNDERSCORE
+9 ç LATIN SMALL LETTER C WITH CEDILLA
+0 à LATIN SMALL LETTER A WITH GRAVE
+- ) ASCII RIGHT PARENTHESIS
+! 1 ASCII DIGIT 1
+@ 2 ASCII DIGIT 2
+# 3 ASCII DIGIT 3
+$ 4 ASCII DIGIT 4
+% 5 ASCII DIGIT 5
+^ 6 ASCII DIGIT 6
+& 7 ASCII DIGIT 7
+* 8 ASCII DIGIT 8
+( 9 ASCII DIGIT 9
+) 0 ASCII DIGIT 0
+_ ° DEGREE SIGN
+q a LATIN SMALL LETTER A
+a q LATIN SMALL LETTER Q
+z w LATIN SMALL LETTER W
+w z LATIN SMALL LETTER Z
+Q A LATIN CAPITAL LETTER A
+A Q LATIN CAPITAL LETTER Q
+Z W LATIN CAPITAL LETTER W
+W Z LATIN CAPITAL LETTER Z
+[[ ^ ASCII CIRCUMFLEX
+[q â LATIN SMALL LETTER A WITH CIRCUMFLEX
+[e ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+[u û LATIN SMALL LETTER U WITH CIRCUMFLEX
+[i î LATIN SMALL LETTER I WITH CIRCUMFLEX
+[o ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+[Q Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+[E Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+[U Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+[I Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+[O Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+{{ ¨ UMLAUT
+{q ä LATIN SMALL LETTER A WITH UMLAUT
+{e ë LATIN SMALL LETTER E WITH UMLAUT
+{y ÿ LATIN SMALL LETTER Y WITH UMLAUT
+{u ü LATIN SMALL LETTER U WITH UMLAUT
+{i ï LATIN SMALL LETTER I WITH UMLAUT
+{o ö LATIN SMALL LETTER O WITH UMLAUT
+{Q Ä LATIN CAPITAL LETTER A WITH UMLAUT
+{E Ë LATIN CAPITAL LETTER E WITH UMLAUT
+{Y Ÿ LATIN CAPITAL LETTER Y WITH UMLAUT
+{U Ü LATIN CAPITAL LETTER U WITH UMLAUT
+{I Ï LATIN CAPITAL LETTER I WITH UMLAUT
+{O Ö LATIN CAPITAL LETTER O WITH UMLAUT
+] $ ASCII GRAVE
+} £ POUND SIGN
+; m LATIN SMALL LETTER M
+: M LATIN CAPITAL LETTER M
+' ù LATIN SMALL LETTER U WITH GRAVE
+\" % ASCII PERCENT
+\\ * ASCII ASTERISK
+| µ GREEK LETTER MU
+m , ASCII COMMA
+M ? ASCII QUESTION MARK
+, ; ASCII SEMICOLON
+< . ASCII DOT
+. : ASCII COLON
+> / ASCII SLASH
+/ ! ASCII EXCLAMATION MARK
+? § SECTION SIGN
diff --git a/runtime/keymap/german-qwertz.vim b/runtime/keymap/german-qwertz.vim
new file mode 100644
index 0000000000..c2ccb1bfe2
--- /dev/null
+++ b/runtime/keymap/german-qwertz.vim
@@ -0,0 +1,76 @@
+" Vim Keymap file for German standard keyboard layout (without AltGr keys as
+" they don't work reliably in all version of vim)
+
+" Maintainer: Yerlan Sergaziyev <yerlaser@outlook.com>
+" Last Changed: 2020-07-18
+
+scriptencoding utf-8
+
+let b:keymap_name = "de"
+
+loadkeymap
+`` ^ ASCII CIRCUMFLEX
+`e ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+`u û LATIN SMALL LETTER U WITH CIRCUMFLEX
+`i î LATIN SMALL LETTER I WITH CIRCUMFLEX
+`o ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+`a â LATIN SMALL LETTER A WITH CIRCUMFLEX
+`E Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+`U Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+`I Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+`O Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+`A Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+- ß LATIN SMALL LETTER SZ
+== ´ ASCII ACUTE ACCENT
+=e é LATIN SMALL LETTER E WITH ACUTE
+=u ú LATIN SMALL LETTER U WITH ACUTE
+=i í LATIN SMALL LETTER I WITH ACUTE
+=o ó LATIN SMALL LETTER O WITH ACUTE
+=a á LATIN SMALL LETTER A WITH ACUTE
+=z ý LATIN SMALL LETTER Y WITH ACUTE
+=E É LATIN CAPITAL LETTER E WITH ACUTE
+=U Ú LATIN CAPITAL LETTER U WITH ACUTE
+=I Í LATIN CAPITAL LETTER I WITH ACUTE
+=O Ó LATIN CAPITAL LETTER O WITH ACUTE
+=A Á LATIN CAPITAL LETTER A WITH ACUTE
+=Z Ý LATIN CAPITAL LETTER Y WITH ACUTE
+=S ẞ LATIN CAPITAL LETTER SZ
+++ ` ASCII GRAVE
++e è LATIN SMALL LETTER E WITH GRAVE
++u ù LATIN SMALL LETTER U WITH GRAVE
++i ì LATIN SMALL LETTER I WITH GRAVE
++o ò LATIN SMALL LETTER O WITH GRAVE
++a à LATIN SMALL LETTER A WITH GRAVE
++E È LATIN CAPITAL LETTER E WITH GRAVE
++U Ù LATIN CAPITAL LETTER U WITH GRAVE
++I Ì LATIN CAPITAL LETTER I WITH GRAVE
++O Ò LATIN CAPITAL LETTER O WITH GRAVE
++A À LATIN CAPITAL LETTER A WITH GRAVE
+y z LATIN SMALL LETTER Z
+[ ü LATIN SMALL LETTER U WITH UMLAUT
+] + ASCII PLUS
+\\ # ASCII NUMBER SIGN
+; ö LATIN SMALL LETTER O WITH UMLAUT
+' ä LATIN SMALL LETTER A WITH UMLAUT
+z y LATIN SMALL LETTER Y
+/ - ASCII MINUS
+~ ° DEGREE SIGN
+@ " ASCII DOUBLE QUOTES
+# § SECTION SIGN
+^ & ASCII AMPERSAND
+& / ASCII SLASH
+* ( ASCII LEFT PARENTHESIS
+( ) ASCII RIGHT PARENTHESIS
+) = ASCII EQUAL SIGN
+_ ? ASCII QUESTION MARK
++ ` ASCII GRAVE
+Y Z LATIN CAPITAL LETTER Z
+{ Ü LATIN CAPITAL LETTER U WITH UMLAUT
+} * ASCII ASTERISK
+| ' ASCII SINGLE QUOTE
+: Ö LATIN CAPITAL LETTER O WITH UMLAUT
+\" Ä LATIN CAPITAL LETTER A WITH UMLAUT
+Z Y LATIN CAPITAL LETTER Y
+< ; ASCII SEMICOLON
+> : ASCII COLON
+? _ ASCII UNDERSCORE
diff --git a/runtime/keymap/korean-dubeolsik_utf-8.vim b/runtime/keymap/korean-dubeolsik_utf-8.vim
new file mode 100644
index 0000000000..a6b5f2a24c
--- /dev/null
+++ b/runtime/keymap/korean-dubeolsik_utf-8.vim
@@ -0,0 +1,11237 @@
+" Maintainer: Jang Whemoon <palindrom615@gmail.com>
+" Last Change: Nov 24, 2020
+"
+"
+"
+" Unlike Japanese or Chinese, modern Korean texts do not depends on conversion
+" to Hanja (Chinese character). Thus, general Korean text totally can be
+" covered without help of IME but this keymap.
+"
+" BUT, simply mapping each letter of Hangul with sequence of alphabet 1 by 1
+" can fail to combine Hangul jamo (conconants and vowels) right.
+" For example, sequentially pressing `ㅅㅓㅇㅜㄹㄷㅐㅎㅏㄱㅛ` can not only be
+" combined as `서울대학교`, but alse `성ㅜㄹ댛ㅏㄱ교`, which is totally
+" nonsense.
+" Though combining Hangul is deterministic with law that each letter must be
+" one of (consonant + vowel) or (consonant + vowel + consonant), there is no
+" way to apply such law without implementing input engine.
+"
+" Thus, user of this keymap should wait until previous hangul letter is
+" completed before typing next one. To reduce such inconvenience, I suggest to
+" set `timeoutlen` as their own value. (default value is 1000ms)
+scriptencoding utf-8
+
+let b:keymap_name = "ko"
+
+loadkeymap
+
+" Hangul jamo of 40 letters
+
+q ㅂ
+w ㅈ
+e ㄷ
+r ㄱ
+t ㅅ
+y ㅛ
+u ㅕ
+i ㅑ
+o ㅐ
+p ㅔ
+a ㅁ
+s ㄴ
+d ㅇ
+f ㄹ
+g ㅎ
+h ㅗ
+j ㅓ
+k ㅏ
+l ㅣ
+z ㅋ
+x ㅌ
+c ㅊ
+v ㅍ
+b ㅠ
+n ㅜ
+m ㅡ
+Q ㅃ
+W ㅉ
+E ㄸ
+R ㄲ
+T ㅆ
+O ㅒ
+P ㅖ
+
+" Hangul syllables of 11172 letters
+
+rk 가
+ro 개
+ri 갸
+rO 걔
+rj 거
+rp 게
+ru 겨
+rP 계
+rh 고
+rhk 과
+rho 괘
+rhl 괴
+ry 교
+rn 구
+rnj 궈
+rnp 궤
+rnl 귀
+rb 규
+rm 그
+rml 긔
+rl 기
+Rk 까
+Ro 깨
+Ri 꺄
+RO 꺠
+Rj 꺼
+Rp 께
+Ru 껴
+RP 꼐
+Rh 꼬
+Rhk 꽈
+Rho 꽤
+Rhl 꾀
+Ry 꾜
+Rn 꾸
+Rnj 꿔
+Rnp 꿰
+Rnl 뀌
+Rb 뀨
+Rm 끄
+Rml 끠
+Rl 끼
+sk 나
+so 내
+si 냐
+sO 냬
+sj 너
+sp 네
+su 녀
+sP 녜
+sh 노
+shk 놔
+sho 놰
+shl 뇌
+sy 뇨
+sn 누
+snj 눠
+snp 눼
+snl 뉘
+sb 뉴
+sm 느
+sml 늬
+sl 니
+ek 다
+eo 대
+ei 댜
+eO 댸
+ej 더
+ep 데
+eu 뎌
+eP 뎨
+eh 도
+ehk 돠
+eho 돼
+ehl 되
+ey 됴
+en 두
+enj 둬
+enp 뒈
+enl 뒤
+eb 듀
+em 드
+eml 듸
+el 디
+Ek 따
+Eo 때
+Ei 땨
+EO 떄
+Ej 떠
+Ep 떼
+Eu 뗘
+EP 뗴
+Eh 또
+Ehk 똬
+Eho 뙈
+Ehl 뙤
+Ey 뚀
+En 뚜
+Enj 뚸
+Enp 뛔
+Enl 뛰
+Eb 뜌
+Em 뜨
+Eml 띄
+El 띠
+fk 라
+fo 래
+fi 랴
+fO 럐
+fj 러
+fp 레
+fu 려
+fP 례
+fh 로
+fhk 롸
+fho 뢔
+fhl 뢰
+fy 료
+fn 루
+fnj 뤄
+fnp 뤠
+fnl 뤼
+fb 류
+fm 르
+fml 릐
+fl 리
+ak 마
+ao 매
+ai 먀
+aO 먜
+aj 머
+ap 메
+au 며
+aP 몌
+ah 모
+ahk 뫄
+aho 뫠
+ahl 뫼
+ay 묘
+an 무
+anj 뭐
+anp 뭬
+anl 뮈
+ab 뮤
+am 므
+aml 믜
+al 미
+qk 바
+qo 배
+qi 뱌
+qO 뱨
+qj 버
+qp 베
+qu 벼
+qP 볘
+qh 보
+qhk 봐
+qho 봬
+qhl 뵈
+qy 뵤
+qn 부
+qnj 붜
+qnp 붸
+qnl 뷔
+qb 뷰
+qm 브
+qml 븨
+ql 비
+Qk 빠
+Qo 빼
+Qi 뺘
+QO 뺴
+Qj 뻐
+Qp 뻬
+Qu 뼈
+QP 뼤
+Qh 뽀
+Qhk 뽜
+Qho 뽸
+Qhl 뾔
+Qy 뾰
+Qn 뿌
+Qnj 뿨
+Qnp 쀄
+Qnl 쀠
+Qb 쀼
+Qm 쁘
+Qml 쁴
+Ql 삐
+tk 사
+to 새
+ti 샤
+tO 섀
+tj 서
+tp 세
+tu 셔
+tP 셰
+th 소
+thk 솨
+tho 쇄
+thl 쇠
+ty 쇼
+tn 수
+tnj 숴
+tnp 쉐
+tnl 쉬
+tb 슈
+tm 스
+tml 싀
+tl 시
+Tk 싸
+To 쌔
+Ti 쌰
+TO 썌
+Tj 써
+Tp 쎄
+Tu 쎠
+TP 쎼
+Th 쏘
+Thk 쏴
+Tho 쐐
+Thl 쐬
+Ty 쑈
+Tn 쑤
+Tnj 쒀
+Tnp 쒜
+Tnl 쒸
+Tb 쓔
+Tm 쓰
+Tml 씌
+Tl 씨
+dk 아
+do 애
+di 야
+dO 얘
+dj 어
+dp 에
+du 여
+dP 예
+dh 오
+dhk 와
+dho 왜
+dhl 외
+dy 요
+dn 우
+dnj 워
+dnp 웨
+dnl 위
+db 유
+dm 으
+dml 의
+dl 이
+wk 자
+wo 재
+wi 쟈
+wO 쟤
+wj 저
+wp 제
+wu 져
+wP 졔
+wh 조
+whk 좌
+who 좨
+whl 죄
+wy 죠
+wn 주
+wnj 줘
+wnp 줴
+wnl 쥐
+wb 쥬
+wm 즈
+wml 즤
+wl 지
+Wk 짜
+Wo 째
+Wi 쨔
+WO 쨰
+Wj 쩌
+Wp 쩨
+Wu 쪄
+WP 쪠
+Wh 쪼
+Whk 쫘
+Who 쫴
+Whl 쬐
+Wy 쬬
+Wn 쭈
+Wnj 쭤
+Wnp 쮀
+Wnl 쮜
+Wb 쮸
+Wm 쯔
+Wml 쯰
+Wl 찌
+ck 차
+co 채
+ci 챠
+cO 챼
+cj 처
+cp 체
+cu 쳐
+cP 쳬
+ch 초
+chk 촤
+cho 쵀
+chl 최
+cy 쵸
+cn 추
+cnj 춰
+cnp 췌
+cnl 취
+cb 츄
+cm 츠
+cml 츼
+cl 치
+zk 카
+zo 캐
+zi 캬
+zO 컈
+zj 커
+zp 케
+zu 켜
+zP 켸
+zh 코
+zhk 콰
+zho 쾌
+zhl 쾨
+zy 쿄
+zn 쿠
+znj 쿼
+znp 퀘
+znl 퀴
+zb 큐
+zm 크
+zml 킈
+zl 키
+xk 타
+xo 태
+xi 탸
+xO 턔
+xj 터
+xp 테
+xu 텨
+xP 톄
+xh 토
+xhk 톼
+xho 퇘
+xhl 퇴
+xy 툐
+xn 투
+xnj 퉈
+xnp 퉤
+xnl 튀
+xb 튜
+xm 트
+xml 틔
+xl 티
+vk 파
+vo 패
+vi 퍄
+vO 퍠
+vj 퍼
+vp 페
+vu 펴
+vP 폐
+vh 포
+vhk 퐈
+vho 퐤
+vhl 푀
+vy 표
+vn 푸
+vnj 풔
+vnp 풰
+vnl 퓌
+vb 퓨
+vm 프
+vml 픠
+vl 피
+gk 하
+go 해
+gi 햐
+gO 햬
+gj 허
+gp 헤
+gu 혀
+gP 혜
+gh 호
+ghk 화
+gho 홰
+ghl 회
+gy 효
+gn 후
+gnj 훠
+gnp 훼
+gnl 휘
+gb 휴
+gm 흐
+gml 희
+gl 히
+rkr 각
+rkR 갂
+rkrt 갃
+rks 간
+rksw 갅
+rksg 갆
+rke 갇
+rkf 갈
+rkfr 갉
+rkfa 갊
+rkfq 갋
+rkft 갌
+rkfx 갍
+rkfv 갎
+rkfg 갏
+rka 감
+rkq 갑
+rkqt 값
+rkt 갓
+rkT 갔
+rkd 강
+rkw 갖
+rkc 갗
+rkz 갘
+rkx 같
+rkv 갚
+rkg 갛
+ror 객
+roR 갞
+rort 갟
+ros 갠
+rosw 갡
+rosg 갢
+roe 갣
+rof 갤
+rofr 갥
+rofa 갦
+rofq 갧
+roft 갨
+rofx 갩
+rofv 갪
+rofg 갫
+roa 갬
+roq 갭
+roqt 갮
+rot 갯
+roT 갰
+rod 갱
+row 갲
+roc 갳
+roz 갴
+rox 갵
+rov 갶
+rog 갷
+rir 갹
+riR 갺
+rirt 갻
+ris 갼
+risw 갽
+risg 갾
+rie 갿
+rif 걀
+rifr 걁
+rifa 걂
+rifq 걃
+rift 걄
+rifx 걅
+rifv 걆
+rifg 걇
+ria 걈
+riq 걉
+riqt 걊
+rit 걋
+riT 걌
+rid 걍
+riw 걎
+ric 걏
+riz 걐
+rix 걑
+riv 걒
+rig 걓
+rOr 걕
+rOR 걖
+rOrt 걗
+rOs 걘
+rOsw 걙
+rOsg 걚
+rOe 걛
+rOf 걜
+rOfr 걝
+rOfa 걞
+rOfq 걟
+rOft 걠
+rOfx 걡
+rOfv 걢
+rOfg 걣
+rOa 걤
+rOq 걥
+rOqt 걦
+rOt 걧
+rOT 걨
+rOd 걩
+rOw 걪
+rOc 걫
+rOz 걬
+rOx 걭
+rOv 걮
+rOg 걯
+rjr 걱
+rjR 걲
+rjrt 걳
+rjs 건
+rjsw 걵
+rjsg 걶
+rje 걷
+rjf 걸
+rjfr 걹
+rjfa 걺
+rjfq 걻
+rjft 걼
+rjfx 걽
+rjfv 걾
+rjfg 걿
+rja 검
+rjq 겁
+rjqt 겂
+rjt 것
+rjT 겄
+rjd 겅
+rjw 겆
+rjc 겇
+rjz 겈
+rjx 겉
+rjv 겊
+rjg 겋
+rpr 겍
+rpR 겎
+rprt 겏
+rps 겐
+rpsw 겑
+rpsg 겒
+rpe 겓
+rpf 겔
+rpfr 겕
+rpfa 겖
+rpfq 겗
+rpft 겘
+rpfx 겙
+rpfv 겚
+rpfg 겛
+rpa 겜
+rpq 겝
+rpqt 겞
+rpt 겟
+rpT 겠
+rpd 겡
+rpw 겢
+rpc 겣
+rpz 겤
+rpx 겥
+rpv 겦
+rpg 겧
+rur 격
+ruR 겪
+rurt 겫
+rus 견
+rusw 겭
+rusg 겮
+rue 겯
+ruf 결
+rufr 겱
+rufa 겲
+rufq 겳
+ruft 겴
+rufx 겵
+rufv 겶
+rufg 겷
+rua 겸
+ruq 겹
+ruqt 겺
+rut 겻
+ruT 겼
+rud 경
+ruw 겾
+ruc 겿
+ruz 곀
+rux 곁
+ruv 곂
+rug 곃
+rPr 곅
+rPR 곆
+rPrt 곇
+rPs 곈
+rPsw 곉
+rPsg 곊
+rPe 곋
+rPf 곌
+rPfr 곍
+rPfa 곎
+rPfq 곏
+rPft 곐
+rPfx 곑
+rPfv 곒
+rPfg 곓
+rPa 곔
+rPq 곕
+rPqt 곖
+rPt 곗
+rPT 곘
+rPd 곙
+rPw 곚
+rPc 곛
+rPz 곜
+rPx 곝
+rPv 곞
+rPg 곟
+rhr 곡
+rhR 곢
+rhrt 곣
+rhs 곤
+rhsw 곥
+rhsg 곦
+rhe 곧
+rhf 골
+rhfr 곩
+rhfa 곪
+rhfq 곫
+rhft 곬
+rhfx 곭
+rhfv 곮
+rhfg 곯
+rha 곰
+rhq 곱
+rhqt 곲
+rht 곳
+rhT 곴
+rhd 공
+rhw 곶
+rhc 곷
+rhz 곸
+rhx 곹
+rhv 곺
+rhg 곻
+rhkr 곽
+rhkR 곾
+rhkrt 곿
+rhks 관
+rhksw 괁
+rhksg 괂
+rhke 괃
+rhkf 괄
+rhkfr 괅
+rhkfa 괆
+rhkfq 괇
+rhkft 괈
+rhkfx 괉
+rhkfv 괊
+rhkfg 괋
+rhka 괌
+rhkq 괍
+rhkqt 괎
+rhkt 괏
+rhkT 괐
+rhkd 광
+rhkw 괒
+rhkc 괓
+rhkz 괔
+rhkx 괕
+rhkv 괖
+rhkg 괗
+rhor 괙
+rhoR 괚
+rhort 괛
+rhos 괜
+rhosw 괝
+rhosg 괞
+rhoe 괟
+rhof 괠
+rhofr 괡
+rhofa 괢
+rhofq 괣
+rhoft 괤
+rhofx 괥
+rhofv 괦
+rhofg 괧
+rhoa 괨
+rhoq 괩
+rhoqt 괪
+rhot 괫
+rhoT 괬
+rhod 괭
+rhow 괮
+rhoc 괯
+rhoz 괰
+rhox 괱
+rhov 괲
+rhog 괳
+rhlr 괵
+rhlR 괶
+rhlrt 괷
+rhls 괸
+rhlsw 괹
+rhlsg 괺
+rhle 괻
+rhlf 괼
+rhlfr 괽
+rhlfa 괾
+rhlfq 괿
+rhlft 굀
+rhlfx 굁
+rhlfv 굂
+rhlfg 굃
+rhla 굄
+rhlq 굅
+rhlqt 굆
+rhlt 굇
+rhlT 굈
+rhld 굉
+rhlw 굊
+rhlc 굋
+rhlz 굌
+rhlx 굍
+rhlv 굎
+rhlg 굏
+ryr 굑
+ryR 굒
+ryrt 굓
+rys 굔
+rysw 굕
+rysg 굖
+rye 굗
+ryf 굘
+ryfr 굙
+ryfa 굚
+ryfq 굛
+ryft 굜
+ryfx 굝
+ryfv 굞
+ryfg 굟
+rya 굠
+ryq 굡
+ryqt 굢
+ryt 굣
+ryT 굤
+ryd 굥
+ryw 굦
+ryc 굧
+ryz 굨
+ryx 굩
+ryv 굪
+ryg 굫
+rnr 국
+rnR 굮
+rnrt 굯
+rns 군
+rnsw 굱
+rnsg 굲
+rne 굳
+rnf 굴
+rnfr 굵
+rnfa 굶
+rnfq 굷
+rnft 굸
+rnfx 굹
+rnfv 굺
+rnfg 굻
+rna 굼
+rnq 굽
+rnqt 굾
+rnt 굿
+rnT 궀
+rnd 궁
+rnw 궂
+rnc 궃
+rnz 궄
+rnx 궅
+rnv 궆
+rng 궇
+rnjr 궉
+rnjR 궊
+rnjrt 궋
+rnjs 권
+rnjsw 궍
+rnjsg 궎
+rnje 궏
+rnjf 궐
+rnjfr 궑
+rnjfa 궒
+rnjfq 궓
+rnjft 궔
+rnjfx 궕
+rnjfv 궖
+rnjfg 궗
+rnja 궘
+rnjq 궙
+rnjqt 궚
+rnjt 궛
+rnjT 궜
+rnjd 궝
+rnjw 궞
+rnjc 궟
+rnjz 궠
+rnjx 궡
+rnjv 궢
+rnjg 궣
+rnpr 궥
+rnpR 궦
+rnprt 궧
+rnps 궨
+rnpsw 궩
+rnpsg 궪
+rnpe 궫
+rnpf 궬
+rnpfr 궭
+rnpfa 궮
+rnpfq 궯
+rnpft 궰
+rnpfx 궱
+rnpfv 궲
+rnpfg 궳
+rnpa 궴
+rnpq 궵
+rnpqt 궶
+rnpt 궷
+rnpT 궸
+rnpd 궹
+rnpw 궺
+rnpc 궻
+rnpz 궼
+rnpx 궽
+rnpv 궾
+rnpg 궿
+rnlr 귁
+rnlR 귂
+rnlrt 귃
+rnls 귄
+rnlsw 귅
+rnlsg 귆
+rnle 귇
+rnlf 귈
+rnlfr 귉
+rnlfa 귊
+rnlfq 귋
+rnlft 귌
+rnlfx 귍
+rnlfv 귎
+rnlfg 귏
+rnla 귐
+rnlq 귑
+rnlqt 귒
+rnlt 귓
+rnlT 귔
+rnld 귕
+rnlw 귖
+rnlc 귗
+rnlz 귘
+rnlx 귙
+rnlv 귚
+rnlg 귛
+rbr 귝
+rbR 귞
+rbrt 귟
+rbs 균
+rbsw 귡
+rbsg 귢
+rbe 귣
+rbf 귤
+rbfr 귥
+rbfa 귦
+rbfq 귧
+rbft 귨
+rbfx 귩
+rbfv 귪
+rbfg 귫
+rba 귬
+rbq 귭
+rbqt 귮
+rbt 귯
+rbT 귰
+rbd 귱
+rbw 귲
+rbc 귳
+rbz 귴
+rbx 귵
+rbv 귶
+rbg 귷
+rmr 극
+rmR 귺
+rmrt 귻
+rms 근
+rmsw 귽
+rmsg 귾
+rme 귿
+rmf 글
+rmfr 긁
+rmfa 긂
+rmfq 긃
+rmft 긄
+rmfx 긅
+rmfv 긆
+rmfg 긇
+rma 금
+rmq 급
+rmqt 긊
+rmt 긋
+rmT 긌
+rmd 긍
+rmw 긎
+rmc 긏
+rmz 긐
+rmx 긑
+rmv 긒
+rmg 긓
+rmlr 긕
+rmlR 긖
+rmlrt 긗
+rmls 긘
+rmlsw 긙
+rmlsg 긚
+rmle 긛
+rmlf 긜
+rmlfr 긝
+rmlfa 긞
+rmlfq 긟
+rmlft 긠
+rmlfx 긡
+rmlfv 긢
+rmlfg 긣
+rmla 긤
+rmlq 긥
+rmlqt 긦
+rmlt 긧
+rmlT 긨
+rmld 긩
+rmlw 긪
+rmlc 긫
+rmlz 긬
+rmlx 긭
+rmlv 긮
+rmlg 긯
+rlr 긱
+rlR 긲
+rlrt 긳
+rls 긴
+rlsw 긵
+rlsg 긶
+rle 긷
+rlf 길
+rlfr 긹
+rlfa 긺
+rlfq 긻
+rlft 긼
+rlfx 긽
+rlfv 긾
+rlfg 긿
+rla 김
+rlq 깁
+rlqt 깂
+rlt 깃
+rlT 깄
+rld 깅
+rlw 깆
+rlc 깇
+rlz 깈
+rlx 깉
+rlv 깊
+rlg 깋
+Rkr 깍
+RkR 깎
+Rkrt 깏
+Rks 깐
+Rksw 깑
+Rksg 깒
+Rke 깓
+Rkf 깔
+Rkfr 깕
+Rkfa 깖
+Rkfq 깗
+Rkft 깘
+Rkfx 깙
+Rkfv 깚
+Rkfg 깛
+Rka 깜
+Rkq 깝
+Rkqt 깞
+Rkt 깟
+RkT 깠
+Rkd 깡
+Rkw 깢
+Rkc 깣
+Rkz 깤
+Rkx 깥
+Rkv 깦
+Rkg 깧
+Ror 깩
+RoR 깪
+Rort 깫
+Ros 깬
+Rosw 깭
+Rosg 깮
+Roe 깯
+Rof 깰
+Rofr 깱
+Rofa 깲
+Rofq 깳
+Roft 깴
+Rofx 깵
+Rofv 깶
+Rofg 깷
+Roa 깸
+Roq 깹
+Roqt 깺
+Rot 깻
+RoT 깼
+Rod 깽
+Row 깾
+Roc 깿
+Roz 꺀
+Rox 꺁
+Rov 꺂
+Rog 꺃
+Rir 꺅
+RiR 꺆
+Rirt 꺇
+Ris 꺈
+Risw 꺉
+Risg 꺊
+Rie 꺋
+Rif 꺌
+Rifr 꺍
+Rifa 꺎
+Rifq 꺏
+Rift 꺐
+Rifx 꺑
+Rifv 꺒
+Rifg 꺓
+Ria 꺔
+Riq 꺕
+Riqt 꺖
+Rit 꺗
+RiT 꺘
+Rid 꺙
+Riw 꺚
+Ric 꺛
+Riz 꺜
+Rix 꺝
+Riv 꺞
+Rig 꺟
+ROr 꺡
+ROR 꺢
+ROrt 꺣
+ROs 꺤
+ROsw 꺥
+ROsg 꺦
+ROe 꺧
+ROf 꺨
+ROfr 꺩
+ROfa 꺪
+ROfq 꺫
+ROft 꺬
+ROfx 꺭
+ROfv 꺮
+ROfg 꺯
+ROa 꺰
+ROq 꺱
+ROqt 꺲
+ROt 꺳
+ROT 꺴
+ROd 꺵
+ROw 꺶
+ROc 꺷
+ROz 꺸
+ROx 꺹
+ROv 꺺
+ROg 꺻
+Rjr 꺽
+RjR 꺾
+Rjrt 꺿
+Rjs 껀
+Rjsw 껁
+Rjsg 껂
+Rje 껃
+Rjf 껄
+Rjfr 껅
+Rjfa 껆
+Rjfq 껇
+Rjft 껈
+Rjfx 껉
+Rjfv 껊
+Rjfg 껋
+Rja 껌
+Rjq 껍
+Rjqt 껎
+Rjt 껏
+RjT 껐
+Rjd 껑
+Rjw 껒
+Rjc 껓
+Rjz 껔
+Rjx 껕
+Rjv 껖
+Rjg 껗
+Rpr 껙
+RpR 껚
+Rprt 껛
+Rps 껜
+Rpsw 껝
+Rpsg 껞
+Rpe 껟
+Rpf 껠
+Rpfr 껡
+Rpfa 껢
+Rpfq 껣
+Rpft 껤
+Rpfx 껥
+Rpfv 껦
+Rpfg 껧
+Rpa 껨
+Rpq 껩
+Rpqt 껪
+Rpt 껫
+RpT 껬
+Rpd 껭
+Rpw 껮
+Rpc 껯
+Rpz 껰
+Rpx 껱
+Rpv 껲
+Rpg 껳
+Rur 껵
+RuR 껶
+Rurt 껷
+Rus 껸
+Rusw 껹
+Rusg 껺
+Rue 껻
+Ruf 껼
+Rufr 껽
+Rufa 껾
+Rufq 껿
+Ruft 꼀
+Rufx 꼁
+Rufv 꼂
+Rufg 꼃
+Rua 꼄
+Ruq 꼅
+Ruqt 꼆
+Rut 꼇
+RuT 꼈
+Rud 꼉
+Ruw 꼊
+Ruc 꼋
+Ruz 꼌
+Rux 꼍
+Ruv 꼎
+Rug 꼏
+RPr 꼑
+RPR 꼒
+RPrt 꼓
+RPs 꼔
+RPsw 꼕
+RPsg 꼖
+RPe 꼗
+RPf 꼘
+RPfr 꼙
+RPfa 꼚
+RPfq 꼛
+RPft 꼜
+RPfx 꼝
+RPfv 꼞
+RPfg 꼟
+RPa 꼠
+RPq 꼡
+RPqt 꼢
+RPt 꼣
+RPT 꼤
+RPd 꼥
+RPw 꼦
+RPc 꼧
+RPz 꼨
+RPx 꼩
+RPv 꼪
+RPg 꼫
+Rhr 꼭
+RhR 꼮
+Rhrt 꼯
+Rhs 꼰
+Rhsw 꼱
+Rhsg 꼲
+Rhe 꼳
+Rhf 꼴
+Rhfr 꼵
+Rhfa 꼶
+Rhfq 꼷
+Rhft 꼸
+Rhfx 꼹
+Rhfv 꼺
+Rhfg 꼻
+Rha 꼼
+Rhq 꼽
+Rhqt 꼾
+Rht 꼿
+RhT 꽀
+Rhd 꽁
+Rhw 꽂
+Rhc 꽃
+Rhz 꽄
+Rhx 꽅
+Rhv 꽆
+Rhg 꽇
+Rhkr 꽉
+RhkR 꽊
+Rhkrt 꽋
+Rhks 꽌
+Rhksw 꽍
+Rhksg 꽎
+Rhke 꽏
+Rhkf 꽐
+Rhkfr 꽑
+Rhkfa 꽒
+Rhkfq 꽓
+Rhkft 꽔
+Rhkfx 꽕
+Rhkfv 꽖
+Rhkfg 꽗
+Rhka 꽘
+Rhkq 꽙
+Rhkqt 꽚
+Rhkt 꽛
+RhkT 꽜
+Rhkd 꽝
+Rhkw 꽞
+Rhkc 꽟
+Rhkz 꽠
+Rhkx 꽡
+Rhkv 꽢
+Rhkg 꽣
+Rhor 꽥
+RhoR 꽦
+Rhort 꽧
+Rhos 꽨
+Rhosw 꽩
+Rhosg 꽪
+Rhoe 꽫
+Rhof 꽬
+Rhofr 꽭
+Rhofa 꽮
+Rhofq 꽯
+Rhoft 꽰
+Rhofx 꽱
+Rhofv 꽲
+Rhofg 꽳
+Rhoa 꽴
+Rhoq 꽵
+Rhoqt 꽶
+Rhot 꽷
+RhoT 꽸
+Rhod 꽹
+Rhow 꽺
+Rhoc 꽻
+Rhoz 꽼
+Rhox 꽽
+Rhov 꽾
+Rhog 꽿
+Rhlr 꾁
+RhlR 꾂
+Rhlrt 꾃
+Rhls 꾄
+Rhlsw 꾅
+Rhlsg 꾆
+Rhle 꾇
+Rhlf 꾈
+Rhlfr 꾉
+Rhlfa 꾊
+Rhlfq 꾋
+Rhlft 꾌
+Rhlfx 꾍
+Rhlfv 꾎
+Rhlfg 꾏
+Rhla 꾐
+Rhlq 꾑
+Rhlqt 꾒
+Rhlt 꾓
+RhlT 꾔
+Rhld 꾕
+Rhlw 꾖
+Rhlc 꾗
+Rhlz 꾘
+Rhlx 꾙
+Rhlv 꾚
+Rhlg 꾛
+Ryr 꾝
+RyR 꾞
+Ryrt 꾟
+Rys 꾠
+Rysw 꾡
+Rysg 꾢
+Rye 꾣
+Ryf 꾤
+Ryfr 꾥
+Ryfa 꾦
+Ryfq 꾧
+Ryft 꾨
+Ryfx 꾩
+Ryfv 꾪
+Ryfg 꾫
+Rya 꾬
+Ryq 꾭
+Ryqt 꾮
+Ryt 꾯
+RyT 꾰
+Ryd 꾱
+Ryw 꾲
+Ryc 꾳
+Ryz 꾴
+Ryx 꾵
+Ryv 꾶
+Ryg 꾷
+Rnr 꾹
+RnR 꾺
+Rnrt 꾻
+Rns 꾼
+Rnsw 꾽
+Rnsg 꾾
+Rne 꾿
+Rnf 꿀
+Rnfr 꿁
+Rnfa 꿂
+Rnfq 꿃
+Rnft 꿄
+Rnfx 꿅
+Rnfv 꿆
+Rnfg 꿇
+Rna 꿈
+Rnq 꿉
+Rnqt 꿊
+Rnt 꿋
+RnT 꿌
+Rnd 꿍
+Rnw 꿎
+Rnc 꿏
+Rnz 꿐
+Rnx 꿑
+Rnv 꿒
+Rng 꿓
+Rnjr 꿕
+RnjR 꿖
+Rnjrt 꿗
+Rnjs 꿘
+Rnjsw 꿙
+Rnjsg 꿚
+Rnje 꿛
+Rnjf 꿜
+Rnjfr 꿝
+Rnjfa 꿞
+Rnjfq 꿟
+Rnjft 꿠
+Rnjfx 꿡
+Rnjfv 꿢
+Rnjfg 꿣
+Rnja 꿤
+Rnjq 꿥
+Rnjqt 꿦
+Rnjt 꿧
+RnjT 꿨
+Rnjd 꿩
+Rnjw 꿪
+Rnjc 꿫
+Rnjz 꿬
+Rnjx 꿭
+Rnjv 꿮
+Rnjg 꿯
+Rnpr 꿱
+RnpR 꿲
+Rnprt 꿳
+Rnps 꿴
+Rnpsw 꿵
+Rnpsg 꿶
+Rnpe 꿷
+Rnpf 꿸
+Rnpfr 꿹
+Rnpfa 꿺
+Rnpfq 꿻
+Rnpft 꿼
+Rnpfx 꿽
+Rnpfv 꿾
+Rnpfg 꿿
+Rnpa 뀀
+Rnpq 뀁
+Rnpqt 뀂
+Rnpt 뀃
+RnpT 뀄
+Rnpd 뀅
+Rnpw 뀆
+Rnpc 뀇
+Rnpz 뀈
+Rnpx 뀉
+Rnpv 뀊
+Rnpg 뀋
+Rnlr 뀍
+RnlR 뀎
+Rnlrt 뀏
+Rnls 뀐
+Rnlsw 뀑
+Rnlsg 뀒
+Rnle 뀓
+Rnlf 뀔
+Rnlfr 뀕
+Rnlfa 뀖
+Rnlfq 뀗
+Rnlft 뀘
+Rnlfx 뀙
+Rnlfv 뀚
+Rnlfg 뀛
+Rnla 뀜
+Rnlq 뀝
+Rnlqt 뀞
+Rnlt 뀟
+RnlT 뀠
+Rnld 뀡
+Rnlw 뀢
+Rnlc 뀣
+Rnlz 뀤
+Rnlx 뀥
+Rnlv 뀦
+Rnlg 뀧
+Rbr 뀩
+RbR 뀪
+Rbrt 뀫
+Rbs 뀬
+Rbsw 뀭
+Rbsg 뀮
+Rbe 뀯
+Rbf 뀰
+Rbfr 뀱
+Rbfa 뀲
+Rbfq 뀳
+Rbft 뀴
+Rbfx 뀵
+Rbfv 뀶
+Rbfg 뀷
+Rba 뀸
+Rbq 뀹
+Rbqt 뀺
+Rbt 뀻
+RbT 뀼
+Rbd 뀽
+Rbw 뀾
+Rbc 뀿
+Rbz 끀
+Rbx 끁
+Rbv 끂
+Rbg 끃
+Rmr 끅
+RmR 끆
+Rmrt 끇
+Rms 끈
+Rmsw 끉
+Rmsg 끊
+Rme 끋
+Rmf 끌
+Rmfr 끍
+Rmfa 끎
+Rmfq 끏
+Rmft 끐
+Rmfx 끑
+Rmfv 끒
+Rmfg 끓
+Rma 끔
+Rmq 끕
+Rmqt 끖
+Rmt 끗
+RmT 끘
+Rmd 끙
+Rmw 끚
+Rmc 끛
+Rmz 끜
+Rmx 끝
+Rmv 끞
+Rmg 끟
+Rmlr 끡
+RmlR 끢
+Rmlrt 끣
+Rmls 끤
+Rmlsw 끥
+Rmlsg 끦
+Rmle 끧
+Rmlf 끨
+Rmlfr 끩
+Rmlfa 끪
+Rmlfq 끫
+Rmlft 끬
+Rmlfx 끭
+Rmlfv 끮
+Rmlfg 끯
+Rmla 끰
+Rmlq 끱
+Rmlqt 끲
+Rmlt 끳
+RmlT 끴
+Rmld 끵
+Rmlw 끶
+Rmlc 끷
+Rmlz 끸
+Rmlx 끹
+Rmlv 끺
+Rmlg 끻
+Rlr 끽
+RlR 끾
+Rlrt 끿
+Rls 낀
+Rlsw 낁
+Rlsg 낂
+Rle 낃
+Rlf 낄
+Rlfr 낅
+Rlfa 낆
+Rlfq 낇
+Rlft 낈
+Rlfx 낉
+Rlfv 낊
+Rlfg 낋
+Rla 낌
+Rlq 낍
+Rlqt 낎
+Rlt 낏
+RlT 낐
+Rld 낑
+Rlw 낒
+Rlc 낓
+Rlz 낔
+Rlx 낕
+Rlv 낖
+Rlg 낗
+skr 낙
+skR 낚
+skrt 낛
+sks 난
+sksw 낝
+sksg 낞
+ske 낟
+skf 날
+skfr 낡
+skfa 낢
+skfq 낣
+skft 낤
+skfx 낥
+skfv 낦
+skfg 낧
+ska 남
+skq 납
+skqt 낪
+skt 낫
+skT 났
+skd 낭
+skw 낮
+skc 낯
+skz 낰
+skx 낱
+skv 낲
+skg 낳
+sor 낵
+soR 낶
+sort 낷
+sos 낸
+sosw 낹
+sosg 낺
+soe 낻
+sof 낼
+sofr 낽
+sofa 낾
+sofq 낿
+soft 냀
+sofx 냁
+sofv 냂
+sofg 냃
+soa 냄
+soq 냅
+soqt 냆
+sot 냇
+soT 냈
+sod 냉
+sow 냊
+soc 냋
+soz 냌
+sox 냍
+sov 냎
+sog 냏
+sir 냑
+siR 냒
+sirt 냓
+sis 냔
+sisw 냕
+sisg 냖
+sie 냗
+sif 냘
+sifr 냙
+sifa 냚
+sifq 냛
+sift 냜
+sifx 냝
+sifv 냞
+sifg 냟
+sia 냠
+siq 냡
+siqt 냢
+sit 냣
+siT 냤
+sid 냥
+siw 냦
+sic 냧
+siz 냨
+six 냩
+siv 냪
+sig 냫
+sOr 냭
+sOR 냮
+sOrt 냯
+sOs 냰
+sOsw 냱
+sOsg 냲
+sOe 냳
+sOf 냴
+sOfr 냵
+sOfa 냶
+sOfq 냷
+sOft 냸
+sOfx 냹
+sOfv 냺
+sOfg 냻
+sOa 냼
+sOq 냽
+sOqt 냾
+sOt 냿
+sOT 넀
+sOd 넁
+sOw 넂
+sOc 넃
+sOz 넄
+sOx 넅
+sOv 넆
+sOg 넇
+sjr 넉
+sjR 넊
+sjrt 넋
+sjs 넌
+sjsw 넍
+sjsg 넎
+sje 넏
+sjf 널
+sjfr 넑
+sjfa 넒
+sjfq 넓
+sjft 넔
+sjfx 넕
+sjfv 넖
+sjfg 넗
+sja 넘
+sjq 넙
+sjqt 넚
+sjt 넛
+sjT 넜
+sjd 넝
+sjw 넞
+sjc 넟
+sjz 넠
+sjx 넡
+sjv 넢
+sjg 넣
+spr 넥
+spR 넦
+sprt 넧
+sps 넨
+spsw 넩
+spsg 넪
+spe 넫
+spf 넬
+spfr 넭
+spfa 넮
+spfq 넯
+spft 넰
+spfx 넱
+spfv 넲
+spfg 넳
+spa 넴
+spq 넵
+spqt 넶
+spt 넷
+spT 넸
+spd 넹
+spw 넺
+spc 넻
+spz 넼
+spx 넽
+spv 넾
+spg 넿
+sur 녁
+suR 녂
+surt 녃
+sus 년
+susw 녅
+susg 녆
+sue 녇
+suf 녈
+sufr 녉
+sufa 녊
+sufq 녋
+suft 녌
+sufx 녍
+sufv 녎
+sufg 녏
+sua 념
+suq 녑
+suqt 녒
+sut 녓
+suT 녔
+sud 녕
+suw 녖
+suc 녗
+suz 녘
+sux 녙
+suv 녚
+sug 녛
+sPr 녝
+sPR 녞
+sPrt 녟
+sPs 녠
+sPsw 녡
+sPsg 녢
+sPe 녣
+sPf 녤
+sPfr 녥
+sPfa 녦
+sPfq 녧
+sPft 녨
+sPfx 녩
+sPfv 녪
+sPfg 녫
+sPa 녬
+sPq 녭
+sPqt 녮
+sPt 녯
+sPT 녰
+sPd 녱
+sPw 녲
+sPc 녳
+sPz 녴
+sPx 녵
+sPv 녶
+sPg 녷
+shr 녹
+shR 녺
+shrt 녻
+shs 논
+shsw 녽
+shsg 녾
+she 녿
+shf 놀
+shfr 놁
+shfa 놂
+shfq 놃
+shft 놄
+shfx 놅
+shfv 놆
+shfg 놇
+sha 놈
+shq 놉
+shqt 놊
+sht 놋
+shT 놌
+shd 농
+shw 놎
+shc 놏
+shz 놐
+shx 놑
+shv 높
+shg 놓
+shkr 놕
+shkR 놖
+shkrt 놗
+shks 놘
+shksw 놙
+shksg 놚
+shke 놛
+shkf 놜
+shkfr 놝
+shkfa 놞
+shkfq 놟
+shkft 놠
+shkfx 놡
+shkfv 놢
+shkfg 놣
+shka 놤
+shkq 놥
+shkqt 놦
+shkt 놧
+shkT 놨
+shkd 놩
+shkw 놪
+shkc 놫
+shkz 놬
+shkx 놭
+shkv 놮
+shkg 놯
+shor 놱
+shoR 놲
+short 놳
+shos 놴
+shosw 놵
+shosg 놶
+shoe 놷
+shof 놸
+shofr 놹
+shofa 놺
+shofq 놻
+shoft 놼
+shofx 놽
+shofv 놾
+shofg 놿
+shoa 뇀
+shoq 뇁
+shoqt 뇂
+shot 뇃
+shoT 뇄
+shod 뇅
+show 뇆
+shoc 뇇
+shoz 뇈
+shox 뇉
+shov 뇊
+shog 뇋
+shlr 뇍
+shlR 뇎
+shlrt 뇏
+shls 뇐
+shlsw 뇑
+shlsg 뇒
+shle 뇓
+shlf 뇔
+shlfr 뇕
+shlfa 뇖
+shlfq 뇗
+shlft 뇘
+shlfx 뇙
+shlfv 뇚
+shlfg 뇛
+shla 뇜
+shlq 뇝
+shlqt 뇞
+shlt 뇟
+shlT 뇠
+shld 뇡
+shlw 뇢
+shlc 뇣
+shlz 뇤
+shlx 뇥
+shlv 뇦
+shlg 뇧
+syr 뇩
+syR 뇪
+syrt 뇫
+sys 뇬
+sysw 뇭
+sysg 뇮
+sye 뇯
+syf 뇰
+syfr 뇱
+syfa 뇲
+syfq 뇳
+syft 뇴
+syfx 뇵
+syfv 뇶
+syfg 뇷
+sya 뇸
+syq 뇹
+syqt 뇺
+syt 뇻
+syT 뇼
+syd 뇽
+syw 뇾
+syc 뇿
+syz 눀
+syx 눁
+syv 눂
+syg 눃
+snr 눅
+snR 눆
+snrt 눇
+sns 눈
+snsw 눉
+snsg 눊
+sne 눋
+snf 눌
+snfr 눍
+snfa 눎
+snfq 눏
+snft 눐
+snfx 눑
+snfv 눒
+snfg 눓
+sna 눔
+snq 눕
+snqt 눖
+snt 눗
+snT 눘
+snd 눙
+snw 눚
+snc 눛
+snz 눜
+snx 눝
+snv 눞
+sng 눟
+snjr 눡
+snjR 눢
+snjrt 눣
+snjs 눤
+snjsw 눥
+snjsg 눦
+snje 눧
+snjf 눨
+snjfr 눩
+snjfa 눪
+snjfq 눫
+snjft 눬
+snjfx 눭
+snjfv 눮
+snjfg 눯
+snja 눰
+snjq 눱
+snjqt 눲
+snjt 눳
+snjT 눴
+snjd 눵
+snjw 눶
+snjc 눷
+snjz 눸
+snjx 눹
+snjv 눺
+snjg 눻
+snpr 눽
+snpR 눾
+snprt 눿
+snps 뉀
+snpsw 뉁
+snpsg 뉂
+snpe 뉃
+snpf 뉄
+snpfr 뉅
+snpfa 뉆
+snpfq 뉇
+snpft 뉈
+snpfx 뉉
+snpfv 뉊
+snpfg 뉋
+snpa 뉌
+snpq 뉍
+snpqt 뉎
+snpt 뉏
+snpT 뉐
+snpd 뉑
+snpw 뉒
+snpc 뉓
+snpz 뉔
+snpx 뉕
+snpv 뉖
+snpg 뉗
+snlr 뉙
+snlR 뉚
+snlrt 뉛
+snls 뉜
+snlsw 뉝
+snlsg 뉞
+snle 뉟
+snlf 뉠
+snlfr 뉡
+snlfa 뉢
+snlfq 뉣
+snlft 뉤
+snlfx 뉥
+snlfv 뉦
+snlfg 뉧
+snla 뉨
+snlq 뉩
+snlqt 뉪
+snlt 뉫
+snlT 뉬
+snld 뉭
+snlw 뉮
+snlc 뉯
+snlz 뉰
+snlx 뉱
+snlv 뉲
+snlg 뉳
+sbr 뉵
+sbR 뉶
+sbrt 뉷
+sbs 뉸
+sbsw 뉹
+sbsg 뉺
+sbe 뉻
+sbf 뉼
+sbfr 뉽
+sbfa 뉾
+sbfq 뉿
+sbft 늀
+sbfx 늁
+sbfv 늂
+sbfg 늃
+sba 늄
+sbq 늅
+sbqt 늆
+sbt 늇
+sbT 늈
+sbd 늉
+sbw 늊
+sbc 늋
+sbz 늌
+sbx 늍
+sbv 늎
+sbg 늏
+smr 늑
+smR 늒
+smrt 늓
+sms 는
+smsw 늕
+smsg 늖
+sme 늗
+smf 늘
+smfr 늙
+smfa 늚
+smfq 늛
+smft 늜
+smfx 늝
+smfv 늞
+smfg 늟
+sma 늠
+smq 늡
+smqt 늢
+smt 늣
+smT 늤
+smd 능
+smw 늦
+smc 늧
+smz 늨
+smx 늩
+smv 늪
+smg 늫
+smlr 늭
+smlR 늮
+smlrt 늯
+smls 늰
+smlsw 늱
+smlsg 늲
+smle 늳
+smlf 늴
+smlfr 늵
+smlfa 늶
+smlfq 늷
+smlft 늸
+smlfx 늹
+smlfv 늺
+smlfg 늻
+smla 늼
+smlq 늽
+smlqt 늾
+smlt 늿
+smlT 닀
+smld 닁
+smlw 닂
+smlc 닃
+smlz 닄
+smlx 닅
+smlv 닆
+smlg 닇
+slr 닉
+slR 닊
+slrt 닋
+sls 닌
+slsw 닍
+slsg 닎
+sle 닏
+slf 닐
+slfr 닑
+slfa 닒
+slfq 닓
+slft 닔
+slfx 닕
+slfv 닖
+slfg 닗
+sla 님
+slq 닙
+slqt 닚
+slt 닛
+slT 닜
+sld 닝
+slw 닞
+slc 닟
+slz 닠
+slx 닡
+slv 닢
+slg 닣
+ekr 닥
+ekR 닦
+ekrt 닧
+eks 단
+eksw 닩
+eksg 닪
+eke 닫
+ekf 달
+ekfr 닭
+ekfa 닮
+ekfq 닯
+ekft 닰
+ekfx 닱
+ekfv 닲
+ekfg 닳
+eka 담
+ekq 답
+ekqt 닶
+ekt 닷
+ekT 닸
+ekd 당
+ekw 닺
+ekc 닻
+ekz 닼
+ekx 닽
+ekv 닾
+ekg 닿
+eor 댁
+eoR 댂
+eort 댃
+eos 댄
+eosw 댅
+eosg 댆
+eoe 댇
+eof 댈
+eofr 댉
+eofa 댊
+eofq 댋
+eoft 댌
+eofx 댍
+eofv 댎
+eofg 댏
+eoa 댐
+eoq 댑
+eoqt 댒
+eot 댓
+eoT 댔
+eod 댕
+eow 댖
+eoc 댗
+eoz 댘
+eox 댙
+eov 댚
+eog 댛
+eir 댝
+eiR 댞
+eirt 댟
+eis 댠
+eisw 댡
+eisg 댢
+eie 댣
+eif 댤
+eifr 댥
+eifa 댦
+eifq 댧
+eift 댨
+eifx 댩
+eifv 댪
+eifg 댫
+eia 댬
+eiq 댭
+eiqt 댮
+eit 댯
+eiT 댰
+eid 댱
+eiw 댲
+eic 댳
+eiz 댴
+eix 댵
+eiv 댶
+eig 댷
+eOr 댹
+eOR 댺
+eOrt 댻
+eOs 댼
+eOsw 댽
+eOsg 댾
+eOe 댿
+eOf 덀
+eOfr 덁
+eOfa 덂
+eOfq 덃
+eOft 덄
+eOfx 덅
+eOfv 덆
+eOfg 덇
+eOa 덈
+eOq 덉
+eOqt 덊
+eOt 덋
+eOT 덌
+eOd 덍
+eOw 덎
+eOc 덏
+eOz 덐
+eOx 덑
+eOv 덒
+eOg 덓
+ejr 덕
+ejR 덖
+ejrt 덗
+ejs 던
+ejsw 덙
+ejsg 덚
+eje 덛
+ejf 덜
+ejfr 덝
+ejfa 덞
+ejfq 덟
+ejft 덠
+ejfx 덡
+ejfv 덢
+ejfg 덣
+eja 덤
+ejq 덥
+ejqt 덦
+ejt 덧
+ejT 덨
+ejd 덩
+ejw 덪
+ejc 덫
+ejz 덬
+ejx 덭
+ejv 덮
+ejg 덯
+epr 덱
+epR 덲
+eprt 덳
+eps 덴
+epsw 덵
+epsg 덶
+epe 덷
+epf 델
+epfr 덹
+epfa 덺
+epfq 덻
+epft 덼
+epfx 덽
+epfv 덾
+epfg 덿
+epa 뎀
+epq 뎁
+epqt 뎂
+ept 뎃
+epT 뎄
+epd 뎅
+epw 뎆
+epc 뎇
+epz 뎈
+epx 뎉
+epv 뎊
+epg 뎋
+eur 뎍
+euR 뎎
+eurt 뎏
+eus 뎐
+eusw 뎑
+eusg 뎒
+eue 뎓
+euf 뎔
+eufr 뎕
+eufa 뎖
+eufq 뎗
+euft 뎘
+eufx 뎙
+eufv 뎚
+eufg 뎛
+eua 뎜
+euq 뎝
+euqt 뎞
+eut 뎟
+euT 뎠
+eud 뎡
+euw 뎢
+euc 뎣
+euz 뎤
+eux 뎥
+euv 뎦
+eug 뎧
+ePr 뎩
+ePR 뎪
+ePrt 뎫
+ePs 뎬
+ePsw 뎭
+ePsg 뎮
+ePe 뎯
+ePf 뎰
+ePfr 뎱
+ePfa 뎲
+ePfq 뎳
+ePft 뎴
+ePfx 뎵
+ePfv 뎶
+ePfg 뎷
+ePa 뎸
+ePq 뎹
+ePqt 뎺
+ePt 뎻
+ePT 뎼
+ePd 뎽
+ePw 뎾
+ePc 뎿
+ePz 돀
+ePx 돁
+ePv 돂
+ePg 돃
+ehr 독
+ehR 돆
+ehrt 돇
+ehs 돈
+ehsw 돉
+ehsg 돊
+ehe 돋
+ehf 돌
+ehfr 돍
+ehfa 돎
+ehfq 돏
+ehft 돐
+ehfx 돑
+ehfv 돒
+ehfg 돓
+eha 돔
+ehq 돕
+ehqt 돖
+eht 돗
+ehT 돘
+ehd 동
+ehw 돚
+ehc 돛
+ehz 돜
+ehx 돝
+ehv 돞
+ehg 돟
+ehkr 돡
+ehkR 돢
+ehkrt 돣
+ehks 돤
+ehksw 돥
+ehksg 돦
+ehke 돧
+ehkf 돨
+ehkfr 돩
+ehkfa 돪
+ehkfq 돫
+ehkft 돬
+ehkfx 돭
+ehkfv 돮
+ehkfg 돯
+ehka 돰
+ehkq 돱
+ehkqt 돲
+ehkt 돳
+ehkT 돴
+ehkd 돵
+ehkw 돶
+ehkc 돷
+ehkz 돸
+ehkx 돹
+ehkv 돺
+ehkg 돻
+ehor 돽
+ehoR 돾
+ehort 돿
+ehos 됀
+ehosw 됁
+ehosg 됂
+ehoe 됃
+ehof 됄
+ehofr 됅
+ehofa 됆
+ehofq 됇
+ehoft 됈
+ehofx 됉
+ehofv 됊
+ehofg 됋
+ehoa 됌
+ehoq 됍
+ehoqt 됎
+ehot 됏
+ehoT 됐
+ehod 됑
+ehow 됒
+ehoc 됓
+ehoz 됔
+ehox 됕
+ehov 됖
+ehog 됗
+ehlr 됙
+ehlR 됚
+ehlrt 됛
+ehls 된
+ehlsw 됝
+ehlsg 됞
+ehle 됟
+ehlf 될
+ehlfr 됡
+ehlfa 됢
+ehlfq 됣
+ehlft 됤
+ehlfx 됥
+ehlfv 됦
+ehlfg 됧
+ehla 됨
+ehlq 됩
+ehlqt 됪
+ehlt 됫
+ehlT 됬
+ehld 됭
+ehlw 됮
+ehlc 됯
+ehlz 됰
+ehlx 됱
+ehlv 됲
+ehlg 됳
+eyr 됵
+eyR 됶
+eyrt 됷
+eys 됸
+eysw 됹
+eysg 됺
+eye 됻
+eyf 됼
+eyfr 됽
+eyfa 됾
+eyfq 됿
+eyft 둀
+eyfx 둁
+eyfv 둂
+eyfg 둃
+eya 둄
+eyq 둅
+eyqt 둆
+eyt 둇
+eyT 둈
+eyd 둉
+eyw 둊
+eyc 둋
+eyz 둌
+eyx 둍
+eyv 둎
+eyg 둏
+enr 둑
+enR 둒
+enrt 둓
+ens 둔
+ensw 둕
+ensg 둖
+ene 둗
+enf 둘
+enfr 둙
+enfa 둚
+enfq 둛
+enft 둜
+enfx 둝
+enfv 둞
+enfg 둟
+ena 둠
+enq 둡
+enqt 둢
+ent 둣
+enT 둤
+end 둥
+enw 둦
+enc 둧
+enz 둨
+enx 둩
+env 둪
+eng 둫
+enjr 둭
+enjR 둮
+enjrt 둯
+enjs 둰
+enjsw 둱
+enjsg 둲
+enje 둳
+enjf 둴
+enjfr 둵
+enjfa 둶
+enjfq 둷
+enjft 둸
+enjfx 둹
+enjfv 둺
+enjfg 둻
+enja 둼
+enjq 둽
+enjqt 둾
+enjt 둿
+enjT 뒀
+enjd 뒁
+enjw 뒂
+enjc 뒃
+enjz 뒄
+enjx 뒅
+enjv 뒆
+enjg 뒇
+enpr 뒉
+enpR 뒊
+enprt 뒋
+enps 뒌
+enpsw 뒍
+enpsg 뒎
+enpe 뒏
+enpf 뒐
+enpfr 뒑
+enpfa 뒒
+enpfq 뒓
+enpft 뒔
+enpfx 뒕
+enpfv 뒖
+enpfg 뒗
+enpa 뒘
+enpq 뒙
+enpqt 뒚
+enpt 뒛
+enpT 뒜
+enpd 뒝
+enpw 뒞
+enpc 뒟
+enpz 뒠
+enpx 뒡
+enpv 뒢
+enpg 뒣
+enlr 뒥
+enlR 뒦
+enlrt 뒧
+enls 뒨
+enlsw 뒩
+enlsg 뒪
+enle 뒫
+enlf 뒬
+enlfr 뒭
+enlfa 뒮
+enlfq 뒯
+enlft 뒰
+enlfx 뒱
+enlfv 뒲
+enlfg 뒳
+enla 뒴
+enlq 뒵
+enlqt 뒶
+enlt 뒷
+enlT 뒸
+enld 뒹
+enlw 뒺
+enlc 뒻
+enlz 뒼
+enlx 뒽
+enlv 뒾
+enlg 뒿
+ebr 듁
+ebR 듂
+ebrt 듃
+ebs 듄
+ebsw 듅
+ebsg 듆
+ebe 듇
+ebf 듈
+ebfr 듉
+ebfa 듊
+ebfq 듋
+ebft 듌
+ebfx 듍
+ebfv 듎
+ebfg 듏
+eba 듐
+ebq 듑
+ebqt 듒
+ebt 듓
+ebT 듔
+ebd 듕
+ebw 듖
+ebc 듗
+ebz 듘
+ebx 듙
+ebv 듚
+ebg 듛
+emr 득
+emR 듞
+emrt 듟
+ems 든
+emsw 듡
+emsg 듢
+eme 듣
+emf 들
+emfr 듥
+emfa 듦
+emfq 듧
+emft 듨
+emfx 듩
+emfv 듪
+emfg 듫
+ema 듬
+emq 듭
+emqt 듮
+emt 듯
+emT 듰
+emd 등
+emw 듲
+emc 듳
+emz 듴
+emx 듵
+emv 듶
+emg 듷
+emlr 듹
+emlR 듺
+emlrt 듻
+emls 듼
+emlsw 듽
+emlsg 듾
+emle 듿
+emlf 딀
+emlfr 딁
+emlfa 딂
+emlfq 딃
+emlft 딄
+emlfx 딅
+emlfv 딆
+emlfg 딇
+emla 딈
+emlq 딉
+emlqt 딊
+emlt 딋
+emlT 딌
+emld 딍
+emlw 딎
+emlc 딏
+emlz 딐
+emlx 딑
+emlv 딒
+emlg 딓
+elr 딕
+elR 딖
+elrt 딗
+els 딘
+elsw 딙
+elsg 딚
+ele 딛
+elf 딜
+elfr 딝
+elfa 딞
+elfq 딟
+elft 딠
+elfx 딡
+elfv 딢
+elfg 딣
+ela 딤
+elq 딥
+elqt 딦
+elt 딧
+elT 딨
+eld 딩
+elw 딪
+elc 딫
+elz 딬
+elx 딭
+elv 딮
+elg 딯
+Ekr 딱
+EkR 딲
+Ekrt 딳
+Eks 딴
+Eksw 딵
+Eksg 딶
+Eke 딷
+Ekf 딸
+Ekfr 딹
+Ekfa 딺
+Ekfq 딻
+Ekft 딼
+Ekfx 딽
+Ekfv 딾
+Ekfg 딿
+Eka 땀
+Ekq 땁
+Ekqt 땂
+Ekt 땃
+EkT 땄
+Ekd 땅
+Ekw 땆
+Ekc 땇
+Ekz 땈
+Ekx 땉
+Ekv 땊
+Ekg 땋
+Eor 땍
+EoR 땎
+Eort 땏
+Eos 땐
+Eosw 땑
+Eosg 땒
+Eoe 땓
+Eof 땔
+Eofr 땕
+Eofa 땖
+Eofq 땗
+Eoft 땘
+Eofx 땙
+Eofv 땚
+Eofg 땛
+Eoa 땜
+Eoq 땝
+Eoqt 땞
+Eot 땟
+EoT 땠
+Eod 땡
+Eow 땢
+Eoc 땣
+Eoz 땤
+Eox 땥
+Eov 땦
+Eog 땧
+Eir 땩
+EiR 땪
+Eirt 땫
+Eis 땬
+Eisw 땭
+Eisg 땮
+Eie 땯
+Eif 땰
+Eifr 땱
+Eifa 땲
+Eifq 땳
+Eift 땴
+Eifx 땵
+Eifv 땶
+Eifg 땷
+Eia 땸
+Eiq 땹
+Eiqt 땺
+Eit 땻
+EiT 땼
+Eid 땽
+Eiw 땾
+Eic 땿
+Eiz 떀
+Eix 떁
+Eiv 떂
+Eig 떃
+EOr 떅
+EOR 떆
+EOrt 떇
+EOs 떈
+EOsw 떉
+EOsg 떊
+EOe 떋
+EOf 떌
+EOfr 떍
+EOfa 떎
+EOfq 떏
+EOft 떐
+EOfx 떑
+EOfv 떒
+EOfg 떓
+EOa 떔
+EOq 떕
+EOqt 떖
+EOt 떗
+EOT 떘
+EOd 떙
+EOw 떚
+EOc 떛
+EOz 떜
+EOx 떝
+EOv 떞
+EOg 떟
+Ejr 떡
+EjR 떢
+Ejrt 떣
+Ejs 떤
+Ejsw 떥
+Ejsg 떦
+Eje 떧
+Ejf 떨
+Ejfr 떩
+Ejfa 떪
+Ejfq 떫
+Ejft 떬
+Ejfx 떭
+Ejfv 떮
+Ejfg 떯
+Eja 떰
+Ejq 떱
+Ejqt 떲
+Ejt 떳
+EjT 떴
+Ejd 떵
+Ejw 떶
+Ejc 떷
+Ejz 떸
+Ejx 떹
+Ejv 떺
+Ejg 떻
+Epr 떽
+EpR 떾
+Eprt 떿
+Eps 뗀
+Epsw 뗁
+Epsg 뗂
+Epe 뗃
+Epf 뗄
+Epfr 뗅
+Epfa 뗆
+Epfq 뗇
+Epft 뗈
+Epfx 뗉
+Epfv 뗊
+Epfg 뗋
+Epa 뗌
+Epq 뗍
+Epqt 뗎
+Ept 뗏
+EpT 뗐
+Epd 뗑
+Epw 뗒
+Epc 뗓
+Epz 뗔
+Epx 뗕
+Epv 뗖
+Epg 뗗
+Eur 뗙
+EuR 뗚
+Eurt 뗛
+Eus 뗜
+Eusw 뗝
+Eusg 뗞
+Eue 뗟
+Euf 뗠
+Eufr 뗡
+Eufa 뗢
+Eufq 뗣
+Euft 뗤
+Eufx 뗥
+Eufv 뗦
+Eufg 뗧
+Eua 뗨
+Euq 뗩
+Euqt 뗪
+Eut 뗫
+EuT 뗬
+Eud 뗭
+Euw 뗮
+Euc 뗯
+Euz 뗰
+Eux 뗱
+Euv 뗲
+Eug 뗳
+EPr 뗵
+EPR 뗶
+EPrt 뗷
+EPs 뗸
+EPsw 뗹
+EPsg 뗺
+EPe 뗻
+EPf 뗼
+EPfr 뗽
+EPfa 뗾
+EPfq 뗿
+EPft 똀
+EPfx 똁
+EPfv 똂
+EPfg 똃
+EPa 똄
+EPq 똅
+EPqt 똆
+EPt 똇
+EPT 똈
+EPd 똉
+EPw 똊
+EPc 똋
+EPz 똌
+EPx 똍
+EPv 똎
+EPg 똏
+Ehr 똑
+EhR 똒
+Ehrt 똓
+Ehs 똔
+Ehsw 똕
+Ehsg 똖
+Ehe 똗
+Ehf 똘
+Ehfr 똙
+Ehfa 똚
+Ehfq 똛
+Ehft 똜
+Ehfx 똝
+Ehfv 똞
+Ehfg 똟
+Eha 똠
+Ehq 똡
+Ehqt 똢
+Eht 똣
+EhT 똤
+Ehd 똥
+Ehw 똦
+Ehc 똧
+Ehz 똨
+Ehx 똩
+Ehv 똪
+Ehg 똫
+Ehkr 똭
+EhkR 똮
+Ehkrt 똯
+Ehks 똰
+Ehksw 똱
+Ehksg 똲
+Ehke 똳
+Ehkf 똴
+Ehkfr 똵
+Ehkfa 똶
+Ehkfq 똷
+Ehkft 똸
+Ehkfx 똹
+Ehkfv 똺
+Ehkfg 똻
+Ehka 똼
+Ehkq 똽
+Ehkqt 똾
+Ehkt 똿
+EhkT 뙀
+Ehkd 뙁
+Ehkw 뙂
+Ehkc 뙃
+Ehkz 뙄
+Ehkx 뙅
+Ehkv 뙆
+Ehkg 뙇
+Ehor 뙉
+EhoR 뙊
+Ehort 뙋
+Ehos 뙌
+Ehosw 뙍
+Ehosg 뙎
+Ehoe 뙏
+Ehof 뙐
+Ehofr 뙑
+Ehofa 뙒
+Ehofq 뙓
+Ehoft 뙔
+Ehofx 뙕
+Ehofv 뙖
+Ehofg 뙗
+Ehoa 뙘
+Ehoq 뙙
+Ehoqt 뙚
+Ehot 뙛
+EhoT 뙜
+Ehod 뙝
+Ehow 뙞
+Ehoc 뙟
+Ehoz 뙠
+Ehox 뙡
+Ehov 뙢
+Ehog 뙣
+Ehlr 뙥
+EhlR 뙦
+Ehlrt 뙧
+Ehls 뙨
+Ehlsw 뙩
+Ehlsg 뙪
+Ehle 뙫
+Ehlf 뙬
+Ehlfr 뙭
+Ehlfa 뙮
+Ehlfq 뙯
+Ehlft 뙰
+Ehlfx 뙱
+Ehlfv 뙲
+Ehlfg 뙳
+Ehla 뙴
+Ehlq 뙵
+Ehlqt 뙶
+Ehlt 뙷
+EhlT 뙸
+Ehld 뙹
+Ehlw 뙺
+Ehlc 뙻
+Ehlz 뙼
+Ehlx 뙽
+Ehlv 뙾
+Ehlg 뙿
+Eyr 뚁
+EyR 뚂
+Eyrt 뚃
+Eys 뚄
+Eysw 뚅
+Eysg 뚆
+Eye 뚇
+Eyf 뚈
+Eyfr 뚉
+Eyfa 뚊
+Eyfq 뚋
+Eyft 뚌
+Eyfx 뚍
+Eyfv 뚎
+Eyfg 뚏
+Eya 뚐
+Eyq 뚑
+Eyqt 뚒
+Eyt 뚓
+EyT 뚔
+Eyd 뚕
+Eyw 뚖
+Eyc 뚗
+Eyz 뚘
+Eyx 뚙
+Eyv 뚚
+Eyg 뚛
+Enr 뚝
+EnR 뚞
+Enrt 뚟
+Ens 뚠
+Ensw 뚡
+Ensg 뚢
+Ene 뚣
+Enf 뚤
+Enfr 뚥
+Enfa 뚦
+Enfq 뚧
+Enft 뚨
+Enfx 뚩
+Enfv 뚪
+Enfg 뚫
+Ena 뚬
+Enq 뚭
+Enqt 뚮
+Ent 뚯
+EnT 뚰
+End 뚱
+Enw 뚲
+Enc 뚳
+Enz 뚴
+Enx 뚵
+Env 뚶
+Eng 뚷
+Enjr 뚹
+EnjR 뚺
+Enjrt 뚻
+Enjs 뚼
+Enjsw 뚽
+Enjsg 뚾
+Enje 뚿
+Enjf 뛀
+Enjfr 뛁
+Enjfa 뛂
+Enjfq 뛃
+Enjft 뛄
+Enjfx 뛅
+Enjfv 뛆
+Enjfg 뛇
+Enja 뛈
+Enjq 뛉
+Enjqt 뛊
+Enjt 뛋
+EnjT 뛌
+Enjd 뛍
+Enjw 뛎
+Enjc 뛏
+Enjz 뛐
+Enjx 뛑
+Enjv 뛒
+Enjg 뛓
+Enpr 뛕
+EnpR 뛖
+Enprt 뛗
+Enps 뛘
+Enpsw 뛙
+Enpsg 뛚
+Enpe 뛛
+Enpf 뛜
+Enpfr 뛝
+Enpfa 뛞
+Enpfq 뛟
+Enpft 뛠
+Enpfx 뛡
+Enpfv 뛢
+Enpfg 뛣
+Enpa 뛤
+Enpq 뛥
+Enpqt 뛦
+Enpt 뛧
+EnpT 뛨
+Enpd 뛩
+Enpw 뛪
+Enpc 뛫
+Enpz 뛬
+Enpx 뛭
+Enpv 뛮
+Enpg 뛯
+Enlr 뛱
+EnlR 뛲
+Enlrt 뛳
+Enls 뛴
+Enlsw 뛵
+Enlsg 뛶
+Enle 뛷
+Enlf 뛸
+Enlfr 뛹
+Enlfa 뛺
+Enlfq 뛻
+Enlft 뛼
+Enlfx 뛽
+Enlfv 뛾
+Enlfg 뛿
+Enla 뜀
+Enlq 뜁
+Enlqt 뜂
+Enlt 뜃
+EnlT 뜄
+Enld 뜅
+Enlw 뜆
+Enlc 뜇
+Enlz 뜈
+Enlx 뜉
+Enlv 뜊
+Enlg 뜋
+Ebr 뜍
+EbR 뜎
+Ebrt 뜏
+Ebs 뜐
+Ebsw 뜑
+Ebsg 뜒
+Ebe 뜓
+Ebf 뜔
+Ebfr 뜕
+Ebfa 뜖
+Ebfq 뜗
+Ebft 뜘
+Ebfx 뜙
+Ebfv 뜚
+Ebfg 뜛
+Eba 뜜
+Ebq 뜝
+Ebqt 뜞
+Ebt 뜟
+EbT 뜠
+Ebd 뜡
+Ebw 뜢
+Ebc 뜣
+Ebz 뜤
+Ebx 뜥
+Ebv 뜦
+Ebg 뜧
+Emr 뜩
+EmR 뜪
+Emrt 뜫
+Ems 뜬
+Emsw 뜭
+Emsg 뜮
+Eme 뜯
+Emf 뜰
+Emfr 뜱
+Emfa 뜲
+Emfq 뜳
+Emft 뜴
+Emfx 뜵
+Emfv 뜶
+Emfg 뜷
+Ema 뜸
+Emq 뜹
+Emqt 뜺
+Emt 뜻
+EmT 뜼
+Emd 뜽
+Emw 뜾
+Emc 뜿
+Emz 띀
+Emx 띁
+Emv 띂
+Emg 띃
+Emlr 띅
+EmlR 띆
+Emlrt 띇
+Emls 띈
+Emlsw 띉
+Emlsg 띊
+Emle 띋
+Emlf 띌
+Emlfr 띍
+Emlfa 띎
+Emlfq 띏
+Emlft 띐
+Emlfx 띑
+Emlfv 띒
+Emlfg 띓
+Emla 띔
+Emlq 띕
+Emlqt 띖
+Emlt 띗
+EmlT 띘
+Emld 띙
+Emlw 띚
+Emlc 띛
+Emlz 띜
+Emlx 띝
+Emlv 띞
+Emlg 띟
+Elr 띡
+ElR 띢
+Elrt 띣
+Els 띤
+Elsw 띥
+Elsg 띦
+Ele 띧
+Elf 띨
+Elfr 띩
+Elfa 띪
+Elfq 띫
+Elft 띬
+Elfx 띭
+Elfv 띮
+Elfg 띯
+Ela 띰
+Elq 띱
+Elqt 띲
+Elt 띳
+ElT 띴
+Eld 띵
+Elw 띶
+Elc 띷
+Elz 띸
+Elx 띹
+Elv 띺
+Elg 띻
+fkr 락
+fkR 띾
+fkrt 띿
+fks 란
+fksw 랁
+fksg 랂
+fke 랃
+fkf 랄
+fkfr 랅
+fkfa 랆
+fkfq 랇
+fkft 랈
+fkfx 랉
+fkfv 랊
+fkfg 랋
+fka 람
+fkq 랍
+fkqt 랎
+fkt 랏
+fkT 랐
+fkd 랑
+fkw 랒
+fkc 랓
+fkz 랔
+fkx 랕
+fkv 랖
+fkg 랗
+for 랙
+foR 랚
+fort 랛
+fos 랜
+fosw 랝
+fosg 랞
+foe 랟
+fof 랠
+fofr 랡
+fofa 랢
+fofq 랣
+foft 랤
+fofx 랥
+fofv 랦
+fofg 랧
+foa 램
+foq 랩
+foqt 랪
+fot 랫
+foT 랬
+fod 랭
+fow 랮
+foc 랯
+foz 랰
+fox 랱
+fov 랲
+fog 랳
+fir 략
+fiR 랶
+firt 랷
+fis 랸
+fisw 랹
+fisg 랺
+fie 랻
+fif 랼
+fifr 랽
+fifa 랾
+fifq 랿
+fift 럀
+fifx 럁
+fifv 럂
+fifg 럃
+fia 럄
+fiq 럅
+fiqt 럆
+fit 럇
+fiT 럈
+fid 량
+fiw 럊
+fic 럋
+fiz 럌
+fix 럍
+fiv 럎
+fig 럏
+fOr 럑
+fOR 럒
+fOrt 럓
+fOs 럔
+fOsw 럕
+fOsg 럖
+fOe 럗
+fOf 럘
+fOfr 럙
+fOfa 럚
+fOfq 럛
+fOft 럜
+fOfx 럝
+fOfv 럞
+fOfg 럟
+fOa 럠
+fOq 럡
+fOqt 럢
+fOt 럣
+fOT 럤
+fOd 럥
+fOw 럦
+fOc 럧
+fOz 럨
+fOx 럩
+fOv 럪
+fOg 럫
+fjr 럭
+fjR 럮
+fjrt 럯
+fjs 런
+fjsw 럱
+fjsg 럲
+fje 럳
+fjf 럴
+fjfr 럵
+fjfa 럶
+fjfq 럷
+fjft 럸
+fjfx 럹
+fjfv 럺
+fjfg 럻
+fja 럼
+fjq 럽
+fjqt 럾
+fjt 럿
+fjT 렀
+fjd 렁
+fjw 렂
+fjc 렃
+fjz 렄
+fjx 렅
+fjv 렆
+fjg 렇
+fpr 렉
+fpR 렊
+fprt 렋
+fps 렌
+fpsw 렍
+fpsg 렎
+fpe 렏
+fpf 렐
+fpfr 렑
+fpfa 렒
+fpfq 렓
+fpft 렔
+fpfx 렕
+fpfv 렖
+fpfg 렗
+fpa 렘
+fpq 렙
+fpqt 렚
+fpt 렛
+fpT 렜
+fpd 렝
+fpw 렞
+fpc 렟
+fpz 렠
+fpx 렡
+fpv 렢
+fpg 렣
+fur 력
+fuR 렦
+furt 렧
+fus 련
+fusw 렩
+fusg 렪
+fue 렫
+fuf 렬
+fufr 렭
+fufa 렮
+fufq 렯
+fuft 렰
+fufx 렱
+fufv 렲
+fufg 렳
+fua 렴
+fuq 렵
+fuqt 렶
+fut 렷
+fuT 렸
+fud 령
+fuw 렺
+fuc 렻
+fuz 렼
+fux 렽
+fuv 렾
+fug 렿
+fPr 롁
+fPR 롂
+fPrt 롃
+fPs 롄
+fPsw 롅
+fPsg 롆
+fPe 롇
+fPf 롈
+fPfr 롉
+fPfa 롊
+fPfq 롋
+fPft 롌
+fPfx 롍
+fPfv 롎
+fPfg 롏
+fPa 롐
+fPq 롑
+fPqt 롒
+fPt 롓
+fPT 롔
+fPd 롕
+fPw 롖
+fPc 롗
+fPz 롘
+fPx 롙
+fPv 롚
+fPg 롛
+fhr 록
+fhR 롞
+fhrt 롟
+fhs 론
+fhsw 롡
+fhsg 롢
+fhe 롣
+fhf 롤
+fhfr 롥
+fhfa 롦
+fhfq 롧
+fhft 롨
+fhfx 롩
+fhfv 롪
+fhfg 롫
+fha 롬
+fhq 롭
+fhqt 롮
+fht 롯
+fhT 롰
+fhd 롱
+fhw 롲
+fhc 롳
+fhz 롴
+fhx 롵
+fhv 롶
+fhg 롷
+fhkr 롹
+fhkR 롺
+fhkrt 롻
+fhks 롼
+fhksw 롽
+fhksg 롾
+fhke 롿
+fhkf 뢀
+fhkfr 뢁
+fhkfa 뢂
+fhkfq 뢃
+fhkft 뢄
+fhkfx 뢅
+fhkfv 뢆
+fhkfg 뢇
+fhka 뢈
+fhkq 뢉
+fhkqt 뢊
+fhkt 뢋
+fhkT 뢌
+fhkd 뢍
+fhkw 뢎
+fhkc 뢏
+fhkz 뢐
+fhkx 뢑
+fhkv 뢒
+fhkg 뢓
+fhor 뢕
+fhoR 뢖
+fhort 뢗
+fhos 뢘
+fhosw 뢙
+fhosg 뢚
+fhoe 뢛
+fhof 뢜
+fhofr 뢝
+fhofa 뢞
+fhofq 뢟
+fhoft 뢠
+fhofx 뢡
+fhofv 뢢
+fhofg 뢣
+fhoa 뢤
+fhoq 뢥
+fhoqt 뢦
+fhot 뢧
+fhoT 뢨
+fhod 뢩
+fhow 뢪
+fhoc 뢫
+fhoz 뢬
+fhox 뢭
+fhov 뢮
+fhog 뢯
+fhlr 뢱
+fhlR 뢲
+fhlrt 뢳
+fhls 뢴
+fhlsw 뢵
+fhlsg 뢶
+fhle 뢷
+fhlf 뢸
+fhlfr 뢹
+fhlfa 뢺
+fhlfq 뢻
+fhlft 뢼
+fhlfx 뢽
+fhlfv 뢾
+fhlfg 뢿
+fhla 룀
+fhlq 룁
+fhlqt 룂
+fhlt 룃
+fhlT 룄
+fhld 룅
+fhlw 룆
+fhlc 룇
+fhlz 룈
+fhlx 룉
+fhlv 룊
+fhlg 룋
+fyr 룍
+fyR 룎
+fyrt 룏
+fys 룐
+fysw 룑
+fysg 룒
+fye 룓
+fyf 룔
+fyfr 룕
+fyfa 룖
+fyfq 룗
+fyft 룘
+fyfx 룙
+fyfv 룚
+fyfg 룛
+fya 룜
+fyq 룝
+fyqt 룞
+fyt 룟
+fyT 룠
+fyd 룡
+fyw 룢
+fyc 룣
+fyz 룤
+fyx 룥
+fyv 룦
+fyg 룧
+fnr 룩
+fnR 룪
+fnrt 룫
+fns 룬
+fnsw 룭
+fnsg 룮
+fne 룯
+fnf 룰
+fnfr 룱
+fnfa 룲
+fnfq 룳
+fnft 룴
+fnfx 룵
+fnfv 룶
+fnfg 룷
+fna 룸
+fnq 룹
+fnqt 룺
+fnt 룻
+fnT 룼
+fnd 룽
+fnw 룾
+fnc 룿
+fnz 뤀
+fnx 뤁
+fnv 뤂
+fng 뤃
+fnjr 뤅
+fnjR 뤆
+fnjrt 뤇
+fnjs 뤈
+fnjsw 뤉
+fnjsg 뤊
+fnje 뤋
+fnjf 뤌
+fnjfr 뤍
+fnjfa 뤎
+fnjfq 뤏
+fnjft 뤐
+fnjfx 뤑
+fnjfv 뤒
+fnjfg 뤓
+fnja 뤔
+fnjq 뤕
+fnjqt 뤖
+fnjt 뤗
+fnjT 뤘
+fnjd 뤙
+fnjw 뤚
+fnjc 뤛
+fnjz 뤜
+fnjx 뤝
+fnjv 뤞
+fnjg 뤟
+fnpr 뤡
+fnpR 뤢
+fnprt 뤣
+fnps 뤤
+fnpsw 뤥
+fnpsg 뤦
+fnpe 뤧
+fnpf 뤨
+fnpfr 뤩
+fnpfa 뤪
+fnpfq 뤫
+fnpft 뤬
+fnpfx 뤭
+fnpfv 뤮
+fnpfg 뤯
+fnpa 뤰
+fnpq 뤱
+fnpqt 뤲
+fnpt 뤳
+fnpT 뤴
+fnpd 뤵
+fnpw 뤶
+fnpc 뤷
+fnpz 뤸
+fnpx 뤹
+fnpv 뤺
+fnpg 뤻
+fnlr 뤽
+fnlR 뤾
+fnlrt 뤿
+fnls 륀
+fnlsw 륁
+fnlsg 륂
+fnle 륃
+fnlf 륄
+fnlfr 륅
+fnlfa 륆
+fnlfq 륇
+fnlft 륈
+fnlfx 륉
+fnlfv 륊
+fnlfg 륋
+fnla 륌
+fnlq 륍
+fnlqt 륎
+fnlt 륏
+fnlT 륐
+fnld 륑
+fnlw 륒
+fnlc 륓
+fnlz 륔
+fnlx 륕
+fnlv 륖
+fnlg 륗
+fbr 륙
+fbR 륚
+fbrt 륛
+fbs 륜
+fbsw 륝
+fbsg 륞
+fbe 륟
+fbf 률
+fbfr 륡
+fbfa 륢
+fbfq 륣
+fbft 륤
+fbfx 륥
+fbfv 륦
+fbfg 륧
+fba 륨
+fbq 륩
+fbqt 륪
+fbt 륫
+fbT 륬
+fbd 륭
+fbw 륮
+fbc 륯
+fbz 륰
+fbx 륱
+fbv 륲
+fbg 륳
+fmr 륵
+fmR 륶
+fmrt 륷
+fms 른
+fmsw 륹
+fmsg 륺
+fme 륻
+fmf 를
+fmfr 륽
+fmfa 륾
+fmfq 륿
+fmft 릀
+fmfx 릁
+fmfv 릂
+fmfg 릃
+fma 름
+fmq 릅
+fmqt 릆
+fmt 릇
+fmT 릈
+fmd 릉
+fmw 릊
+fmc 릋
+fmz 릌
+fmx 릍
+fmv 릎
+fmg 릏
+fmlr 릑
+fmlR 릒
+fmlrt 릓
+fmls 릔
+fmlsw 릕
+fmlsg 릖
+fmle 릗
+fmlf 릘
+fmlfr 릙
+fmlfa 릚
+fmlfq 릛
+fmlft 릜
+fmlfx 릝
+fmlfv 릞
+fmlfg 릟
+fmla 릠
+fmlq 릡
+fmlqt 릢
+fmlt 릣
+fmlT 릤
+fmld 릥
+fmlw 릦
+fmlc 릧
+fmlz 릨
+fmlx 릩
+fmlv 릪
+fmlg 릫
+flr 릭
+flR 릮
+flrt 릯
+fls 린
+flsw 릱
+flsg 릲
+fle 릳
+flf 릴
+flfr 릵
+flfa 릶
+flfq 릷
+flft 릸
+flfx 릹
+flfv 릺
+flfg 릻
+fla 림
+flq 립
+flqt 릾
+flt 릿
+flT 맀
+fld 링
+flw 맂
+flc 맃
+flz 맄
+flx 맅
+flv 맆
+flg 맇
+akr 막
+akR 맊
+akrt 맋
+aks 만
+aksw 맍
+aksg 많
+ake 맏
+akf 말
+akfr 맑
+akfa 맒
+akfq 맓
+akft 맔
+akfx 맕
+akfv 맖
+akfg 맗
+aka 맘
+akq 맙
+akqt 맚
+akt 맛
+akT 맜
+akd 망
+akw 맞
+akc 맟
+akz 맠
+akx 맡
+akv 맢
+akg 맣
+aor 맥
+aoR 맦
+aort 맧
+aos 맨
+aosw 맩
+aosg 맪
+aoe 맫
+aof 맬
+aofr 맭
+aofa 맮
+aofq 맯
+aoft 맰
+aofx 맱
+aofv 맲
+aofg 맳
+aoa 맴
+aoq 맵
+aoqt 맶
+aot 맷
+aoT 맸
+aod 맹
+aow 맺
+aoc 맻
+aoz 맼
+aox 맽
+aov 맾
+aog 맿
+air 먁
+aiR 먂
+airt 먃
+ais 먄
+aisw 먅
+aisg 먆
+aie 먇
+aif 먈
+aifr 먉
+aifa 먊
+aifq 먋
+aift 먌
+aifx 먍
+aifv 먎
+aifg 먏
+aia 먐
+aiq 먑
+aiqt 먒
+ait 먓
+aiT 먔
+aid 먕
+aiw 먖
+aic 먗
+aiz 먘
+aix 먙
+aiv 먚
+aig 먛
+aOr 먝
+aOR 먞
+aOrt 먟
+aOs 먠
+aOsw 먡
+aOsg 먢
+aOe 먣
+aOf 먤
+aOfr 먥
+aOfa 먦
+aOfq 먧
+aOft 먨
+aOfx 먩
+aOfv 먪
+aOfg 먫
+aOa 먬
+aOq 먭
+aOqt 먮
+aOt 먯
+aOT 먰
+aOd 먱
+aOw 먲
+aOc 먳
+aOz 먴
+aOx 먵
+aOv 먶
+aOg 먷
+ajr 먹
+ajR 먺
+ajrt 먻
+ajs 먼
+ajsw 먽
+ajsg 먾
+aje 먿
+ajf 멀
+ajfr 멁
+ajfa 멂
+ajfq 멃
+ajft 멄
+ajfx 멅
+ajfv 멆
+ajfg 멇
+aja 멈
+ajq 멉
+ajqt 멊
+ajt 멋
+ajT 멌
+ajd 멍
+ajw 멎
+ajc 멏
+ajz 멐
+ajx 멑
+ajv 멒
+ajg 멓
+apr 멕
+apR 멖
+aprt 멗
+aps 멘
+apsw 멙
+apsg 멚
+ape 멛
+apf 멜
+apfr 멝
+apfa 멞
+apfq 멟
+apft 멠
+apfx 멡
+apfv 멢
+apfg 멣
+apa 멤
+apq 멥
+apqt 멦
+apt 멧
+apT 멨
+apd 멩
+apw 멪
+apc 멫
+apz 멬
+apx 멭
+apv 멮
+apg 멯
+aur 멱
+auR 멲
+aurt 멳
+aus 면
+ausw 멵
+ausg 멶
+aue 멷
+auf 멸
+aufr 멹
+aufa 멺
+aufq 멻
+auft 멼
+aufx 멽
+aufv 멾
+aufg 멿
+aua 몀
+auq 몁
+auqt 몂
+aut 몃
+auT 몄
+aud 명
+auw 몆
+auc 몇
+auz 몈
+aux 몉
+auv 몊
+aug 몋
+aPr 몍
+aPR 몎
+aPrt 몏
+aPs 몐
+aPsw 몑
+aPsg 몒
+aPe 몓
+aPf 몔
+aPfr 몕
+aPfa 몖
+aPfq 몗
+aPft 몘
+aPfx 몙
+aPfv 몚
+aPfg 몛
+aPa 몜
+aPq 몝
+aPqt 몞
+aPt 몟
+aPT 몠
+aPd 몡
+aPw 몢
+aPc 몣
+aPz 몤
+aPx 몥
+aPv 몦
+aPg 몧
+ahr 목
+ahR 몪
+ahrt 몫
+ahs 몬
+ahsw 몭
+ahsg 몮
+ahe 몯
+ahf 몰
+ahfr 몱
+ahfa 몲
+ahfq 몳
+ahft 몴
+ahfx 몵
+ahfv 몶
+ahfg 몷
+aha 몸
+ahq 몹
+ahqt 몺
+aht 못
+ahT 몼
+ahd 몽
+ahw 몾
+ahc 몿
+ahz 뫀
+ahx 뫁
+ahv 뫂
+ahg 뫃
+ahkr 뫅
+ahkR 뫆
+ahkrt 뫇
+ahks 뫈
+ahksw 뫉
+ahksg 뫊
+ahke 뫋
+ahkf 뫌
+ahkfr 뫍
+ahkfa 뫎
+ahkfq 뫏
+ahkft 뫐
+ahkfx 뫑
+ahkfv 뫒
+ahkfg 뫓
+ahka 뫔
+ahkq 뫕
+ahkqt 뫖
+ahkt 뫗
+ahkT 뫘
+ahkd 뫙
+ahkw 뫚
+ahkc 뫛
+ahkz 뫜
+ahkx 뫝
+ahkv 뫞
+ahkg 뫟
+ahor 뫡
+ahoR 뫢
+ahort 뫣
+ahos 뫤
+ahosw 뫥
+ahosg 뫦
+ahoe 뫧
+ahof 뫨
+ahofr 뫩
+ahofa 뫪
+ahofq 뫫
+ahoft 뫬
+ahofx 뫭
+ahofv 뫮
+ahofg 뫯
+ahoa 뫰
+ahoq 뫱
+ahoqt 뫲
+ahot 뫳
+ahoT 뫴
+ahod 뫵
+ahow 뫶
+ahoc 뫷
+ahoz 뫸
+ahox 뫹
+ahov 뫺
+ahog 뫻
+ahlr 뫽
+ahlR 뫾
+ahlrt 뫿
+ahls 묀
+ahlsw 묁
+ahlsg 묂
+ahle 묃
+ahlf 묄
+ahlfr 묅
+ahlfa 묆
+ahlfq 묇
+ahlft 묈
+ahlfx 묉
+ahlfv 묊
+ahlfg 묋
+ahla 묌
+ahlq 묍
+ahlqt 묎
+ahlt 묏
+ahlT 묐
+ahld 묑
+ahlw 묒
+ahlc 묓
+ahlz 묔
+ahlx 묕
+ahlv 묖
+ahlg 묗
+ayr 묙
+ayR 묚
+ayrt 묛
+ays 묜
+aysw 묝
+aysg 묞
+aye 묟
+ayf 묠
+ayfr 묡
+ayfa 묢
+ayfq 묣
+ayft 묤
+ayfx 묥
+ayfv 묦
+ayfg 묧
+aya 묨
+ayq 묩
+ayqt 묪
+ayt 묫
+ayT 묬
+ayd 묭
+ayw 묮
+ayc 묯
+ayz 묰
+ayx 묱
+ayv 묲
+ayg 묳
+anr 묵
+anR 묶
+anrt 묷
+ans 문
+answ 묹
+ansg 묺
+ane 묻
+anf 물
+anfr 묽
+anfa 묾
+anfq 묿
+anft 뭀
+anfx 뭁
+anfv 뭂
+anfg 뭃
+ana 뭄
+anq 뭅
+anqt 뭆
+ant 뭇
+anT 뭈
+and 뭉
+anw 뭊
+anc 뭋
+anz 뭌
+anx 뭍
+anv 뭎
+ang 뭏
+anjr 뭑
+anjR 뭒
+anjrt 뭓
+anjs 뭔
+anjsw 뭕
+anjsg 뭖
+anje 뭗
+anjf 뭘
+anjfr 뭙
+anjfa 뭚
+anjfq 뭛
+anjft 뭜
+anjfx 뭝
+anjfv 뭞
+anjfg 뭟
+anja 뭠
+anjq 뭡
+anjqt 뭢
+anjt 뭣
+anjT 뭤
+anjd 뭥
+anjw 뭦
+anjc 뭧
+anjz 뭨
+anjx 뭩
+anjv 뭪
+anjg 뭫
+anpr 뭭
+anpR 뭮
+anprt 뭯
+anps 뭰
+anpsw 뭱
+anpsg 뭲
+anpe 뭳
+anpf 뭴
+anpfr 뭵
+anpfa 뭶
+anpfq 뭷
+anpft 뭸
+anpfx 뭹
+anpfv 뭺
+anpfg 뭻
+anpa 뭼
+anpq 뭽
+anpqt 뭾
+anpt 뭿
+anpT 뮀
+anpd 뮁
+anpw 뮂
+anpc 뮃
+anpz 뮄
+anpx 뮅
+anpv 뮆
+anpg 뮇
+anlr 뮉
+anlR 뮊
+anlrt 뮋
+anls 뮌
+anlsw 뮍
+anlsg 뮎
+anle 뮏
+anlf 뮐
+anlfr 뮑
+anlfa 뮒
+anlfq 뮓
+anlft 뮔
+anlfx 뮕
+anlfv 뮖
+anlfg 뮗
+anla 뮘
+anlq 뮙
+anlqt 뮚
+anlt 뮛
+anlT 뮜
+anld 뮝
+anlw 뮞
+anlc 뮟
+anlz 뮠
+anlx 뮡
+anlv 뮢
+anlg 뮣
+abr 뮥
+abR 뮦
+abrt 뮧
+abs 뮨
+absw 뮩
+absg 뮪
+abe 뮫
+abf 뮬
+abfr 뮭
+abfa 뮮
+abfq 뮯
+abft 뮰
+abfx 뮱
+abfv 뮲
+abfg 뮳
+aba 뮴
+abq 뮵
+abqt 뮶
+abt 뮷
+abT 뮸
+abd 뮹
+abw 뮺
+abc 뮻
+abz 뮼
+abx 뮽
+abv 뮾
+abg 뮿
+amr 믁
+amR 믂
+amrt 믃
+ams 믄
+amsw 믅
+amsg 믆
+ame 믇
+amf 믈
+amfr 믉
+amfa 믊
+amfq 믋
+amft 믌
+amfx 믍
+amfv 믎
+amfg 믏
+ama 믐
+amq 믑
+amqt 믒
+amt 믓
+amT 믔
+amd 믕
+amw 믖
+amc 믗
+amz 믘
+amx 믙
+amv 믚
+amg 믛
+amlr 믝
+amlR 믞
+amlrt 믟
+amls 믠
+amlsw 믡
+amlsg 믢
+amle 믣
+amlf 믤
+amlfr 믥
+amlfa 믦
+amlfq 믧
+amlft 믨
+amlfx 믩
+amlfv 믪
+amlfg 믫
+amla 믬
+amlq 믭
+amlqt 믮
+amlt 믯
+amlT 믰
+amld 믱
+amlw 믲
+amlc 믳
+amlz 믴
+amlx 믵
+amlv 믶
+amlg 믷
+alr 믹
+alR 믺
+alrt 믻
+als 민
+alsw 믽
+alsg 믾
+ale 믿
+alf 밀
+alfr 밁
+alfa 밂
+alfq 밃
+alft 밄
+alfx 밅
+alfv 밆
+alfg 밇
+ala 밈
+alq 밉
+alqt 밊
+alt 밋
+alT 밌
+ald 밍
+alw 밎
+alc 및
+alz 밐
+alx 밑
+alv 밒
+alg 밓
+qkr 박
+qkR 밖
+qkrt 밗
+qks 반
+qksw 밙
+qksg 밚
+qke 받
+qkf 발
+qkfr 밝
+qkfa 밞
+qkfq 밟
+qkft 밠
+qkfx 밡
+qkfv 밢
+qkfg 밣
+qka 밤
+qkq 밥
+qkqt 밦
+qkt 밧
+qkT 밨
+qkd 방
+qkw 밪
+qkc 밫
+qkz 밬
+qkx 밭
+qkv 밮
+qkg 밯
+qor 백
+qoR 밲
+qort 밳
+qos 밴
+qosw 밵
+qosg 밶
+qoe 밷
+qof 밸
+qofr 밹
+qofa 밺
+qofq 밻
+qoft 밼
+qofx 밽
+qofv 밾
+qofg 밿
+qoa 뱀
+qoq 뱁
+qoqt 뱂
+qot 뱃
+qoT 뱄
+qod 뱅
+qow 뱆
+qoc 뱇
+qoz 뱈
+qox 뱉
+qov 뱊
+qog 뱋
+qir 뱍
+qiR 뱎
+qirt 뱏
+qis 뱐
+qisw 뱑
+qisg 뱒
+qie 뱓
+qif 뱔
+qifr 뱕
+qifa 뱖
+qifq 뱗
+qift 뱘
+qifx 뱙
+qifv 뱚
+qifg 뱛
+qia 뱜
+qiq 뱝
+qiqt 뱞
+qit 뱟
+qiT 뱠
+qid 뱡
+qiw 뱢
+qic 뱣
+qiz 뱤
+qix 뱥
+qiv 뱦
+qig 뱧
+qOr 뱩
+qOR 뱪
+qOrt 뱫
+qOs 뱬
+qOsw 뱭
+qOsg 뱮
+qOe 뱯
+qOf 뱰
+qOfr 뱱
+qOfa 뱲
+qOfq 뱳
+qOft 뱴
+qOfx 뱵
+qOfv 뱶
+qOfg 뱷
+qOa 뱸
+qOq 뱹
+qOqt 뱺
+qOt 뱻
+qOT 뱼
+qOd 뱽
+qOw 뱾
+qOc 뱿
+qOz 벀
+qOx 벁
+qOv 벂
+qOg 벃
+qjr 벅
+qjR 벆
+qjrt 벇
+qjs 번
+qjsw 벉
+qjsg 벊
+qje 벋
+qjf 벌
+qjfr 벍
+qjfa 벎
+qjfq 벏
+qjft 벐
+qjfx 벑
+qjfv 벒
+qjfg 벓
+qja 범
+qjq 법
+qjqt 벖
+qjt 벗
+qjT 벘
+qjd 벙
+qjw 벚
+qjc 벛
+qjz 벜
+qjx 벝
+qjv 벞
+qjg 벟
+qpr 벡
+qpR 벢
+qprt 벣
+qps 벤
+qpsw 벥
+qpsg 벦
+qpe 벧
+qpf 벨
+qpfr 벩
+qpfa 벪
+qpfq 벫
+qpft 벬
+qpfx 벭
+qpfv 벮
+qpfg 벯
+qpa 벰
+qpq 벱
+qpqt 벲
+qpt 벳
+qpT 벴
+qpd 벵
+qpw 벶
+qpc 벷
+qpz 벸
+qpx 벹
+qpv 벺
+qpg 벻
+qur 벽
+quR 벾
+qurt 벿
+qus 변
+qusw 볁
+qusg 볂
+que 볃
+quf 별
+qufr 볅
+qufa 볆
+qufq 볇
+quft 볈
+qufx 볉
+qufv 볊
+qufg 볋
+qua 볌
+quq 볍
+quqt 볎
+qut 볏
+quT 볐
+qud 병
+quw 볒
+quc 볓
+quz 볔
+qux 볕
+quv 볖
+qug 볗
+qPr 볙
+qPR 볚
+qPrt 볛
+qPs 볜
+qPsw 볝
+qPsg 볞
+qPe 볟
+qPf 볠
+qPfr 볡
+qPfa 볢
+qPfq 볣
+qPft 볤
+qPfx 볥
+qPfv 볦
+qPfg 볧
+qPa 볨
+qPq 볩
+qPqt 볪
+qPt 볫
+qPT 볬
+qPd 볭
+qPw 볮
+qPc 볯
+qPz 볰
+qPx 볱
+qPv 볲
+qPg 볳
+qhr 복
+qhR 볶
+qhrt 볷
+qhs 본
+qhsw 볹
+qhsg 볺
+qhe 볻
+qhf 볼
+qhfr 볽
+qhfa 볾
+qhfq 볿
+qhft 봀
+qhfx 봁
+qhfv 봂
+qhfg 봃
+qha 봄
+qhq 봅
+qhqt 봆
+qht 봇
+qhT 봈
+qhd 봉
+qhw 봊
+qhc 봋
+qhz 봌
+qhx 봍
+qhv 봎
+qhg 봏
+qhkr 봑
+qhkR 봒
+qhkrt 봓
+qhks 봔
+qhksw 봕
+qhksg 봖
+qhke 봗
+qhkf 봘
+qhkfr 봙
+qhkfa 봚
+qhkfq 봛
+qhkft 봜
+qhkfx 봝
+qhkfv 봞
+qhkfg 봟
+qhka 봠
+qhkq 봡
+qhkqt 봢
+qhkt 봣
+qhkT 봤
+qhkd 봥
+qhkw 봦
+qhkc 봧
+qhkz 봨
+qhkx 봩
+qhkv 봪
+qhkg 봫
+qhor 봭
+qhoR 봮
+qhort 봯
+qhos 봰
+qhosw 봱
+qhosg 봲
+qhoe 봳
+qhof 봴
+qhofr 봵
+qhofa 봶
+qhofq 봷
+qhoft 봸
+qhofx 봹
+qhofv 봺
+qhofg 봻
+qhoa 봼
+qhoq 봽
+qhoqt 봾
+qhot 봿
+qhoT 뵀
+qhod 뵁
+qhow 뵂
+qhoc 뵃
+qhoz 뵄
+qhox 뵅
+qhov 뵆
+qhog 뵇
+qhlr 뵉
+qhlR 뵊
+qhlrt 뵋
+qhls 뵌
+qhlsw 뵍
+qhlsg 뵎
+qhle 뵏
+qhlf 뵐
+qhlfr 뵑
+qhlfa 뵒
+qhlfq 뵓
+qhlft 뵔
+qhlfx 뵕
+qhlfv 뵖
+qhlfg 뵗
+qhla 뵘
+qhlq 뵙
+qhlqt 뵚
+qhlt 뵛
+qhlT 뵜
+qhld 뵝
+qhlw 뵞
+qhlc 뵟
+qhlz 뵠
+qhlx 뵡
+qhlv 뵢
+qhlg 뵣
+qyr 뵥
+qyR 뵦
+qyrt 뵧
+qys 뵨
+qysw 뵩
+qysg 뵪
+qye 뵫
+qyf 뵬
+qyfr 뵭
+qyfa 뵮
+qyfq 뵯
+qyft 뵰
+qyfx 뵱
+qyfv 뵲
+qyfg 뵳
+qya 뵴
+qyq 뵵
+qyqt 뵶
+qyt 뵷
+qyT 뵸
+qyd 뵹
+qyw 뵺
+qyc 뵻
+qyz 뵼
+qyx 뵽
+qyv 뵾
+qyg 뵿
+qnr 북
+qnR 붂
+qnrt 붃
+qns 분
+qnsw 붅
+qnsg 붆
+qne 붇
+qnf 불
+qnfr 붉
+qnfa 붊
+qnfq 붋
+qnft 붌
+qnfx 붍
+qnfv 붎
+qnfg 붏
+qna 붐
+qnq 붑
+qnqt 붒
+qnt 붓
+qnT 붔
+qnd 붕
+qnw 붖
+qnc 붗
+qnz 붘
+qnx 붙
+qnv 붚
+qng 붛
+qnjr 붝
+qnjR 붞
+qnjrt 붟
+qnjs 붠
+qnjsw 붡
+qnjsg 붢
+qnje 붣
+qnjf 붤
+qnjfr 붥
+qnjfa 붦
+qnjfq 붧
+qnjft 붨
+qnjfx 붩
+qnjfv 붪
+qnjfg 붫
+qnja 붬
+qnjq 붭
+qnjqt 붮
+qnjt 붯
+qnjT 붰
+qnjd 붱
+qnjw 붲
+qnjc 붳
+qnjz 붴
+qnjx 붵
+qnjv 붶
+qnjg 붷
+qnpr 붹
+qnpR 붺
+qnprt 붻
+qnps 붼
+qnpsw 붽
+qnpsg 붾
+qnpe 붿
+qnpf 뷀
+qnpfr 뷁
+qnpfa 뷂
+qnpfq 뷃
+qnpft 뷄
+qnpfx 뷅
+qnpfv 뷆
+qnpfg 뷇
+qnpa 뷈
+qnpq 뷉
+qnpqt 뷊
+qnpt 뷋
+qnpT 뷌
+qnpd 뷍
+qnpw 뷎
+qnpc 뷏
+qnpz 뷐
+qnpx 뷑
+qnpv 뷒
+qnpg 뷓
+qnlr 뷕
+qnlR 뷖
+qnlrt 뷗
+qnls 뷘
+qnlsw 뷙
+qnlsg 뷚
+qnle 뷛
+qnlf 뷜
+qnlfr 뷝
+qnlfa 뷞
+qnlfq 뷟
+qnlft 뷠
+qnlfx 뷡
+qnlfv 뷢
+qnlfg 뷣
+qnla 뷤
+qnlq 뷥
+qnlqt 뷦
+qnlt 뷧
+qnlT 뷨
+qnld 뷩
+qnlw 뷪
+qnlc 뷫
+qnlz 뷬
+qnlx 뷭
+qnlv 뷮
+qnlg 뷯
+qbr 뷱
+qbR 뷲
+qbrt 뷳
+qbs 뷴
+qbsw 뷵
+qbsg 뷶
+qbe 뷷
+qbf 뷸
+qbfr 뷹
+qbfa 뷺
+qbfq 뷻
+qbft 뷼
+qbfx 뷽
+qbfv 뷾
+qbfg 뷿
+qba 븀
+qbq 븁
+qbqt 븂
+qbt 븃
+qbT 븄
+qbd 븅
+qbw 븆
+qbc 븇
+qbz 븈
+qbx 븉
+qbv 븊
+qbg 븋
+qmr 븍
+qmR 븎
+qmrt 븏
+qms 븐
+qmsw 븑
+qmsg 븒
+qme 븓
+qmf 블
+qmfr 븕
+qmfa 븖
+qmfq 븗
+qmft 븘
+qmfx 븙
+qmfv 븚
+qmfg 븛
+qma 븜
+qmq 븝
+qmqt 븞
+qmt 븟
+qmT 븠
+qmd 븡
+qmw 븢
+qmc 븣
+qmz 븤
+qmx 븥
+qmv 븦
+qmg 븧
+qmlr 븩
+qmlR 븪
+qmlrt 븫
+qmls 븬
+qmlsw 븭
+qmlsg 븮
+qmle 븯
+qmlf 븰
+qmlfr 븱
+qmlfa 븲
+qmlfq 븳
+qmlft 븴
+qmlfx 븵
+qmlfv 븶
+qmlfg 븷
+qmla 븸
+qmlq 븹
+qmlqt 븺
+qmlt 븻
+qmlT 븼
+qmld 븽
+qmlw 븾
+qmlc 븿
+qmlz 빀
+qmlx 빁
+qmlv 빂
+qmlg 빃
+qlr 빅
+qlR 빆
+qlrt 빇
+qls 빈
+qlsw 빉
+qlsg 빊
+qle 빋
+qlf 빌
+qlfr 빍
+qlfa 빎
+qlfq 빏
+qlft 빐
+qlfx 빑
+qlfv 빒
+qlfg 빓
+qla 빔
+qlq 빕
+qlqt 빖
+qlt 빗
+qlT 빘
+qld 빙
+qlw 빚
+qlc 빛
+qlz 빜
+qlx 빝
+qlv 빞
+qlg 빟
+Qkr 빡
+QkR 빢
+Qkrt 빣
+Qks 빤
+Qksw 빥
+Qksg 빦
+Qke 빧
+Qkf 빨
+Qkfr 빩
+Qkfa 빪
+Qkfq 빫
+Qkft 빬
+Qkfx 빭
+Qkfv 빮
+Qkfg 빯
+Qka 빰
+Qkq 빱
+Qkqt 빲
+Qkt 빳
+QkT 빴
+Qkd 빵
+Qkw 빶
+Qkc 빷
+Qkz 빸
+Qkx 빹
+Qkv 빺
+Qkg 빻
+Qor 빽
+QoR 빾
+Qort 빿
+Qos 뺀
+Qosw 뺁
+Qosg 뺂
+Qoe 뺃
+Qof 뺄
+Qofr 뺅
+Qofa 뺆
+Qofq 뺇
+Qoft 뺈
+Qofx 뺉
+Qofv 뺊
+Qofg 뺋
+Qoa 뺌
+Qoq 뺍
+Qoqt 뺎
+Qot 뺏
+QoT 뺐
+Qod 뺑
+Qow 뺒
+Qoc 뺓
+Qoz 뺔
+Qox 뺕
+Qov 뺖
+Qog 뺗
+Qir 뺙
+QiR 뺚
+Qirt 뺛
+Qis 뺜
+Qisw 뺝
+Qisg 뺞
+Qie 뺟
+Qif 뺠
+Qifr 뺡
+Qifa 뺢
+Qifq 뺣
+Qift 뺤
+Qifx 뺥
+Qifv 뺦
+Qifg 뺧
+Qia 뺨
+Qiq 뺩
+Qiqt 뺪
+Qit 뺫
+QiT 뺬
+Qid 뺭
+Qiw 뺮
+Qic 뺯
+Qiz 뺰
+Qix 뺱
+Qiv 뺲
+Qig 뺳
+QOr 뺵
+QOR 뺶
+QOrt 뺷
+QOs 뺸
+QOsw 뺹
+QOsg 뺺
+QOe 뺻
+QOf 뺼
+QOfr 뺽
+QOfa 뺾
+QOfq 뺿
+QOft 뻀
+QOfx 뻁
+QOfv 뻂
+QOfg 뻃
+QOa 뻄
+QOq 뻅
+QOqt 뻆
+QOt 뻇
+QOT 뻈
+QOd 뻉
+QOw 뻊
+QOc 뻋
+QOz 뻌
+QOx 뻍
+QOv 뻎
+QOg 뻏
+Qjr 뻑
+QjR 뻒
+Qjrt 뻓
+Qjs 뻔
+Qjsw 뻕
+Qjsg 뻖
+Qje 뻗
+Qjf 뻘
+Qjfr 뻙
+Qjfa 뻚
+Qjfq 뻛
+Qjft 뻜
+Qjfx 뻝
+Qjfv 뻞
+Qjfg 뻟
+Qja 뻠
+Qjq 뻡
+Qjqt 뻢
+Qjt 뻣
+QjT 뻤
+Qjd 뻥
+Qjw 뻦
+Qjc 뻧
+Qjz 뻨
+Qjx 뻩
+Qjv 뻪
+Qjg 뻫
+Qpr 뻭
+QpR 뻮
+Qprt 뻯
+Qps 뻰
+Qpsw 뻱
+Qpsg 뻲
+Qpe 뻳
+Qpf 뻴
+Qpfr 뻵
+Qpfa 뻶
+Qpfq 뻷
+Qpft 뻸
+Qpfx 뻹
+Qpfv 뻺
+Qpfg 뻻
+Qpa 뻼
+Qpq 뻽
+Qpqt 뻾
+Qpt 뻿
+QpT 뼀
+Qpd 뼁
+Qpw 뼂
+Qpc 뼃
+Qpz 뼄
+Qpx 뼅
+Qpv 뼆
+Qpg 뼇
+Qur 뼉
+QuR 뼊
+Qurt 뼋
+Qus 뼌
+Qusw 뼍
+Qusg 뼎
+Que 뼏
+Quf 뼐
+Qufr 뼑
+Qufa 뼒
+Qufq 뼓
+Quft 뼔
+Qufx 뼕
+Qufv 뼖
+Qufg 뼗
+Qua 뼘
+Quq 뼙
+Quqt 뼚
+Qut 뼛
+QuT 뼜
+Qud 뼝
+Quw 뼞
+Quc 뼟
+Quz 뼠
+Qux 뼡
+Quv 뼢
+Qug 뼣
+QPr 뼥
+QPR 뼦
+QPrt 뼧
+QPs 뼨
+QPsw 뼩
+QPsg 뼪
+QPe 뼫
+QPf 뼬
+QPfr 뼭
+QPfa 뼮
+QPfq 뼯
+QPft 뼰
+QPfx 뼱
+QPfv 뼲
+QPfg 뼳
+QPa 뼴
+QPq 뼵
+QPqt 뼶
+QPt 뼷
+QPT 뼸
+QPd 뼹
+QPw 뼺
+QPc 뼻
+QPz 뼼
+QPx 뼽
+QPv 뼾
+QPg 뼿
+Qhr 뽁
+QhR 뽂
+Qhrt 뽃
+Qhs 뽄
+Qhsw 뽅
+Qhsg 뽆
+Qhe 뽇
+Qhf 뽈
+Qhfr 뽉
+Qhfa 뽊
+Qhfq 뽋
+Qhft 뽌
+Qhfx 뽍
+Qhfv 뽎
+Qhfg 뽏
+Qha 뽐
+Qhq 뽑
+Qhqt 뽒
+Qht 뽓
+QhT 뽔
+Qhd 뽕
+Qhw 뽖
+Qhc 뽗
+Qhz 뽘
+Qhx 뽙
+Qhv 뽚
+Qhg 뽛
+Qhkr 뽝
+QhkR 뽞
+Qhkrt 뽟
+Qhks 뽠
+Qhksw 뽡
+Qhksg 뽢
+Qhke 뽣
+Qhkf 뽤
+Qhkfr 뽥
+Qhkfa 뽦
+Qhkfq 뽧
+Qhkft 뽨
+Qhkfx 뽩
+Qhkfv 뽪
+Qhkfg 뽫
+Qhka 뽬
+Qhkq 뽭
+Qhkqt 뽮
+Qhkt 뽯
+QhkT 뽰
+Qhkd 뽱
+Qhkw 뽲
+Qhkc 뽳
+Qhkz 뽴
+Qhkx 뽵
+Qhkv 뽶
+Qhkg 뽷
+Qhor 뽹
+QhoR 뽺
+Qhort 뽻
+Qhos 뽼
+Qhosw 뽽
+Qhosg 뽾
+Qhoe 뽿
+Qhof 뾀
+Qhofr 뾁
+Qhofa 뾂
+Qhofq 뾃
+Qhoft 뾄
+Qhofx 뾅
+Qhofv 뾆
+Qhofg 뾇
+Qhoa 뾈
+Qhoq 뾉
+Qhoqt 뾊
+Qhot 뾋
+QhoT 뾌
+Qhod 뾍
+Qhow 뾎
+Qhoc 뾏
+Qhoz 뾐
+Qhox 뾑
+Qhov 뾒
+Qhog 뾓
+Qhlr 뾕
+QhlR 뾖
+Qhlrt 뾗
+Qhls 뾘
+Qhlsw 뾙
+Qhlsg 뾚
+Qhle 뾛
+Qhlf 뾜
+Qhlfr 뾝
+Qhlfa 뾞
+Qhlfq 뾟
+Qhlft 뾠
+Qhlfx 뾡
+Qhlfv 뾢
+Qhlfg 뾣
+Qhla 뾤
+Qhlq 뾥
+Qhlqt 뾦
+Qhlt 뾧
+QhlT 뾨
+Qhld 뾩
+Qhlw 뾪
+Qhlc 뾫
+Qhlz 뾬
+Qhlx 뾭
+Qhlv 뾮
+Qhlg 뾯
+Qyr 뾱
+QyR 뾲
+Qyrt 뾳
+Qys 뾴
+Qysw 뾵
+Qysg 뾶
+Qye 뾷
+Qyf 뾸
+Qyfr 뾹
+Qyfa 뾺
+Qyfq 뾻
+Qyft 뾼
+Qyfx 뾽
+Qyfv 뾾
+Qyfg 뾿
+Qya 뿀
+Qyq 뿁
+Qyqt 뿂
+Qyt 뿃
+QyT 뿄
+Qyd 뿅
+Qyw 뿆
+Qyc 뿇
+Qyz 뿈
+Qyx 뿉
+Qyv 뿊
+Qyg 뿋
+Qnr 뿍
+QnR 뿎
+Qnrt 뿏
+Qns 뿐
+Qnsw 뿑
+Qnsg 뿒
+Qne 뿓
+Qnf 뿔
+Qnfr 뿕
+Qnfa 뿖
+Qnfq 뿗
+Qnft 뿘
+Qnfx 뿙
+Qnfv 뿚
+Qnfg 뿛
+Qna 뿜
+Qnq 뿝
+Qnqt 뿞
+Qnt 뿟
+QnT 뿠
+Qnd 뿡
+Qnw 뿢
+Qnc 뿣
+Qnz 뿤
+Qnx 뿥
+Qnv 뿦
+Qng 뿧
+Qnjr 뿩
+QnjR 뿪
+Qnjrt 뿫
+Qnjs 뿬
+Qnjsw 뿭
+Qnjsg 뿮
+Qnje 뿯
+Qnjf 뿰
+Qnjfr 뿱
+Qnjfa 뿲
+Qnjfq 뿳
+Qnjft 뿴
+Qnjfx 뿵
+Qnjfv 뿶
+Qnjfg 뿷
+Qnja 뿸
+Qnjq 뿹
+Qnjqt 뿺
+Qnjt 뿻
+QnjT 뿼
+Qnjd 뿽
+Qnjw 뿾
+Qnjc 뿿
+Qnjz 쀀
+Qnjx 쀁
+Qnjv 쀂
+Qnjg 쀃
+Qnpr 쀅
+QnpR 쀆
+Qnprt 쀇
+Qnps 쀈
+Qnpsw 쀉
+Qnpsg 쀊
+Qnpe 쀋
+Qnpf 쀌
+Qnpfr 쀍
+Qnpfa 쀎
+Qnpfq 쀏
+Qnpft 쀐
+Qnpfx 쀑
+Qnpfv 쀒
+Qnpfg 쀓
+Qnpa 쀔
+Qnpq 쀕
+Qnpqt 쀖
+Qnpt 쀗
+QnpT 쀘
+Qnpd 쀙
+Qnpw 쀚
+Qnpc 쀛
+Qnpz 쀜
+Qnpx 쀝
+Qnpv 쀞
+Qnpg 쀟
+Qnlr 쀡
+QnlR 쀢
+Qnlrt 쀣
+Qnls 쀤
+Qnlsw 쀥
+Qnlsg 쀦
+Qnle 쀧
+Qnlf 쀨
+Qnlfr 쀩
+Qnlfa 쀪
+Qnlfq 쀫
+Qnlft 쀬
+Qnlfx 쀭
+Qnlfv 쀮
+Qnlfg 쀯
+Qnla 쀰
+Qnlq 쀱
+Qnlqt 쀲
+Qnlt 쀳
+QnlT 쀴
+Qnld 쀵
+Qnlw 쀶
+Qnlc 쀷
+Qnlz 쀸
+Qnlx 쀹
+Qnlv 쀺
+Qnlg 쀻
+Qbr 쀽
+QbR 쀾
+Qbrt 쀿
+Qbs 쁀
+Qbsw 쁁
+Qbsg 쁂
+Qbe 쁃
+Qbf 쁄
+Qbfr 쁅
+Qbfa 쁆
+Qbfq 쁇
+Qbft 쁈
+Qbfx 쁉
+Qbfv 쁊
+Qbfg 쁋
+Qba 쁌
+Qbq 쁍
+Qbqt 쁎
+Qbt 쁏
+QbT 쁐
+Qbd 쁑
+Qbw 쁒
+Qbc 쁓
+Qbz 쁔
+Qbx 쁕
+Qbv 쁖
+Qbg 쁗
+Qmr 쁙
+QmR 쁚
+Qmrt 쁛
+Qms 쁜
+Qmsw 쁝
+Qmsg 쁞
+Qme 쁟
+Qmf 쁠
+Qmfr 쁡
+Qmfa 쁢
+Qmfq 쁣
+Qmft 쁤
+Qmfx 쁥
+Qmfv 쁦
+Qmfg 쁧
+Qma 쁨
+Qmq 쁩
+Qmqt 쁪
+Qmt 쁫
+QmT 쁬
+Qmd 쁭
+Qmw 쁮
+Qmc 쁯
+Qmz 쁰
+Qmx 쁱
+Qmv 쁲
+Qmg 쁳
+Qmlr 쁵
+QmlR 쁶
+Qmlrt 쁷
+Qmls 쁸
+Qmlsw 쁹
+Qmlsg 쁺
+Qmle 쁻
+Qmlf 쁼
+Qmlfr 쁽
+Qmlfa 쁾
+Qmlfq 쁿
+Qmlft 삀
+Qmlfx 삁
+Qmlfv 삂
+Qmlfg 삃
+Qmla 삄
+Qmlq 삅
+Qmlqt 삆
+Qmlt 삇
+QmlT 삈
+Qmld 삉
+Qmlw 삊
+Qmlc 삋
+Qmlz 삌
+Qmlx 삍
+Qmlv 삎
+Qmlg 삏
+Qlr 삑
+QlR 삒
+Qlrt 삓
+Qls 삔
+Qlsw 삕
+Qlsg 삖
+Qle 삗
+Qlf 삘
+Qlfr 삙
+Qlfa 삚
+Qlfq 삛
+Qlft 삜
+Qlfx 삝
+Qlfv 삞
+Qlfg 삟
+Qla 삠
+Qlq 삡
+Qlqt 삢
+Qlt 삣
+QlT 삤
+Qld 삥
+Qlw 삦
+Qlc 삧
+Qlz 삨
+Qlx 삩
+Qlv 삪
+Qlg 삫
+tkr 삭
+tkR 삮
+tkrt 삯
+tks 산
+tksw 삱
+tksg 삲
+tke 삳
+tkf 살
+tkfr 삵
+tkfa 삶
+tkfq 삷
+tkft 삸
+tkfx 삹
+tkfv 삺
+tkfg 삻
+tka 삼
+tkq 삽
+tkqt 삾
+tkt 삿
+tkT 샀
+tkd 상
+tkw 샂
+tkc 샃
+tkz 샄
+tkx 샅
+tkv 샆
+tkg 샇
+tor 색
+toR 샊
+tort 샋
+tos 샌
+tosw 샍
+tosg 샎
+toe 샏
+tof 샐
+tofr 샑
+tofa 샒
+tofq 샓
+toft 샔
+tofx 샕
+tofv 샖
+tofg 샗
+toa 샘
+toq 샙
+toqt 샚
+tot 샛
+toT 샜
+tod 생
+tow 샞
+toc 샟
+toz 샠
+tox 샡
+tov 샢
+tog 샣
+tir 샥
+tiR 샦
+tirt 샧
+tis 샨
+tisw 샩
+tisg 샪
+tie 샫
+tif 샬
+tifr 샭
+tifa 샮
+tifq 샯
+tift 샰
+tifx 샱
+tifv 샲
+tifg 샳
+tia 샴
+tiq 샵
+tiqt 샶
+tit 샷
+tiT 샸
+tid 샹
+tiw 샺
+tic 샻
+tiz 샼
+tix 샽
+tiv 샾
+tig 샿
+tOr 섁
+tOR 섂
+tOrt 섃
+tOs 섄
+tOsw 섅
+tOsg 섆
+tOe 섇
+tOf 섈
+tOfr 섉
+tOfa 섊
+tOfq 섋
+tOft 섌
+tOfx 섍
+tOfv 섎
+tOfg 섏
+tOa 섐
+tOq 섑
+tOqt 섒
+tOt 섓
+tOT 섔
+tOd 섕
+tOw 섖
+tOc 섗
+tOz 섘
+tOx 섙
+tOv 섚
+tOg 섛
+tjr 석
+tjR 섞
+tjrt 섟
+tjs 선
+tjsw 섡
+tjsg 섢
+tje 섣
+tjf 설
+tjfr 섥
+tjfa 섦
+tjfq 섧
+tjft 섨
+tjfx 섩
+tjfv 섪
+tjfg 섫
+tja 섬
+tjq 섭
+tjqt 섮
+tjt 섯
+tjT 섰
+tjd 성
+tjw 섲
+tjc 섳
+tjz 섴
+tjx 섵
+tjv 섶
+tjg 섷
+tpr 섹
+tpR 섺
+tprt 섻
+tps 센
+tpsw 섽
+tpsg 섾
+tpe 섿
+tpf 셀
+tpfr 셁
+tpfa 셂
+tpfq 셃
+tpft 셄
+tpfx 셅
+tpfv 셆
+tpfg 셇
+tpa 셈
+tpq 셉
+tpqt 셊
+tpt 셋
+tpT 셌
+tpd 셍
+tpw 셎
+tpc 셏
+tpz 셐
+tpx 셑
+tpv 셒
+tpg 셓
+tur 셕
+tuR 셖
+turt 셗
+tus 션
+tusw 셙
+tusg 셚
+tue 셛
+tuf 셜
+tufr 셝
+tufa 셞
+tufq 셟
+tuft 셠
+tufx 셡
+tufv 셢
+tufg 셣
+tua 셤
+tuq 셥
+tuqt 셦
+tut 셧
+tuT 셨
+tud 셩
+tuw 셪
+tuc 셫
+tuz 셬
+tux 셭
+tuv 셮
+tug 셯
+tPr 셱
+tPR 셲
+tPrt 셳
+tPs 셴
+tPsw 셵
+tPsg 셶
+tPe 셷
+tPf 셸
+tPfr 셹
+tPfa 셺
+tPfq 셻
+tPft 셼
+tPfx 셽
+tPfv 셾
+tPfg 셿
+tPa 솀
+tPq 솁
+tPqt 솂
+tPt 솃
+tPT 솄
+tPd 솅
+tPw 솆
+tPc 솇
+tPz 솈
+tPx 솉
+tPv 솊
+tPg 솋
+thr 속
+thR 솎
+thrt 솏
+ths 손
+thsw 솑
+thsg 솒
+the 솓
+thf 솔
+thfr 솕
+thfa 솖
+thfq 솗
+thft 솘
+thfx 솙
+thfv 솚
+thfg 솛
+tha 솜
+thq 솝
+thqt 솞
+tht 솟
+thT 솠
+thd 송
+thw 솢
+thc 솣
+thz 솤
+thx 솥
+thv 솦
+thg 솧
+thkr 솩
+thkR 솪
+thkrt 솫
+thks 솬
+thksw 솭
+thksg 솮
+thke 솯
+thkf 솰
+thkfr 솱
+thkfa 솲
+thkfq 솳
+thkft 솴
+thkfx 솵
+thkfv 솶
+thkfg 솷
+thka 솸
+thkq 솹
+thkqt 솺
+thkt 솻
+thkT 솼
+thkd 솽
+thkw 솾
+thkc 솿
+thkz 쇀
+thkx 쇁
+thkv 쇂
+thkg 쇃
+thor 쇅
+thoR 쇆
+thort 쇇
+thos 쇈
+thosw 쇉
+thosg 쇊
+thoe 쇋
+thof 쇌
+thofr 쇍
+thofa 쇎
+thofq 쇏
+thoft 쇐
+thofx 쇑
+thofv 쇒
+thofg 쇓
+thoa 쇔
+thoq 쇕
+thoqt 쇖
+thot 쇗
+thoT 쇘
+thod 쇙
+thow 쇚
+thoc 쇛
+thoz 쇜
+thox 쇝
+thov 쇞
+thog 쇟
+thlr 쇡
+thlR 쇢
+thlrt 쇣
+thls 쇤
+thlsw 쇥
+thlsg 쇦
+thle 쇧
+thlf 쇨
+thlfr 쇩
+thlfa 쇪
+thlfq 쇫
+thlft 쇬
+thlfx 쇭
+thlfv 쇮
+thlfg 쇯
+thla 쇰
+thlq 쇱
+thlqt 쇲
+thlt 쇳
+thlT 쇴
+thld 쇵
+thlw 쇶
+thlc 쇷
+thlz 쇸
+thlx 쇹
+thlv 쇺
+thlg 쇻
+tyr 쇽
+tyR 쇾
+tyrt 쇿
+tys 숀
+tysw 숁
+tysg 숂
+tye 숃
+tyf 숄
+tyfr 숅
+tyfa 숆
+tyfq 숇
+tyft 숈
+tyfx 숉
+tyfv 숊
+tyfg 숋
+tya 숌
+tyq 숍
+tyqt 숎
+tyt 숏
+tyT 숐
+tyd 숑
+tyw 숒
+tyc 숓
+tyz 숔
+tyx 숕
+tyv 숖
+tyg 숗
+tnr 숙
+tnR 숚
+tnrt 숛
+tns 순
+tnsw 숝
+tnsg 숞
+tne 숟
+tnf 술
+tnfr 숡
+tnfa 숢
+tnfq 숣
+tnft 숤
+tnfx 숥
+tnfv 숦
+tnfg 숧
+tna 숨
+tnq 숩
+tnqt 숪
+tnt 숫
+tnT 숬
+tnd 숭
+tnw 숮
+tnc 숯
+tnz 숰
+tnx 숱
+tnv 숲
+tng 숳
+tnjr 숵
+tnjR 숶
+tnjrt 숷
+tnjs 숸
+tnjsw 숹
+tnjsg 숺
+tnje 숻
+tnjf 숼
+tnjfr 숽
+tnjfa 숾
+tnjfq 숿
+tnjft 쉀
+tnjfx 쉁
+tnjfv 쉂
+tnjfg 쉃
+tnja 쉄
+tnjq 쉅
+tnjqt 쉆
+tnjt 쉇
+tnjT 쉈
+tnjd 쉉
+tnjw 쉊
+tnjc 쉋
+tnjz 쉌
+tnjx 쉍
+tnjv 쉎
+tnjg 쉏
+tnpr 쉑
+tnpR 쉒
+tnprt 쉓
+tnps 쉔
+tnpsw 쉕
+tnpsg 쉖
+tnpe 쉗
+tnpf 쉘
+tnpfr 쉙
+tnpfa 쉚
+tnpfq 쉛
+tnpft 쉜
+tnpfx 쉝
+tnpfv 쉞
+tnpfg 쉟
+tnpa 쉠
+tnpq 쉡
+tnpqt 쉢
+tnpt 쉣
+tnpT 쉤
+tnpd 쉥
+tnpw 쉦
+tnpc 쉧
+tnpz 쉨
+tnpx 쉩
+tnpv 쉪
+tnpg 쉫
+tnlr 쉭
+tnlR 쉮
+tnlrt 쉯
+tnls 쉰
+tnlsw 쉱
+tnlsg 쉲
+tnle 쉳
+tnlf 쉴
+tnlfr 쉵
+tnlfa 쉶
+tnlfq 쉷
+tnlft 쉸
+tnlfx 쉹
+tnlfv 쉺
+tnlfg 쉻
+tnla 쉼
+tnlq 쉽
+tnlqt 쉾
+tnlt 쉿
+tnlT 슀
+tnld 슁
+tnlw 슂
+tnlc 슃
+tnlz 슄
+tnlx 슅
+tnlv 슆
+tnlg 슇
+tbr 슉
+tbR 슊
+tbrt 슋
+tbs 슌
+tbsw 슍
+tbsg 슎
+tbe 슏
+tbf 슐
+tbfr 슑
+tbfa 슒
+tbfq 슓
+tbft 슔
+tbfx 슕
+tbfv 슖
+tbfg 슗
+tba 슘
+tbq 슙
+tbqt 슚
+tbt 슛
+tbT 슜
+tbd 슝
+tbw 슞
+tbc 슟
+tbz 슠
+tbx 슡
+tbv 슢
+tbg 슣
+tmr 슥
+tmR 슦
+tmrt 슧
+tms 슨
+tmsw 슩
+tmsg 슪
+tme 슫
+tmf 슬
+tmfr 슭
+tmfa 슮
+tmfq 슯
+tmft 슰
+tmfx 슱
+tmfv 슲
+tmfg 슳
+tma 슴
+tmq 습
+tmqt 슶
+tmt 슷
+tmT 슸
+tmd 승
+tmw 슺
+tmc 슻
+tmz 슼
+tmx 슽
+tmv 슾
+tmg 슿
+tmlr 싁
+tmlR 싂
+tmlrt 싃
+tmls 싄
+tmlsw 싅
+tmlsg 싆
+tmle 싇
+tmlf 싈
+tmlfr 싉
+tmlfa 싊
+tmlfq 싋
+tmlft 싌
+tmlfx 싍
+tmlfv 싎
+tmlfg 싏
+tmla 싐
+tmlq 싑
+tmlqt 싒
+tmlt 싓
+tmlT 싔
+tmld 싕
+tmlw 싖
+tmlc 싗
+tmlz 싘
+tmlx 싙
+tmlv 싚
+tmlg 싛
+tlr 식
+tlR 싞
+tlrt 싟
+tls 신
+tlsw 싡
+tlsg 싢
+tle 싣
+tlf 실
+tlfr 싥
+tlfa 싦
+tlfq 싧
+tlft 싨
+tlfx 싩
+tlfv 싪
+tlfg 싫
+tla 심
+tlq 십
+tlqt 싮
+tlt 싯
+tlT 싰
+tld 싱
+tlw 싲
+tlc 싳
+tlz 싴
+tlx 싵
+tlv 싶
+tlg 싷
+Tkr 싹
+TkR 싺
+Tkrt 싻
+Tks 싼
+Tksw 싽
+Tksg 싾
+Tke 싿
+Tkf 쌀
+Tkfr 쌁
+Tkfa 쌂
+Tkfq 쌃
+Tkft 쌄
+Tkfx 쌅
+Tkfv 쌆
+Tkfg 쌇
+Tka 쌈
+Tkq 쌉
+Tkqt 쌊
+Tkt 쌋
+TkT 쌌
+Tkd 쌍
+Tkw 쌎
+Tkc 쌏
+Tkz 쌐
+Tkx 쌑
+Tkv 쌒
+Tkg 쌓
+Tor 쌕
+ToR 쌖
+Tort 쌗
+Tos 쌘
+Tosw 쌙
+Tosg 쌚
+Toe 쌛
+Tof 쌜
+Tofr 쌝
+Tofa 쌞
+Tofq 쌟
+Toft 쌠
+Tofx 쌡
+Tofv 쌢
+Tofg 쌣
+Toa 쌤
+Toq 쌥
+Toqt 쌦
+Tot 쌧
+ToT 쌨
+Tod 쌩
+Tow 쌪
+Toc 쌫
+Toz 쌬
+Tox 쌭
+Tov 쌮
+Tog 쌯
+Tir 쌱
+TiR 쌲
+Tirt 쌳
+Tis 쌴
+Tisw 쌵
+Tisg 쌶
+Tie 쌷
+Tif 쌸
+Tifr 쌹
+Tifa 쌺
+Tifq 쌻
+Tift 쌼
+Tifx 쌽
+Tifv 쌾
+Tifg 쌿
+Tia 썀
+Tiq 썁
+Tiqt 썂
+Tit 썃
+TiT 썄
+Tid 썅
+Tiw 썆
+Tic 썇
+Tiz 썈
+Tix 썉
+Tiv 썊
+Tig 썋
+TOr 썍
+TOR 썎
+TOrt 썏
+TOs 썐
+TOsw 썑
+TOsg 썒
+TOe 썓
+TOf 썔
+TOfr 썕
+TOfa 썖
+TOfq 썗
+TOft 썘
+TOfx 썙
+TOfv 썚
+TOfg 썛
+TOa 썜
+TOq 썝
+TOqt 썞
+TOt 썟
+TOT 썠
+TOd 썡
+TOw 썢
+TOc 썣
+TOz 썤
+TOx 썥
+TOv 썦
+TOg 썧
+Tjr 썩
+TjR 썪
+Tjrt 썫
+Tjs 썬
+Tjsw 썭
+Tjsg 썮
+Tje 썯
+Tjf 썰
+Tjfr 썱
+Tjfa 썲
+Tjfq 썳
+Tjft 썴
+Tjfx 썵
+Tjfv 썶
+Tjfg 썷
+Tja 썸
+Tjq 썹
+Tjqt 썺
+Tjt 썻
+TjT 썼
+Tjd 썽
+Tjw 썾
+Tjc 썿
+Tjz 쎀
+Tjx 쎁
+Tjv 쎂
+Tjg 쎃
+Tpr 쎅
+TpR 쎆
+Tprt 쎇
+Tps 쎈
+Tpsw 쎉
+Tpsg 쎊
+Tpe 쎋
+Tpf 쎌
+Tpfr 쎍
+Tpfa 쎎
+Tpfq 쎏
+Tpft 쎐
+Tpfx 쎑
+Tpfv 쎒
+Tpfg 쎓
+Tpa 쎔
+Tpq 쎕
+Tpqt 쎖
+Tpt 쎗
+TpT 쎘
+Tpd 쎙
+Tpw 쎚
+Tpc 쎛
+Tpz 쎜
+Tpx 쎝
+Tpv 쎞
+Tpg 쎟
+Tur 쎡
+TuR 쎢
+Turt 쎣
+Tus 쎤
+Tusw 쎥
+Tusg 쎦
+Tue 쎧
+Tuf 쎨
+Tufr 쎩
+Tufa 쎪
+Tufq 쎫
+Tuft 쎬
+Tufx 쎭
+Tufv 쎮
+Tufg 쎯
+Tua 쎰
+Tuq 쎱
+Tuqt 쎲
+Tut 쎳
+TuT 쎴
+Tud 쎵
+Tuw 쎶
+Tuc 쎷
+Tuz 쎸
+Tux 쎹
+Tuv 쎺
+Tug 쎻
+TPr 쎽
+TPR 쎾
+TPrt 쎿
+TPs 쏀
+TPsw 쏁
+TPsg 쏂
+TPe 쏃
+TPf 쏄
+TPfr 쏅
+TPfa 쏆
+TPfq 쏇
+TPft 쏈
+TPfx 쏉
+TPfv 쏊
+TPfg 쏋
+TPa 쏌
+TPq 쏍
+TPqt 쏎
+TPt 쏏
+TPT 쏐
+TPd 쏑
+TPw 쏒
+TPc 쏓
+TPz 쏔
+TPx 쏕
+TPv 쏖
+TPg 쏗
+Thr 쏙
+ThR 쏚
+Thrt 쏛
+Ths 쏜
+Thsw 쏝
+Thsg 쏞
+The 쏟
+Thf 쏠
+Thfr 쏡
+Thfa 쏢
+Thfq 쏣
+Thft 쏤
+Thfx 쏥
+Thfv 쏦
+Thfg 쏧
+Tha 쏨
+Thq 쏩
+Thqt 쏪
+Tht 쏫
+ThT 쏬
+Thd 쏭
+Thw 쏮
+Thc 쏯
+Thz 쏰
+Thx 쏱
+Thv 쏲
+Thg 쏳
+Thkr 쏵
+ThkR 쏶
+Thkrt 쏷
+Thks 쏸
+Thksw 쏹
+Thksg 쏺
+Thke 쏻
+Thkf 쏼
+Thkfr 쏽
+Thkfa 쏾
+Thkfq 쏿
+Thkft 쐀
+Thkfx 쐁
+Thkfv 쐂
+Thkfg 쐃
+Thka 쐄
+Thkq 쐅
+Thkqt 쐆
+Thkt 쐇
+ThkT 쐈
+Thkd 쐉
+Thkw 쐊
+Thkc 쐋
+Thkz 쐌
+Thkx 쐍
+Thkv 쐎
+Thkg 쐏
+Thor 쐑
+ThoR 쐒
+Thort 쐓
+Thos 쐔
+Thosw 쐕
+Thosg 쐖
+Thoe 쐗
+Thof 쐘
+Thofr 쐙
+Thofa 쐚
+Thofq 쐛
+Thoft 쐜
+Thofx 쐝
+Thofv 쐞
+Thofg 쐟
+Thoa 쐠
+Thoq 쐡
+Thoqt 쐢
+Thot 쐣
+ThoT 쐤
+Thod 쐥
+Thow 쐦
+Thoc 쐧
+Thoz 쐨
+Thox 쐩
+Thov 쐪
+Thog 쐫
+Thlr 쐭
+ThlR 쐮
+Thlrt 쐯
+Thls 쐰
+Thlsw 쐱
+Thlsg 쐲
+Thle 쐳
+Thlf 쐴
+Thlfr 쐵
+Thlfa 쐶
+Thlfq 쐷
+Thlft 쐸
+Thlfx 쐹
+Thlfv 쐺
+Thlfg 쐻
+Thla 쐼
+Thlq 쐽
+Thlqt 쐾
+Thlt 쐿
+ThlT 쑀
+Thld 쑁
+Thlw 쑂
+Thlc 쑃
+Thlz 쑄
+Thlx 쑅
+Thlv 쑆
+Thlg 쑇
+Tyr 쑉
+TyR 쑊
+Tyrt 쑋
+Tys 쑌
+Tysw 쑍
+Tysg 쑎
+Tye 쑏
+Tyf 쑐
+Tyfr 쑑
+Tyfa 쑒
+Tyfq 쑓
+Tyft 쑔
+Tyfx 쑕
+Tyfv 쑖
+Tyfg 쑗
+Tya 쑘
+Tyq 쑙
+Tyqt 쑚
+Tyt 쑛
+TyT 쑜
+Tyd 쑝
+Tyw 쑞
+Tyc 쑟
+Tyz 쑠
+Tyx 쑡
+Tyv 쑢
+Tyg 쑣
+Tnr 쑥
+TnR 쑦
+Tnrt 쑧
+Tns 쑨
+Tnsw 쑩
+Tnsg 쑪
+Tne 쑫
+Tnf 쑬
+Tnfr 쑭
+Tnfa 쑮
+Tnfq 쑯
+Tnft 쑰
+Tnfx 쑱
+Tnfv 쑲
+Tnfg 쑳
+Tna 쑴
+Tnq 쑵
+Tnqt 쑶
+Tnt 쑷
+TnT 쑸
+Tnd 쑹
+Tnw 쑺
+Tnc 쑻
+Tnz 쑼
+Tnx 쑽
+Tnv 쑾
+Tng 쑿
+Tnjr 쒁
+TnjR 쒂
+Tnjrt 쒃
+Tnjs 쒄
+Tnjsw 쒅
+Tnjsg 쒆
+Tnje 쒇
+Tnjf 쒈
+Tnjfr 쒉
+Tnjfa 쒊
+Tnjfq 쒋
+Tnjft 쒌
+Tnjfx 쒍
+Tnjfv 쒎
+Tnjfg 쒏
+Tnja 쒐
+Tnjq 쒑
+Tnjqt 쒒
+Tnjt 쒓
+TnjT 쒔
+Tnjd 쒕
+Tnjw 쒖
+Tnjc 쒗
+Tnjz 쒘
+Tnjx 쒙
+Tnjv 쒚
+Tnjg 쒛
+Tnpr 쒝
+TnpR 쒞
+Tnprt 쒟
+Tnps 쒠
+Tnpsw 쒡
+Tnpsg 쒢
+Tnpe 쒣
+Tnpf 쒤
+Tnpfr 쒥
+Tnpfa 쒦
+Tnpfq 쒧
+Tnpft 쒨
+Tnpfx 쒩
+Tnpfv 쒪
+Tnpfg 쒫
+Tnpa 쒬
+Tnpq 쒭
+Tnpqt 쒮
+Tnpt 쒯
+TnpT 쒰
+Tnpd 쒱
+Tnpw 쒲
+Tnpc 쒳
+Tnpz 쒴
+Tnpx 쒵
+Tnpv 쒶
+Tnpg 쒷
+Tnlr 쒹
+TnlR 쒺
+Tnlrt 쒻
+Tnls 쒼
+Tnlsw 쒽
+Tnlsg 쒾
+Tnle 쒿
+Tnlf 쓀
+Tnlfr 쓁
+Tnlfa 쓂
+Tnlfq 쓃
+Tnlft 쓄
+Tnlfx 쓅
+Tnlfv 쓆
+Tnlfg 쓇
+Tnla 쓈
+Tnlq 쓉
+Tnlqt 쓊
+Tnlt 쓋
+TnlT 쓌
+Tnld 쓍
+Tnlw 쓎
+Tnlc 쓏
+Tnlz 쓐
+Tnlx 쓑
+Tnlv 쓒
+Tnlg 쓓
+Tbr 쓕
+TbR 쓖
+Tbrt 쓗
+Tbs 쓘
+Tbsw 쓙
+Tbsg 쓚
+Tbe 쓛
+Tbf 쓜
+Tbfr 쓝
+Tbfa 쓞
+Tbfq 쓟
+Tbft 쓠
+Tbfx 쓡
+Tbfv 쓢
+Tbfg 쓣
+Tba 쓤
+Tbq 쓥
+Tbqt 쓦
+Tbt 쓧
+TbT 쓨
+Tbd 쓩
+Tbw 쓪
+Tbc 쓫
+Tbz 쓬
+Tbx 쓭
+Tbv 쓮
+Tbg 쓯
+Tmr 쓱
+TmR 쓲
+Tmrt 쓳
+Tms 쓴
+Tmsw 쓵
+Tmsg 쓶
+Tme 쓷
+Tmf 쓸
+Tmfr 쓹
+Tmfa 쓺
+Tmfq 쓻
+Tmft 쓼
+Tmfx 쓽
+Tmfv 쓾
+Tmfg 쓿
+Tma 씀
+Tmq 씁
+Tmqt 씂
+Tmt 씃
+TmT 씄
+Tmd 씅
+Tmw 씆
+Tmc 씇
+Tmz 씈
+Tmx 씉
+Tmv 씊
+Tmg 씋
+Tmlr 씍
+TmlR 씎
+Tmlrt 씏
+Tmls 씐
+Tmlsw 씑
+Tmlsg 씒
+Tmle 씓
+Tmlf 씔
+Tmlfr 씕
+Tmlfa 씖
+Tmlfq 씗
+Tmlft 씘
+Tmlfx 씙
+Tmlfv 씚
+Tmlfg 씛
+Tmla 씜
+Tmlq 씝
+Tmlqt 씞
+Tmlt 씟
+TmlT 씠
+Tmld 씡
+Tmlw 씢
+Tmlc 씣
+Tmlz 씤
+Tmlx 씥
+Tmlv 씦
+Tmlg 씧
+Tlr 씩
+TlR 씪
+Tlrt 씫
+Tls 씬
+Tlsw 씭
+Tlsg 씮
+Tle 씯
+Tlf 씰
+Tlfr 씱
+Tlfa 씲
+Tlfq 씳
+Tlft 씴
+Tlfx 씵
+Tlfv 씶
+Tlfg 씷
+Tla 씸
+Tlq 씹
+Tlqt 씺
+Tlt 씻
+TlT 씼
+Tld 씽
+Tlw 씾
+Tlc 씿
+Tlz 앀
+Tlx 앁
+Tlv 앂
+Tlg 앃
+dkr 악
+dkR 앆
+dkrt 앇
+dks 안
+dksw 앉
+dksg 않
+dke 앋
+dkf 알
+dkfr 앍
+dkfa 앎
+dkfq 앏
+dkft 앐
+dkfx 앑
+dkfv 앒
+dkfg 앓
+dka 암
+dkq 압
+dkqt 앖
+dkt 앗
+dkT 았
+dkd 앙
+dkw 앚
+dkc 앛
+dkz 앜
+dkx 앝
+dkv 앞
+dkg 앟
+dor 액
+doR 앢
+dort 앣
+dos 앤
+dosw 앥
+dosg 앦
+doe 앧
+dof 앨
+dofr 앩
+dofa 앪
+dofq 앫
+doft 앬
+dofx 앭
+dofv 앮
+dofg 앯
+doa 앰
+doq 앱
+doqt 앲
+dot 앳
+doT 앴
+dod 앵
+dow 앶
+doc 앷
+doz 앸
+dox 앹
+dov 앺
+dog 앻
+dir 약
+diR 앾
+dirt 앿
+dis 얀
+disw 얁
+disg 얂
+die 얃
+dif 얄
+difr 얅
+difa 얆
+difq 얇
+dift 얈
+difx 얉
+difv 얊
+difg 얋
+dia 얌
+diq 얍
+diqt 얎
+dit 얏
+diT 얐
+did 양
+diw 얒
+dic 얓
+diz 얔
+dix 얕
+div 얖
+dig 얗
+dOr 얙
+dOR 얚
+dOrt 얛
+dOs 얜
+dOsw 얝
+dOsg 얞
+dOe 얟
+dOf 얠
+dOfr 얡
+dOfa 얢
+dOfq 얣
+dOft 얤
+dOfx 얥
+dOfv 얦
+dOfg 얧
+dOa 얨
+dOq 얩
+dOqt 얪
+dOt 얫
+dOT 얬
+dOd 얭
+dOw 얮
+dOc 얯
+dOz 얰
+dOx 얱
+dOv 얲
+dOg 얳
+djr 억
+djR 얶
+djrt 얷
+djs 언
+djsw 얹
+djsg 얺
+dje 얻
+djf 얼
+djfr 얽
+djfa 얾
+djfq 얿
+djft 엀
+djfx 엁
+djfv 엂
+djfg 엃
+dja 엄
+djq 업
+djqt 없
+djt 엇
+djT 었
+djd 엉
+djw 엊
+djc 엋
+djz 엌
+djx 엍
+djv 엎
+djg 엏
+dpr 엑
+dpR 엒
+dprt 엓
+dps 엔
+dpsw 엕
+dpsg 엖
+dpe 엗
+dpf 엘
+dpfr 엙
+dpfa 엚
+dpfq 엛
+dpft 엜
+dpfx 엝
+dpfv 엞
+dpfg 엟
+dpa 엠
+dpq 엡
+dpqt 엢
+dpt 엣
+dpT 엤
+dpd 엥
+dpw 엦
+dpc 엧
+dpz 엨
+dpx 엩
+dpv 엪
+dpg 엫
+dur 역
+duR 엮
+durt 엯
+dus 연
+dusw 엱
+dusg 엲
+due 엳
+duf 열
+dufr 엵
+dufa 엶
+dufq 엷
+duft 엸
+dufx 엹
+dufv 엺
+dufg 엻
+dua 염
+duq 엽
+duqt 엾
+dut 엿
+duT 였
+dud 영
+duw 옂
+duc 옃
+duz 옄
+dux 옅
+duv 옆
+dug 옇
+dPr 옉
+dPR 옊
+dPrt 옋
+dPs 옌
+dPsw 옍
+dPsg 옎
+dPe 옏
+dPf 옐
+dPfr 옑
+dPfa 옒
+dPfq 옓
+dPft 옔
+dPfx 옕
+dPfv 옖
+dPfg 옗
+dPa 옘
+dPq 옙
+dPqt 옚
+dPt 옛
+dPT 옜
+dPd 옝
+dPw 옞
+dPc 옟
+dPz 옠
+dPx 옡
+dPv 옢
+dPg 옣
+dhr 옥
+dhR 옦
+dhrt 옧
+dhs 온
+dhsw 옩
+dhsg 옪
+dhe 옫
+dhf 올
+dhfr 옭
+dhfa 옮
+dhfq 옯
+dhft 옰
+dhfx 옱
+dhfv 옲
+dhfg 옳
+dha 옴
+dhq 옵
+dhqt 옶
+dht 옷
+dhT 옸
+dhd 옹
+dhw 옺
+dhc 옻
+dhz 옼
+dhx 옽
+dhv 옾
+dhg 옿
+dhkr 왁
+dhkR 왂
+dhkrt 왃
+dhks 완
+dhksw 왅
+dhksg 왆
+dhke 왇
+dhkf 왈
+dhkfr 왉
+dhkfa 왊
+dhkfq 왋
+dhkft 왌
+dhkfx 왍
+dhkfv 왎
+dhkfg 왏
+dhka 왐
+dhkq 왑
+dhkqt 왒
+dhkt 왓
+dhkT 왔
+dhkd 왕
+dhkw 왖
+dhkc 왗
+dhkz 왘
+dhkx 왙
+dhkv 왚
+dhkg 왛
+dhor 왝
+dhoR 왞
+dhort 왟
+dhos 왠
+dhosw 왡
+dhosg 왢
+dhoe 왣
+dhof 왤
+dhofr 왥
+dhofa 왦
+dhofq 왧
+dhoft 왨
+dhofx 왩
+dhofv 왪
+dhofg 왫
+dhoa 왬
+dhoq 왭
+dhoqt 왮
+dhot 왯
+dhoT 왰
+dhod 왱
+dhow 왲
+dhoc 왳
+dhoz 왴
+dhox 왵
+dhov 왶
+dhog 왷
+dhlr 왹
+dhlR 왺
+dhlrt 왻
+dhls 왼
+dhlsw 왽
+dhlsg 왾
+dhle 왿
+dhlf 욀
+dhlfr 욁
+dhlfa 욂
+dhlfq 욃
+dhlft 욄
+dhlfx 욅
+dhlfv 욆
+dhlfg 욇
+dhla 욈
+dhlq 욉
+dhlqt 욊
+dhlt 욋
+dhlT 욌
+dhld 욍
+dhlw 욎
+dhlc 욏
+dhlz 욐
+dhlx 욑
+dhlv 욒
+dhlg 욓
+dyr 욕
+dyR 욖
+dyrt 욗
+dys 욘
+dysw 욙
+dysg 욚
+dye 욛
+dyf 욜
+dyfr 욝
+dyfa 욞
+dyfq 욟
+dyft 욠
+dyfx 욡
+dyfv 욢
+dyfg 욣
+dya 욤
+dyq 욥
+dyqt 욦
+dyt 욧
+dyT 욨
+dyd 용
+dyw 욪
+dyc 욫
+dyz 욬
+dyx 욭
+dyv 욮
+dyg 욯
+dnr 욱
+dnR 욲
+dnrt 욳
+dns 운
+dnsw 욵
+dnsg 욶
+dne 욷
+dnf 울
+dnfr 욹
+dnfa 욺
+dnfq 욻
+dnft 욼
+dnfx 욽
+dnfv 욾
+dnfg 욿
+dna 움
+dnq 웁
+dnqt 웂
+dnt 웃
+dnT 웄
+dnd 웅
+dnw 웆
+dnc 웇
+dnz 웈
+dnx 웉
+dnv 웊
+dng 웋
+dnjr 웍
+dnjR 웎
+dnjrt 웏
+dnjs 원
+dnjsw 웑
+dnjsg 웒
+dnje 웓
+dnjf 월
+dnjfr 웕
+dnjfa 웖
+dnjfq 웗
+dnjft 웘
+dnjfx 웙
+dnjfv 웚
+dnjfg 웛
+dnja 웜
+dnjq 웝
+dnjqt 웞
+dnjt 웟
+dnjT 웠
+dnjd 웡
+dnjw 웢
+dnjc 웣
+dnjz 웤
+dnjx 웥
+dnjv 웦
+dnjg 웧
+dnpr 웩
+dnpR 웪
+dnprt 웫
+dnps 웬
+dnpsw 웭
+dnpsg 웮
+dnpe 웯
+dnpf 웰
+dnpfr 웱
+dnpfa 웲
+dnpfq 웳
+dnpft 웴
+dnpfx 웵
+dnpfv 웶
+dnpfg 웷
+dnpa 웸
+dnpq 웹
+dnpqt 웺
+dnpt 웻
+dnpT 웼
+dnpd 웽
+dnpw 웾
+dnpc 웿
+dnpz 윀
+dnpx 윁
+dnpv 윂
+dnpg 윃
+dnlr 윅
+dnlR 윆
+dnlrt 윇
+dnls 윈
+dnlsw 윉
+dnlsg 윊
+dnle 윋
+dnlf 윌
+dnlfr 윍
+dnlfa 윎
+dnlfq 윏
+dnlft 윐
+dnlfx 윑
+dnlfv 윒
+dnlfg 윓
+dnla 윔
+dnlq 윕
+dnlqt 윖
+dnlt 윗
+dnlT 윘
+dnld 윙
+dnlw 윚
+dnlc 윛
+dnlz 윜
+dnlx 윝
+dnlv 윞
+dnlg 윟
+dbr 육
+dbR 윢
+dbrt 윣
+dbs 윤
+dbsw 윥
+dbsg 윦
+dbe 윧
+dbf 율
+dbfr 윩
+dbfa 윪
+dbfq 윫
+dbft 윬
+dbfx 윭
+dbfv 윮
+dbfg 윯
+dba 윰
+dbq 윱
+dbqt 윲
+dbt 윳
+dbT 윴
+dbd 융
+dbw 윶
+dbc 윷
+dbz 윸
+dbx 윹
+dbv 윺
+dbg 윻
+dmr 윽
+dmR 윾
+dmrt 윿
+dms 은
+dmsw 읁
+dmsg 읂
+dme 읃
+dmf 을
+dmfr 읅
+dmfa 읆
+dmfq 읇
+dmft 읈
+dmfx 읉
+dmfv 읊
+dmfg 읋
+dma 음
+dmq 읍
+dmqt 읎
+dmt 읏
+dmT 읐
+dmd 응
+dmw 읒
+dmc 읓
+dmz 읔
+dmx 읕
+dmv 읖
+dmg 읗
+dmlr 읙
+dmlR 읚
+dmlrt 읛
+dmls 읜
+dmlsw 읝
+dmlsg 읞
+dmle 읟
+dmlf 읠
+dmlfr 읡
+dmlfa 읢
+dmlfq 읣
+dmlft 읤
+dmlfx 읥
+dmlfv 읦
+dmlfg 읧
+dmla 읨
+dmlq 읩
+dmlqt 읪
+dmlt 읫
+dmlT 읬
+dmld 읭
+dmlw 읮
+dmlc 읯
+dmlz 읰
+dmlx 읱
+dmlv 읲
+dmlg 읳
+dlr 익
+dlR 읶
+dlrt 읷
+dls 인
+dlsw 읹
+dlsg 읺
+dle 읻
+dlf 일
+dlfr 읽
+dlfa 읾
+dlfq 읿
+dlft 잀
+dlfx 잁
+dlfv 잂
+dlfg 잃
+dla 임
+dlq 입
+dlqt 잆
+dlt 잇
+dlT 있
+dld 잉
+dlw 잊
+dlc 잋
+dlz 잌
+dlx 잍
+dlv 잎
+dlg 잏
+wkr 작
+wkR 잒
+wkrt 잓
+wks 잔
+wksw 잕
+wksg 잖
+wke 잗
+wkf 잘
+wkfr 잙
+wkfa 잚
+wkfq 잛
+wkft 잜
+wkfx 잝
+wkfv 잞
+wkfg 잟
+wka 잠
+wkq 잡
+wkqt 잢
+wkt 잣
+wkT 잤
+wkd 장
+wkw 잦
+wkc 잧
+wkz 잨
+wkx 잩
+wkv 잪
+wkg 잫
+wor 잭
+woR 잮
+wort 잯
+wos 잰
+wosw 잱
+wosg 잲
+woe 잳
+wof 잴
+wofr 잵
+wofa 잶
+wofq 잷
+woft 잸
+wofx 잹
+wofv 잺
+wofg 잻
+woa 잼
+woq 잽
+woqt 잾
+wot 잿
+woT 쟀
+wod 쟁
+wow 쟂
+woc 쟃
+woz 쟄
+wox 쟅
+wov 쟆
+wog 쟇
+wir 쟉
+wiR 쟊
+wirt 쟋
+wis 쟌
+wisw 쟍
+wisg 쟎
+wie 쟏
+wif 쟐
+wifr 쟑
+wifa 쟒
+wifq 쟓
+wift 쟔
+wifx 쟕
+wifv 쟖
+wifg 쟗
+wia 쟘
+wiq 쟙
+wiqt 쟚
+wit 쟛
+wiT 쟜
+wid 쟝
+wiw 쟞
+wic 쟟
+wiz 쟠
+wix 쟡
+wiv 쟢
+wig 쟣
+wOr 쟥
+wOR 쟦
+wOrt 쟧
+wOs 쟨
+wOsw 쟩
+wOsg 쟪
+wOe 쟫
+wOf 쟬
+wOfr 쟭
+wOfa 쟮
+wOfq 쟯
+wOft 쟰
+wOfx 쟱
+wOfv 쟲
+wOfg 쟳
+wOa 쟴
+wOq 쟵
+wOqt 쟶
+wOt 쟷
+wOT 쟸
+wOd 쟹
+wOw 쟺
+wOc 쟻
+wOz 쟼
+wOx 쟽
+wOv 쟾
+wOg 쟿
+wjr 적
+wjR 젂
+wjrt 젃
+wjs 전
+wjsw 젅
+wjsg 젆
+wje 젇
+wjf 절
+wjfr 젉
+wjfa 젊
+wjfq 젋
+wjft 젌
+wjfx 젍
+wjfv 젎
+wjfg 젏
+wja 점
+wjq 접
+wjqt 젒
+wjt 젓
+wjT 젔
+wjd 정
+wjw 젖
+wjc 젗
+wjz 젘
+wjx 젙
+wjv 젚
+wjg 젛
+wpr 젝
+wpR 젞
+wprt 젟
+wps 젠
+wpsw 젡
+wpsg 젢
+wpe 젣
+wpf 젤
+wpfr 젥
+wpfa 젦
+wpfq 젧
+wpft 젨
+wpfx 젩
+wpfv 젪
+wpfg 젫
+wpa 젬
+wpq 젭
+wpqt 젮
+wpt 젯
+wpT 젰
+wpd 젱
+wpw 젲
+wpc 젳
+wpz 젴
+wpx 젵
+wpv 젶
+wpg 젷
+wur 젹
+wuR 젺
+wurt 젻
+wus 젼
+wusw 젽
+wusg 젾
+wue 젿
+wuf 졀
+wufr 졁
+wufa 졂
+wufq 졃
+wuft 졄
+wufx 졅
+wufv 졆
+wufg 졇
+wua 졈
+wuq 졉
+wuqt 졊
+wut 졋
+wuT 졌
+wud 졍
+wuw 졎
+wuc 졏
+wuz 졐
+wux 졑
+wuv 졒
+wug 졓
+wPr 졕
+wPR 졖
+wPrt 졗
+wPs 졘
+wPsw 졙
+wPsg 졚
+wPe 졛
+wPf 졜
+wPfr 졝
+wPfa 졞
+wPfq 졟
+wPft 졠
+wPfx 졡
+wPfv 졢
+wPfg 졣
+wPa 졤
+wPq 졥
+wPqt 졦
+wPt 졧
+wPT 졨
+wPd 졩
+wPw 졪
+wPc 졫
+wPz 졬
+wPx 졭
+wPv 졮
+wPg 졯
+whr 족
+whR 졲
+whrt 졳
+whs 존
+whsw 졵
+whsg 졶
+whe 졷
+whf 졸
+whfr 졹
+whfa 졺
+whfq 졻
+whft 졼
+whfx 졽
+whfv 졾
+whfg 졿
+wha 좀
+whq 좁
+whqt 좂
+wht 좃
+whT 좄
+whd 종
+whw 좆
+whc 좇
+whz 좈
+whx 좉
+whv 좊
+whg 좋
+whkr 좍
+whkR 좎
+whkrt 좏
+whks 좐
+whksw 좑
+whksg 좒
+whke 좓
+whkf 좔
+whkfr 좕
+whkfa 좖
+whkfq 좗
+whkft 좘
+whkfx 좙
+whkfv 좚
+whkfg 좛
+whka 좜
+whkq 좝
+whkqt 좞
+whkt 좟
+whkT 좠
+whkd 좡
+whkw 좢
+whkc 좣
+whkz 좤
+whkx 좥
+whkv 좦
+whkg 좧
+whor 좩
+whoR 좪
+whort 좫
+whos 좬
+whosw 좭
+whosg 좮
+whoe 좯
+whof 좰
+whofr 좱
+whofa 좲
+whofq 좳
+whoft 좴
+whofx 좵
+whofv 좶
+whofg 좷
+whoa 좸
+whoq 좹
+whoqt 좺
+whot 좻
+whoT 좼
+whod 좽
+whow 좾
+whoc 좿
+whoz 죀
+whox 죁
+whov 죂
+whog 죃
+whlr 죅
+whlR 죆
+whlrt 죇
+whls 죈
+whlsw 죉
+whlsg 죊
+whle 죋
+whlf 죌
+whlfr 죍
+whlfa 죎
+whlfq 죏
+whlft 죐
+whlfx 죑
+whlfv 죒
+whlfg 죓
+whla 죔
+whlq 죕
+whlqt 죖
+whlt 죗
+whlT 죘
+whld 죙
+whlw 죚
+whlc 죛
+whlz 죜
+whlx 죝
+whlv 죞
+whlg 죟
+wyr 죡
+wyR 죢
+wyrt 죣
+wys 죤
+wysw 죥
+wysg 죦
+wye 죧
+wyf 죨
+wyfr 죩
+wyfa 죪
+wyfq 죫
+wyft 죬
+wyfx 죭
+wyfv 죮
+wyfg 죯
+wya 죰
+wyq 죱
+wyqt 죲
+wyt 죳
+wyT 죴
+wyd 죵
+wyw 죶
+wyc 죷
+wyz 죸
+wyx 죹
+wyv 죺
+wyg 죻
+wnr 죽
+wnR 죾
+wnrt 죿
+wns 준
+wnsw 줁
+wnsg 줂
+wne 줃
+wnf 줄
+wnfr 줅
+wnfa 줆
+wnfq 줇
+wnft 줈
+wnfx 줉
+wnfv 줊
+wnfg 줋
+wna 줌
+wnq 줍
+wnqt 줎
+wnt 줏
+wnT 줐
+wnd 중
+wnw 줒
+wnc 줓
+wnz 줔
+wnx 줕
+wnv 줖
+wng 줗
+wnjr 줙
+wnjR 줚
+wnjrt 줛
+wnjs 줜
+wnjsw 줝
+wnjsg 줞
+wnje 줟
+wnjf 줠
+wnjfr 줡
+wnjfa 줢
+wnjfq 줣
+wnjft 줤
+wnjfx 줥
+wnjfv 줦
+wnjfg 줧
+wnja 줨
+wnjq 줩
+wnjqt 줪
+wnjt 줫
+wnjT 줬
+wnjd 줭
+wnjw 줮
+wnjc 줯
+wnjz 줰
+wnjx 줱
+wnjv 줲
+wnjg 줳
+wnpr 줵
+wnpR 줶
+wnprt 줷
+wnps 줸
+wnpsw 줹
+wnpsg 줺
+wnpe 줻
+wnpf 줼
+wnpfr 줽
+wnpfa 줾
+wnpfq 줿
+wnpft 쥀
+wnpfx 쥁
+wnpfv 쥂
+wnpfg 쥃
+wnpa 쥄
+wnpq 쥅
+wnpqt 쥆
+wnpt 쥇
+wnpT 쥈
+wnpd 쥉
+wnpw 쥊
+wnpc 쥋
+wnpz 쥌
+wnpx 쥍
+wnpv 쥎
+wnpg 쥏
+wnlr 쥑
+wnlR 쥒
+wnlrt 쥓
+wnls 쥔
+wnlsw 쥕
+wnlsg 쥖
+wnle 쥗
+wnlf 쥘
+wnlfr 쥙
+wnlfa 쥚
+wnlfq 쥛
+wnlft 쥜
+wnlfx 쥝
+wnlfv 쥞
+wnlfg 쥟
+wnla 쥠
+wnlq 쥡
+wnlqt 쥢
+wnlt 쥣
+wnlT 쥤
+wnld 쥥
+wnlw 쥦
+wnlc 쥧
+wnlz 쥨
+wnlx 쥩
+wnlv 쥪
+wnlg 쥫
+wbr 쥭
+wbR 쥮
+wbrt 쥯
+wbs 쥰
+wbsw 쥱
+wbsg 쥲
+wbe 쥳
+wbf 쥴
+wbfr 쥵
+wbfa 쥶
+wbfq 쥷
+wbft 쥸
+wbfx 쥹
+wbfv 쥺
+wbfg 쥻
+wba 쥼
+wbq 쥽
+wbqt 쥾
+wbt 쥿
+wbT 즀
+wbd 즁
+wbw 즂
+wbc 즃
+wbz 즄
+wbx 즅
+wbv 즆
+wbg 즇
+wmr 즉
+wmR 즊
+wmrt 즋
+wms 즌
+wmsw 즍
+wmsg 즎
+wme 즏
+wmf 즐
+wmfr 즑
+wmfa 즒
+wmfq 즓
+wmft 즔
+wmfx 즕
+wmfv 즖
+wmfg 즗
+wma 즘
+wmq 즙
+wmqt 즚
+wmt 즛
+wmT 즜
+wmd 증
+wmw 즞
+wmc 즟
+wmz 즠
+wmx 즡
+wmv 즢
+wmg 즣
+wmlr 즥
+wmlR 즦
+wmlrt 즧
+wmls 즨
+wmlsw 즩
+wmlsg 즪
+wmle 즫
+wmlf 즬
+wmlfr 즭
+wmlfa 즮
+wmlfq 즯
+wmlft 즰
+wmlfx 즱
+wmlfv 즲
+wmlfg 즳
+wmla 즴
+wmlq 즵
+wmlqt 즶
+wmlt 즷
+wmlT 즸
+wmld 즹
+wmlw 즺
+wmlc 즻
+wmlz 즼
+wmlx 즽
+wmlv 즾
+wmlg 즿
+wlr 직
+wlR 짂
+wlrt 짃
+wls 진
+wlsw 짅
+wlsg 짆
+wle 짇
+wlf 질
+wlfr 짉
+wlfa 짊
+wlfq 짋
+wlft 짌
+wlfx 짍
+wlfv 짎
+wlfg 짏
+wla 짐
+wlq 집
+wlqt 짒
+wlt 짓
+wlT 짔
+wld 징
+wlw 짖
+wlc 짗
+wlz 짘
+wlx 짙
+wlv 짚
+wlg 짛
+Wkr 짝
+WkR 짞
+Wkrt 짟
+Wks 짠
+Wksw 짡
+Wksg 짢
+Wke 짣
+Wkf 짤
+Wkfr 짥
+Wkfa 짦
+Wkfq 짧
+Wkft 짨
+Wkfx 짩
+Wkfv 짪
+Wkfg 짫
+Wka 짬
+Wkq 짭
+Wkqt 짮
+Wkt 짯
+WkT 짰
+Wkd 짱
+Wkw 짲
+Wkc 짳
+Wkz 짴
+Wkx 짵
+Wkv 짶
+Wkg 짷
+Wor 짹
+WoR 짺
+Wort 짻
+Wos 짼
+Wosw 짽
+Wosg 짾
+Woe 짿
+Wof 쨀
+Wofr 쨁
+Wofa 쨂
+Wofq 쨃
+Woft 쨄
+Wofx 쨅
+Wofv 쨆
+Wofg 쨇
+Woa 쨈
+Woq 쨉
+Woqt 쨊
+Wot 쨋
+WoT 쨌
+Wod 쨍
+Wow 쨎
+Woc 쨏
+Woz 쨐
+Wox 쨑
+Wov 쨒
+Wog 쨓
+Wir 쨕
+WiR 쨖
+Wirt 쨗
+Wis 쨘
+Wisw 쨙
+Wisg 쨚
+Wie 쨛
+Wif 쨜
+Wifr 쨝
+Wifa 쨞
+Wifq 쨟
+Wift 쨠
+Wifx 쨡
+Wifv 쨢
+Wifg 쨣
+Wia 쨤
+Wiq 쨥
+Wiqt 쨦
+Wit 쨧
+WiT 쨨
+Wid 쨩
+Wiw 쨪
+Wic 쨫
+Wiz 쨬
+Wix 쨭
+Wiv 쨮
+Wig 쨯
+WOr 쨱
+WOR 쨲
+WOrt 쨳
+WOs 쨴
+WOsw 쨵
+WOsg 쨶
+WOe 쨷
+WOf 쨸
+WOfr 쨹
+WOfa 쨺
+WOfq 쨻
+WOft 쨼
+WOfx 쨽
+WOfv 쨾
+WOfg 쨿
+WOa 쩀
+WOq 쩁
+WOqt 쩂
+WOt 쩃
+WOT 쩄
+WOd 쩅
+WOw 쩆
+WOc 쩇
+WOz 쩈
+WOx 쩉
+WOv 쩊
+WOg 쩋
+Wjr 쩍
+WjR 쩎
+Wjrt 쩏
+Wjs 쩐
+Wjsw 쩑
+Wjsg 쩒
+Wje 쩓
+Wjf 쩔
+Wjfr 쩕
+Wjfa 쩖
+Wjfq 쩗
+Wjft 쩘
+Wjfx 쩙
+Wjfv 쩚
+Wjfg 쩛
+Wja 쩜
+Wjq 쩝
+Wjqt 쩞
+Wjt 쩟
+WjT 쩠
+Wjd 쩡
+Wjw 쩢
+Wjc 쩣
+Wjz 쩤
+Wjx 쩥
+Wjv 쩦
+Wjg 쩧
+Wpr 쩩
+WpR 쩪
+Wprt 쩫
+Wps 쩬
+Wpsw 쩭
+Wpsg 쩮
+Wpe 쩯
+Wpf 쩰
+Wpfr 쩱
+Wpfa 쩲
+Wpfq 쩳
+Wpft 쩴
+Wpfx 쩵
+Wpfv 쩶
+Wpfg 쩷
+Wpa 쩸
+Wpq 쩹
+Wpqt 쩺
+Wpt 쩻
+WpT 쩼
+Wpd 쩽
+Wpw 쩾
+Wpc 쩿
+Wpz 쪀
+Wpx 쪁
+Wpv 쪂
+Wpg 쪃
+Wur 쪅
+WuR 쪆
+Wurt 쪇
+Wus 쪈
+Wusw 쪉
+Wusg 쪊
+Wue 쪋
+Wuf 쪌
+Wufr 쪍
+Wufa 쪎
+Wufq 쪏
+Wuft 쪐
+Wufx 쪑
+Wufv 쪒
+Wufg 쪓
+Wua 쪔
+Wuq 쪕
+Wuqt 쪖
+Wut 쪗
+WuT 쪘
+Wud 쪙
+Wuw 쪚
+Wuc 쪛
+Wuz 쪜
+Wux 쪝
+Wuv 쪞
+Wug 쪟
+WPr 쪡
+WPR 쪢
+WPrt 쪣
+WPs 쪤
+WPsw 쪥
+WPsg 쪦
+WPe 쪧
+WPf 쪨
+WPfr 쪩
+WPfa 쪪
+WPfq 쪫
+WPft 쪬
+WPfx 쪭
+WPfv 쪮
+WPfg 쪯
+WPa 쪰
+WPq 쪱
+WPqt 쪲
+WPt 쪳
+WPT 쪴
+WPd 쪵
+WPw 쪶
+WPc 쪷
+WPz 쪸
+WPx 쪹
+WPv 쪺
+WPg 쪻
+Whr 쪽
+WhR 쪾
+Whrt 쪿
+Whs 쫀
+Whsw 쫁
+Whsg 쫂
+Whe 쫃
+Whf 쫄
+Whfr 쫅
+Whfa 쫆
+Whfq 쫇
+Whft 쫈
+Whfx 쫉
+Whfv 쫊
+Whfg 쫋
+Wha 쫌
+Whq 쫍
+Whqt 쫎
+Wht 쫏
+WhT 쫐
+Whd 쫑
+Whw 쫒
+Whc 쫓
+Whz 쫔
+Whx 쫕
+Whv 쫖
+Whg 쫗
+Whkr 쫙
+WhkR 쫚
+Whkrt 쫛
+Whks 쫜
+Whksw 쫝
+Whksg 쫞
+Whke 쫟
+Whkf 쫠
+Whkfr 쫡
+Whkfa 쫢
+Whkfq 쫣
+Whkft 쫤
+Whkfx 쫥
+Whkfv 쫦
+Whkfg 쫧
+Whka 쫨
+Whkq 쫩
+Whkqt 쫪
+Whkt 쫫
+WhkT 쫬
+Whkd 쫭
+Whkw 쫮
+Whkc 쫯
+Whkz 쫰
+Whkx 쫱
+Whkv 쫲
+Whkg 쫳
+Whor 쫵
+WhoR 쫶
+Whort 쫷
+Whos 쫸
+Whosw 쫹
+Whosg 쫺
+Whoe 쫻
+Whof 쫼
+Whofr 쫽
+Whofa 쫾
+Whofq 쫿
+Whoft 쬀
+Whofx 쬁
+Whofv 쬂
+Whofg 쬃
+Whoa 쬄
+Whoq 쬅
+Whoqt 쬆
+Whot 쬇
+WhoT 쬈
+Whod 쬉
+Whow 쬊
+Whoc 쬋
+Whoz 쬌
+Whox 쬍
+Whov 쬎
+Whog 쬏
+Whlr 쬑
+WhlR 쬒
+Whlrt 쬓
+Whls 쬔
+Whlsw 쬕
+Whlsg 쬖
+Whle 쬗
+Whlf 쬘
+Whlfr 쬙
+Whlfa 쬚
+Whlfq 쬛
+Whlft 쬜
+Whlfx 쬝
+Whlfv 쬞
+Whlfg 쬟
+Whla 쬠
+Whlq 쬡
+Whlqt 쬢
+Whlt 쬣
+WhlT 쬤
+Whld 쬥
+Whlw 쬦
+Whlc 쬧
+Whlz 쬨
+Whlx 쬩
+Whlv 쬪
+Whlg 쬫
+Wyr 쬭
+WyR 쬮
+Wyrt 쬯
+Wys 쬰
+Wysw 쬱
+Wysg 쬲
+Wye 쬳
+Wyf 쬴
+Wyfr 쬵
+Wyfa 쬶
+Wyfq 쬷
+Wyft 쬸
+Wyfx 쬹
+Wyfv 쬺
+Wyfg 쬻
+Wya 쬼
+Wyq 쬽
+Wyqt 쬾
+Wyt 쬿
+WyT 쭀
+Wyd 쭁
+Wyw 쭂
+Wyc 쭃
+Wyz 쭄
+Wyx 쭅
+Wyv 쭆
+Wyg 쭇
+Wnr 쭉
+WnR 쭊
+Wnrt 쭋
+Wns 쭌
+Wnsw 쭍
+Wnsg 쭎
+Wne 쭏
+Wnf 쭐
+Wnfr 쭑
+Wnfa 쭒
+Wnfq 쭓
+Wnft 쭔
+Wnfx 쭕
+Wnfv 쭖
+Wnfg 쭗
+Wna 쭘
+Wnq 쭙
+Wnqt 쭚
+Wnt 쭛
+WnT 쭜
+Wnd 쭝
+Wnw 쭞
+Wnc 쭟
+Wnz 쭠
+Wnx 쭡
+Wnv 쭢
+Wng 쭣
+Wnjr 쭥
+WnjR 쭦
+Wnjrt 쭧
+Wnjs 쭨
+Wnjsw 쭩
+Wnjsg 쭪
+Wnje 쭫
+Wnjf 쭬
+Wnjfr 쭭
+Wnjfa 쭮
+Wnjfq 쭯
+Wnjft 쭰
+Wnjfx 쭱
+Wnjfv 쭲
+Wnjfg 쭳
+Wnja 쭴
+Wnjq 쭵
+Wnjqt 쭶
+Wnjt 쭷
+WnjT 쭸
+Wnjd 쭹
+Wnjw 쭺
+Wnjc 쭻
+Wnjz 쭼
+Wnjx 쭽
+Wnjv 쭾
+Wnjg 쭿
+Wnpr 쮁
+WnpR 쮂
+Wnprt 쮃
+Wnps 쮄
+Wnpsw 쮅
+Wnpsg 쮆
+Wnpe 쮇
+Wnpf 쮈
+Wnpfr 쮉
+Wnpfa 쮊
+Wnpfq 쮋
+Wnpft 쮌
+Wnpfx 쮍
+Wnpfv 쮎
+Wnpfg 쮏
+Wnpa 쮐
+Wnpq 쮑
+Wnpqt 쮒
+Wnpt 쮓
+WnpT 쮔
+Wnpd 쮕
+Wnpw 쮖
+Wnpc 쮗
+Wnpz 쮘
+Wnpx 쮙
+Wnpv 쮚
+Wnpg 쮛
+Wnlr 쮝
+WnlR 쮞
+Wnlrt 쮟
+Wnls 쮠
+Wnlsw 쮡
+Wnlsg 쮢
+Wnle 쮣
+Wnlf 쮤
+Wnlfr 쮥
+Wnlfa 쮦
+Wnlfq 쮧
+Wnlft 쮨
+Wnlfx 쮩
+Wnlfv 쮪
+Wnlfg 쮫
+Wnla 쮬
+Wnlq 쮭
+Wnlqt 쮮
+Wnlt 쮯
+WnlT 쮰
+Wnld 쮱
+Wnlw 쮲
+Wnlc 쮳
+Wnlz 쮴
+Wnlx 쮵
+Wnlv 쮶
+Wnlg 쮷
+Wbr 쮹
+WbR 쮺
+Wbrt 쮻
+Wbs 쮼
+Wbsw 쮽
+Wbsg 쮾
+Wbe 쮿
+Wbf 쯀
+Wbfr 쯁
+Wbfa 쯂
+Wbfq 쯃
+Wbft 쯄
+Wbfx 쯅
+Wbfv 쯆
+Wbfg 쯇
+Wba 쯈
+Wbq 쯉
+Wbqt 쯊
+Wbt 쯋
+WbT 쯌
+Wbd 쯍
+Wbw 쯎
+Wbc 쯏
+Wbz 쯐
+Wbx 쯑
+Wbv 쯒
+Wbg 쯓
+Wmr 쯕
+WmR 쯖
+Wmrt 쯗
+Wms 쯘
+Wmsw 쯙
+Wmsg 쯚
+Wme 쯛
+Wmf 쯜
+Wmfr 쯝
+Wmfa 쯞
+Wmfq 쯟
+Wmft 쯠
+Wmfx 쯡
+Wmfv 쯢
+Wmfg 쯣
+Wma 쯤
+Wmq 쯥
+Wmqt 쯦
+Wmt 쯧
+WmT 쯨
+Wmd 쯩
+Wmw 쯪
+Wmc 쯫
+Wmz 쯬
+Wmx 쯭
+Wmv 쯮
+Wmg 쯯
+Wmlr 쯱
+WmlR 쯲
+Wmlrt 쯳
+Wmls 쯴
+Wmlsw 쯵
+Wmlsg 쯶
+Wmle 쯷
+Wmlf 쯸
+Wmlfr 쯹
+Wmlfa 쯺
+Wmlfq 쯻
+Wmlft 쯼
+Wmlfx 쯽
+Wmlfv 쯾
+Wmlfg 쯿
+Wmla 찀
+Wmlq 찁
+Wmlqt 찂
+Wmlt 찃
+WmlT 찄
+Wmld 찅
+Wmlw 찆
+Wmlc 찇
+Wmlz 찈
+Wmlx 찉
+Wmlv 찊
+Wmlg 찋
+Wlr 찍
+WlR 찎
+Wlrt 찏
+Wls 찐
+Wlsw 찑
+Wlsg 찒
+Wle 찓
+Wlf 찔
+Wlfr 찕
+Wlfa 찖
+Wlfq 찗
+Wlft 찘
+Wlfx 찙
+Wlfv 찚
+Wlfg 찛
+Wla 찜
+Wlq 찝
+Wlqt 찞
+Wlt 찟
+WlT 찠
+Wld 찡
+Wlw 찢
+Wlc 찣
+Wlz 찤
+Wlx 찥
+Wlv 찦
+Wlg 찧
+ckr 착
+ckR 찪
+ckrt 찫
+cks 찬
+cksw 찭
+cksg 찮
+cke 찯
+ckf 찰
+ckfr 찱
+ckfa 찲
+ckfq 찳
+ckft 찴
+ckfx 찵
+ckfv 찶
+ckfg 찷
+cka 참
+ckq 찹
+ckqt 찺
+ckt 찻
+ckT 찼
+ckd 창
+ckw 찾
+ckc 찿
+ckz 챀
+ckx 챁
+ckv 챂
+ckg 챃
+cor 책
+coR 챆
+cort 챇
+cos 챈
+cosw 챉
+cosg 챊
+coe 챋
+cof 챌
+cofr 챍
+cofa 챎
+cofq 챏
+coft 챐
+cofx 챑
+cofv 챒
+cofg 챓
+coa 챔
+coq 챕
+coqt 챖
+cot 챗
+coT 챘
+cod 챙
+cow 챚
+coc 챛
+coz 챜
+cox 챝
+cov 챞
+cog 챟
+cir 챡
+ciR 챢
+cirt 챣
+cis 챤
+cisw 챥
+cisg 챦
+cie 챧
+cif 챨
+cifr 챩
+cifa 챪
+cifq 챫
+cift 챬
+cifx 챭
+cifv 챮
+cifg 챯
+cia 챰
+ciq 챱
+ciqt 챲
+cit 챳
+ciT 챴
+cid 챵
+ciw 챶
+cic 챷
+ciz 챸
+cix 챹
+civ 챺
+cig 챻
+cOr 챽
+cOR 챾
+cOrt 챿
+cOs 첀
+cOsw 첁
+cOsg 첂
+cOe 첃
+cOf 첄
+cOfr 첅
+cOfa 첆
+cOfq 첇
+cOft 첈
+cOfx 첉
+cOfv 첊
+cOfg 첋
+cOa 첌
+cOq 첍
+cOqt 첎
+cOt 첏
+cOT 첐
+cOd 첑
+cOw 첒
+cOc 첓
+cOz 첔
+cOx 첕
+cOv 첖
+cOg 첗
+cjr 척
+cjR 첚
+cjrt 첛
+cjs 천
+cjsw 첝
+cjsg 첞
+cje 첟
+cjf 철
+cjfr 첡
+cjfa 첢
+cjfq 첣
+cjft 첤
+cjfx 첥
+cjfv 첦
+cjfg 첧
+cja 첨
+cjq 첩
+cjqt 첪
+cjt 첫
+cjT 첬
+cjd 청
+cjw 첮
+cjc 첯
+cjz 첰
+cjx 첱
+cjv 첲
+cjg 첳
+cpr 첵
+cpR 첶
+cprt 첷
+cps 첸
+cpsw 첹
+cpsg 첺
+cpe 첻
+cpf 첼
+cpfr 첽
+cpfa 첾
+cpfq 첿
+cpft 쳀
+cpfx 쳁
+cpfv 쳂
+cpfg 쳃
+cpa 쳄
+cpq 쳅
+cpqt 쳆
+cpt 쳇
+cpT 쳈
+cpd 쳉
+cpw 쳊
+cpc 쳋
+cpz 쳌
+cpx 쳍
+cpv 쳎
+cpg 쳏
+cur 쳑
+cuR 쳒
+curt 쳓
+cus 쳔
+cusw 쳕
+cusg 쳖
+cue 쳗
+cuf 쳘
+cufr 쳙
+cufa 쳚
+cufq 쳛
+cuft 쳜
+cufx 쳝
+cufv 쳞
+cufg 쳟
+cua 쳠
+cuq 쳡
+cuqt 쳢
+cut 쳣
+cuT 쳤
+cud 쳥
+cuw 쳦
+cuc 쳧
+cuz 쳨
+cux 쳩
+cuv 쳪
+cug 쳫
+cPr 쳭
+cPR 쳮
+cPrt 쳯
+cPs 쳰
+cPsw 쳱
+cPsg 쳲
+cPe 쳳
+cPf 쳴
+cPfr 쳵
+cPfa 쳶
+cPfq 쳷
+cPft 쳸
+cPfx 쳹
+cPfv 쳺
+cPfg 쳻
+cPa 쳼
+cPq 쳽
+cPqt 쳾
+cPt 쳿
+cPT 촀
+cPd 촁
+cPw 촂
+cPc 촃
+cPz 촄
+cPx 촅
+cPv 촆
+cPg 촇
+chr 촉
+chR 촊
+chrt 촋
+chs 촌
+chsw 촍
+chsg 촎
+che 촏
+chf 촐
+chfr 촑
+chfa 촒
+chfq 촓
+chft 촔
+chfx 촕
+chfv 촖
+chfg 촗
+cha 촘
+chq 촙
+chqt 촚
+cht 촛
+chT 촜
+chd 총
+chw 촞
+chc 촟
+chz 촠
+chx 촡
+chv 촢
+chg 촣
+chkr 촥
+chkR 촦
+chkrt 촧
+chks 촨
+chksw 촩
+chksg 촪
+chke 촫
+chkf 촬
+chkfr 촭
+chkfa 촮
+chkfq 촯
+chkft 촰
+chkfx 촱
+chkfv 촲
+chkfg 촳
+chka 촴
+chkq 촵
+chkqt 촶
+chkt 촷
+chkT 촸
+chkd 촹
+chkw 촺
+chkc 촻
+chkz 촼
+chkx 촽
+chkv 촾
+chkg 촿
+chor 쵁
+choR 쵂
+chort 쵃
+chos 쵄
+chosw 쵅
+chosg 쵆
+choe 쵇
+chof 쵈
+chofr 쵉
+chofa 쵊
+chofq 쵋
+choft 쵌
+chofx 쵍
+chofv 쵎
+chofg 쵏
+choa 쵐
+choq 쵑
+choqt 쵒
+chot 쵓
+choT 쵔
+chod 쵕
+chow 쵖
+choc 쵗
+choz 쵘
+chox 쵙
+chov 쵚
+chog 쵛
+chlr 쵝
+chlR 쵞
+chlrt 쵟
+chls 쵠
+chlsw 쵡
+chlsg 쵢
+chle 쵣
+chlf 쵤
+chlfr 쵥
+chlfa 쵦
+chlfq 쵧
+chlft 쵨
+chlfx 쵩
+chlfv 쵪
+chlfg 쵫
+chla 쵬
+chlq 쵭
+chlqt 쵮
+chlt 쵯
+chlT 쵰
+chld 쵱
+chlw 쵲
+chlc 쵳
+chlz 쵴
+chlx 쵵
+chlv 쵶
+chlg 쵷
+cyr 쵹
+cyR 쵺
+cyrt 쵻
+cys 쵼
+cysw 쵽
+cysg 쵾
+cye 쵿
+cyf 춀
+cyfr 춁
+cyfa 춂
+cyfq 춃
+cyft 춄
+cyfx 춅
+cyfv 춆
+cyfg 춇
+cya 춈
+cyq 춉
+cyqt 춊
+cyt 춋
+cyT 춌
+cyd 춍
+cyw 춎
+cyc 춏
+cyz 춐
+cyx 춑
+cyv 춒
+cyg 춓
+cnr 축
+cnR 춖
+cnrt 춗
+cns 춘
+cnsw 춙
+cnsg 춚
+cne 춛
+cnf 출
+cnfr 춝
+cnfa 춞
+cnfq 춟
+cnft 춠
+cnfx 춡
+cnfv 춢
+cnfg 춣
+cna 춤
+cnq 춥
+cnqt 춦
+cnt 춧
+cnT 춨
+cnd 충
+cnw 춪
+cnc 춫
+cnz 춬
+cnx 춭
+cnv 춮
+cng 춯
+cnjr 춱
+cnjR 춲
+cnjrt 춳
+cnjs 춴
+cnjsw 춵
+cnjsg 춶
+cnje 춷
+cnjf 춸
+cnjfr 춹
+cnjfa 춺
+cnjfq 춻
+cnjft 춼
+cnjfx 춽
+cnjfv 춾
+cnjfg 춿
+cnja 췀
+cnjq 췁
+cnjqt 췂
+cnjt 췃
+cnjT 췄
+cnjd 췅
+cnjw 췆
+cnjc 췇
+cnjz 췈
+cnjx 췉
+cnjv 췊
+cnjg 췋
+cnpr 췍
+cnpR 췎
+cnprt 췏
+cnps 췐
+cnpsw 췑
+cnpsg 췒
+cnpe 췓
+cnpf 췔
+cnpfr 췕
+cnpfa 췖
+cnpfq 췗
+cnpft 췘
+cnpfx 췙
+cnpfv 췚
+cnpfg 췛
+cnpa 췜
+cnpq 췝
+cnpqt 췞
+cnpt 췟
+cnpT 췠
+cnpd 췡
+cnpw 췢
+cnpc 췣
+cnpz 췤
+cnpx 췥
+cnpv 췦
+cnpg 췧
+cnlr 췩
+cnlR 췪
+cnlrt 췫
+cnls 췬
+cnlsw 췭
+cnlsg 췮
+cnle 췯
+cnlf 췰
+cnlfr 췱
+cnlfa 췲
+cnlfq 췳
+cnlft 췴
+cnlfx 췵
+cnlfv 췶
+cnlfg 췷
+cnla 췸
+cnlq 췹
+cnlqt 췺
+cnlt 췻
+cnlT 췼
+cnld 췽
+cnlw 췾
+cnlc 췿
+cnlz 츀
+cnlx 츁
+cnlv 츂
+cnlg 츃
+cbr 츅
+cbR 츆
+cbrt 츇
+cbs 츈
+cbsw 츉
+cbsg 츊
+cbe 츋
+cbf 츌
+cbfr 츍
+cbfa 츎
+cbfq 츏
+cbft 츐
+cbfx 츑
+cbfv 츒
+cbfg 츓
+cba 츔
+cbq 츕
+cbqt 츖
+cbt 츗
+cbT 츘
+cbd 츙
+cbw 츚
+cbc 츛
+cbz 츜
+cbx 츝
+cbv 츞
+cbg 츟
+cmr 측
+cmR 츢
+cmrt 츣
+cms 츤
+cmsw 츥
+cmsg 츦
+cme 츧
+cmf 츨
+cmfr 츩
+cmfa 츪
+cmfq 츫
+cmft 츬
+cmfx 츭
+cmfv 츮
+cmfg 츯
+cma 츰
+cmq 츱
+cmqt 츲
+cmt 츳
+cmT 츴
+cmd 층
+cmw 츶
+cmc 츷
+cmz 츸
+cmx 츹
+cmv 츺
+cmg 츻
+cmlr 츽
+cmlR 츾
+cmlrt 츿
+cmls 칀
+cmlsw 칁
+cmlsg 칂
+cmle 칃
+cmlf 칄
+cmlfr 칅
+cmlfa 칆
+cmlfq 칇
+cmlft 칈
+cmlfx 칉
+cmlfv 칊
+cmlfg 칋
+cmla 칌
+cmlq 칍
+cmlqt 칎
+cmlt 칏
+cmlT 칐
+cmld 칑
+cmlw 칒
+cmlc 칓
+cmlz 칔
+cmlx 칕
+cmlv 칖
+cmlg 칗
+clr 칙
+clR 칚
+clrt 칛
+cls 친
+clsw 칝
+clsg 칞
+cle 칟
+clf 칠
+clfr 칡
+clfa 칢
+clfq 칣
+clft 칤
+clfx 칥
+clfv 칦
+clfg 칧
+cla 침
+clq 칩
+clqt 칪
+clt 칫
+clT 칬
+cld 칭
+clw 칮
+clc 칯
+clz 칰
+clx 칱
+clv 칲
+clg 칳
+zkr 칵
+zkR 칶
+zkrt 칷
+zks 칸
+zksw 칹
+zksg 칺
+zke 칻
+zkf 칼
+zkfr 칽
+zkfa 칾
+zkfq 칿
+zkft 캀
+zkfx 캁
+zkfv 캂
+zkfg 캃
+zka 캄
+zkq 캅
+zkqt 캆
+zkt 캇
+zkT 캈
+zkd 캉
+zkw 캊
+zkc 캋
+zkz 캌
+zkx 캍
+zkv 캎
+zkg 캏
+zor 캑
+zoR 캒
+zort 캓
+zos 캔
+zosw 캕
+zosg 캖
+zoe 캗
+zof 캘
+zofr 캙
+zofa 캚
+zofq 캛
+zoft 캜
+zofx 캝
+zofv 캞
+zofg 캟
+zoa 캠
+zoq 캡
+zoqt 캢
+zot 캣
+zoT 캤
+zod 캥
+zow 캦
+zoc 캧
+zoz 캨
+zox 캩
+zov 캪
+zog 캫
+zir 캭
+ziR 캮
+zirt 캯
+zis 캰
+zisw 캱
+zisg 캲
+zie 캳
+zif 캴
+zifr 캵
+zifa 캶
+zifq 캷
+zift 캸
+zifx 캹
+zifv 캺
+zifg 캻
+zia 캼
+ziq 캽
+ziqt 캾
+zit 캿
+ziT 컀
+zid 컁
+ziw 컂
+zic 컃
+ziz 컄
+zix 컅
+ziv 컆
+zig 컇
+zOr 컉
+zOR 컊
+zOrt 컋
+zOs 컌
+zOsw 컍
+zOsg 컎
+zOe 컏
+zOf 컐
+zOfr 컑
+zOfa 컒
+zOfq 컓
+zOft 컔
+zOfx 컕
+zOfv 컖
+zOfg 컗
+zOa 컘
+zOq 컙
+zOqt 컚
+zOt 컛
+zOT 컜
+zOd 컝
+zOw 컞
+zOc 컟
+zOz 컠
+zOx 컡
+zOv 컢
+zOg 컣
+zjr 컥
+zjR 컦
+zjrt 컧
+zjs 컨
+zjsw 컩
+zjsg 컪
+zje 컫
+zjf 컬
+zjfr 컭
+zjfa 컮
+zjfq 컯
+zjft 컰
+zjfx 컱
+zjfv 컲
+zjfg 컳
+zja 컴
+zjq 컵
+zjqt 컶
+zjt 컷
+zjT 컸
+zjd 컹
+zjw 컺
+zjc 컻
+zjz 컼
+zjx 컽
+zjv 컾
+zjg 컿
+zpr 켁
+zpR 켂
+zprt 켃
+zps 켄
+zpsw 켅
+zpsg 켆
+zpe 켇
+zpf 켈
+zpfr 켉
+zpfa 켊
+zpfq 켋
+zpft 켌
+zpfx 켍
+zpfv 켎
+zpfg 켏
+zpa 켐
+zpq 켑
+zpqt 켒
+zpt 켓
+zpT 켔
+zpd 켕
+zpw 켖
+zpc 켗
+zpz 켘
+zpx 켙
+zpv 켚
+zpg 켛
+zur 켝
+zuR 켞
+zurt 켟
+zus 켠
+zusw 켡
+zusg 켢
+zue 켣
+zuf 켤
+zufr 켥
+zufa 켦
+zufq 켧
+zuft 켨
+zufx 켩
+zufv 켪
+zufg 켫
+zua 켬
+zuq 켭
+zuqt 켮
+zut 켯
+zuT 켰
+zud 켱
+zuw 켲
+zuc 켳
+zuz 켴
+zux 켵
+zuv 켶
+zug 켷
+zPr 켹
+zPR 켺
+zPrt 켻
+zPs 켼
+zPsw 켽
+zPsg 켾
+zPe 켿
+zPf 콀
+zPfr 콁
+zPfa 콂
+zPfq 콃
+zPft 콄
+zPfx 콅
+zPfv 콆
+zPfg 콇
+zPa 콈
+zPq 콉
+zPqt 콊
+zPt 콋
+zPT 콌
+zPd 콍
+zPw 콎
+zPc 콏
+zPz 콐
+zPx 콑
+zPv 콒
+zPg 콓
+zhr 콕
+zhR 콖
+zhrt 콗
+zhs 콘
+zhsw 콙
+zhsg 콚
+zhe 콛
+zhf 콜
+zhfr 콝
+zhfa 콞
+zhfq 콟
+zhft 콠
+zhfx 콡
+zhfv 콢
+zhfg 콣
+zha 콤
+zhq 콥
+zhqt 콦
+zht 콧
+zhT 콨
+zhd 콩
+zhw 콪
+zhc 콫
+zhz 콬
+zhx 콭
+zhv 콮
+zhg 콯
+zhkr 콱
+zhkR 콲
+zhkrt 콳
+zhks 콴
+zhksw 콵
+zhksg 콶
+zhke 콷
+zhkf 콸
+zhkfr 콹
+zhkfa 콺
+zhkfq 콻
+zhkft 콼
+zhkfx 콽
+zhkfv 콾
+zhkfg 콿
+zhka 쾀
+zhkq 쾁
+zhkqt 쾂
+zhkt 쾃
+zhkT 쾄
+zhkd 쾅
+zhkw 쾆
+zhkc 쾇
+zhkz 쾈
+zhkx 쾉
+zhkv 쾊
+zhkg 쾋
+zhor 쾍
+zhoR 쾎
+zhort 쾏
+zhos 쾐
+zhosw 쾑
+zhosg 쾒
+zhoe 쾓
+zhof 쾔
+zhofr 쾕
+zhofa 쾖
+zhofq 쾗
+zhoft 쾘
+zhofx 쾙
+zhofv 쾚
+zhofg 쾛
+zhoa 쾜
+zhoq 쾝
+zhoqt 쾞
+zhot 쾟
+zhoT 쾠
+zhod 쾡
+zhow 쾢
+zhoc 쾣
+zhoz 쾤
+zhox 쾥
+zhov 쾦
+zhog 쾧
+zhlr 쾩
+zhlR 쾪
+zhlrt 쾫
+zhls 쾬
+zhlsw 쾭
+zhlsg 쾮
+zhle 쾯
+zhlf 쾰
+zhlfr 쾱
+zhlfa 쾲
+zhlfq 쾳
+zhlft 쾴
+zhlfx 쾵
+zhlfv 쾶
+zhlfg 쾷
+zhla 쾸
+zhlq 쾹
+zhlqt 쾺
+zhlt 쾻
+zhlT 쾼
+zhld 쾽
+zhlw 쾾
+zhlc 쾿
+zhlz 쿀
+zhlx 쿁
+zhlv 쿂
+zhlg 쿃
+zyr 쿅
+zyR 쿆
+zyrt 쿇
+zys 쿈
+zysw 쿉
+zysg 쿊
+zye 쿋
+zyf 쿌
+zyfr 쿍
+zyfa 쿎
+zyfq 쿏
+zyft 쿐
+zyfx 쿑
+zyfv 쿒
+zyfg 쿓
+zya 쿔
+zyq 쿕
+zyqt 쿖
+zyt 쿗
+zyT 쿘
+zyd 쿙
+zyw 쿚
+zyc 쿛
+zyz 쿜
+zyx 쿝
+zyv 쿞
+zyg 쿟
+znr 쿡
+znR 쿢
+znrt 쿣
+zns 쿤
+znsw 쿥
+znsg 쿦
+zne 쿧
+znf 쿨
+znfr 쿩
+znfa 쿪
+znfq 쿫
+znft 쿬
+znfx 쿭
+znfv 쿮
+znfg 쿯
+zna 쿰
+znq 쿱
+znqt 쿲
+znt 쿳
+znT 쿴
+znd 쿵
+znw 쿶
+znc 쿷
+znz 쿸
+znx 쿹
+znv 쿺
+zng 쿻
+znjr 쿽
+znjR 쿾
+znjrt 쿿
+znjs 퀀
+znjsw 퀁
+znjsg 퀂
+znje 퀃
+znjf 퀄
+znjfr 퀅
+znjfa 퀆
+znjfq 퀇
+znjft 퀈
+znjfx 퀉
+znjfv 퀊
+znjfg 퀋
+znja 퀌
+znjq 퀍
+znjqt 퀎
+znjt 퀏
+znjT 퀐
+znjd 퀑
+znjw 퀒
+znjc 퀓
+znjz 퀔
+znjx 퀕
+znjv 퀖
+znjg 퀗
+znpr 퀙
+znpR 퀚
+znprt 퀛
+znps 퀜
+znpsw 퀝
+znpsg 퀞
+znpe 퀟
+znpf 퀠
+znpfr 퀡
+znpfa 퀢
+znpfq 퀣
+znpft 퀤
+znpfx 퀥
+znpfv 퀦
+znpfg 퀧
+znpa 퀨
+znpq 퀩
+znpqt 퀪
+znpt 퀫
+znpT 퀬
+znpd 퀭
+znpw 퀮
+znpc 퀯
+znpz 퀰
+znpx 퀱
+znpv 퀲
+znpg 퀳
+znlr 퀵
+znlR 퀶
+znlrt 퀷
+znls 퀸
+znlsw 퀹
+znlsg 퀺
+znle 퀻
+znlf 퀼
+znlfr 퀽
+znlfa 퀾
+znlfq 퀿
+znlft 큀
+znlfx 큁
+znlfv 큂
+znlfg 큃
+znla 큄
+znlq 큅
+znlqt 큆
+znlt 큇
+znlT 큈
+znld 큉
+znlw 큊
+znlc 큋
+znlz 큌
+znlx 큍
+znlv 큎
+znlg 큏
+zbr 큑
+zbR 큒
+zbrt 큓
+zbs 큔
+zbsw 큕
+zbsg 큖
+zbe 큗
+zbf 큘
+zbfr 큙
+zbfa 큚
+zbfq 큛
+zbft 큜
+zbfx 큝
+zbfv 큞
+zbfg 큟
+zba 큠
+zbq 큡
+zbqt 큢
+zbt 큣
+zbT 큤
+zbd 큥
+zbw 큦
+zbc 큧
+zbz 큨
+zbx 큩
+zbv 큪
+zbg 큫
+zmr 큭
+zmR 큮
+zmrt 큯
+zms 큰
+zmsw 큱
+zmsg 큲
+zme 큳
+zmf 클
+zmfr 큵
+zmfa 큶
+zmfq 큷
+zmft 큸
+zmfx 큹
+zmfv 큺
+zmfg 큻
+zma 큼
+zmq 큽
+zmqt 큾
+zmt 큿
+zmT 킀
+zmd 킁
+zmw 킂
+zmc 킃
+zmz 킄
+zmx 킅
+zmv 킆
+zmg 킇
+zmlr 킉
+zmlR 킊
+zmlrt 킋
+zmls 킌
+zmlsw 킍
+zmlsg 킎
+zmle 킏
+zmlf 킐
+zmlfr 킑
+zmlfa 킒
+zmlfq 킓
+zmlft 킔
+zmlfx 킕
+zmlfv 킖
+zmlfg 킗
+zmla 킘
+zmlq 킙
+zmlqt 킚
+zmlt 킛
+zmlT 킜
+zmld 킝
+zmlw 킞
+zmlc 킟
+zmlz 킠
+zmlx 킡
+zmlv 킢
+zmlg 킣
+zlr 킥
+zlR 킦
+zlrt 킧
+zls 킨
+zlsw 킩
+zlsg 킪
+zle 킫
+zlf 킬
+zlfr 킭
+zlfa 킮
+zlfq 킯
+zlft 킰
+zlfx 킱
+zlfv 킲
+zlfg 킳
+zla 킴
+zlq 킵
+zlqt 킶
+zlt 킷
+zlT 킸
+zld 킹
+zlw 킺
+zlc 킻
+zlz 킼
+zlx 킽
+zlv 킾
+zlg 킿
+xkr 탁
+xkR 탂
+xkrt 탃
+xks 탄
+xksw 탅
+xksg 탆
+xke 탇
+xkf 탈
+xkfr 탉
+xkfa 탊
+xkfq 탋
+xkft 탌
+xkfx 탍
+xkfv 탎
+xkfg 탏
+xka 탐
+xkq 탑
+xkqt 탒
+xkt 탓
+xkT 탔
+xkd 탕
+xkw 탖
+xkc 탗
+xkz 탘
+xkx 탙
+xkv 탚
+xkg 탛
+xor 택
+xoR 탞
+xort 탟
+xos 탠
+xosw 탡
+xosg 탢
+xoe 탣
+xof 탤
+xofr 탥
+xofa 탦
+xofq 탧
+xoft 탨
+xofx 탩
+xofv 탪
+xofg 탫
+xoa 탬
+xoq 탭
+xoqt 탮
+xot 탯
+xoT 탰
+xod 탱
+xow 탲
+xoc 탳
+xoz 탴
+xox 탵
+xov 탶
+xog 탷
+xir 탹
+xiR 탺
+xirt 탻
+xis 탼
+xisw 탽
+xisg 탾
+xie 탿
+xif 턀
+xifr 턁
+xifa 턂
+xifq 턃
+xift 턄
+xifx 턅
+xifv 턆
+xifg 턇
+xia 턈
+xiq 턉
+xiqt 턊
+xit 턋
+xiT 턌
+xid 턍
+xiw 턎
+xic 턏
+xiz 턐
+xix 턑
+xiv 턒
+xig 턓
+xOr 턕
+xOR 턖
+xOrt 턗
+xOs 턘
+xOsw 턙
+xOsg 턚
+xOe 턛
+xOf 턜
+xOfr 턝
+xOfa 턞
+xOfq 턟
+xOft 턠
+xOfx 턡
+xOfv 턢
+xOfg 턣
+xOa 턤
+xOq 턥
+xOqt 턦
+xOt 턧
+xOT 턨
+xOd 턩
+xOw 턪
+xOc 턫
+xOz 턬
+xOx 턭
+xOv 턮
+xOg 턯
+xjr 턱
+xjR 턲
+xjrt 턳
+xjs 턴
+xjsw 턵
+xjsg 턶
+xje 턷
+xjf 털
+xjfr 턹
+xjfa 턺
+xjfq 턻
+xjft 턼
+xjfx 턽
+xjfv 턾
+xjfg 턿
+xja 텀
+xjq 텁
+xjqt 텂
+xjt 텃
+xjT 텄
+xjd 텅
+xjw 텆
+xjc 텇
+xjz 텈
+xjx 텉
+xjv 텊
+xjg 텋
+xpr 텍
+xpR 텎
+xprt 텏
+xps 텐
+xpsw 텑
+xpsg 텒
+xpe 텓
+xpf 텔
+xpfr 텕
+xpfa 텖
+xpfq 텗
+xpft 텘
+xpfx 텙
+xpfv 텚
+xpfg 텛
+xpa 템
+xpq 텝
+xpqt 텞
+xpt 텟
+xpT 텠
+xpd 텡
+xpw 텢
+xpc 텣
+xpz 텤
+xpx 텥
+xpv 텦
+xpg 텧
+xur 텩
+xuR 텪
+xurt 텫
+xus 텬
+xusw 텭
+xusg 텮
+xue 텯
+xuf 텰
+xufr 텱
+xufa 텲
+xufq 텳
+xuft 텴
+xufx 텵
+xufv 텶
+xufg 텷
+xua 텸
+xuq 텹
+xuqt 텺
+xut 텻
+xuT 텼
+xud 텽
+xuw 텾
+xuc 텿
+xuz 톀
+xux 톁
+xuv 톂
+xug 톃
+xPr 톅
+xPR 톆
+xPrt 톇
+xPs 톈
+xPsw 톉
+xPsg 톊
+xPe 톋
+xPf 톌
+xPfr 톍
+xPfa 톎
+xPfq 톏
+xPft 톐
+xPfx 톑
+xPfv 톒
+xPfg 톓
+xPa 톔
+xPq 톕
+xPqt 톖
+xPt 톗
+xPT 톘
+xPd 톙
+xPw 톚
+xPc 톛
+xPz 톜
+xPx 톝
+xPv 톞
+xPg 톟
+xhr 톡
+xhR 톢
+xhrt 톣
+xhs 톤
+xhsw 톥
+xhsg 톦
+xhe 톧
+xhf 톨
+xhfr 톩
+xhfa 톪
+xhfq 톫
+xhft 톬
+xhfx 톭
+xhfv 톮
+xhfg 톯
+xha 톰
+xhq 톱
+xhqt 톲
+xht 톳
+xhT 톴
+xhd 통
+xhw 톶
+xhc 톷
+xhz 톸
+xhx 톹
+xhv 톺
+xhg 톻
+xhkr 톽
+xhkR 톾
+xhkrt 톿
+xhks 퇀
+xhksw 퇁
+xhksg 퇂
+xhke 퇃
+xhkf 퇄
+xhkfr 퇅
+xhkfa 퇆
+xhkfq 퇇
+xhkft 퇈
+xhkfx 퇉
+xhkfv 퇊
+xhkfg 퇋
+xhka 퇌
+xhkq 퇍
+xhkqt 퇎
+xhkt 퇏
+xhkT 퇐
+xhkd 퇑
+xhkw 퇒
+xhkc 퇓
+xhkz 퇔
+xhkx 퇕
+xhkv 퇖
+xhkg 퇗
+xhor 퇙
+xhoR 퇚
+xhort 퇛
+xhos 퇜
+xhosw 퇝
+xhosg 퇞
+xhoe 퇟
+xhof 퇠
+xhofr 퇡
+xhofa 퇢
+xhofq 퇣
+xhoft 퇤
+xhofx 퇥
+xhofv 퇦
+xhofg 퇧
+xhoa 퇨
+xhoq 퇩
+xhoqt 퇪
+xhot 퇫
+xhoT 퇬
+xhod 퇭
+xhow 퇮
+xhoc 퇯
+xhoz 퇰
+xhox 퇱
+xhov 퇲
+xhog 퇳
+xhlr 퇵
+xhlR 퇶
+xhlrt 퇷
+xhls 퇸
+xhlsw 퇹
+xhlsg 퇺
+xhle 퇻
+xhlf 퇼
+xhlfr 퇽
+xhlfa 퇾
+xhlfq 퇿
+xhlft 툀
+xhlfx 툁
+xhlfv 툂
+xhlfg 툃
+xhla 툄
+xhlq 툅
+xhlqt 툆
+xhlt 툇
+xhlT 툈
+xhld 툉
+xhlw 툊
+xhlc 툋
+xhlz 툌
+xhlx 툍
+xhlv 툎
+xhlg 툏
+xyr 툑
+xyR 툒
+xyrt 툓
+xys 툔
+xysw 툕
+xysg 툖
+xye 툗
+xyf 툘
+xyfr 툙
+xyfa 툚
+xyfq 툛
+xyft 툜
+xyfx 툝
+xyfv 툞
+xyfg 툟
+xya 툠
+xyq 툡
+xyqt 툢
+xyt 툣
+xyT 툤
+xyd 툥
+xyw 툦
+xyc 툧
+xyz 툨
+xyx 툩
+xyv 툪
+xyg 툫
+xnr 툭
+xnR 툮
+xnrt 툯
+xns 툰
+xnsw 툱
+xnsg 툲
+xne 툳
+xnf 툴
+xnfr 툵
+xnfa 툶
+xnfq 툷
+xnft 툸
+xnfx 툹
+xnfv 툺
+xnfg 툻
+xna 툼
+xnq 툽
+xnqt 툾
+xnt 툿
+xnT 퉀
+xnd 퉁
+xnw 퉂
+xnc 퉃
+xnz 퉄
+xnx 퉅
+xnv 퉆
+xng 퉇
+xnjr 퉉
+xnjR 퉊
+xnjrt 퉋
+xnjs 퉌
+xnjsw 퉍
+xnjsg 퉎
+xnje 퉏
+xnjf 퉐
+xnjfr 퉑
+xnjfa 퉒
+xnjfq 퉓
+xnjft 퉔
+xnjfx 퉕
+xnjfv 퉖
+xnjfg 퉗
+xnja 퉘
+xnjq 퉙
+xnjqt 퉚
+xnjt 퉛
+xnjT 퉜
+xnjd 퉝
+xnjw 퉞
+xnjc 퉟
+xnjz 퉠
+xnjx 퉡
+xnjv 퉢
+xnjg 퉣
+xnpr 퉥
+xnpR 퉦
+xnprt 퉧
+xnps 퉨
+xnpsw 퉩
+xnpsg 퉪
+xnpe 퉫
+xnpf 퉬
+xnpfr 퉭
+xnpfa 퉮
+xnpfq 퉯
+xnpft 퉰
+xnpfx 퉱
+xnpfv 퉲
+xnpfg 퉳
+xnpa 퉴
+xnpq 퉵
+xnpqt 퉶
+xnpt 퉷
+xnpT 퉸
+xnpd 퉹
+xnpw 퉺
+xnpc 퉻
+xnpz 퉼
+xnpx 퉽
+xnpv 퉾
+xnpg 퉿
+xnlr 튁
+xnlR 튂
+xnlrt 튃
+xnls 튄
+xnlsw 튅
+xnlsg 튆
+xnle 튇
+xnlf 튈
+xnlfr 튉
+xnlfa 튊
+xnlfq 튋
+xnlft 튌
+xnlfx 튍
+xnlfv 튎
+xnlfg 튏
+xnla 튐
+xnlq 튑
+xnlqt 튒
+xnlt 튓
+xnlT 튔
+xnld 튕
+xnlw 튖
+xnlc 튗
+xnlz 튘
+xnlx 튙
+xnlv 튚
+xnlg 튛
+xbr 튝
+xbR 튞
+xbrt 튟
+xbs 튠
+xbsw 튡
+xbsg 튢
+xbe 튣
+xbf 튤
+xbfr 튥
+xbfa 튦
+xbfq 튧
+xbft 튨
+xbfx 튩
+xbfv 튪
+xbfg 튫
+xba 튬
+xbq 튭
+xbqt 튮
+xbt 튯
+xbT 튰
+xbd 튱
+xbw 튲
+xbc 튳
+xbz 튴
+xbx 튵
+xbv 튶
+xbg 튷
+xmr 특
+xmR 튺
+xmrt 튻
+xms 튼
+xmsw 튽
+xmsg 튾
+xme 튿
+xmf 틀
+xmfr 틁
+xmfa 틂
+xmfq 틃
+xmft 틄
+xmfx 틅
+xmfv 틆
+xmfg 틇
+xma 틈
+xmq 틉
+xmqt 틊
+xmt 틋
+xmT 틌
+xmd 틍
+xmw 틎
+xmc 틏
+xmz 틐
+xmx 틑
+xmv 틒
+xmg 틓
+xmlr 틕
+xmlR 틖
+xmlrt 틗
+xmls 틘
+xmlsw 틙
+xmlsg 틚
+xmle 틛
+xmlf 틜
+xmlfr 틝
+xmlfa 틞
+xmlfq 틟
+xmlft 틠
+xmlfx 틡
+xmlfv 틢
+xmlfg 틣
+xmla 틤
+xmlq 틥
+xmlqt 틦
+xmlt 틧
+xmlT 틨
+xmld 틩
+xmlw 틪
+xmlc 틫
+xmlz 틬
+xmlx 틭
+xmlv 틮
+xmlg 틯
+xlr 틱
+xlR 틲
+xlrt 틳
+xls 틴
+xlsw 틵
+xlsg 틶
+xle 틷
+xlf 틸
+xlfr 틹
+xlfa 틺
+xlfq 틻
+xlft 틼
+xlfx 틽
+xlfv 틾
+xlfg 틿
+xla 팀
+xlq 팁
+xlqt 팂
+xlt 팃
+xlT 팄
+xld 팅
+xlw 팆
+xlc 팇
+xlz 팈
+xlx 팉
+xlv 팊
+xlg 팋
+vkr 팍
+vkR 팎
+vkrt 팏
+vks 판
+vksw 팑
+vksg 팒
+vke 팓
+vkf 팔
+vkfr 팕
+vkfa 팖
+vkfq 팗
+vkft 팘
+vkfx 팙
+vkfv 팚
+vkfg 팛
+vka 팜
+vkq 팝
+vkqt 팞
+vkt 팟
+vkT 팠
+vkd 팡
+vkw 팢
+vkc 팣
+vkz 팤
+vkx 팥
+vkv 팦
+vkg 팧
+vor 팩
+voR 팪
+vort 팫
+vos 팬
+vosw 팭
+vosg 팮
+voe 팯
+vof 팰
+vofr 팱
+vofa 팲
+vofq 팳
+voft 팴
+vofx 팵
+vofv 팶
+vofg 팷
+voa 팸
+voq 팹
+voqt 팺
+vot 팻
+voT 팼
+vod 팽
+vow 팾
+voc 팿
+voz 퍀
+vox 퍁
+vov 퍂
+vog 퍃
+vir 퍅
+viR 퍆
+virt 퍇
+vis 퍈
+visw 퍉
+visg 퍊
+vie 퍋
+vif 퍌
+vifr 퍍
+vifa 퍎
+vifq 퍏
+vift 퍐
+vifx 퍑
+vifv 퍒
+vifg 퍓
+via 퍔
+viq 퍕
+viqt 퍖
+vit 퍗
+viT 퍘
+vid 퍙
+viw 퍚
+vic 퍛
+viz 퍜
+vix 퍝
+viv 퍞
+vig 퍟
+vOr 퍡
+vOR 퍢
+vOrt 퍣
+vOs 퍤
+vOsw 퍥
+vOsg 퍦
+vOe 퍧
+vOf 퍨
+vOfr 퍩
+vOfa 퍪
+vOfq 퍫
+vOft 퍬
+vOfx 퍭
+vOfv 퍮
+vOfg 퍯
+vOa 퍰
+vOq 퍱
+vOqt 퍲
+vOt 퍳
+vOT 퍴
+vOd 퍵
+vOw 퍶
+vOc 퍷
+vOz 퍸
+vOx 퍹
+vOv 퍺
+vOg 퍻
+vjr 퍽
+vjR 퍾
+vjrt 퍿
+vjs 펀
+vjsw 펁
+vjsg 펂
+vje 펃
+vjf 펄
+vjfr 펅
+vjfa 펆
+vjfq 펇
+vjft 펈
+vjfx 펉
+vjfv 펊
+vjfg 펋
+vja 펌
+vjq 펍
+vjqt 펎
+vjt 펏
+vjT 펐
+vjd 펑
+vjw 펒
+vjc 펓
+vjz 펔
+vjx 펕
+vjv 펖
+vjg 펗
+vpr 펙
+vpR 펚
+vprt 펛
+vps 펜
+vpsw 펝
+vpsg 펞
+vpe 펟
+vpf 펠
+vpfr 펡
+vpfa 펢
+vpfq 펣
+vpft 펤
+vpfx 펥
+vpfv 펦
+vpfg 펧
+vpa 펨
+vpq 펩
+vpqt 펪
+vpt 펫
+vpT 펬
+vpd 펭
+vpw 펮
+vpc 펯
+vpz 펰
+vpx 펱
+vpv 펲
+vpg 펳
+vur 펵
+vuR 펶
+vurt 펷
+vus 편
+vusw 펹
+vusg 펺
+vue 펻
+vuf 펼
+vufr 펽
+vufa 펾
+vufq 펿
+vuft 폀
+vufx 폁
+vufv 폂
+vufg 폃
+vua 폄
+vuq 폅
+vuqt 폆
+vut 폇
+vuT 폈
+vud 평
+vuw 폊
+vuc 폋
+vuz 폌
+vux 폍
+vuv 폎
+vug 폏
+vPr 폑
+vPR 폒
+vPrt 폓
+vPs 폔
+vPsw 폕
+vPsg 폖
+vPe 폗
+vPf 폘
+vPfr 폙
+vPfa 폚
+vPfq 폛
+vPft 폜
+vPfx 폝
+vPfv 폞
+vPfg 폟
+vPa 폠
+vPq 폡
+vPqt 폢
+vPt 폣
+vPT 폤
+vPd 폥
+vPw 폦
+vPc 폧
+vPz 폨
+vPx 폩
+vPv 폪
+vPg 폫
+vhr 폭
+vhR 폮
+vhrt 폯
+vhs 폰
+vhsw 폱
+vhsg 폲
+vhe 폳
+vhf 폴
+vhfr 폵
+vhfa 폶
+vhfq 폷
+vhft 폸
+vhfx 폹
+vhfv 폺
+vhfg 폻
+vha 폼
+vhq 폽
+vhqt 폾
+vht 폿
+vhT 퐀
+vhd 퐁
+vhw 퐂
+vhc 퐃
+vhz 퐄
+vhx 퐅
+vhv 퐆
+vhg 퐇
+vhkr 퐉
+vhkR 퐊
+vhkrt 퐋
+vhks 퐌
+vhksw 퐍
+vhksg 퐎
+vhke 퐏
+vhkf 퐐
+vhkfr 퐑
+vhkfa 퐒
+vhkfq 퐓
+vhkft 퐔
+vhkfx 퐕
+vhkfv 퐖
+vhkfg 퐗
+vhka 퐘
+vhkq 퐙
+vhkqt 퐚
+vhkt 퐛
+vhkT 퐜
+vhkd 퐝
+vhkw 퐞
+vhkc 퐟
+vhkz 퐠
+vhkx 퐡
+vhkv 퐢
+vhkg 퐣
+vhor 퐥
+vhoR 퐦
+vhort 퐧
+vhos 퐨
+vhosw 퐩
+vhosg 퐪
+vhoe 퐫
+vhof 퐬
+vhofr 퐭
+vhofa 퐮
+vhofq 퐯
+vhoft 퐰
+vhofx 퐱
+vhofv 퐲
+vhofg 퐳
+vhoa 퐴
+vhoq 퐵
+vhoqt 퐶
+vhot 퐷
+vhoT 퐸
+vhod 퐹
+vhow 퐺
+vhoc 퐻
+vhoz 퐼
+vhox 퐽
+vhov 퐾
+vhog 퐿
+vhlr 푁
+vhlR 푂
+vhlrt 푃
+vhls 푄
+vhlsw 푅
+vhlsg 푆
+vhle 푇
+vhlf 푈
+vhlfr 푉
+vhlfa 푊
+vhlfq 푋
+vhlft 푌
+vhlfx 푍
+vhlfv 푎
+vhlfg 푏
+vhla 푐
+vhlq 푑
+vhlqt 푒
+vhlt 푓
+vhlT 푔
+vhld 푕
+vhlw 푖
+vhlc 푗
+vhlz 푘
+vhlx 푙
+vhlv 푚
+vhlg 푛
+vyr 푝
+vyR 푞
+vyrt 푟
+vys 푠
+vysw 푡
+vysg 푢
+vye 푣
+vyf 푤
+vyfr 푥
+vyfa 푦
+vyfq 푧
+vyft 푨
+vyfx 푩
+vyfv 푪
+vyfg 푫
+vya 푬
+vyq 푭
+vyqt 푮
+vyt 푯
+vyT 푰
+vyd 푱
+vyw 푲
+vyc 푳
+vyz 푴
+vyx 푵
+vyv 푶
+vyg 푷
+vnr 푹
+vnR 푺
+vnrt 푻
+vns 푼
+vnsw 푽
+vnsg 푾
+vne 푿
+vnf 풀
+vnfr 풁
+vnfa 풂
+vnfq 풃
+vnft 풄
+vnfx 풅
+vnfv 풆
+vnfg 풇
+vna 품
+vnq 풉
+vnqt 풊
+vnt 풋
+vnT 풌
+vnd 풍
+vnw 풎
+vnc 풏
+vnz 풐
+vnx 풑
+vnv 풒
+vng 풓
+vnjr 풕
+vnjR 풖
+vnjrt 풗
+vnjs 풘
+vnjsw 풙
+vnjsg 풚
+vnje 풛
+vnjf 풜
+vnjfr 풝
+vnjfa 풞
+vnjfq 풟
+vnjft 풠
+vnjfx 풡
+vnjfv 풢
+vnjfg 풣
+vnja 풤
+vnjq 풥
+vnjqt 풦
+vnjt 풧
+vnjT 풨
+vnjd 풩
+vnjw 풪
+vnjc 풫
+vnjz 풬
+vnjx 풭
+vnjv 풮
+vnjg 풯
+vnpr 풱
+vnpR 풲
+vnprt 풳
+vnps 풴
+vnpsw 풵
+vnpsg 풶
+vnpe 풷
+vnpf 풸
+vnpfr 풹
+vnpfa 풺
+vnpfq 풻
+vnpft 풼
+vnpfx 풽
+vnpfv 풾
+vnpfg 풿
+vnpa 퓀
+vnpq 퓁
+vnpqt 퓂
+vnpt 퓃
+vnpT 퓄
+vnpd 퓅
+vnpw 퓆
+vnpc 퓇
+vnpz 퓈
+vnpx 퓉
+vnpv 퓊
+vnpg 퓋
+vnlr 퓍
+vnlR 퓎
+vnlrt 퓏
+vnls 퓐
+vnlsw 퓑
+vnlsg 퓒
+vnle 퓓
+vnlf 퓔
+vnlfr 퓕
+vnlfa 퓖
+vnlfq 퓗
+vnlft 퓘
+vnlfx 퓙
+vnlfv 퓚
+vnlfg 퓛
+vnla 퓜
+vnlq 퓝
+vnlqt 퓞
+vnlt 퓟
+vnlT 퓠
+vnld 퓡
+vnlw 퓢
+vnlc 퓣
+vnlz 퓤
+vnlx 퓥
+vnlv 퓦
+vnlg 퓧
+vbr 퓩
+vbR 퓪
+vbrt 퓫
+vbs 퓬
+vbsw 퓭
+vbsg 퓮
+vbe 퓯
+vbf 퓰
+vbfr 퓱
+vbfa 퓲
+vbfq 퓳
+vbft 퓴
+vbfx 퓵
+vbfv 퓶
+vbfg 퓷
+vba 퓸
+vbq 퓹
+vbqt 퓺
+vbt 퓻
+vbT 퓼
+vbd 퓽
+vbw 퓾
+vbc 퓿
+vbz 픀
+vbx 픁
+vbv 픂
+vbg 픃
+vmr 픅
+vmR 픆
+vmrt 픇
+vms 픈
+vmsw 픉
+vmsg 픊
+vme 픋
+vmf 플
+vmfr 픍
+vmfa 픎
+vmfq 픏
+vmft 픐
+vmfx 픑
+vmfv 픒
+vmfg 픓
+vma 픔
+vmq 픕
+vmqt 픖
+vmt 픗
+vmT 픘
+vmd 픙
+vmw 픚
+vmc 픛
+vmz 픜
+vmx 픝
+vmv 픞
+vmg 픟
+vmlr 픡
+vmlR 픢
+vmlrt 픣
+vmls 픤
+vmlsw 픥
+vmlsg 픦
+vmle 픧
+vmlf 픨
+vmlfr 픩
+vmlfa 픪
+vmlfq 픫
+vmlft 픬
+vmlfx 픭
+vmlfv 픮
+vmlfg 픯
+vmla 픰
+vmlq 픱
+vmlqt 픲
+vmlt 픳
+vmlT 픴
+vmld 픵
+vmlw 픶
+vmlc 픷
+vmlz 픸
+vmlx 픹
+vmlv 픺
+vmlg 픻
+vlr 픽
+vlR 픾
+vlrt 픿
+vls 핀
+vlsw 핁
+vlsg 핂
+vle 핃
+vlf 필
+vlfr 핅
+vlfa 핆
+vlfq 핇
+vlft 핈
+vlfx 핉
+vlfv 핊
+vlfg 핋
+vla 핌
+vlq 핍
+vlqt 핎
+vlt 핏
+vlT 핐
+vld 핑
+vlw 핒
+vlc 핓
+vlz 핔
+vlx 핕
+vlv 핖
+vlg 핗
+gkr 학
+gkR 핚
+gkrt 핛
+gks 한
+gksw 핝
+gksg 핞
+gke 핟
+gkf 할
+gkfr 핡
+gkfa 핢
+gkfq 핣
+gkft 핤
+gkfx 핥
+gkfv 핦
+gkfg 핧
+gka 함
+gkq 합
+gkqt 핪
+gkt 핫
+gkT 핬
+gkd 항
+gkw 핮
+gkc 핯
+gkz 핰
+gkx 핱
+gkv 핲
+gkg 핳
+gor 핵
+goR 핶
+gort 핷
+gos 핸
+gosw 핹
+gosg 핺
+goe 핻
+gof 핼
+gofr 핽
+gofa 핾
+gofq 핿
+goft 햀
+gofx 햁
+gofv 햂
+gofg 햃
+goa 햄
+goq 햅
+goqt 햆
+got 햇
+goT 했
+god 행
+gow 햊
+goc 햋
+goz 햌
+gox 햍
+gov 햎
+gog 햏
+gir 햑
+giR 햒
+girt 햓
+gis 햔
+gisw 햕
+gisg 햖
+gie 햗
+gif 햘
+gifr 햙
+gifa 햚
+gifq 햛
+gift 햜
+gifx 햝
+gifv 햞
+gifg 햟
+gia 햠
+giq 햡
+giqt 햢
+git 햣
+giT 햤
+gid 향
+giw 햦
+gic 햧
+giz 햨
+gix 햩
+giv 햪
+gig 햫
+gOr 햭
+gOR 햮
+gOrt 햯
+gOs 햰
+gOsw 햱
+gOsg 햲
+gOe 햳
+gOf 햴
+gOfr 햵
+gOfa 햶
+gOfq 햷
+gOft 햸
+gOfx 햹
+gOfv 햺
+gOfg 햻
+gOa 햼
+gOq 햽
+gOqt 햾
+gOt 햿
+gOT 헀
+gOd 헁
+gOw 헂
+gOc 헃
+gOz 헄
+gOx 헅
+gOv 헆
+gOg 헇
+gjr 헉
+gjR 헊
+gjrt 헋
+gjs 헌
+gjsw 헍
+gjsg 헎
+gje 헏
+gjf 헐
+gjfr 헑
+gjfa 헒
+gjfq 헓
+gjft 헔
+gjfx 헕
+gjfv 헖
+gjfg 헗
+gja 험
+gjq 헙
+gjqt 헚
+gjt 헛
+gjT 헜
+gjd 헝
+gjw 헞
+gjc 헟
+gjz 헠
+gjx 헡
+gjv 헢
+gjg 헣
+gpr 헥
+gpR 헦
+gprt 헧
+gps 헨
+gpsw 헩
+gpsg 헪
+gpe 헫
+gpf 헬
+gpfr 헭
+gpfa 헮
+gpfq 헯
+gpft 헰
+gpfx 헱
+gpfv 헲
+gpfg 헳
+gpa 헴
+gpq 헵
+gpqt 헶
+gpt 헷
+gpT 헸
+gpd 헹
+gpw 헺
+gpc 헻
+gpz 헼
+gpx 헽
+gpv 헾
+gpg 헿
+gur 혁
+guR 혂
+gurt 혃
+gus 현
+gusw 혅
+gusg 혆
+gue 혇
+guf 혈
+gufr 혉
+gufa 혊
+gufq 혋
+guft 혌
+gufx 혍
+gufv 혎
+gufg 혏
+gua 혐
+guq 협
+guqt 혒
+gut 혓
+guT 혔
+gud 형
+guw 혖
+guc 혗
+guz 혘
+gux 혙
+guv 혚
+gug 혛
+gPr 혝
+gPR 혞
+gPrt 혟
+gPs 혠
+gPsw 혡
+gPsg 혢
+gPe 혣
+gPf 혤
+gPfr 혥
+gPfa 혦
+gPfq 혧
+gPft 혨
+gPfx 혩
+gPfv 혪
+gPfg 혫
+gPa 혬
+gPq 혭
+gPqt 혮
+gPt 혯
+gPT 혰
+gPd 혱
+gPw 혲
+gPc 혳
+gPz 혴
+gPx 혵
+gPv 혶
+gPg 혷
+ghr 혹
+ghR 혺
+ghrt 혻
+ghs 혼
+ghsw 혽
+ghsg 혾
+ghe 혿
+ghf 홀
+ghfr 홁
+ghfa 홂
+ghfq 홃
+ghft 홄
+ghfx 홅
+ghfv 홆
+ghfg 홇
+gha 홈
+ghq 홉
+ghqt 홊
+ght 홋
+ghT 홌
+ghd 홍
+ghw 홎
+ghc 홏
+ghz 홐
+ghx 홑
+ghv 홒
+ghg 홓
+ghkr 확
+ghkR 홖
+ghkrt 홗
+ghks 환
+ghksw 홙
+ghksg 홚
+ghke 홛
+ghkf 활
+ghkfr 홝
+ghkfa 홞
+ghkfq 홟
+ghkft 홠
+ghkfx 홡
+ghkfv 홢
+ghkfg 홣
+ghka 홤
+ghkq 홥
+ghkqt 홦
+ghkt 홧
+ghkT 홨
+ghkd 황
+ghkw 홪
+ghkc 홫
+ghkz 홬
+ghkx 홭
+ghkv 홮
+ghkg 홯
+ghor 홱
+ghoR 홲
+ghort 홳
+ghos 홴
+ghosw 홵
+ghosg 홶
+ghoe 홷
+ghof 홸
+ghofr 홹
+ghofa 홺
+ghofq 홻
+ghoft 홼
+ghofx 홽
+ghofv 홾
+ghofg 홿
+ghoa 횀
+ghoq 횁
+ghoqt 횂
+ghot 횃
+ghoT 횄
+ghod 횅
+ghow 횆
+ghoc 횇
+ghoz 횈
+ghox 횉
+ghov 횊
+ghog 횋
+ghlr 획
+ghlR 횎
+ghlrt 횏
+ghls 횐
+ghlsw 횑
+ghlsg 횒
+ghle 횓
+ghlf 횔
+ghlfr 횕
+ghlfa 횖
+ghlfq 횗
+ghlft 횘
+ghlfx 횙
+ghlfv 횚
+ghlfg 횛
+ghla 횜
+ghlq 횝
+ghlqt 횞
+ghlt 횟
+ghlT 횠
+ghld 횡
+ghlw 횢
+ghlc 횣
+ghlz 횤
+ghlx 횥
+ghlv 횦
+ghlg 횧
+gyr 횩
+gyR 횪
+gyrt 횫
+gys 횬
+gysw 횭
+gysg 횮
+gye 횯
+gyf 횰
+gyfr 횱
+gyfa 횲
+gyfq 횳
+gyft 횴
+gyfx 횵
+gyfv 횶
+gyfg 횷
+gya 횸
+gyq 횹
+gyqt 횺
+gyt 횻
+gyT 횼
+gyd 횽
+gyw 횾
+gyc 횿
+gyz 훀
+gyx 훁
+gyv 훂
+gyg 훃
+gnr 훅
+gnR 훆
+gnrt 훇
+gns 훈
+gnsw 훉
+gnsg 훊
+gne 훋
+gnf 훌
+gnfr 훍
+gnfa 훎
+gnfq 훏
+gnft 훐
+gnfx 훑
+gnfv 훒
+gnfg 훓
+gna 훔
+gnq 훕
+gnqt 훖
+gnt 훗
+gnT 훘
+gnd 훙
+gnw 훚
+gnc 훛
+gnz 훜
+gnx 훝
+gnv 훞
+gng 훟
+gnjr 훡
+gnjR 훢
+gnjrt 훣
+gnjs 훤
+gnjsw 훥
+gnjsg 훦
+gnje 훧
+gnjf 훨
+gnjfr 훩
+gnjfa 훪
+gnjfq 훫
+gnjft 훬
+gnjfx 훭
+gnjfv 훮
+gnjfg 훯
+gnja 훰
+gnjq 훱
+gnjqt 훲
+gnjt 훳
+gnjT 훴
+gnjd 훵
+gnjw 훶
+gnjc 훷
+gnjz 훸
+gnjx 훹
+gnjv 훺
+gnjg 훻
+gnpr 훽
+gnpR 훾
+gnprt 훿
+gnps 휀
+gnpsw 휁
+gnpsg 휂
+gnpe 휃
+gnpf 휄
+gnpfr 휅
+gnpfa 휆
+gnpfq 휇
+gnpft 휈
+gnpfx 휉
+gnpfv 휊
+gnpfg 휋
+gnpa 휌
+gnpq 휍
+gnpqt 휎
+gnpt 휏
+gnpT 휐
+gnpd 휑
+gnpw 휒
+gnpc 휓
+gnpz 휔
+gnpx 휕
+gnpv 휖
+gnpg 휗
+gnlr 휙
+gnlR 휚
+gnlrt 휛
+gnls 휜
+gnlsw 휝
+gnlsg 휞
+gnle 휟
+gnlf 휠
+gnlfr 휡
+gnlfa 휢
+gnlfq 휣
+gnlft 휤
+gnlfx 휥
+gnlfv 휦
+gnlfg 휧
+gnla 휨
+gnlq 휩
+gnlqt 휪
+gnlt 휫
+gnlT 휬
+gnld 휭
+gnlw 휮
+gnlc 휯
+gnlz 휰
+gnlx 휱
+gnlv 휲
+gnlg 휳
+gbr 휵
+gbR 휶
+gbrt 휷
+gbs 휸
+gbsw 휹
+gbsg 휺
+gbe 휻
+gbf 휼
+gbfr 휽
+gbfa 휾
+gbfq 휿
+gbft 흀
+gbfx 흁
+gbfv 흂
+gbfg 흃
+gba 흄
+gbq 흅
+gbqt 흆
+gbt 흇
+gbT 흈
+gbd 흉
+gbw 흊
+gbc 흋
+gbz 흌
+gbx 흍
+gbv 흎
+gbg 흏
+gmr 흑
+gmR 흒
+gmrt 흓
+gms 흔
+gmsw 흕
+gmsg 흖
+gme 흗
+gmf 흘
+gmfr 흙
+gmfa 흚
+gmfq 흛
+gmft 흜
+gmfx 흝
+gmfv 흞
+gmfg 흟
+gma 흠
+gmq 흡
+gmqt 흢
+gmt 흣
+gmT 흤
+gmd 흥
+gmw 흦
+gmc 흧
+gmz 흨
+gmx 흩
+gmv 흪
+gmg 흫
+gmlr 흭
+gmlR 흮
+gmlrt 흯
+gmls 흰
+gmlsw 흱
+gmlsg 흲
+gmle 흳
+gmlf 흴
+gmlfr 흵
+gmlfa 흶
+gmlfq 흷
+gmlft 흸
+gmlfx 흹
+gmlfv 흺
+gmlfg 흻
+gmla 흼
+gmlq 흽
+gmlqt 흾
+gmlt 흿
+gmlT 힀
+gmld 힁
+gmlw 힂
+gmlc 힃
+gmlz 힄
+gmlx 힅
+gmlv 힆
+gmlg 힇
+glr 힉
+glR 힊
+glrt 힋
+gls 힌
+glsw 힍
+glsg 힎
+gle 힏
+glf 힐
+glfr 힑
+glfa 힒
+glfq 힓
+glft 힔
+glfx 힕
+glfv 힖
+glfg 힗
+gla 힘
+glq 힙
+glqt 힚
+glt 힛
+glT 힜
+gld 힝
+glw 힞
+glc 힟
+glz 힠
+glx 힡
+glv 힢
+glg 힣
diff --git a/runtime/keymap/korean.vim b/runtime/keymap/korean.vim
new file mode 100644
index 0000000000..044e3b9918
--- /dev/null
+++ b/runtime/keymap/korean.vim
@@ -0,0 +1,23 @@
+" Maintainer: Jang Whemoon <palindrom615@gmail.com>
+" Last Change: Nov 24, 2020
+"
+"
+"
+" Unlike Japanese or Chinese, modern Korean texts do not depends on conversion
+" to Hanja (Chinese character). Thus, general Korean text totally can be
+" covered without help of IME but this keymap.
+"
+" BUT, simply mapping each letter of Hangul with sequence of alphabet 1 by 1
+" can fail to combine Hangul jamo (conconants and vowels) right.
+" For example, sequentially pressing `ㅅㅓㅇㅜㄹㄷㅐㅎㅏㄱㅛ` can not only be
+" combined as `서울대학교`, but alse `성ㅜㄹ댛ㅏㄱ교`, which is totally
+" nonsense.
+" Though combining Hangul is deterministic with law that each letter must be
+" one of (consonant + vowel) or (consonant + vowel + consonant), there is no
+" way to apply such law without implementing input engine.
+"
+" Thus, user of this keymap should wait until previous hangul letter is
+" completed before typing next one. To reduce such inconvenience, I suggest to
+" set `timeoutlen` with their own value. (default value is 1000ms)
+
+source <sfile>:p:h/korean-dubeolsik_utf-8.vim
diff --git a/runtime/keymap/oldturkic-yenisei_utf-8.vim b/runtime/keymap/oldturkic-yenisei_utf-8.vim
index f939f0a405..09722e70a2 100644
--- a/runtime/keymap/oldturkic-yenisei_utf-8.vim
+++ b/runtime/keymap/oldturkic-yenisei_utf-8.vim
@@ -5,7 +5,7 @@
" UTF-8) should work.
scriptencoding utf-8
-let b:keymap_name = "oto"
+let b:keymap_name = "oty"
highlight lCursor guibg=red guifg=NONE
" map F8 to toggle keymap (Ctrl-^ not present on keyboard)
@@ -22,7 +22,10 @@ I 𐰄 10C04 OLD TURKIC LETTER YENISEI I
04 𐰄 10C04 OLD TURKIC LETTER YENISEI I
E 𐰅 10C05 OLD TURKIC LETTER YENISEI E
05 𐰅 10C05 OLD TURKIC LETTER YENISEI E
-OE 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
+OO 𐰆 10C06 OLD TURKIC LETTER ORKHON O
+U 𐰆 10C06 OLD TURKIC LETTER ORKHON O
+06 𐰆 10C06 OLD TURKIC LETTER ORKHON O
+E 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
UE 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
08 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
ab 𐰊 10C0A OLD TURKIC LETTER YENISEI AB
@@ -42,6 +45,10 @@ g2 𐰐 10C10 OLD TURKIC LETTER YENISEI AEG
ad 𐰒 10C12 OLD TURKIC LETTER YENISEI AD
d1 𐰒 10C12 OLD TURKIC LETTER YENISEI AD
12 𐰒 10C12 OLD TURKIC LETTER YENISEI AD
+aed 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
+ed 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
+d2 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
+13 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
ez 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ
z 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ
15 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ
@@ -65,6 +72,19 @@ al 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
l 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
l1 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
1f 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
+ael 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
+el 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
+l2 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
+20 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
+elt 𐰡 10C21 OLD TURKIC LETTER ORKHON ELT
+lt 𐰡 10C21 OLD TURKIC LETTER ORKHON ELT
+21 𐰡 10C21 OLD TURKIC LETTER ORKHON ELT
+em 𐰢 10C22 OLD TURKIC LETTER ORKHON EM
+m 𐰢 10C22 OLD TURKIC LETTER ORKHON EM
+22 𐰢 10C22 OLD TURKIC LETTER ORKHON EM
+an 𐰣 10C23 OLD TURKIC LETTER ORKHON AN
+n1 𐰣 10C23 OLD TURKIC LETTER ORKHON AN
+23 𐰣 10C23 OLD TURKIC LETTER ORKHON AN
aen 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN
en 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN
n2 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN
@@ -84,6 +104,14 @@ ng 𐰬 10C2C OLD TURKIC LETTER YENISEI ANG
aeng 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG
eng 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG
2e 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG
+ep 𐰯 10C2F OLD TURKIC LETTER ORKHON EP
+p 𐰯 10C2F OLD TURKIC LETTER ORKHON EP
+2f 𐰯 10C2F OLD TURKIC LETTER ORKHON EP
+op 𐰰 10C30 OLD TURKIC LETTER ORKHON OP
+up 𐰰 10C30 OLD TURKIC LETTER ORKHON OP
+30 𐰰 10C30 OLD TURKIC LETTER ORKHON OP
+ic 𐰱 10C31 OLD TURKIC LETTER ORKHON IC
+31 𐰱 10C31 OLD TURKIC LETTER ORKHON IC
ec 𐰳 10C33 OLD TURKIC LETTER YENISEI EC
c 𐰳 10C33 OLD TURKIC LETTER YENISEI EC
33 𐰳 10C33 OLD TURKIC LETTER YENISEI EC
@@ -100,6 +128,17 @@ ar 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
r 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
r1 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
3b 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
+aer 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
+er 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
+r2 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
+3c 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
+as 𐰽 10C3D OLD TURKIC LETTER ORKHON AS
+s1 𐰽 10C3D OLD TURKIC LETTER ORKHON AS
+3d 𐰽 10C3D OLD TURKIC LETTER ORKHON AS
+aes 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
+es 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
+s2 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
+3e 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
ash 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH
sh1 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH
40 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH
@@ -113,3 +152,8 @@ aet 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
et 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
t2 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
46 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
+ot 𐱇 10C47 OLD TURKIC LETTER ORKHON OT
+ut 𐱇 10C47 OLD TURKIC LETTER ORKHON OT
+47 𐱇 10C47 OLD TURKIC LETTER ORKHON OT
+bash 𐱈 10C48 OLD TURKIC LETTER ORKHON BASH
+48 𐱈 10C48 OLD TURKIC LETTER ORKHON BASH
diff --git a/runtime/keymap/russian-typograph.vim b/runtime/keymap/russian-typograph.vim
new file mode 100644
index 0000000000..a85e861e32
--- /dev/null
+++ b/runtime/keymap/russian-typograph.vim
@@ -0,0 +1,190 @@
+" Vim Keymap file for Russian characters
+" layout English-US standard 104 key 'QWERTY', 'JCUKEN'
+"
+" Maintainer: Restorer <restorers@users.sourceforge.net>
+" Last Changed: 20 Jan 2019
+" Description: Раскладка сделана на основе раскладки «русская машинопись»
+" (KBDRU1.DLL), поставляемой в составе ОС MS Windows. Эта раскладка позволяет
+" печать практически все знаки препинания используя цифровой ряд и не требуя при
+" этом нажатия дополнительных клавиш, ну и также удобное расположение буквы «Ё».
+" Однако были внесены некоторые дополнения (улучшения?), в частности:
+" ‐ раздельные символы круглых скобок (), расположены на тех же позициях, что и
+" в US-International;
+" ‐ раздельные символы типографских кавычек «», расположены на клавишах «3» и
+" «4» соответственно;
+" ‐ на этих же клавишах находятся внутренние кавычки “лапки”, набираемые при
+" нажатой клавише «ALT»;
+" ‐ возможность набирать символы, отсутствующие в русской раскладке клавиатуры,
+" а именно @#$^&*{}[]"'`~<>, которые расположены на тех же местах, что и раньше.
+" Для этого не требуется переключаться в латинскую раскладку клавиатуры, а
+" оставаясь в русской, использовать для этого дополнительные клавиши «SHIFT» и
+" «ALT»;
+" ‐ и ещё несколько удобств, которые позволяют быстро и с минимальными усилиями
+" набирать текст.
+
+scriptencoding utf-8
+
+" Переключение языка ввода со стандартного сочетания <CTRL+^> на указанные ниже
+" Для режимов вставки и замены
+""или SHIFT+SPACE
+" inoremap <S-Space> <C-^>
+""или CTRL+SPACE"
+" inoremap <C-Space> <C-^>
+" Для режима командной строки
+""или SHIFT+SPACE
+" cnoremap <S-Space> <C-^>
+""или CTRL+SPACE"
+" cnoremap <C-Space> <C-^>
+" Одной командой для режимов вставки, замены и командной строки
+" noremap! <S-Space> <C-^>
+" noremap! <C-Space> <C-^>
+"
+" Стандартное переключение по CTRL+^ после этих переназначений также сохраняется
+
+let b:keymap_name ="RUS"
+
+loadkeymap
+
+" DIGITAL ROW
+
+" The Shift key is not pressed
+"
+<char-0x0060> <char-0x0025> " PERCENT SIGN
+<char-0x0031> <char-0x0021> " EXCLAMATION MARK
+<char-0x0032> <char-0x2014> " EM DASH
+<char-0x0033> <char-0x00ab> " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<char-0x0034> <char-0x00bb> " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<char-0x0035> <char-0x003a> " COLON
+<char-0x0036> <char-0x002c> " COMMA
+<char-0x0037> <char-0x002e> " FULL STOP
+<char-0x0038> <char-0x003f> " QUESTION MARK
+<char-0x0039> <char-0x0028> " LEFT PARENTHESIS
+<char-0x0030> <char-0x0029> " RIGHT PARENTHESIS
+<char-0x002d> <char-0x2010> " HYPHEN
+<char-0x003d> <char-0x003b> " SEMICOLON
+
+" The Shift key is pressed
+
+<char-0x007e> <char-0x003d> " EQUALS SIGN
+<char-0x0021> <char-0x0031> " DIGIT ONE
+<char-0x0040> <char-0x0032> " DIGIT TWO
+<char-0x0023> <char-0x0033> " DIGIT THREE
+<char-0x0024> <char-0x0034> " DIGIT FOUR
+<char-0x0025> <char-0x0035> " DIGIT FIVE
+<char-0x005e> <char-0x0036> " DIGIT SIX
+<char-0x0026> <char-0x0037> " DIGIT SEVEN
+<char-0x002a> <char-0x0038> " DIGIT EIGHT
+<char-0x0028> <char-0x0039> " DIGIT NINE
+<char-0x0029> <char-0x0030> " DIGIT ZERO
+<char-0x005f> <char-0x002d> " HYPHEN-MINUS
+<char-0x002b> <char-0x002b> " PLUS SIGN
+
+" ALPHABETICAL 1st ROW
+
+<char-0x0071> <char-0x0439> " CYRILLIC SMALL LETTER SHORT I
+<char-0x0051> <char-0x0419> " CYRILLIC CAPITAL LETTER SHORT I
+<char-0x0077> <char-0x0446> " CYRILLIC SMALL LETTER TSE
+<char-0x0057> <char-0x0426> " CYRILLIC CAPITAL LETTER TSE
+<char-0x0065> <char-0x0443> " CYRILLIC SMALL LETTER U
+<char-0x0045> <char-0x0423> " CYRILLIC CAPITAL LETTER U
+<char-0x0072> <char-0x043a> " CYRILLIC SMALL LETTER KA
+<char-0x0052> <char-0x041a> " CYRILLIC CAPITAL LETTER KA
+<char-0x0074> <char-0x0435> " CYRILLIC SMALL LETTER IE
+<char-0x0054> <char-0x0415> " CYRILLIC CAPITAL LETTER IE
+<char-0x0079> <char-0x043d> " CYRILLIC SMALL LETTER EN
+<char-0x0059> <char-0x041d> " CYRILLIC CAPITAL LETTER EN
+<char-0x0075> <char-0x0433> " CYRILLIC SMALL LETTER GHE
+<char-0x0055> <char-0x0413> " CYRILLIC CAPITAL LETTER GHE
+<char-0x0069> <char-0x0448> " CYRILLIC SMALL LETTER SHA
+<char-0x0049> <char-0x0428> " CYRILLIC CAPITAL LETTER SHA
+<char-0x006f> <char-0x0449> " CYRILLIC SMALL LETTER SHCHA
+<char-0x004f> <char-0x0429> " CYRILLIC CAPITAL LETTER SHCHA
+<char-0x0070> <char-0x0437> " CYRILLIC SMALL LETTER ZE
+<char-0x0050> <char-0x0417> " CYRILLIC CAPITAL LETTER ZE
+<char-0x005b> <char-0x0445> " CYRILLIC SMALL LETTER HA
+<char-0x007b> <char-0x0425> " CYRILLIC CAPITAL LETTER HA
+<char-0x005d> <char-0x044a> " CYRILLIC SMALL LETTER HARD SIGN
+<char-0x007d> <char-0x042a> " CYRILLIC CAPITAL LETTER HARD SIGN
+
+" ALPHABETIC 2st ROW
+
+<char-0x0061> <char-0x0444> " CYRILLIC SMALL LETTER EF
+<char-0x0041> <char-0x0424> " CYRILLIC CAPITAL LETTER EF
+<char-0x0073> <char-0x044b> " CYRILLIC SMALL LETTER YERU
+<char-0x0053> <char-0x042b> " CYRILLIC CAPITAL LETTER YERU
+<char-0x0064> <char-0x0432> " CYRILLIC SMALL LETTER VE
+<char-0x0044> <char-0x0412> " CYRILLIC CAPITAL LETTER VE
+<char-0x0066> <char-0x0430> " CYRILLIC SMALL LETTER A
+<char-0x0046> <char-0x0410> " CYRILLIC CAPITAL LETTER A
+<char-0x0067> <char-0x043f> " CYRILLIC SMALL LETTER PE
+<char-0x0047> <char-0x041f> " CYRILLIC CAPITAL LETTER PE
+<char-0x0068> <char-0x0440> " CYRILLIC SMALL LETTER ER
+<char-0x0048> <char-0x0420> " CYRILLIC CAPITAL LETTER ER
+<char-0x006a> <char-0x043e> " CYRILLIC SMALL LETTER O
+<char-0x004a> <char-0x041e> " CYRILLIC CAPITAL LETTER O
+<char-0x006b> <char-0x043b> " CYRILLIC SMALL LETTER EL
+<char-0x004b> <char-0x041b> " CYRILLIC CAPITAL LETTER EL
+<char-0x006c> <char-0x0434> " CYRILLIC SMALL LETTER DE
+<char-0x004c> <char-0x0414> " CYRILLIC CAPITAL LETTER DE
+<char-0x003b> <char-0x0436> " CYRILLIC SMALL LETTER ZHE
+<char-0x003a> <char-0x0416> " CYRILLIC CAPITAL LETTER ZHE
+<char-0x0027> <char-0x044d> " CYRILLIC SMALL LETTER E
+<char-0x0022> <char-0x042d> " CYRILLIC CAPITAL LETTER E
+
+" ALPHABETIC 3st ROW
+
+<char-0x007a> <char-0x044f> " CYRILLIC SMALL LETTER YA
+<char-0x005a> <char-0x042f> " CYRILLIC CAPITAL LETTER YA
+<char-0x0078> <char-0x0447> " CYRILLIC SMALL LETTER CHE
+<char-0x0058> <char-0x0427> " CYRILLIC CAPITAL LETTER CHE
+<char-0x0063> <char-0x0441> " CYRILLIC SMALL LETTER ES
+<char-0x0043> <char-0x0421> " CYRILLIC CAPITAL LETTER ES
+<char-0x0076> <char-0x043c> " CYRILLIC SMALL LETTER EM
+<char-0x0056> <char-0x041c> " CYRILLIC CAPITAL LETTER EM
+<char-0x0062> <char-0x0438> " CYRILLIC SMALL LETTER I
+<char-0x0042> <char-0x0418> " CYRILLIC CAPITAL LETTER I
+<char-0x006e> <char-0x0442> " CYRILLIC SMALL LETTER TE
+<char-0x004e> <char-0x0422> " CYRILLIC CAPITAL LETTER TE
+<char-0x006d> <char-0x044c> " CYRILLIC SMALL LETTER SOFT SIGN
+<char-0x004d> <char-0x042c> " CYRILLIC CAPITAL LETTER SOFT SIGN
+<char-0x002c> <char-0x0431> " CYRILLIC SMALL LETTER BE
+<char-0x003c> <char-0x0411> " CYRILLIC CAPITAL LETTER BE
+<char-0x002e> <char-0x044e> " CYRILLIC SMALL LETTER YU
+<char-0x003e> <char-0x042e> " CYRILLIC CAPITAL LETTER YU
+<char-0x002f> <char-0x0451> " CYRILLIC SMALL LETTER IO
+<char-0x003f> <char-0x0401> " CYRILLIC CAPITAL LETTER IO
+
+" VK_OEM_5 key (scan code 2b)
+
+" The Shift key is not pressed
+<char-0x005c> <char-0x002f> " SOLIDUS
+" The Shift key is pressed
+<char-0x007c> <char-0x005c> " REVERSE SOLIDUS
+
+" Alt key pressed
+
+<A-char-0x0060> <char-0x0060> " GRAVE ACCENT
+<A-char-0x0031> <char-0x2116> " NUMERO SIGN
+<A-char-0x0033> <char-0x201c> " LEFT DOUBLE QUOTATION MARK
+<A-char-0x0034> <char-0x201d> " RIGHT DOUBLE QUOTATION MARK
+<A-char-0x005b> <char-0x005b> " LEFT SQUARE BRACKET
+<A-char-0x005d> <char-0x005d> " RIGHT SQUARE BRACKET
+<A-char-0x0027> <char-0x0027> " APOSTROPHE
+
+" Alt and Shift keys pressed
+
+<A-char-0x007e> <char-0x007e> " TILDE
+<A-char-0x0040> <char-0x0040> " COMMERCIAL AT
+<A-char-0x0023> <char-0x0023> " NUMBER SIGN
+<A-char-0x0024> <char-0x0024> " DOLLAR SIGN
+<A-char-0x005e> <char-0x005e> " CIRCUMFLEX ACCENT
+<A-char-0x0026> <char-0x0026> " AMPERSAND
+<A-char-0x002a> <char-0x002a> " ASTERISK
+<A-char-0x005f> <char-0x005f> " LOW LINE
+<A-char-0x007b> <char-0x007b> " LEFT CURLY BRACKET
+<A-char-0x007d> <char-0x007d> " RIGHT CURLY BRACKET
+<A-char-0x0022> <char-0x0022> " QUOTATION MARK
+<A-char-0x003c> <char-0x003c> " LESS-THAN SIGN
+<A-char-0x003e> <char-0x003e> " GREATER-THAN SIGN
+<A-char-0x007c> <char-0x007c> " VERTICAL LINE
+
diff --git a/runtime/keymap/turkish-f.vim b/runtime/keymap/turkish-f.vim
new file mode 100644
index 0000000000..f03c5eb3e2
--- /dev/null
+++ b/runtime/keymap/turkish-f.vim
@@ -0,0 +1,113 @@
+" Vim keymap file for Turkish F layout
+" Maintainer: Emir SARI <bitigchi@me.com>
+" Last changed: 5 August 2020
+
+scriptencoding utf-8
+let b:keymap_name = "tr-f"
+loadkeymap
+
+F A LATIN CAPITAL LETTER A
+< B LATIN CAPITAL LETTER B
+V C LATIN CAPITAL LETTER C
+B Ç LATIN CAPITAL LETTER C WITH CEDILLA
+Y D LATIN CAPITAL LETTER D
+D E LATIN CAPITAL LETTER E
+Q F LATIN CAPITAL LETTER F
+W G LATIN CAPITAL LETTER G
+E Ğ LATIN CAPITAL LETTER G WITH BREVE
+O H LATIN CAPITAL LETTER H
+R I LATIN CAPITAL LETTER I
+S İ LATIN CAPITAL LETTER I WITH DOT ABOVE
+Z J LATIN CAPITAL LETTER J
+J K LATIN CAPITAL LETTER K
+K M LATIN CAPITAL LETTER M
+I N LATIN CAPITAL LETTER N
+T O LATIN CAPITAL LETTER O
+X Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+U R LATIN CAPITAL LETTER R
+M S LATIN CAPITAL LETTER S
+\" Ş LATIN CAPITAL LETTER S WITH CEDILLA
+H T LATIN CAPITAL LETTER T
+A U LATIN CAPITAL LETTER U
+G Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+C V LATIN CAPITAL LETTER V
+: Y LATIN CAPITAL LETTER Y
+N Z LATIN CAPITAL LETTER Z
+
+{ Q LATIN CAPITAL LETTER Q
+} W LATIN CAPITAL LETTER W
+| X LATIN CAPITAL LETTER X
+
+± * ASTERISK
+@ " QUOTATION MARK
+# ^ CIRCUMFLEX ACCENT
+^ & AMPERSAND
+& ' APOSTROPHE
+* ( LEFT PARENTHESIS
+( ) RIGHT PARENTHESIS
+) = EQUALS SIGN
+_ ? QUESTION MARK
++ _ LOW LINE
+> : COLON
+? ; SEMICOLON
+~ > GREATER-THAN SIGN
+
+Å Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+Í Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+Ï Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+
+f a LATIN SMALL LETTER A
+, b LATIN SMALL LETTER B
+v c LATIN SMALL LETTER C
+b ç LATIN SMALL LETTER C WITH CEDILLA
+y d LATIN SMALL LETTER D
+d e LATIN SMALL LETTER E
+q f LATIN SMALL LETTER F
+w g LATIN SMALL LETTER G
+e ğ LATIN SMALL LETTER G WITH BREVE
+o h LATIN SMALL LETTER H
+r ı LATIN SMALL LETTER I
+s i LATIN SMALL LETTER I WITH DOT ABOVE
+z j LATIN SMALL LETTER J
+j k LATIN SMALL LETTER K
+k m LATIN SMALL LETTER M
+i n LATIN SMALL LETTER N
+t o LATIN SMALL LETTER O
+x ö LATIN SMALL LETTER O WITH DIAERESIS
+u r LATIN SMALL LETTER R
+m s LATIN SMALL LETTER S
+\' ş LATIN SMALL LETTER S WITH CEDILLA
+h t LATIN SMALL LETTER T
+a u LATIN SMALL LETTER U
+g ü LATIN SMALL LETTER U WITH DIAERESIS
+c v LATIN SMALL LETTER V
+; y LATIN SMALL LETTER Y
+n z LATIN SMALL LETTER Z
+
+[ q LATIN SMALL LETTER Q
+] w LATIN SMALL LETTER W
+\\ x LATIN SMALL LETTER X
+
+§ + PLUS SIGN
+- / SOLIDUS
+= - HYPHEN-MINUS
+/ , COMMA
+` < LESS-THAN SIGN
+
+£ # NUMBER SIGN
+¶ { LEFT CURLY BRACKET
+• [ LEFT SQUARE BRACKET
+ª ] RIGHT SQUARE BRACKET
+º } RIGHT CURLY BRACKET
+– \\ REVERSE SOLIDUS
+≠ | VERTICAL LINE
+œ @ COMMERCIAL AT
+‘ ~ TILDE
+å û LATIN SMALL LETTER U WITH CIRCUMFLEX
+ß î LATIN SMALL LETTER I WITH CIRCUMFLEX
+∂ € EURO SIGN
+ƒ â LATIN SMALL LETTER A WITH CIRCUMFLEX
+˙ ₺ TURKISH LIRA SIGN
+¬ £ POUND SIGN
+… ¥ YEN SIGN
+« ` GRAVE ACCENT
diff --git a/runtime/keymap/turkish-q.vim b/runtime/keymap/turkish-q.vim
new file mode 100644
index 0000000000..326b08e4b9
--- /dev/null
+++ b/runtime/keymap/turkish-q.vim
@@ -0,0 +1,62 @@
+" Vim keymap file for Turkish Q layout
+" Maintainer: Emir SARI <bitigchi@me.com>
+" Last changed: 5 August 2020
+
+scriptencoding utf-8
+let b:keymap_name = "tr-q"
+loadkeymap
+
+\> Ç LATIN CAPITAL LETTER C WITH CEDILLA
+\{ Ğ LATIN CAPITAL LETTER G WITH BREVE
+\" İ LATIN CAPITAL LETTER I WITH DOT ABOVE
+\< Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+\: Ş LATIN CAPITAL LETTER S WITH CEDILLA
+\} Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+
+± é LATIN SMALL LETTER E WITH ACUTE
+@ ' APOSTROPHE
+# ^ CIRCUMFLEX ACCENT
+$ + PLUS SIGN
+^ & AMPERSAND
+& / SOLIDUS
+* ( LEFT PARENTHESIS
+( ) RIGHT PARENTHESIS
+) = EQUAL SIGN
+_ ? QUESTION MARK
++ _ LOW LINE
+~ > GREATER-THAN SIGN
+| ; SEMICOLON
+? : COLON
+
+\. ç LATIN SMALL LETTER C WITH CEDILLA
+\[ ğ LATIN SMALL LETTER G WITH BREVE
+\' i LATIN SMALL LETTER I
+\, ö LATIN SMALL LETTER O WITH DIAERESIS
+\; ş LATIN SMALL LETTER S WITH CEDILLA
+\] ü LATIN SMALL LETTER U WITH DIAERESIS
+i ı LATIN SMALL LETTER DOTLESS I
+
+§ " QUOTATION MARK
+- * ASTERISK
+= - HYPHEN-MINUS
+\\ , COMMA
+\/ . FULL STOP
+` < LESS-THAN SIGN
+
+™ £ POUND SIGN
+£ # NUMBER SIGN
+¢ $ DOLLAR SIGN
+∞ ½ VULGAR FRACTION ONE HALF
+¶ { LEFT CURLY BRACKET
+• [ LEFT SQUARE BRACKET
+ª ] RIGHT SQUARE BRACKET
+º } RIGHT CURLY BRACKET
+– \\ REVERSE SOLIDUS
+≠ | VERTICAL LINE
+œ @ COMMERCIAL AT
+´ € EURO SIGN
+† ₺ TURKISH LIRA SIGN
+¥ ¥ YEN SIGN
+‘ ~ TILDE
+… ´ ACUTE ACCENT
+« ` GRAVE ACCENT
diff --git a/runtime/macros/less.vim b/runtime/macros/less.vim
index aad122d70a..a4f96f340e 100644
--- a/runtime/macros/less.vim
+++ b/runtime/macros/less.vim
@@ -1,6 +1,6 @@
" Vim script to work like "less"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2017 Mar 31
+" Last Change: 2020 Dec 17
" Avoid loading this file twice, allow the user to define his own script.
if exists("loaded_less")
@@ -35,8 +35,16 @@ if argc() > 0
endwhile
endif
-set nocp
-syntax on
+" we don't want 'compatible' here
+if &cp
+ set nocp
+endif
+
+" enable syntax highlighting if not done already
+if !get(g:, 'syntax_on', 0)
+ syntax enable
+endif
+
set so=0
set hlsearch
set incsearch
@@ -66,8 +74,8 @@ endif
" When reading from stdin don't consider the file modified.
au VimEnter * set nomod
-" Can't modify the text
-set noma
+" Can't modify the text or write the file.
+set nomodifiable readonly
" Give help
noremap h :call <SID>Help()<CR>
diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim
index 27fa46fe25..6173d8b691 100644
--- a/runtime/makemenu.vim
+++ b/runtime/makemenu.vim
@@ -481,6 +481,7 @@ SynMenu R.RCS.RCS\ file:rcs
SynMenu R.Readline\ config:readline
SynMenu R.Rebol:rebol
SynMenu R.ReDIF:redif
+SynMenu R.Rego:rego
SynMenu R.Relax\ NG:rng
SynMenu R.Remind:remind
SynMenu R.Relax\ NG\ compact:rnc
diff --git a/runtime/menu.vim b/runtime/menu.vim
index 78306a57b8..701dd33cdd 100644
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -29,7 +29,8 @@ if exists("v:lang") || &langmenu != ""
let s:lang = v:lang
endif
" A language name must be at least two characters, don't accept "C"
- if strlen(s:lang) > 1
+ " Also skip "en_US" to avoid picking up "en_gb" translations.
+ if strlen(s:lang) > 1 && s:lang !~? '^en_us'
" When the language does not include the charset add 'encoding'
if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
let s:lang = s:lang . '.' . &enc
@@ -158,6 +159,9 @@ an 20.335 &Edit.-SEP1- <Nop>
vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
+if exists(':tlmenu')
+ tlnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-W>:<C-Y><CR>
+endif
nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v']
@@ -446,12 +450,12 @@ if has("spell")
an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us" :set spl=en_us spell<CR>
an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
- let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
+ let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
func! s:SpellLang()
- for cmd in s:undo_spellang
+ for cmd in s:undo_spelllang
exe "silent! " . cmd
endfor
- let s:undo_spellang = []
+ let s:undo_spelllang = []
if &enc == "iso-8859-15"
let enc = "latin1"
@@ -474,7 +478,7 @@ if has("spell")
let found += 1
let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"'
exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
- let s:undo_spellang += ['aun ' . menuname]
+ let s:undo_spelllang += ['aun ' . menuname]
endif
let n += 10
endfor
@@ -565,7 +569,7 @@ func! s:XxdConv()
%!mc vim:xxd
else
call s:XxdFind()
- exe '%!"' . g:xxdprogram . '"'
+ exe '%!' . g:xxdprogram
endif
if getline(1) =~ "^0000000:" " only if it worked
set ft=xxd
@@ -579,7 +583,7 @@ func! s:XxdBack()
%!mc vim:xxd -r
else
call s:XxdFind()
- exe '%!"' . g:xxdprogram . '" -r'
+ exe '%!' . g:xxdprogram . ' -r'
endif
set ft=
doautocmd filetypedetect BufReadPost
@@ -591,6 +595,9 @@ func! s:XxdFind()
" On the PC xxd may not be in the path but in the install directory
if has("win32") && !executable("xxd")
let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
+ if g:xxdprogram =~ ' '
+ let g:xxdprogram = '"' .. g:xxdprogram .. '"'
+ endif
else
let g:xxdprogram = "xxd"
endif
diff --git a/runtime/nvim.desktop b/runtime/nvim.desktop
index be6a2eda82..052904dd76 100644
--- a/runtime/nvim.desktop
+++ b/runtime/nvim.desktop
@@ -2,6 +2,10 @@
Name=Neovim
GenericName=Text Editor
GenericName[de]=Texteditor
+GenericName[fr]=Éditeur de texte
+GenericName[ru]=Текстовый редактор
+GenericName[sr]=Едитор текст
+GenericName[tr]=Metin Düzenleyici
Comment=Edit text files
Comment[af]=Redigeer tekslêers
Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
@@ -24,7 +28,7 @@ Comment[et]=Redigeeri tekstifaile
Comment[eu]=Editatu testu-fitxategiak
Comment[fa]=ویرایش پرونده‌های متنی
Comment[fi]=Muokkaa tekstitiedostoja
-Comment[fr]=Édite des fichiers texte
+Comment[fr]=Éditer des fichiers texte
Comment[ga]=Eagar comhad Téacs
Comment[gu]=લખાણ ફાઇલોમાં ફેરફાર કરો
Comment[he]=ערוך קבצי טקסט
@@ -54,17 +58,17 @@ Comment[pl]=Edytor plików tekstowych
Comment[pt]=Editar ficheiros de texto
Comment[pt_BR]=Edite arquivos de texto
Comment[ro]=Editare fişiere text
-Comment[ru]=Редактор текстовых файлов
+Comment[ru]=Редактирование текстовых файлов
Comment[sk]=Úprava textových súborov
Comment[sl]=Urejanje datotek z besedili
Comment[sq]=Përpuno files teksti
-Comment[sr]=Измени текстуалне датотеке
+Comment[sr]=Уређујте текст фајлове
Comment[sr@Latn]=Izmeni tekstualne datoteke
Comment[sv]=Redigera textfiler
Comment[ta]=உரை கோப்புகளை தொகுக்கவும்
Comment[th]=แก้ไขแฟ้มข้อความ
Comment[tk]=Metin faýllary editle
-Comment[tr]=Metin dosyalarını düzenle
+Comment[tr]=Metin dosyaları düzenleyin
Comment[uk]=Редактор текстових файлів
Comment[vi]=Soạn thảo tập tin văn bản
Comment[wa]=Asspougnî des fitchîs tecses
@@ -75,6 +79,10 @@ Exec=nvim %F
Terminal=true
Type=Application
Keywords=Text;editor;
+Keywords[fr]=Texte;éditeur;
+Keywords[ru]=текст;текстовый редактор;
+Keywords[sr]=Текст;едитор;
+Keywords[tr]=Metin;düzenleyici;
Icon=nvim
Categories=Utility;TextEditor;
StartupNotify=false
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 60dc6fdd31..633cb9e509 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2019 Jul 18
+" Last Change: 2020 Oct 27
" If there already is an option window, jump to that one.
let buf = bufnr('option-window')
@@ -69,6 +69,10 @@ fun! <SID>Space()
endif
endfun
+let s:local_to_window = '(local to window)'
+let s:local_to_buffer = '(local to buffer)'
+let s:global_or_local = '(global or local to buffer)'
+
" find the window in which the option applies
" returns 0 for global option, 1 for local option, -1 for error
fun! <SID>Find(lnum)
@@ -155,6 +159,16 @@ call append(6, '" Hit <Space> on a "set" line to refresh it.')
" These functions are called often below. Keep them fast!
+" Add an option name and explanation. The text can contain "\n" characters
+" where a line break is to be inserted.
+func <SID>AddOption(name, text)
+ let lines = split(a:text, "\n")
+ call append("$", a:name .. "\t" .. lines[0])
+ for line in lines[1:]
+ call append("$", "\t" .. line)
+ endfor
+endfunc
+
" Init a local binary option
fun! <SID>BinOptionL(name)
let val = getwinvar(winnr('#'), '&' . a:name)
@@ -441,6 +455,9 @@ if has("syntax")
call append("$", "spellcapcheck\tpattern to locate the end of a sentence")
call append("$", "\t(local to buffer)")
call <SID>OptionL("spc")
+ call append("$", "spelloptions\tflags to change how spell checking works")
+ call append("$", "\t(local to buffer)")
+ call <SID>OptionL("spo")
call append("$", "spellsuggest\tmethods used to suggest corrections")
call <SID>OptionG("sps", &sps)
call append("$", "mkspellmem\tamount of memory used by :mkspell before compressing")
@@ -722,19 +739,19 @@ call <SID>OptionG("udir", &udir)
call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
call append("$", " \tset ur=" . &ur)
call append("$", "modified\tchanges have been made and not written to a file")
-call append("$", "\t(local to buffer)")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>BinOptionL("mod")
call append("$", "readonly\tbuffer is not to be written")
-call append("$", "\t(local to buffer)")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>BinOptionL("ro")
-call append("$", "modifiable\tchanges to the text are not possible")
-call append("$", "\t(local to buffer)")
+call <SID>AddOption("modifiable", "changes to the text are possible")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>BinOptionL("ma")
call append("$", "textwidth\tline length above which to break a line")
-call append("$", "\t(local to buffer)")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("tw")
call append("$", "wrapmargin\tmargin from the right in which to break a line")
-call append("$", "\t(local to buffer)")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("wm")
call append("$", "backspace\tspecifies what <BS>, CTRL-W, etc. can do in Insert mode")
call append("$", " \tset bs=" . &bs)
@@ -786,20 +803,19 @@ if has("digraphs")
endif
call append("$", "tildeop\tthe \"~\" command behaves like an operator")
call <SID>BinOptionG("top", &top)
-call append("$", "operatorfunc\tfunction called for the\"g@\" operator")
+call <SID>AddOption("operatorfunc", "function called for the \"g@\" operator")
call <SID>OptionG("opfunc", &opfunc)
call append("$", "showmatch\twhen inserting a bracket, briefly jump to its match")
call <SID>BinOptionG("sm", &sm)
call append("$", "matchtime\ttenth of a second to show a match for 'showmatch'")
call append("$", " \tset mat=" . &mat)
call append("$", "matchpairs\tlist of pairs that match for the \"%\" command")
-call append("$", "\t(local to buffer)")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("mps")
call append("$", "joinspaces\tuse two spaces after '.' when joining a line")
call <SID>BinOptionG("js", &js)
-call append("$", "nrformats\t\"alpha\", \"octal\" and/or \"hex\"; number formats recognized for")
-call append("$", "\tCTRL-A and CTRL-X commands")
-call append("$", "\t(local to buffer)")
+call <SID>AddOption("nrformats", "\"alpha\", \"octal\", \"hex\", \"bin\" and/or \"unsigned\"; number formats\nrecognized for CTRL-A and CTRL-X commands")
+call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("nf")
@@ -873,11 +889,11 @@ endif
if has("folding")
call <SID>Header("folding")
- call append("$", "foldenable\tset to display all folds open")
- call append("$", "\t(local to window)")
+ call <SID>AddOption("foldenable", "unset to display all folds open")
+ call append("$", "\t" .. s:local_to_window)
call <SID>BinOptionL("fen")
call append("$", "foldlevel\tfolds with a level higher than this number will be closed")
- call append("$", "\t(local to window)")
+ call append("$", "\t" .. s:local_to_window)
call <SID>OptionL("fdl")
call append("$", "foldlevelstart\tvalue for 'foldlevel' when starting to edit a file")
call append("$", " \tset fdls=" . &fdls)
@@ -896,20 +912,20 @@ if has("folding")
call <SID>OptionL("fml")
call append("$", "commentstring\ttemplate for comments; used to put the marker in")
call <SID>OptionL("cms")
- call append("$", "foldmethod\tfolding type: \"manual\", \"indent\", \"expr\", \"marker\" or \"syntax\"")
- call append("$", "\t(local to window)")
+ call <SID>AddOption("foldmethod", "folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n\"syntax\" or \"diff\"")
+ call append("$", "\t" .. s:local_to_window)
call <SID>OptionL("fdm")
call append("$", "foldexpr\texpression used when 'foldmethod' is \"expr\"")
- call append("$", "\t(local to window)")
+ call append("$", "\t" .. s:local_to_window)
call <SID>OptionL("fde")
call append("$", "foldignore\tused to ignore lines when 'foldmethod' is \"indent\"")
- call append("$", "\t(local to window)")
+ call append("$", "\t" .. s:local_to_window)
call <SID>OptionL("fdi")
call append("$", "foldmarker\tmarkers used when 'foldmethod' is \"marker\"")
- call append("$", "\t(local to window)")
+ call append("$", "\t" .. s:local_to_window)
call <SID>OptionL("fmr")
call append("$", "foldnestmax\tmaximum fold depth for when 'foldmethod' is \"indent\" or \"syntax\"")
- call append("$", "\t(local to window)")
+ call append("$", "\t" .. s:local_to_window)
call <SID>OptionL("fdn")
endif
@@ -1014,7 +1030,7 @@ call append("$", " \tset ut=" . &ut)
call <SID>Header("command line editing")
-call append("$", "history\thow many command lines are remembered ")
+call <SID>AddOption("history", "how many command lines are remembered")
call append("$", " \tset hi=" . &hi)
call append("$", "wildchar\tkey that triggers command-line expansion")
call append("$", " \tset wc=" . &wc)
@@ -1078,7 +1094,7 @@ call <SID>BinOptionG("warn", &warn)
if has("quickfix")
- call <SID>Header("running make and jumping to errors")
+ call <SID>Header("running make and jumping to errors (quickfix)")
call append("$", "errorfile\tname of the file that contains error messages")
call <SID>OptionG("ef", &ef)
call append("$", "errorformat\tlist of formats for error messages")
@@ -1102,12 +1118,12 @@ if has("quickfix")
endif
-if has("msdos") || has("win16") || has("win32")
+if has("win32")
call <SID>Header("system specific")
- if has("msdos") || has("win16") || has("win32")
- call append("$", "shellslash\tuse forward slashes in file names; for Unix-like shells")
- call <SID>BinOptionG("ssl", &ssl)
- endif
+ call <SID>AddOption("shellslash", "use forward slashes in file names; for Unix-like shells")
+ call <SID>BinOptionG("ssl", &ssl)
+ call <SID>AddOption("completeslash", "specifies slash/backslash used for completion")
+ call <SID>OptionG("csl", &csl)
endif
@@ -1185,11 +1201,10 @@ endif
if has("multi_byte")
call <SID>Header("multi-byte characters")
- call append("$", "encoding\tcharacter encoding used in Vim: \"latin1\", \"utf-8\"")
- call append("$", "\t\"euc-jp\", \"big5\", etc.")
+ call <SID>AddOption("encoding", "character encoding used in Nvim: \"utf-8\"")
call <SID>OptionG("enc", &enc)
call append("$", "fileencoding\tcharacter encoding for the current file")
- call append("$", "\t(local to buffer)")
+ call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("fenc")
call append("$", "fileencodings\tautomatically detected character encodings")
call <SID>OptionG("fencs", &fencs)
@@ -1211,7 +1226,7 @@ endif
call <SID>Header("various")
-call append("$", "virtualedit\twhen to use virtual editing: \"block\", \"insert\" and/or \"all\"")
+call <SID>AddOption("virtualedit", "when to use virtual editing: \"block\", \"insert\", \"all\"\nand/or \"onemore\"")
call <SID>OptionG("ve", &ve)
call append("$", "eventignore\tlist of autocommand events which are to be ignored")
call <SID>OptionG("ei", &ei)
@@ -1245,10 +1260,10 @@ if has("shada")
endif
if has("quickfix")
call append("$", "bufhidden\twhat happens with a buffer when it's no longer in a window")
- call append("$", "\t(local to buffer)")
+ call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("bh")
- call append("$", "buftype\t\"\", \"nofile\", \"nowrite\" or \"quickfix\": type of buffer")
- call append("$", "\t(local to buffer)")
+ call <SID>AddOption("buftype", "empty, \"nofile\", \"nowrite\", \"quickfix\", etc.: type of buffer")
+ call append("$", "\t" .. s:local_to_buffer)
call <SID>OptionL("bt")
endif
call append("$", "buflisted\twhether the buffer shows up in the buffer list")
diff --git a/runtime/pack/dist/opt/matchit/autoload/matchit.vim b/runtime/pack/dist/opt/matchit/autoload/matchit.vim
index abf06d3c4c..4f3dd8ff9e 100644
--- a/runtime/pack/dist/opt/matchit/autoload/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/autoload/matchit.vim
@@ -1,6 +1,6 @@
" matchit.vim: (global plugin) Extended "%" matching
" autload script of matchit plugin, see ../plugin/matchit.vim
-" Last Change: 2019 Jan 28
+" Last Change: Mar 01, 2020
let s:last_mps = ""
let s:last_words = ":"
@@ -48,6 +48,8 @@ function matchit#Match_wrapper(word, forward, mode) range
execute "normal! gv\<Esc>"
elseif a:mode == "o" && mode(1) !~# '[vV]'
exe "norm! v"
+ elseif a:mode == "n" && mode(1) =~# 'ni'
+ exe "norm! v"
endif
" In s:CleanUp(), we may need to check whether the cursor moved forward.
let startpos = [line("."), col(".")]
@@ -211,6 +213,14 @@ function matchit#Match_wrapper(word, forward, mode) range
execute "if " . skip . "| let skip = '0' | endif"
endif
let sp_return = searchpair(ini, mid, fin, flag, skip)
+ if &selection isnot# 'inclusive' && a:mode == 'v'
+ " move cursor one pos to the right, because selection is not inclusive
+ " add virtualedit=onemore, to make it work even when the match ends the " line
+ if !(col('.') < col('$')-1)
+ set ve=onemore
+ endif
+ norm! l
+ endif
let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
" Restore cursor position and original screen.
call winrestview(view)
diff --git a/runtime/pack/dist/opt/matchit/doc/matchit.txt b/runtime/pack/dist/opt/matchit/doc/matchit.txt
index b2b78089a0..3cd2c8e2a7 100644
--- a/runtime/pack/dist/opt/matchit/doc/matchit.txt
+++ b/runtime/pack/dist/opt/matchit/doc/matchit.txt
@@ -4,7 +4,7 @@ For instructions on installing this file, type
`:help matchit-install`
inside Vim.
-For Vim version 8.1. Last change: 2019 May 05
+For Vim version 8.1. Last change: 2020 Mar 01
VIM REFERENCE MANUAL by Benji Fisher et al
@@ -377,6 +377,10 @@ The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in
==============================================================================
5. Known Bugs and Limitations *matchit-bugs*
+Repository: https://github.com/chrisbra/matchit/
+Bugs can be reported at the repository (alternatively you can send me a mail).
+The latest development snapshot can also be downloaded there.
+
Just because I know about a bug does not mean that it is on my todo list. I
try to respond to reports of bugs that cause real problems. If it does not
cause serious problems, or if there is a work-around, a bug may sit there for
@@ -388,4 +392,4 @@ try to implement this in a future version. (This is not so easy to arrange as
you might think!)
==============================================================================
-vim:tw=78:fo=tcq2:ft=help:
+vim:tw=78:ts=8:fo=tcq2:ft=help:
diff --git a/runtime/pack/dist/opt/matchit/plugin/matchit.vim b/runtime/pack/dist/opt/matchit/plugin/matchit.vim
index 84147f1fc8..b62cc3913a 100644
--- a/runtime/pack/dist/opt/matchit/plugin/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/plugin/matchit.vim
@@ -1,13 +1,13 @@
" matchit.vim: (global plugin) Extended "%" matching
" Maintainer: Christian Brabandt
-" Version: 1.15
-" Last Change: 2019 Jan 28
+" Version: 1.17
+" Last Change: 2019 Oct 24
" Repository: https://github.com/chrisbra/matchit
" Previous URL:http://www.vim.org/script.php?script_id=39
" Previous Maintainer: Benji Fisher PhD <benji@member.AMS.org>
" Documentation:
-" The documentation is in a separate file: ../doc/matchit.txt .
+" The documentation is in a separate file: ../doc/matchit.txt
" Credits:
" Vim editor by Bram Moolenaar (Thanks, Bram!)
@@ -48,8 +48,8 @@ set cpo&vim
nnoremap <silent> <Plug>(MatchitNormalForward) :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
nnoremap <silent> <Plug>(MatchitNormalBackward) :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
-vnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
-vnoremap <silent> <Plug>(MatchitVisualBackward) :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualBackward) :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
onoremap <silent> <Plug>(MatchitOperationForward) :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
onoremap <silent> <Plug>(MatchitOperationBackward) :<C-U>call matchit#Match_wrapper('',0,'o')<CR>
@@ -63,8 +63,8 @@ omap <silent> g% <Plug>(MatchitOperationBackward)
" Analogues of [{ and ]} using matching patterns:
nnoremap <silent> <Plug>(MatchitNormalMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>
nnoremap <silent> <Plug>(MatchitNormalMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>
-vnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
-vnoremap <silent> <Plug>(MatchitVisualMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv``
onoremap <silent> <Plug>(MatchitOperationMultiBackward) :<C-U>call matchit#MultiMatch("bW", "o")<CR>
onoremap <silent> <Plug>(MatchitOperationMultiForward) :<C-U>call matchit#MultiMatch("W", "o")<CR>
@@ -76,7 +76,7 @@ omap <silent> [% <Plug>(MatchitOperationMultiBackward)
omap <silent> ]% <Plug>(MatchitOperationMultiForward)
" text object:
-vmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
+xmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
xmap a% <Plug>(MatchitVisualTextObject)
" Call this function to turn on debugging information. Every time the main
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index fa5d064048..a62df1dcec 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -2,7 +2,7 @@
"
" Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license"
-" Last Update: 2018 Jun 3
+" Last Change: 2021 Jan 03
"
" WORK IN PROGRESS - Only the basics work
" Note: On MS-Windows you need a recent version of gdb. The one included with
@@ -131,7 +131,11 @@ func s:StartDebug_internal(dict)
" call ch_logfile('debuglog', 'w')
let s:sourcewin = win_getid(winnr())
- let s:startsigncolumn = &signcolumn
+
+ " Remember the old value of 'signcolumn' for each buffer that it's set in, so
+ " that we can restore the value for all buffers.
+ let b:save_signcolumn = &signcolumn
+ let s:signcolumn_buflist = [bufnr()]
let s:save_columns = 0
let s:allleft = 0
@@ -292,7 +296,7 @@ func s:StartDebug_term(dict)
sleep 10m
endwhile
- " Interpret commands while the target is running. This should usualy only be
+ " Interpret commands while the target is running. This should usually only be
" exec-interrupt, since many commands don't work properly while the target is
" running.
call s:SendCommand('-gdb-set mi-async on')
@@ -348,7 +352,7 @@ func s:StartDebug_prompt(dict)
return
endif
- " Interpret commands while the target is running. This should usualy only
+ " Interpret commands while the target is running. This should usually only
" be exec-interrupt, since many commands don't work properly while the
" target is running.
call s:SendCommand('-gdb-set mi-async on')
@@ -552,9 +556,14 @@ func s:DecodeMessage(quotedText)
if a:quotedText[i] == '\'
let i += 1
if a:quotedText[i] == 'n'
- " drop \n
- let i += 1
- continue
+ " drop \n
+ let i += 1
+ continue
+ elseif a:quotedText[i] == 't'
+ " append \t
+ let i += 1
+ let result .= "\t"
+ continue
endif
endif
let result .= a:quotedText[i]
@@ -598,8 +607,20 @@ func s:EndDebugCommon()
exe 'bwipe! ' . s:ptybuf
endif
+ " Restore 'signcolumn' in all buffers for which it was set.
call win_gotoid(s:sourcewin)
- let &signcolumn = s:startsigncolumn
+ let was_buf = bufnr()
+ for bufnr in s:signcolumn_buflist
+ if bufexists(bufnr)
+ exe bufnr .. "buf"
+ if exists('b:save_signcolumn')
+ let &signcolumn = b:save_signcolumn
+ unlet b:save_signcolumn
+ endif
+ endif
+ endfor
+ exe was_buf .. "buf"
+
call s:DeleteCommands()
call win_gotoid(curwinid)
@@ -715,12 +736,22 @@ func s:CommOutput(job_id, msgs, event)
endfor
endfunc
+func s:GotoProgram()
+ if has('win32')
+ if executable('powershell')
+ call system(printf('powershell -Command "add-type -AssemblyName microsoft.VisualBasic;[Microsoft.VisualBasic.Interaction]::AppActivate(%d);"', s:pid))
+ endif
+ else
+ call win_gotoid(s:ptywin)
+ endif
+endfunc
+
" Install commands in the current window to control the debugger.
func s:InstallCommands()
let save_cpo = &cpo
set cpo&vim
- command Break call s:SetBreakpoint()
+ command -nargs=? Break call s:SetBreakpoint(<q-args>)
command Clear call s:ClearBreakpoint()
command Step call s:SendCommand('-exec-step')
command Over call s:SendCommand('-exec-next')
@@ -738,13 +769,15 @@ func s:InstallCommands()
command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>)
command Gdb call win_gotoid(s:gdbwin)
- command Program call win_gotoid(s:ptywin)
+ command Program call s:GotoProgram()
command Source call s:GotoSourcewinOrCreateIt()
command Asm call s:GotoAsmwinOrCreateIt()
command Winbar call s:InstallWinbar()
- " TODO: can the K mapping be restored?
- nnoremap K :Evaluate<CR>
+ if !exists('g:termdebug_map_K') || g:termdebug_map_K
+ let s:k_map_saved = maparg('K', 'n', 0, 1)
+ nnoremap K :Evaluate<CR>
+ endif
let &cpo = save_cpo
endfunc
@@ -782,7 +815,14 @@ func s:DeleteCommands()
delcommand Asm
delcommand Winbar
- nunmap K
+ if exists('s:k_map_saved')
+ if empty(s:k_map_saved)
+ nunmap K
+ else
+ call mapset('n', 0, s:k_map_saved)
+ endif
+ unlet s:k_map_saved
+ endif
exe 'sign unplace ' . s:pc_id
for [id, entries] in items(s:breakpoints)
@@ -801,7 +841,7 @@ func s:DeleteCommands()
endfunc
" :Break - Set a breakpoint at the cursor position.
-func s:SetBreakpoint()
+func s:SetBreakpoint(at)
" Setting a breakpoint may not work while the program is running.
" Interrupt to make it work.
let do_continue = 0
@@ -814,9 +854,11 @@ func s:SetBreakpoint()
endif
sleep 10m
endif
+
" Use the fname:lnum format, older gdb can't handle --source.
- call s:SendCommand('-break-insert '
- \ . fnameescape(expand('%:p')) . ':' . line('.'))
+ let at = empty(a:at) ?
+ \ fnameescape(expand('%:p')) . ':' . line('.') : a:at
+ call s:SendCommand('-break-insert ' . at)
if do_continue
call s:SendCommand('-exec-continue')
endif
@@ -831,14 +873,14 @@ func s:ClearBreakpoint()
let idx = 0
for id in s:breakpoint_locations[bploc]
if has_key(s:breakpoints, id)
- " Assume this always works, the reply is simply "^done".
- call s:SendCommand('-break-delete ' . id)
- for subid in keys(s:breakpoints[id])
- exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
- endfor
- unlet s:breakpoints[id]
- unlet s:breakpoint_locations[bploc][idx]
- break
+ " Assume this always works, the reply is simply "^done".
+ call s:SendCommand('-break-delete ' . id)
+ for subid in keys(s:breakpoints[id])
+ exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
+ endfor
+ unlet s:breakpoints[id]
+ unlet s:breakpoint_locations[bploc][idx]
+ break
else
let idx += 1
endif
@@ -1152,6 +1194,10 @@ func s:HandleCursor(msg)
exe lnum
exe 'sign unplace ' . s:pc_id
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname
+ if !exists('b:save_signcolumn')
+ let b:save_signcolumn = &signcolumn
+ call add(s:signcolumn_buflist, bufnr())
+ endif
setlocal signcolumn=yes
endif
elseif !s:stopped || fname != ''
@@ -1228,7 +1274,7 @@ endfunc
func s:PlaceSign(id, subid, entry)
let nr = printf('%d.%d', a:id, a:subid)
- exe 'sign place ' . s:Breakpoint2SignNumber(a:id, a:subid) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint' . nr . ' file=' . a:entry['fname']
+ exe 'sign place ' . s:Breakpoint2SignNumber(a:id, a:subid) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint' . nr . ' priority=110 file=' . a:entry['fname']
let a:entry['placed'] = 1
endfunc
@@ -1242,8 +1288,8 @@ func s:HandleBreakpointDelete(msg)
if has_key(s:breakpoints, id)
for [subid, entry] in items(s:breakpoints[id])
if has_key(entry, 'placed')
- exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
- unlet entry['placed']
+ exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
+ unlet entry['placed']
endif
endfor
unlet s:breakpoints[id]
@@ -1267,7 +1313,7 @@ func s:BufRead()
for [id, entries] in items(s:breakpoints)
for [subid, entry] in items(entries)
if entry['fname'] == fname
- call s:PlaceSign(id, subid, entry)
+ call s:PlaceSign(id, subid, entry)
endif
endfor
endfor
@@ -1279,7 +1325,7 @@ func s:BufUnloaded()
for [id, entries] in items(s:breakpoints)
for [subid, entry] in items(entries)
if entry['fname'] == fname
- let entry['placed'] = 0
+ let entry['placed'] = 0
endif
endfor
endfor
diff --git a/runtime/plugin/gzip.vim b/runtime/plugin/gzip.vim
index 5e13b92d1e..7214488579 100644
--- a/runtime/plugin/gzip.vim
+++ b/runtime/plugin/gzip.vim
@@ -20,7 +20,7 @@ augroup gzip
"
" Set binary mode before reading the file.
" Use "gzip -d", gunzip isn't always available.
- autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma,*.xz,*.lz,*.zst setlocal bin
+ autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma,*.xz,*.lz,*.zst,*.br,*.lzo setlocal bin
autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn")
autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d")
autocmd BufReadPost,FileReadPost *.Z call gzip#read("uncompress")
@@ -28,6 +28,8 @@ augroup gzip
autocmd BufReadPost,FileReadPost *.xz call gzip#read("xz -d")
autocmd BufReadPost,FileReadPost *.lz call gzip#read("lzip -d")
autocmd BufReadPost,FileReadPost *.zst call gzip#read("zstd -d --rm")
+ autocmd BufReadPost,FileReadPost *.br call gzip#read("brotli -d --rm")
+ autocmd BufReadPost,FileReadPost *.lzo call gzip#read("lzop -d -U")
autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip")
autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2")
autocmd BufWritePost,FileWritePost *.Z call gzip#write("compress -f")
@@ -35,6 +37,8 @@ augroup gzip
autocmd BufWritePost,FileWritePost *.xz call gzip#write("xz -z")
autocmd BufWritePost,FileWritePost *.lz call gzip#write("lzip")
autocmd BufWritePost,FileWritePost *.zst call gzip#write("zstd --rm")
+ autocmd BufWritePost,FileWritePost *.br call gzip#write("brotli --rm")
+ autocmd BufWritePost,FileWritePost *.lzo call gzip#write("lzop -U")
autocmd FileAppendPre *.gz call gzip#appre("gzip -dn")
autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d")
autocmd FileAppendPre *.Z call gzip#appre("uncompress")
@@ -42,6 +46,8 @@ augroup gzip
autocmd FileAppendPre *.xz call gzip#appre("xz -d")
autocmd FileAppendPre *.lz call gzip#appre("lzip -d")
autocmd FileAppendPre *.zst call gzip#appre("zstd -d --rm")
+ autocmd FileAppendPre *.br call gzip#appre("brotli -d --rm")
+ autocmd FileAppendPre *.lzo call gzip#appre("lzop -d -U")
autocmd FileAppendPost *.gz call gzip#write("gzip")
autocmd FileAppendPost *.bz2 call gzip#write("bzip2")
autocmd FileAppendPost *.Z call gzip#write("compress -f")
@@ -49,4 +55,6 @@ augroup gzip
autocmd FileAppendPost *.xz call gzip#write("xz -z")
autocmd FileAppendPost *.lz call gzip#write("lzip")
autocmd FileAppendPost *.zst call gzip#write("zstd --rm")
+ autocmd FileAppendPost *.br call gzip#write("brotli --rm")
+ autocmd FileAppendPost *.lzo call gzip#write("lzop -U")
augroup END
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index 65b9fe57bf..cc4f38f669 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -1,6 +1,6 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2018 Jul 3
+" Last Change: 2021 Apr 08
" Exit quickly when:
" - this plugin was already loaded (or disabled)
@@ -21,6 +21,7 @@ endif
augroup matchparen
" Replace all matchparen autocommands
autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair()
+ autocmd! WinLeave * call s:Remove_Matches()
if exists('##TextChanged')
autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair()
endif
@@ -36,12 +37,9 @@ set cpo-=C
" The function that is invoked (very often) to define a ":match" highlighting
" for any matching paren.
-function! s:Highlight_Matching_Pair()
+func s:Highlight_Matching_Pair()
" Remove any previous match.
- if exists('w:paren_hl_on') && w:paren_hl_on
- silent! call matchdelete(3)
- let w:paren_hl_on = 0
- endif
+ call s:Remove_Matches()
" Avoid that we remove the popup menu.
" Return when there are no colors (looks like the cursor jumps).
@@ -109,9 +107,10 @@ function! s:Highlight_Matching_Pair()
" Build an expression that detects whether the current cursor position is
" in certain syntax types (string, comment, etc.), for use as
" searchpairpos()'s skip argument.
- " We match "escape" for special items, such as lispEscapeSpecial.
+ " We match "escape" for special items, such as lispEscapeSpecial, and
+ " match "symbol" for lispBarSymbol.
let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' .
- \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|comment"''))'
+ \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|symbol\\|comment"''))'
" If executing the expression determines that the cursor is currently in
" one of the syntax types, then we want searchpairpos() to find the pair
" within those syntax types (i.e., not skip). Otherwise, the cursor is
@@ -195,11 +194,19 @@ function! s:Highlight_Matching_Pair()
endif
endfunction
+func s:Remove_Matches()
+ if exists('w:paren_hl_on') && w:paren_hl_on
+ silent! call matchdelete(3)
+ let w:paren_hl_on = 0
+ endif
+endfunc
+
+
" Define commands that will disable and enable the plugin.
-command! DoMatchParen call s:DoMatchParen()
-command! NoMatchParen call s:NoMatchParen()
+command DoMatchParen call s:DoMatchParen()
+command NoMatchParen call s:NoMatchParen()
-func! s:NoMatchParen()
+func s:NoMatchParen()
let w = winnr()
noau windo silent! call matchdelete(3)
unlet! g:loaded_matchparen
@@ -207,7 +214,7 @@ func! s:NoMatchParen()
au! matchparen
endfunc
-func! s:DoMatchParen()
+func s:DoMatchParen()
runtime plugin/matchparen.vim
let w = winnr()
silent windo doau CursorMoved
diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim
index 87302cf23b..217a7795c9 100644
--- a/runtime/plugin/netrwPlugin.vim
+++ b/runtime/plugin/netrwPlugin.vim
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_netrwPlugin")
finish
endif
-let g:loaded_netrwPlugin = "v168"
+let g:loaded_netrwPlugin = "v170"
let s:keepcpo = &cpo
set cpo&vim
"DechoRemOn
diff --git a/runtime/plugin/tohtml.vim b/runtime/plugin/tohtml.vim
index 0cd931eada..2c85b57529 100644
--- a/runtime/plugin/tohtml.vim
+++ b/runtime/plugin/tohtml.vim
@@ -1,6 +1,6 @@
" Vim plugin for converting a syntax highlighted file to HTML.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2018 Nov 11
+" Last Change: 2019 Nov 13
"
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
" $VIMRUNTIME/syntax/2html.vim
@@ -8,17 +8,46 @@
if exists('g:loaded_2html_plugin')
finish
endif
-let g:loaded_2html_plugin = 'vim8.1_v1'
+let g:loaded_2html_plugin = 'vim8.1_v2'
"
" Changelog: {{{
-" 8.1_v1 (this version): Fix Bitbucket issue #6: Don't generate empty script
-" tag.
-" Fix Bitbucket issue #5: javascript should
-" declare variables with "var".
-" Fix Bitbucket issue #13: errors thrown sourcing
-" 2html.vim directly when plugins not loaded.
-" Fix Bitbucket issue #16: support 'vartabstop'.
+" 8.1_v2 (this version): - Fix Bitbucket issue #19: fix calculation of tab
+" stop position to use in expanding a tab, when that
+" tab occurs after a syntax match which in turn
+" comes after previously expanded tabs.
+" - Set eventignore while splitting a window for the
+" destination file to ignore FileType events;
+" speeds up processing when the destination file
+" already exists and HTML highlight takes too long.
+" - Fix Bitbucket issue #20: progress bar could not be
+" seen when DiffDelete background color matched
+" StatusLine background color. Added TOhtmlProgress
+" highlight group for manual user override, but
+" calculate it to be visible compared to StatusLine
+" by default.
+" - Fix Bitbucket issue #1: Remove workaround for old
+" browsers which don't support 'ch' CSS unit, since
+" all modern browsers, including IE>=9, support it.
+" - Fix Bitbucket issue #10: support termguicolors
+" - Fix Bitbucket issue #21: default to using
+" generated content instead of <input> tags for
+" uncopyable text, so that text is correctly
+" prevented from being copied in chrome. Use
+" g:html_use_input_for_pc option to control the
+" method used.
+" - Switch to HTML5 to allow using vnu as a validator
+" in unit test.
+" - Fix fallback sizing of <input> tags for browsers
+" without "ch" support.
+" - Fix cursor on unselectable diff filler text.
+" 8.1_v1 (Vim 8.1.0528): - Fix Bitbucket issue #6: Don't generate empty
+" script tag.
+" - Fix Bitbucket issue #5: javascript should
+" declare variables with "var".
+" - Fix Bitbucket issue #13: errors thrown sourcing
+" 2html.vim directly when plugins not loaded.
+" - Fix Bitbucket issue #16: support 'vartabstop'.
"
" 7.4 updates: {{{
" 7.4_v2 (Vim 7.4.0899): Fix error raised when converting a diff containing
diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim
index c04d5344b1..b9e334fb98 100644
--- a/runtime/plugin/zipPlugin.vim
+++ b/runtime/plugin/zipPlugin.vim
@@ -1,7 +1,7 @@
" zipPlugin.vim: Handles browsing zipfiles
" PLUGIN PORTION
-" Date: Sep 13, 2016
-" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
+" Date: Jan 07, 2020
+" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
@@ -20,14 +20,14 @@
if &cp || exists("g:loaded_zipPlugin")
finish
endif
-let g:loaded_zipPlugin = "v28"
+let g:loaded_zipPlugin = "v31"
let s:keepcpo = &cpo
set cpo&vim
" ---------------------------------------------------------------------
" Options: {{{1
if !exists("g:zipPlugin_ext")
- let g:zipPlugin_ext='*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.oxt,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.wsz,*.xap,*.xlam,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'
+ let g:zipPlugin_ext='*.aar,*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.odb,*.odc,*.odf,*.odg,*.odi,*.odm,*.odp,*.ods,*.odt,*.otc,*.otf,*.otg,*.oth,*.oti,*.otp,*.ots,*.ott,*.oxt,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.wsz,*.xap,*.xlam,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'
endif
" ---------------------------------------------------------------------
diff --git a/runtime/scripts.vim b/runtime/scripts.vim
index 3b3409bf4b..0b3fdc3514 100644
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types in scripts
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last change: 2020 Jun 07
+" Last change: 2021 Jan 22
" This file is called by an autocommand for every file that has just been
" loaded into a buffer. It checks if the type of file can be recognized by
@@ -110,10 +110,6 @@ if s:line1 =~# "^#!"
elseif s:name =~# 'lua'
set ft=lua
- " Perl 6
- elseif s:name =~# 'perl6'
- set ft=perl6
-
" Perl
elseif s:name =~# 'perl'
set ft=perl
@@ -130,6 +126,10 @@ if s:line1 =~# "^#!"
elseif s:name =~# '^groovy\>'
set ft=groovy
+ " Raku
+ elseif s:name =~# 'raku'
+ set ft=raku
+
" Ruby
elseif s:name =~# 'ruby'
set ft=ruby
@@ -150,7 +150,7 @@ if s:line1 =~# "^#!"
elseif s:name =~# 'ocaml'
set ft=ocaml
- " Awk scripts
+ " Awk scripts; also finds "gawk"
elseif s:name =~# 'awk\>'
set ft=awk
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index 3367c68d3b..d1e4becb2b 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -404,6 +404,7 @@ an 50.90.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
an 50.90.130 &Syntax.PQ.PApp :cal SetSyn("papp")<CR>
an 50.90.140 &Syntax.PQ.Pascal :cal SetSyn("pascal")<CR>
an 50.90.150 &Syntax.PQ.Password\ file :cal SetSyn("passwd")<CR>
+an 50.90.490 &Syntax.PQ.Pbtxt :cal SetSyn("pbtxt")<CR>
an 50.90.160 &Syntax.PQ.PCCTS :cal SetSyn("pccts")<CR>
an 50.90.170 &Syntax.PQ.PDF :cal SetSyn("pdf")<CR>
an 50.90.180 &Syntax.PQ.Perl.Perl :cal SetSyn("perl")<CR>
diff --git a/runtime/syntax/2html.vim b/runtime/syntax/2html.vim
index 91bb0e0d4a..4afdff2899 100644
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,6 +1,6 @@
" Vim syntax support file
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2018 Nov 11
+" Last Change: 2020 Jan 05
"
" Additional contributors:
"
@@ -20,8 +20,13 @@
" this file uses line continuations
let s:cpo_sav = &cpo
let s:ls = &ls
+let s:ei_sav = &eventignore
set cpo&vim
+" HTML filetype can take a while to load/highlight if the destination file
+" already exists.
+set eventignore+=FileType
+
let s:end=line('$')
" Font
@@ -37,6 +42,14 @@ endif
let s:settings = tohtml#GetUserSettings()
+if s:settings.use_xhtml
+ let s:html5 = 0
+elseif s:settings.use_css && !s:settings.no_pre
+ let s:html5 = 1
+else
+ let s:html5 = 0
+endif
+
if !exists('s:FOLDED_ID')
let s:FOLDED_ID = hlID("Folded") | lockvar s:FOLDED_ID
let s:FOLD_C_ID = hlID("FoldColumn") | lockvar s:FOLD_C_ID
@@ -69,9 +82,10 @@ if !empty(s:settings.prevent_copy)
endif
endif
-" When not in gui we can only guess the colors.
-" TODO - is this true anymore?
-if has("gui_running")
+" When gui colors are not supported, we can only guess the colors.
+" TODO - is this true anymore? Is there a way to ask the terminal what colors
+" each number means or read them from some file?
+if &termguicolors || has("gui_running")
let s:whatterm = "gui"
else
let s:whatterm = "cterm"
@@ -352,6 +366,12 @@ if s:settings.use_css
\ ]
else
+ " New method: use generated content in the CSS. The only thing needed here
+ " is a span with no content, with an attribute holding the desired text.
+ "
+ " Old method: use an <input> element when text is unsectable. This is still
+ " used in conditional comments for Internet Explorer, where the new method
+ " doesn't work.
"
" Wrap the <input> in a <span> to allow fixing the stupid bug in some fonts
" which cause browsers to display a 1px gap between lines when these
@@ -369,16 +389,26 @@ if s:settings.use_css
" to use strchars(), because HTML specifies that the maxlength parameter
" uses the number of unique codepoints for its limit.
let wrapperfunc_lines += [
- \ ' if a:make_unselectable',
- \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\">'.
- \ '<input'.s:unselInputType.' class=\"" . l:style_name .'.diffstyle.'"\"'.
- \ ' value=\"".substitute(a:unformatted,''\s\+$'',"","")."\"'.
- \ ' onselect=''this.blur(); return false;'''.
- \ ' onmousedown=''this.blur(); return false;'''.
- \ ' onclick=''this.blur(); return false;'''.
- \ ' readonly=''readonly'''.
- \ ' size=\"".strwidth(a:unformatted)."\"'.
- \ (s:settings.use_xhtml ? '/' : '').'></span>"',
+ \ ' if a:make_unselectable',
+ \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\"'
+ \ ]
+ if s:settings.use_input_for_pc !=# 'all'
+ let wrapperfunc_lines[-1] .= ' " . "data-" . l:style_name . "-content=\"".a:text."\"'
+ endif
+ let wrapperfunc_lines[-1] .= '>'
+ if s:settings.use_input_for_pc !=# 'none'
+ let wrapperfunc_lines[-1] .=
+ \ '<input'.s:unselInputType.' class=\"" . l:style_name .'.diffstyle.'"\"'.
+ \ ' value=\"".substitute(a:unformatted,''\s\+$'',"","")."\"'.
+ \ ' onselect=''this.blur(); return false;'''.
+ \ ' onmousedown=''this.blur(); return false;'''.
+ \ ' onclick=''this.blur(); return false;'''.
+ \ ' readonly=''readonly'''.
+ \ ' size=\"".strwidth(a:unformatted)."\"'.
+ \ (s:settings.use_xhtml ? '/' : '').'>'
+ endif
+ let wrapperfunc_lines[-1] .= '</span>"'
+ let wrapperfunc_lines += [
\ ' else',
\ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'. diffstyle .'"\">".a:text."</span>"'
\ ]
@@ -501,27 +531,63 @@ else
endfun
endif
if s:settings.prevent_copy =~# 'f'
- " Note the <input> elements for fill spaces will have a single space for
- " content, to allow active cursor CSS selection to work.
- "
- " Wrap the whole thing in a span for the 1px padding workaround for gaps.
- function! s:FoldColumn_build(char, len, numfill, char2, class, click)
- let l:input_open = "<input readonly='readonly'".s:unselInputType.
- \ " onselect='this.blur(); return false;'".
- \ " onmousedown='this.blur(); ".a:click." return false;'".
- \ " onclick='return false;' size='".
- \ string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) .
- \ "' "
- let l:common_attrs = "class='FoldColumn' value='"
- let l:input_close = (s:settings.use_xhtml ? "' />" : "'>")
- return "<span class='".a:class."'>".
- \ l:input_open.l:common_attrs.repeat(a:char, a:len).
- \ (!empty(a:char2) ? a:char2 : "").
- \ l:input_close . "</span>"
- endfun
- function! s:FoldColumn_fill()
- return s:FoldColumn_build('', s:foldcolumn, 0, '', 'FoldColumn', '')
- endfun
+ if s:settings.use_input_for_pc ==# 'none'
+ " Simply space-pad to the desired width inside the generated content (note
+ " that the FoldColumn definition includes a whitespace:pre rule)
+ function! s:FoldColumn_build(char, len, numfill, char2, class, click)
+ return "<a href='#' class='".a:class."' onclick='".a:click."' data-FoldColumn-content='".
+ \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill).
+ \ "'></a>"
+ endfun
+ function! s:FoldColumn_fill()
+ return s:HtmlFormat(repeat(' ', s:foldcolumn), s:FOLD_C_ID, 0, "", 1)
+ endfun
+ else
+ " Note the <input> elements for fill spaces will have a single space for
+ " content, to allow active cursor CSS selection to work.
+ "
+ " Wrap the whole thing in a span for the 1px padding workaround for gaps.
+ "
+ " Build the function line by line containing only what is needed for the
+ " options in use for maximum code sharing with minimal branch logic for
+ " greater speed.
+ "
+ " Note, 'exec' commands do not recognize line continuations, so must
+ " concatenate lines rather than continue them.
+ let build_fun_lines = [
+ \ 'function! s:FoldColumn_build(char, len, numfill, char2, class, click)',
+ \ ' let l:input_open = "<input readonly=''readonly''".s:unselInputType.'.
+ \ ' " onselect=''this.blur(); return false;''".'.
+ \ ' " onmousedown=''this.blur(); ".a:click." return false;''".'.
+ \ ' " onclick=''return false;'' size=''".'.
+ \ ' string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) .'.
+ \ ' "'' "',
+ \ ' let l:common_attrs = "class=''FoldColumn'' value=''"',
+ \ ' let l:input_close = (s:settings.use_xhtml ? "'' />" : "''>")'
+ \ ]
+ if s:settings.use_input_for_pc ==# 'fallback'
+ let build_fun_lines += [
+ \ ' let l:gen_content_link ='.
+ \ ' "<a href=''#'' class=''FoldColumn'' onclick=''".a:click."'' data-FoldColumn-content=''".'.
+ \ ' repeat(a:char, a:len).a:char2.repeat('' '', a:numfill).'.
+ \ ' "''></a>"'
+ \ ]
+ endif
+ let build_fun_lines += [
+ \ ' return "<span class=''".a:class."''>".'.
+ \ ' l:input_open.l:common_attrs.repeat(a:char, a:len).(a:char2).'.
+ \ ' l:input_close.'.
+ \ (s:settings.use_input_for_pc ==# 'fallback' ? 'l:gen_content_link.' : "").
+ \ ' "</span>"',
+ \ 'endfun'
+ \ ]
+ " create the function we built line by line above
+ exec join(build_fun_lines, "\n")
+
+ function! s:FoldColumn_fill()
+ return s:FoldColumn_build(' ', s:foldcolumn, 0, '', 'FoldColumn', '')
+ endfun
+ endif
else
" For normal fold columns, simply space-pad to the desired width (note that
" the FoldColumn definition includes a whitespace:pre rule)
@@ -755,7 +821,11 @@ call extend(s:lines, [
" include encoding as close to the top as possible, but only if not already
" contained in XML information (to avoid haggling over content type)
if s:settings.encoding != "" && !s:settings.use_xhtml
- call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
+ if s:html5
+ call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
+ else
+ call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
+ endif
endif
call extend(s:lines, [
\ ("<title>".expand("%:p:~")."</title>"),
@@ -766,6 +836,7 @@ call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_clo
call add(s:lines, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
+ \ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.s:tag_close)
call add(s:lines, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
@@ -773,19 +844,21 @@ call add(s:lines, '<meta name="colorscheme" content="'.
\ : 'none'). '"'.s:tag_close)
if s:settings.use_css
+ call extend(s:lines, [
+ \ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
+ \ s:settings.use_xhtml ? "" : "<!--"])
+ let s:ieonly = []
if s:settings.dynamic_folds
if s:settings.hover_unfold
" if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
call extend(s:lines, [
- \ "<style type=\"text/css\">",
- \ s:settings.use_xhtml ? "" : "<!--",
\ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ "",
\ "body * { margin: 0; padding: 0; }", "",
- \ ".open-fold > .Folded { display: none; }",
- \ ".open-fold > .fulltext { display: inline; }",
- \ ".closed-fold > .fulltext { display: none; }",
- \ ".closed-fold > .Folded { display: inline; }",
+ \ ".open-fold > span.Folded { display: none; }",
+ \ ".open-fold > .fulltext { display: inline; }",
+ \ ".closed-fold > .fulltext { display: none; }",
+ \ ".closed-fold > span.Folded { display: inline; }",
\ "",
\ ".open-fold > .toggle-open { display: none; }",
\ ".open-fold > .toggle-closed { display: inline; }",
@@ -794,65 +867,60 @@ if s:settings.use_css
\ "", "",
\ '/* opening a fold while hovering won''t be supported by IE6 and other',
\ "similar browsers, but it should fail gracefully. */",
- \ ".closed-fold:hover > .fulltext { display: inline; }",
+ \ ".closed-fold:hover > .fulltext { display: inline; }",
\ ".closed-fold:hover > .toggle-filler { display: none; }",
- \ ".closed-fold:hover > .Folded { display: none; }",
- \ s:settings.use_xhtml ? "" : '-->',
- \ '</style>'])
- " TODO: IE7 doesn't *actually* support XHTML, maybe we should remove this.
- " But if it's served up as tag soup, maybe the following will work, so
- " leave it in for now.
- call extend(s:lines, [
+ \ ".closed-fold:hover > .Folded { display: none; }"])
+ " TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
+ " should remove this? Leave it in for now, it was working at one point,
+ " and doesn't affect any modern browsers. Even newer IE versions should
+ " support the above code and ignore the following.
+ let s:ieonly = [
\ "<!--[if lt IE 7]><style type=\"text/css\">",
- \ ".open-fold .Folded { display: none; }",
\ ".open-fold .fulltext { display: inline; }",
+ \ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }",
- \ ".closed-fold .toggle-closed { display: inline; }",
+ \ ".open-fold .toggle-closed { display: inline; }",
\ "",
\ ".closed-fold .fulltext { display: none; }",
- \ ".closed-fold .Folded { display: inline; }",
+ \ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }",
\ "</style>",
\ "<![endif]-->",
- \])
+ \]
else
" if we aren't doing hover_unfold, use CSS 1 only
call extend(s:lines, [
- \ "<style type=\"text/css\">",
- \ s:settings.use_xhtml ? "" :"<!--",
\ ".FoldColumn { text-decoration: none; white-space: pre; }",
- \ ".open-fold .Folded { display: none; }",
\ ".open-fold .fulltext { display: inline; }",
+ \ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }",
- \ ".closed-fold .toggle-closed { display: inline; }",
+ \ ".open-fold .toggle-closed { display: inline; }",
\ "",
\ ".closed-fold .fulltext { display: none; }",
- \ ".closed-fold .Folded { display: inline; }",
+ \ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }",
- \ s:settings.use_xhtml ? "" : '-->',
- \ '</style>'
\])
endif
- else
- " if we aren't doing any dynamic folding, no need for any special rules
- call extend(s:lines, [
- \ "<style type=\"text/css\">",
- \ s:settings.use_xhtml ? "" : "<!--",
+ endif
+ " else we aren't doing any dynamic folding, no need for any special rules
+
+ call extend(s:lines, [
\ s:settings.use_xhtml ? "" : '-->',
\ "</style>",
\])
- endif
+ call extend(s:lines, s:ieonly)
+ unlet s:ieonly
endif
-let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy)
+let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script tag if needed
if s:uses_script
call extend(s:lines, [
\ "",
- \ "<script type='text/javascript'>",
+ \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
@@ -864,7 +932,7 @@ if s:settings.dynamic_folds
\ "{",
\ " var fold;",
\ " fold = document.getElementById(objID);",
- \ " if(fold.className == 'closed-fold')",
+ \ " if (fold.className == 'closed-fold')",
\ " {",
\ " fold.className = 'open-fold';",
\ " }",
@@ -924,65 +992,6 @@ if s:settings.line_ids
\ ])
endif
-" Small text columns like the foldcolumn and line number column need a weird
-" hack to work around Webkit's and (in versions prior to 9) IE's lack of support
-" for the 'ch' unit without messing up Opera, which also doesn't support it but
-" works anyway.
-"
-" The problem is that without the 'ch' unit, it is not possible to specify a
-" size of an <input> in terms of character widths. Only Opera seems to do the
-" "sensible" thing and make the <input> sized to fit exactly as many characters
-" as specified by its "size" attribute, but the spec actually says "at least
-" wide enough to fit 'size' characters", so the other browsers are technically
-" correct as well.
-"
-" Anyway, this leads to two diffculties:
-" 1. The foldcolumn is made up of multiple elements side-by-side with
-" different sizes, each of which has their own extra padding added. Thus, a
-" column made up of one item of size 1 and another of size 2 would not
-" necessarily be equal in size to another line's foldcolumn with a single
-" item of size 3.
-" 2. The extra padding added to the <input> elements adds up to make the
-" foldcolumn and line number column too wide, especially in Webkit
-" browsers.
-"
-" So, the full workaround is:
-" 1. Define a default size in em, equal to the number of characters in the
-" input element, in case javascript is disabled and the browser does not
-" support the 'ch' unit. Unfortunately this makes Opera no longer work
-" properly without javascript. 1em per character is much too wide but it
-" looks better in webkit browsers than unaligned columns.
-" 2. Insert the following javascript to run at page load, which checks for the
-" width of a single character (in an extraneous page element inserted
-" before the page title, and set to hidden) and compares it to the width of
-" another extra <input> element with only one character. If the width
-" matches, the script does nothing more, but if not, it will figure out the
-" fraction of an em unit which would correspond with a ch unit if there
-" were one, and set the containing element (<pre> or <div>) to a class with
-" pre-defined rules which is closest to that fraction of an em. Rules are
-" defined from 0.05 em to 1em per ch.
-if !empty(s:settings.prevent_copy)
- call extend(s:lines, [
- \ '',
- \ '/* simulate a "ch" unit by asking the browser how big a zero character is */',
- \ 'function FixCharWidth() {',
- \ ' /* get the hidden element which gives the width of a single character */',
- \ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;',
- \ ' /* get all input elements, we''ll filter on class later */',
- \ ' var inputTags = document.getElementsByTagName("input");',
- \ ' var ratio = 5;',
- \ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;',
- \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
- \ ' if (inputWidth > goodWidth) {',
- \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
- \ ' ratio += 5;',
- \ ' }',
- \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
- \ ' }',
- \ '}'
- \ ])
-endif
-
" insert script closing tag if needed
if s:uses_script
call extend(s:lines, [
@@ -992,18 +1001,9 @@ if s:uses_script
\ ])
endif
-call extend(s:lines, ["</head>"])
-if !empty(s:settings.prevent_copy)
- call extend(s:lines,
- \ ["<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>",
- \ "<!-- hidden divs used by javascript to get the width of a char -->",
- \ "<div id='oneCharWidth'>0</div>",
- \ "<div id='oneInputWidth'><input size='1' value='0'".s:tag_close."</div>",
- \ "<div id='oneEmWidth' style='width: 1em;'></div>"
- \ ])
-else
- call extend(s:lines, ["<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
-endif
+call extend(s:lines, ["</head>",
+ \ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
+
if s:settings.no_pre
" if we're not using CSS we use a font tag which can't have a div inside
if s:settings.use_css
@@ -1035,14 +1035,68 @@ if !s:settings.no_progress
let s:progressbar={}
" Progessbar specific functions
+
+ func! s:SetProgbarColor()
+ if hlID("TOhtmlProgress") != 0
+ hi! link TOhtmlProgress_auto TOhtmlProgress
+ elseif hlID("TOhtmlProgress_auto")==0 ||
+ \ !exists("s:last_colors_name") || !exists("g:colors_name") ||
+ \ g:colors_name != s:last_colors_name
+ let s:last_colors_name = exists("g:colors_name") ? g:colors_name : "none"
+
+ let l:diffatr = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? "fg#" : "bg#"
+ let l:stlatr = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? "fg#" : "bg#"
+
+ let l:progbar_color = synIDattr(hlID("DiffDelete"), l:diffatr, s:whatterm)
+ let l:stl_color = synIDattr(hlID("StatusLine"), l:stlatr, s:whatterm)
+
+ if "" == l:progbar_color
+ let l:progbar_color = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? s:fgc : s:bgc
+ endif
+ if "" == l:stl_color
+ let l:stl_color = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? s:fgc : s:bgc
+ endif
+
+ if l:progbar_color == l:stl_color
+ if s:whatterm == 'cterm'
+ if l:progbar_color >= (&t_Co/2)
+ let l:progbar_color-=1
+ else
+ let l:progbar_color+=1
+ endif
+ else
+ let l:rgb = map(matchlist(l:progbar_color, '#\zs\x\x\ze\(\x\x\)\(\x\x\)')[:2], 'str2nr(v:val, 16)')
+ let l:avg = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
+ if l:avg >= 128
+ let l:avg_new = l:avg
+ while l:avg - l:avg_new < 0x15
+ let l:rgb = map(l:rgb, 'v:val * 3 / 4')
+ let l:avg_new = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
+ endwhile
+ else
+ let l:avg_new = l:avg
+ while l:avg_new - l:avg < 0x15
+ let l:rgb = map(l:rgb, 'min([max([v:val, 4]) * 5 / 4, 255])')
+ let l:avg_new = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
+ endwhile
+ endif
+ let l:progbar_color = printf("#%02x%02x%02x", l:rgb[0], l:rgb[1], l:rgb[2])
+ endif
+ echomsg "diff detected progbar color set to" l:progbar_color
+ endif
+ exe "hi TOhtmlProgress_auto" s:whatterm."bg=".l:progbar_color
+ endif
+ endfun
+
func! s:ProgressBar(title, max_value, winnr)
let pgb=copy(s:progressbar)
let pgb.title = a:title.' '
let pgb.max_value = a:max_value
let pgb.winnr = a:winnr
let pgb.cur_value = 0
+
let pgb.items = { 'title' : { 'color' : 'Statusline' },
- \'bar' : { 'color' : 'Statusline' , 'fillcolor' : 'DiffDelete' , 'bg' : 'Statusline' } ,
+ \'bar' : { 'color' : 'Statusline' , 'fillcolor' : 'TOhtmlProgress_auto' , 'bg' : 'Statusline' } ,
\'counter' : { 'color' : 'Statusline' } }
let pgb.last_value = 0
let pgb.needs_redraw = 0
@@ -1134,6 +1188,8 @@ if !s:settings.no_progress
" to process folds we make two passes through each line
let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
endif
+
+ call s:SetProgbarColor()
endif
" First do some preprocessing for dynamic folding. Do this for the entire file
@@ -1577,28 +1633,44 @@ while s:lnum <= s:end
let s:tabidx = 0
let s:tabwidth = 0
while s:idx >= 0
- while s:startcol+s:idx > s:tabwidth + s:tablist[s:tabidx]
- let s:tabwidth += s:tablist[s:tabidx]
- if s:tabidx < len(s:tablist)-1
- let s:tabidx = s:tabidx+1
- endif
- endwhile
- if has("multi_byte_encoding")
- if s:startcol + s:idx == 1
- let s:i = s:tablist[s:tabidx]
+ if s:startcol + s:idx == 1
+ let s:i = s:tablist[0]
+ else
+ " Get the character, which could be multiple bytes, which falls
+ " immediately before the found tab. Extract it by matching a
+ " character just prior to the column where the tab matches.
+ " We'll use this to get the byte index of the character
+ " immediately preceding the tab, so we can then look up the
+ " virtual column that character appears in, to determine how
+ " much of the current tabstop has been used up.
+ if s:idx == 0
+ " if the found tab is the first character in the text being
+ " processed, we need to get the character prior to the text,
+ " given by startcol.
+ let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:offset) . 'c')
else
- if s:idx == 0
- let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
- else
- let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
- endif
- let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
- let s:i = s:tablist[s:tabidx] - (s:vcol - s:tabwidth)
+ " Otherwise, the byte index of the tab into s:expandedtab is
+ " given by s:idx.
+ let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
endif
- let s:offset -= s:i - 1
- else
- let s:i = s:tablist[s:tabidx] - ((s:idx + s:startcol - 1) - s:tabwidth)
+ let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
+
+ " find the tabstop interval to use for the tab we just found. Keep
+ " adding tabstops (which could be variable) until we would exceed
+ " the virtual screen position of the start of the found tab.
+ while s:vcol >= s:tabwidth + s:tablist[s:tabidx]
+ let s:tabwidth += s:tablist[s:tabidx]
+ if s:tabidx < len(s:tablist)-1
+ let s:tabidx = s:tabidx+1
+ endif
+ endwhile
+ let s:i = s:tablist[s:tabidx] - (s:vcol - s:tabwidth)
endif
+ " update offset to keep the index within the line corresponding to
+ " actual tab characters instead of replaced spaces; s:idx reflects
+ " replaced spaces in s:expandedtab, s:offset cancels out all but
+ " the tab character itself.
+ let s:offset -= s:i - 1
let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
let s:idx = stridx(s:expandedtab, "\t")
endwhile
@@ -1674,12 +1746,10 @@ call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
" Now, when we finally know which, we define the colors and styles
if s:settings.use_css
- 1;/<style type="text/+1
+ 1;/<style\>/+1
endif
" Normal/global attributes
-" For Netscape 4, set <body> attributes too, though, strictly speaking, it's
-" incorrect.
if s:settings.use_css
if s:settings.no_pre
call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }")
@@ -1702,61 +1772,111 @@ if s:settings.use_css
" if we use any input elements for unselectable content, make sure they look
" like normal text
if !empty(s:settings.prevent_copy)
- call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '.s:htmlfont.'; }')
- +
- " ch units for browsers which support them, em units for a somewhat
- " reasonable fallback. Also make sure the special elements for size
- " calculations aren't seen.
- call append('.', [
- \ "input[size='1'] { width: 1em; width: 1ch; }",
- \ "input[size='2'] { width: 2em; width: 2ch; }",
- \ "input[size='3'] { width: 3em; width: 3ch; }",
- \ "input[size='4'] { width: 4em; width: 4ch; }",
- \ "input[size='5'] { width: 5em; width: 5ch; }",
- \ "input[size='6'] { width: 6em; width: 6ch; }",
- \ "input[size='7'] { width: 7em; width: 7ch; }",
- \ "input[size='8'] { width: 8em; width: 8ch; }",
- \ "input[size='9'] { width: 9em; width: 9ch; }",
- \ "input[size='10'] { width: 10em; width: 10ch; }",
- \ "input[size='11'] { width: 11em; width: 11ch; }",
- \ "input[size='12'] { width: 12em; width: 12ch; }",
- \ "input[size='13'] { width: 13em; width: 13ch; }",
- \ "input[size='14'] { width: 14em; width: 14ch; }",
- \ "input[size='15'] { width: 15em; width: 15ch; }",
- \ "input[size='16'] { width: 16em; width: 16ch; }",
- \ "input[size='17'] { width: 17em; width: 17ch; }",
- \ "input[size='18'] { width: 18em; width: 18ch; }",
- \ "input[size='19'] { width: 19em; width: 19ch; }",
- \ "input[size='20'] { width: 20em; width: 20ch; }",
- \ "#oneCharWidth, #oneEmWidth, #oneInputWidth { padding: 0; margin: 0; position: absolute; left: -999999px; visibility: hidden; }"
- \ ])
- +21
- for w in range(5, 100, 5)
- let base = 0.01 * w
- call append('.', join(map(range(1,20), "'.em'.w.' input[size='''.v:val.'''] { width: '.string(v:val*base).'em; }'")))
+ if s:settings.use_input_for_pc !=# "none"
+ call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '.s:htmlfont.'; }')
+
- endfor
- if s:settings.prevent_copy =~# 'f'
- " Make the cursor show active fold columns as active areas, and empty fold
- " columns as not interactive.
- call append('.', ['input.FoldColumn { cursor: pointer; }',
- \ 'input.FoldColumn[value=""] { cursor: default; }'
- \ ])
- +2
+ " ch units for browsers which support them, em units for a somewhat
+ " reasonable fallback.
+ for w in range(1, 20, 1)
+ call append('.', [
+ \ "input[size='".w."'] { width: ".w."em; width: ".w."ch; }"
+ \ ])
+ +
+ endfor
endif
- " make line number column show as non-interactive if not selectable
- if s:settings.prevent_copy =~# 'n'
- call append('.', 'input.LineNr { cursor: default; }')
- +
+
+ if s:settings.use_input_for_pc !=# 'all'
+ let s:unselectable_styles = []
+ if s:settings.prevent_copy =~# 'f'
+ call add(s:unselectable_styles, 'FoldColumn')
+ endif
+ if s:settings.prevent_copy =~# 'n'
+ call add(s:unselectable_styles, 'LineNr')
+ endif
+ if s:settings.prevent_copy =~# 't' && !s:settings.ignore_folding
+ call add(s:unselectable_styles, 'Folded')
+ endif
+ if s:settings.prevent_copy =~# 'd'
+ call add(s:unselectable_styles, 'DiffDelete')
+ endif
+ if s:settings.use_input_for_pc !=# 'none'
+ call append('.', [
+ \ '/* Note: IE does not support @supports conditionals, but also does not fully support',
+ \ ' "content:" with custom content, so we *want* the check to fail */',
+ \ '@supports ( content: attr(data-custom-content) ) {'
+ \ ])
+ +3
+ endif
+ " The line number column inside the foldtext is styled just like the fold
+ " text in Vim, but it should use the prevent_copy settings of line number
+ " rather than fold text. Apply the prevent_copy styles to foldtext
+ " specifically for line numbers, which always come after the fold column,
+ " or at the beginning of the line.
+ if s:settings.prevent_copy =~# 'n' && !s:settings.ignore_folding
+ call append('.', [
+ \ ' .FoldColumn + .Folded, .Folded:first-child { user-select: none; }',
+ \ ' .FoldColumn + [data-Folded-content]::before, [data-Folded-content]:first-child::before { content: attr(data-Folded-content); }',
+ \ ' .FoldColumn + [data-Folded-content]::before, [data-Folded-content]:first-child::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
+ \ ' .FoldColumn + span[data-Folded-content]::before, [data-Folded-content]:first-child::before { cursor: default; }',
+ \ ])
+ +4
+ endif
+ for s:style_name in s:unselectable_styles
+ call append('.', [
+ \ ' .'.s:style_name.' { user-select: none; }',
+ \ ' [data-'.s:style_name.'-content]::before { content: attr(data-'.s:style_name.'-content); }',
+ \ ' [data-'.s:style_name.'-content]::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
+ \ ' span[data-'.s:style_name.'-content]::before { cursor: default; }',
+ \ ])
+ +4
+ endfor
+ if s:settings.use_input_for_pc !=# 'none'
+ call append('.', [
+ \ ' input { display: none; }',
+ \ '}'
+ \ ])
+ +2
+ endif
+ unlet s:unselectable_styles
endif
- " make fold text and line number column within fold text show as
- " non-interactive if not selectable
- if (s:settings.prevent_copy =~# 'n' || s:settings.prevent_copy =~# 't') && !s:settings.ignore_folding
- call append('.', 'input.Folded { cursor: default; }')
- +
+
+ " Fix mouse cursor shape for the fallback <input> method of uncopyable text
+ if s:settings.use_input_for_pc !=# 'none'
+ if s:settings.prevent_copy =~# 'f'
+ " Make the cursor show active fold columns as active areas, and empty fold
+ " columns as not interactive.
+ call append('.', ['input.FoldColumn { cursor: pointer; }',
+ \ 'input.FoldColumn[value="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
+ \ ])
+ +2
+ if s:settings.use_input_for_pc !=# 'all'
+ call append('.', [
+ \ 'a[data-FoldColumn-content="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
+ \ ])
+ +1
+ end
+ endif
+ " make line number column show as non-interactive if not selectable
+ if s:settings.prevent_copy =~# 'n'
+ call append('.', 'input.LineNr { cursor: default; }')
+ +
+ endif
+ " make fold text and line number column within fold text show as
+ " non-interactive if not selectable
+ if (s:settings.prevent_copy =~# 'n' || s:settings.prevent_copy =~# 't') && !s:settings.ignore_folding
+ call append('.', 'input.Folded { cursor: default; }')
+ +
+ endif
+ " make diff filler show as non-interactive if not selectable
+ if s:settings.prevent_copy =~# 'd'
+ call append('.', 'input.DiffDelete { cursor: default; }')
+ +
+ endif
endif
endif
else
+ " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
+ " incorrect.
execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
endif
@@ -1779,8 +1899,8 @@ endif
" The DTD
if s:settings.use_xhtml
exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
-elseif s:settings.use_css && !s:settings.no_pre
- exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n"
+elseif s:html5
+ exe "normal! gg0i<!DOCTYPE html>\n"
else
exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
endif
@@ -1823,6 +1943,7 @@ exec 'resize' s:old_winheight
let &l:winfixheight = s:old_winfixheight
let &ls=s:ls
+let &eventignore=s:ei_sav
" Save a little bit of memory (worth doing?)
unlet s:htmlfont s:whitespace
@@ -1831,7 +1952,7 @@ unlet s:old_magic s:old_more s:old_fen s:old_winheight
unlet! s:old_isprint
unlet s:whatterm s:stylelist s:diffstylelist s:lnum s:end s:margin s:fgc s:bgc s:old_winfixheight
unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:concealinfo s:diff_mode
-unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset s:ls s:origwin_stl
+unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset s:ls s:ei_sav s:origwin_stl
unlet! s:newwin_stl s:current_syntax
if !v:profiling
delfunc s:HtmlColor
diff --git a/runtime/syntax/abap.vim b/runtime/syntax/abap.vim
index 4650109fb1..e48dfc3603 100644
--- a/runtime/syntax/abap.vim
+++ b/runtime/syntax/abap.vim
@@ -1,7 +1,7 @@
" Vim ABAP syntax file
" Language: SAP - ABAP/R4
" Maintainer: Marius Piedallu van Wyk <lailoken@gmail.com>
-" Last Change: 2018 Dec 12
+" Last Change: 2021 Jan 02
" Comment: Thanks to EPI-USE Labs for all your assistance. :)
" Quit when a syntax file was already loaded
@@ -193,4 +193,4 @@ hi def link abapHex Number
let b:current_syntax = "abap"
-" vim: ts=8 sw=2 \ No newline at end of file
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/aidl.vim b/runtime/syntax/aidl.vim
new file mode 100644
index 0000000000..3a79433aa9
--- /dev/null
+++ b/runtime/syntax/aidl.vim
@@ -0,0 +1,23 @@
+" Vim syntax file
+" Language: aidl (Android Interface Definition Language)
+" https://developer.android.com/guide/components/aidl
+" Maintainer: Dominique Pelle <dominique.pelle@tomtom.com>
+" LastChange: 2020/12/03
+
+" Quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+source <sfile>:p:h/java.vim
+
+syn keyword aidlParamDir in out inout
+syn keyword aidlKeyword const oneway parcelable
+
+" Needed for the 'in', 'out', 'inout' keywords to be highlighted.
+syn cluster javaTop add=aidlParamDir
+
+hi def link aidlParamDir StorageClass
+hi def link aidlKeyword Keyword
+
+let b:current_syntax = "aidl"
diff --git a/runtime/syntax/amiga.vim b/runtime/syntax/amiga.vim
index eab9f66169..5a664c4f60 100644
--- a/runtime/syntax/amiga.vim
+++ b/runtime/syntax/amiga.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: AmigaDos
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 9
+" Version: 10
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_AMIGA
" quit when a syntax file was already loaded
diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim
index 71babfba36..dd18aa6570 100644
--- a/runtime/syntax/apache.vim
+++ b/runtime/syntax/apache.vim
@@ -3,7 +3,7 @@
" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
" License: This file can be redistribued and/or modified under the same terms
" as Vim itself.
-" Last Change: 2018-12-06
+" Last Change: 2020 Oct 07
" Notes: Last synced with apache-2.2.3, version 1.x is no longer supported
" TODO: see particular FIXME's scattered through the file
" make it really linewise?
@@ -42,6 +42,8 @@ syn keyword apacheOption user group
syn match apacheOption "\<valid-user\>"
syn case match
syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK contained
+" Added as suggested by Mikko Koivunalho
+syn keyword apacheMethodOption BASELINE-CONTROL CHECKIN CHECKOUT LABEL MERGE MKACTIVITY MKWORKSPACE REPORT UNCHECKOUT UPDATE VERSION-CONTROL contained
syn case ignore
syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything
syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError
diff --git a/runtime/syntax/asciidoc.vim b/runtime/syntax/asciidoc.vim
index ccb079e06b..29451f9eab 100644
--- a/runtime/syntax/asciidoc.vim
+++ b/runtime/syntax/asciidoc.vim
@@ -1,13 +1,15 @@
" Vim syntax file
-" Language: AsciiDoc
-" Author: Stuart Rackham <srackham@gmail.com> (inspired by Felix
-" Obenhuber's original asciidoc.vim script).
-" URL: http://asciidoc.org/
-" Licence: GPL (http://www.gnu.org)
-" Remarks: Vim 6 or greater
-" Last Update: 2014 Aug 29 (see Issue 240)
+" Language: AsciiDoc
+" Maintainer: @aerostitch on GitHub (tag me in your issue in the
+" github/vim/vim repository and I'll answer when available)
+" Original author: Stuart Rackham <srackham@gmail.com> (inspired by Felix
+" Obenhuber's original asciidoc.vim script).
+" URL: http://asciidoc.org/
+" Licence: GPL (http://www.gnu.org)
+" Remarks: Vim 6 or greater
+" Last Update: 2020 May 03 (see Issue 240)
" Limitations:
-"
+"
" - Nested quoted text formatting is highlighted according to the outer
" format.
" - If a closing Example Block delimiter may be mistaken for a title
@@ -23,9 +25,7 @@ if exists("b:current_syntax")
finish
endif
-syn clear
-syn sync fromstart
-syn sync linebreaks=100
+" Use the default syntax syncing.
" Run :help syn-priority to review syntax matching priority.
syn keyword asciidocToDo TODO FIXME CHECK TEST XXX ZZZ DEPRECATED
diff --git a/runtime/syntax/asm.vim b/runtime/syntax/asm.vim
index 492e3e8e92..73f283a4a7 100644
--- a/runtime/syntax/asm.vim
+++ b/runtime/syntax/asm.vim
@@ -1,11 +1,10 @@
" Vim syntax file
-" Language: GNU Assembler
-" Maintainer: Erik Wognsen <erik.wognsen@gmail.com>
-" Previous maintainer:
-" Kevin Dahlhausen <kdahlhaus@yahoo.com>
-" Last Change: 2014 Feb 04
-
-" Thanks to Ori Avtalion for feedback on the comment markers!
+" Language: GNU Assembler
+" Maintainer: Doug Kearns dougkearns@gmail.com
+" Previous Maintainers: Erik Wognsen <erik.wognsen@gmail.com>
+" Kevin Dahlhausen <kdahlhaus@yahoo.com>
+" Contributors: Ori Avtalion, Lakshay Garg
+" Last Change: 2020 Oct 31
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -34,29 +33,49 @@ syn match asmType "\.space"
syn match asmType "\.string"
syn match asmType "\.word"
-syn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1
syn match asmIdentifier "[a-z_][a-z0-9_]*"
+syn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1
" Various #'s as defined by GAS ref manual sec 3.6.2.1
-" Technically, the first decNumber def is actually octal,
+" Technically, the first asmDecimal def is actually octal,
" since the value of 0-7 octal is the same as 0-7 decimal,
" I (Kevin) prefer to map it as decimal:
-syn match decNumber "0\+[1-7]\=[\t\n$,; ]"
-syn match decNumber "[1-9]\d*"
-syn match octNumber "0[0-7][0-7]\+"
-syn match hexNumber "0[xX][0-9a-fA-F]\+"
-syn match binNumber "0[bB][0-1]*"
+syn match asmDecimal "\<0\+[1-7]\=\>" display
+syn match asmDecimal "\<[1-9]\d*\>" display
+syn match asmOctal "\<0[0-7][0-7]\+\>" display
+syn match asmHexadecimal "\<0[xX][0-9a-fA-F]\+\>" display
+syn match asmBinary "\<0[bB][0-1]\+\>" display
+
+syn match asmFloat "\<\d\+\.\d*\%(e[+-]\=\d\+\)\=\>" display
+syn match asmFloat "\.\d\+\%(e[+-]\=\d\+\)\=\>" display
+syn match asmFloat "\<\d\%(e[+-]\=\d\+\)\>" display
+syn match asmFloat "[+-]\=Inf\>\|\<NaN\>" display
+
+syn match asmFloat "\%(0[edfghprs]\)[+-]\=\d*\%(\.\d\+\)\%(e[+-]\=\d\+\)\=" display
+syn match asmFloat "\%(0[edfghprs]\)[+-]\=\d\+\%(\.\d\+\)\=\%(e[+-]\=\d\+\)\=" display
+" Avoid fighting the hexadecimal match for unicorn-like '0x' prefixed floats
+syn match asmFloat "\%(0x\)[+-]\=\d*\%(\.\d\+\)\%(e[+-]\=\d\+\)\=" display
-syn keyword asmTodo contained TODO
+" Allow all characters to be escaped (and in strings) as these vary across
+" architectures [See sec 3.6.1.1 Strings]
+syn match asmCharacterEscape "\\." contained
+syn match asmCharacter "'\\\=." contains=asmCharacterEscape
+syn match asmStringEscape "\\\_." contained
+syn match asmStringEscape "\\\%(\o\{3}\|00[89]\)" contained display
+syn match asmStringEscape "\\x\x\+" contained display
+
+syn region asmString start="\"" end="\"" skip="\\\\\|\\\"" contains=asmStringEscape
+
+syn keyword asmTodo contained TODO FIXME XXX NOTE
" GAS supports one type of multi line comments:
-syn region asmComment start="/\*" end="\*/" contains=asmTodo
+syn region asmComment start="/\*" end="\*/" contains=asmTodo,@Spell
" GAS (undocumentedly?) supports C++ style comments. Unlike in C/C++ however,
" a backslash ending a C++ style comment does not extend the comment to the
" next line (hence the syntax region does not define 'skip="\\$"')
-syn region asmComment start="//" end="$" keepend contains=asmTodo
+syn region asmComment start="//" end="$" keepend contains=asmTodo,@Spell
" Line comment characters depend on the target architecture and command line
" options and some comments may double as logical line number directives or
@@ -69,7 +88,7 @@ syn region asmComment start="//" end="$" keepend contains=asmTodo
" frequently used features of the most popular architectures (and also the
" non-GNU assembly languages that use this syntax file because their asm files
" are also named *.asm), the following are used as line comment characters:
-syn match asmComment "[#;!|].*" contains=asmTodo
+syn match asmComment "[#;!|].*" contains=asmTodo,@Spell
" Side effects of this include:
" - When `;' is used to separate statements on the same line (many targets
@@ -96,35 +115,50 @@ syn match asmMacro "\.endm"
" with '.', including the GCC auto-generated '.L' labels.
syn match asmDirective "\.[A-Za-z][0-9A-Za-z-_]*"
-
syn case match
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
" The default methods for highlighting. Can be overridden later
-hi def link asmSection Special
-hi def link asmLabel Label
-hi def link asmComment Comment
-hi def link asmTodo Todo
+hi def link asmSection Special
+hi def link asmLabel Label
+hi def link asmComment Comment
+hi def link asmTodo Todo
hi def link asmDirective Statement
-hi def link asmInclude Include
-hi def link asmCond PreCondit
-hi def link asmMacro Macro
+hi def link asmInclude Include
+hi def link asmCond PreCondit
+hi def link asmMacro Macro
+
+if exists('g:asm_legacy_syntax_groups')
+ hi def link hexNumber Number
+ hi def link decNumber Number
+ hi def link octNumber Number
+ hi def link binNumber Number
+ hi def link asmHexadecimal hexNumber
+ hi def link asmDecimal decNumber
+ hi def link asmOctal octNumber
+ hi def link asmBinary binNumber
+else
+ hi def link asmHexadecimal Number
+ hi def link asmDecimal Number
+ hi def link asmOctal Number
+ hi def link asmBinary Number
+endif
+hi def link asmFloat Float
-hi def link hexNumber Number
-hi def link decNumber Number
-hi def link octNumber Number
-hi def link binNumber Number
+hi def link asmString String
+hi def link asmStringEscape Special
+hi def link asmCharacter Character
+hi def link asmCharacterEscape Special
hi def link asmIdentifier Identifier
-hi def link asmType Type
-
+hi def link asmType Type
let b:current_syntax = "asm"
let &cpo = s:cpo_save
unlet s:cpo_save
-" vim: ts=8
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/asmh8300.vim b/runtime/syntax/asmh8300.vim
index 8560fb7ae4..2eabb7e4e5 100644
--- a/runtime/syntax/asmh8300.vim
+++ b/runtime/syntax/asmh8300.vim
@@ -1,19 +1,21 @@
" Vim syntax file
-" Language: Hitachi H-8300h specific syntax for GNU Assembler
-" Maintainer: Kevin Dahlhausen <kdahlhaus@yahoo.com>
-" Last Change: 2002 Sep 19
+" Language: Hitachi H-8300h specific syntax for GNU Assembler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Kevin Dahlhausen <kdahlhaus@yahoo.com>
+" Last Change: 2020 Oct 31
-" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
+runtime! syntax/asm.vim
+
syn case ignore
-syn match asmDirective "\.h8300[h]*"
+syn match asmDirective "\.h8300[hs]n\="
"h8300[h] registers
-syn match asmReg "e\=r[0-7][lh]\="
+syn match asmRegister "e\=r\o[lh]\="
"h8300[h] opcodes - order is important!
syn match asmOpcode "add\.[lbw]"
@@ -37,32 +39,20 @@ syn match asmOpcode "sha[lr]\.[lbw]"
syn match asmOpcode "shl[lr]\.[lbw]"
syn match asmOpcode "sub\.[lbw]"
syn match asmOpcode "xor\.[lbw]"
-syn keyword asmOpcode "andc" "band" "bcc" "bclr" "bcs" "beq" "bf" "bge" "bgt"
-syn keyword asmOpcode "bhi" "bhs" "biand" "bild" "bior" "bist" "bixor" "bmi"
-syn keyword asmOpcode "bne" "bnot" "bnp" "bor" "bpl" "bpt" "bra" "brn" "bset"
-syn keyword asmOpcode "bsr" "btst" "bst" "bt" "bvc" "bvs" "bxor" "cmp" "daa"
-syn keyword asmOpcode "das" "eepmov" "eepmovw" "inc" "jmp" "jsr" "ldc" "movfpe"
-syn keyword asmOpcode "movtpe" "mov" "nop" "orc" "rte" "rts" "sleep" "stc"
-syn keyword asmOpcode "sub" "trapa" "xorc"
-
-syn case match
-
-" Read the general asm syntax
-runtime! syntax/asm.vim
-
-
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+syn keyword asmOpcode andc band bcc bclr bcs beq bf bge bgt
+syn keyword asmOpcode bhi bhs biand bild bior bist bixor bmi
+syn keyword asmOpcode bne bnot bnp bor bpl bpt bra brn bset
+syn keyword asmOpcode bsr btst bst bt bvc bvs bxor cmp daa
+syn keyword asmOpcode das eepmov eepmovw inc jmp jsr ldc movfpe
+syn keyword asmOpcode movtpe mov nop orc rte rts sleep stc
+syn keyword asmOpcode sub trapa xorc
-hi def link asmOpcode Statement
-hi def link asmRegister Identifier
-
-" My default-color overrides:
-"hi asmOpcode ctermfg=yellow
-"hi asmReg ctermfg=lightmagenta
+syn case match
+hi def link asmOpcode Statement
+hi def link asmRegister Identifier
let b:current_syntax = "asmh8300"
-" vim: ts=8
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/asterisk.vim b/runtime/syntax/asterisk.vim
index 4a922d3f11..4b3d246e39 100644
--- a/runtime/syntax/asterisk.vim
+++ b/runtime/syntax/asterisk.vim
@@ -19,7 +19,7 @@ syn match asteriskComment ";.*" contains=asteriskTodo
syn match asteriskContext "\[.\{-}\]"
syn match asteriskExten "^\s*\zsexten\s*=>\?\s*[^,]\+\ze," contains=asteriskPattern nextgroup=asteriskPriority
syn match asteriskExten "^\s*\zssame\s*=>\?\s*\ze" nextgroup=asteriskPriority
-syn match asteriskExten "^\s*\(register\|channel\|ignorepat\|include\|\(no\)\?load\)\s*=>\?"
+syn match asteriskExten "^\s*\(register\|channel\|ignorepat\|include\|l\?e\?switch\|\(no\)\?load\)\s*=>\?"
syn match asteriskPattern "_\(\[[[:alnum:]#*\-]\+\]\|[[:alnum:]#*]\)*\.\?" contained
syn match asteriskPattern "[^A-Za-z0-9,]\zs[[:alnum:]#*]\+\ze" contained
syn match asteriskApp ",\zs[a-zA-Z]\+\ze$"
@@ -39,7 +39,7 @@ syn match asteriskVarLen "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.*)}
syn match asteriskVarLen "(\zs[[:alpha:]][[:alnum:]_]*(.\{-})\ze=" contains=asteriskVar,asteriskVarLen,asteriskExp
syn match asteriskExp "\$\[.\{-}\]" contains=asteriskVar,asteriskVarLen,asteriskExp
syn match asteriskCodecsPermit "^\s*\(allow\|disallow\)\s*=\s*.*$" contains=asteriskCodecs
-syn match asteriskCodecs "\(g723\|gsm\|ulaw\|alaw\|g726\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|all\s*$\)"
+syn match asteriskCodecs "\(vp9\|vp8\|h264\|h263p\|h263\|h261\|jpeg\|opus\|g722\|g723\|gsm\|ulaw\|alaw\|g719\|g726\|g726aal2\|siren7\|siren14\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|wav\|all\s*$\)"
syn match asteriskError "^\(type\|auth\|permit\|deny\|bindaddr\|host\)\s*=.*$"
syn match asteriskType "^\zstype=\ze\<\(peer\|user\|friend\)\>$" contains=asteriskTypeType
syn match asteriskTypeType "\<\(peer\|user\|friend\)\>" contained
diff --git a/runtime/syntax/awk.vim b/runtime/syntax/awk.vim
index 7c0682ce9f..3082c1cb5c 100644
--- a/runtime/syntax/awk.vim
+++ b/runtime/syntax/awk.vim
@@ -1,7 +1,8 @@
" Vim syntax file
-" Language: awk, nawk, gawk, mawk
-" Maintainer: Antonio Colombo <azc100@gmail.com>
-" Last Change: 2016 Sep 05
+" Language: awk, nawk, gawk, mawk
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
+" Last Change: 2020 Aug 18
" AWK ref. is: Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger
" The AWK Programming Language, Addison-Wesley, 1988
@@ -9,7 +10,7 @@
" GAWK ref. is: Arnold D. Robbins
" Effective AWK Programming, Third Edition, O'Reilly, 2001
" Effective AWK Programming, Fourth Edition, O'Reilly, 2015
-" (also available and updated with the gawk source distribution)
+" (up-to-date version available with the gawk source distribution)
" MAWK is a "new awk" meaning it implements AWK ref.
" mawk conforms to the Posix 1003.2 (draft 11.3)
@@ -27,20 +28,27 @@ endif
let s:cpo_save = &cpo
set cpo&vim
+syn iskeyword @,48-57,_,192-255,@-@
+
" A bunch of useful Awk keywords
" AWK ref. p. 188
syn keyword awkStatement break continue delete exit
syn keyword awkStatement function getline next
syn keyword awkStatement print printf return
" GAWK ref. Chapter 7-9
-syn keyword awkStatement switch nextfile
+syn keyword awkStatement case default switch nextfile
syn keyword awkStatement func
+" GAWK ref. Chapter 2.7, Including Other Files into Your Program
+" GAWK ref. Chapter 2.8, Loading Dynamic Extensions into Your Program
+" GAWK ref. Chapter 15, Namespaces
+" Directives
+syn keyword awkStatement @include @load @namespace
"
" GAWK ref. Chapter 9, Functions
" Numeric Functions
-syn keyword awkFunction atan2 cos exp int intdiv log rand sin sqrt srand
+syn keyword awkFunction atan2 cos exp int log rand sin sqrt srand
" String Manipulation Functions
-syn keyword awkFunction asort asort1 gensub gsub index length match
+syn keyword awkFunction asort asorti gensub gsub index length match
syn keyword awkFunction patsplit split sprintf strtonum sub substr
syn keyword awkFunction tolower toupper
" Input Output Functions
@@ -49,7 +57,7 @@ syn keyword awkFunction close fflush system
syn keyword awkFunction mktime strftime systime
" Bit Manipulation Functions
syn keyword awkFunction and compl lshift or rshift xor
-" Getting Type Functions
+" Getting Type Information Functions
syn keyword awkFunction isarray typeof
" String-Translation Functions
syn keyword awkFunction bindtextdomain dcgettext dcngetext
diff --git a/runtime/syntax/bash.vim b/runtime/syntax/bash.vim
new file mode 100644
index 0000000000..75ab99938e
--- /dev/null
+++ b/runtime/syntax/bash.vim
@@ -0,0 +1,20 @@
+" Vim syntax file
+" Language: bash
+" Maintainer: Bram
+" Last Change: 2019 Sep 27
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" The actual syntax is in sh.vim and controlled by buffer-local variables.
+unlet! b:is_sh
+unlet! b:is_kornshell
+let b:is_bash = 1
+
+runtime! syntax/sh.vim
+
+let b:current_syntax = 'bash'
+
+" vim: ts=8
diff --git a/runtime/syntax/basic.vim b/runtime/syntax/basic.vim
index 488ddc0ec4..ad9450b3b8 100644
--- a/runtime/syntax/basic.vim
+++ b/runtime/syntax/basic.vim
@@ -1,14 +1,16 @@
" Vim syntax file
-" Language: BASIC
-" Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
-" Last Change: 2011 Dec 25 by Thilo Six
+" Language: BASIC
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
+" Contributors: Thilo Six
+" Last Change: 2015 Jan 10
" First version based on Micro$soft QBASIC circa 1989, as documented in
" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
" This syntax file not a complete implementation yet. Send suggestions to the
" maintainer.
-" quit when a syntax file was already loaded
+" Prelude {{{1
if exists("b:current_syntax")
finish
endif
@@ -16,7 +18,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
-" A bunch of useful BASIC keywords
+" Keywords {{{1
syn keyword basicStatement BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave
syn keyword basicStatement CALL call Call ABSOLUTE absolute Absolute
syn keyword basicStatement CHAIN chain Chain CHDIR chdir Chdir
@@ -116,32 +118,39 @@ syn keyword basicFunction RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$
syn keyword basicFunction SPACE$ space$ Space$ STR$ str$ Str$
syn keyword basicFunction STRING$ string$ String$ TIME$ time$ Time$
syn keyword basicFunction UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$
-syn keyword basicTodo contained TODO
-"integer number, or floating point number without a dot.
+" Numbers {{{1
+" Integer number, or floating point number without a dot.
syn match basicNumber "\<\d\+\>"
-"floating point number, with dot
+" Floating point number, with dot
syn match basicNumber "\<\d\+\.\d*\>"
-"floating point number, starting with a dot
+" Floating point number, starting with a dot
syn match basicNumber "\.\d\+\>"
-" String and Character contstants
-syn match basicSpecial contained "\\\d\d\d\|\\."
-syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial
+" String and Character constants {{{1
+syn match basicSpecial "\\\d\d\d\|\\." contained
+syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial
-syn region basicComment start="REM" end="$" contains=basicTodo
-syn region basicComment start="^[ \t]*'" end="$" contains=basicTodo
+" Line numbers {{{1
syn region basicLineNumber start="^\d" end="\s"
-syn match basicTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1
+
+" Data-type suffixes {{{1
+syn match basicTypeSpecifier "[a-zA-Z0-9][$%&!#]"ms=s+1
" Used with OPEN statement
syn match basicFilenumber "#\d\+"
-"syn sync ccomment basicComment
+
+" Mathematical operators {{{1
" syn match basicMathsOperator "[<>+\*^/\\=-]"
-syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR"
+syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR"
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+" Comments {{{1
+syn keyword basicTodo TODO FIXME XXX NOTE contained
+syn region basicComment start="^\s*\zsREM\>" start="\%(:\s*\)\@<=REM\>" end="$" contains=basicTodo
+syn region basicComment start="'" end="$" contains=basicTodo
+"syn sync ccomment basicComment
+
+" Default Highlighting {{{1
hi def link basicLabel Label
hi def link basicConditional Conditional
hi def link basicRepeat Repeat
@@ -150,17 +159,18 @@ hi def link basicNumber Number
hi def link basicError Error
hi def link basicStatement Statement
hi def link basicString String
-hi def link basicComment Comment
-hi def link basicSpecial Special
+hi def link basicComment Comment
+hi def link basicSpecial Special
hi def link basicTodo Todo
-hi def link basicFunction Identifier
-hi def link basicTypeSpecifier Type
-hi def link basicFilenumber basicTypeSpecifier
+hi def link basicFunction Identifier
+hi def link basicTypeSpecifier Type
+hi def link basicFilenumber basicTypeSpecifier
"hi basicMathsOperator term=bold cterm=bold gui=bold
-
+" Postscript {{{1
let b:current_syntax = "basic"
let &cpo = s:cpo_save
unlet s:cpo_save
-" vim: ts=8
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/bindzone.vim b/runtime/syntax/bindzone.vim
index df3c789d98..bb790bb75c 100644
--- a/runtime/syntax/bindzone.vim
+++ b/runtime/syntax/bindzone.vim
@@ -32,8 +32,8 @@ syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\
syn match zoneSpecial contained /^[@*.]\s/
syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
-syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite
-syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite
+syn keyword zoneClass contained IN CHAOS CH HS HESIOD nextgroup=zoneRRType,zoneTTL skipwhite
+syn keyword zoneRRType contained A AAAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RP RRSIG SSHFP SOA SPF SRV TLSA TXT nextgroup=zoneRData skipwhite
syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
diff --git a/runtime/syntax/bsdl.vim b/runtime/syntax/bsdl.vim
new file mode 100644
index 0000000000..75c69558e5
--- /dev/null
+++ b/runtime/syntax/bsdl.vim
@@ -0,0 +1,17 @@
+" Vim syntax file
+" Language: Boundary Scan Description Language (BSDL)
+" Maintainer: Daniel Kho <daniel.kho@logik.haus>
+" Last Changed: 2020 Mar 19 by Daniel Kho
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read in VHDL syntax files
+runtime! syntax/vhdl.vim
+unlet b:current_syntax
+
+let b:current_syntax = "bsdl"
+
+" vim: ts=8
diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim
index 2a14ae0c46..d07aaf2658 100644
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2019 Apr 23
+" Last Change: 2021 Jan 11
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -13,6 +13,9 @@ set cpo&vim
let s:ft = matchstr(&ft, '^\([^.]\)\+')
+" check if this was included from cpp.vim
+let s:in_cpp_family = exists("b:filetype_in_cpp_family")
+
" Optional embedded Autodoc parsing
" To enable it add: let g:c_autodoc = 1
" to your .vimrc
@@ -55,7 +58,7 @@ if !exists("c_no_cformat")
endif
" cCppString: same as cString, but ends at end of line
-if s:ft ==# "cpp" && !exists("cpp_no_cpp11") && !exists("c_no_cformat")
+if s:in_cpp_family && !exists("cpp_no_cpp11") && !exists("c_no_cformat")
" ISO C++11
syn region cString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
@@ -87,7 +90,7 @@ syn match cSpecialCharacter display "L\='\\\o\{1,3}'"
syn match cSpecialCharacter display "'\\x\x\{1,2}'"
syn match cSpecialCharacter display "L'\\x\x\+'"
-if (s:ft ==# "c" && !exists("c_no_c11")) || (s:ft ==# "cpp" && !exists("cpp_no_cpp11"))
+if (s:ft ==# "c" && !exists("c_no_c11")) || (s:in_cpp_family && !exists("cpp_no_cpp11"))
" ISO C11 or ISO C++ 11
if exists("c_no_cformat")
syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend
@@ -130,21 +133,21 @@ endif
" But avoid matching <::.
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
if exists("c_no_curly_error")
- if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
syn match cParenError display ")"
syn match cErrInParen display contained "^^<%\|^%>"
else
- syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
syn match cParenError display ")"
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
endif
elseif exists("c_no_bracket_error")
- if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
@@ -158,7 +161,7 @@ elseif exists("c_no_bracket_error")
syn match cErrInParen display contained "[{}]\|<%\|%>"
endif
else
- if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
@@ -272,12 +275,13 @@ if exists("c_gnu")
syn keyword cType __label__ __complex__ __volatile__
endif
-syn keyword cStructure struct union enum typedef
+syn keyword cTypedef typedef
+syn keyword cStructure struct union enum
syn keyword cStorageClass static register auto volatile extern const
if exists("c_gnu")
syn keyword cStorageClass inline __attribute__
endif
-if !exists("c_no_c99") && s:ft !=# 'cpp'
+if !exists("c_no_c99") && !s:in_cpp_family
syn keyword cStorageClass inline restrict
endif
if !exists("c_no_c11")
@@ -311,8 +315,7 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
if exists("c_gnu")
syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__
endif
- syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
- syn keyword cConstant __STDC_VERSION__
+ syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ __STDC_VERSION__ __STDC_HOSTED__
syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
@@ -346,6 +349,8 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX
+ " used in assert.h
+ syn keyword cConstant NDEBUG
" POSIX 2001
syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ
" non-POSIX signals
@@ -418,7 +423,7 @@ endif
syn cluster cLabelGroup contains=cUserLabel
syn match cUserCont display "^\s*\zs\I\i*\s*:$" contains=@cLabelGroup
syn match cUserCont display ";\s*\zs\I\i*\s*:$" contains=@cLabelGroup
-if s:ft ==# 'cpp'
+if s:in_cpp_family
syn match cUserCont display "^\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
syn match cUserCont display ";\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
else
@@ -475,6 +480,7 @@ hi def link cSpecialError cError
hi def link cCurlyError cError
hi def link cOperator Operator
hi def link cStructure Structure
+hi def link cTypedef Structure
hi def link cStorageClass StorageClass
hi def link cInclude Include
hi def link cPreProc PreProc
diff --git a/runtime/syntax/clojure.vim b/runtime/syntax/clojure.vim
index ffdd5c2ab0..1037967d1c 100644
--- a/runtime/syntax/clojure.vim
+++ b/runtime/syntax/clojure.vim
@@ -1,15 +1,13 @@
-" Vim syntax file
-" Language: Clojure
-" Authors: Toralf Wittner <toralf.wittner@gmail.com>
-" modified by Meikel Brandmeyer <mb@kotka.de>
-" URL: http://kotka.de/projects/clojure/vimclojure.html
-"
-" Contributors: Joel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes)
-"
-" Maintainer: Sung Pae <self@sungpae.com>
-" URL: https://github.com/guns/vim-clojure-static
-" License: Same as Vim
-" Last Change: 18 July 2016
+" Vim indent file
+" Language: Clojure
+" Maintainer: Alex Vear <av@axvr.io>
+" Former Maintainers: Sung Pae <self@sungpae.com>
+" Meikel Brandmeyer <mb@kotka.de>
+" Toralf Wittner <toralf.wittner@gmail.com>
+" Contributors: Joel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes)
+" URL: https://github.com/clojure-vim/clojure.vim
+" License: Vim (see :h license)
+" Last Change: 2021-02-13
if exists("b:current_syntax")
finish
@@ -23,19 +21,19 @@ if has("folding") && exists("g:clojure_fold") && g:clojure_fold > 0
endif
" -*- KEYWORDS -*-
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj
-" Clojure version 1.8.0
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/f8594e7030cdfb0b7990ac92953c77a08a7220f0/clj/src/vim_clojure_static/generate.clj
+" Clojure version 1.10.2
let s:clojure_syntax_keywords = {
\ 'clojureBoolean': ["false","true"]
\ , 'clojureCond': ["case","clojure.core/case","clojure.core/cond","clojure.core/cond->","clojure.core/cond->>","clojure.core/condp","clojure.core/if-let","clojure.core/if-not","clojure.core/if-some","clojure.core/when","clojure.core/when-first","clojure.core/when-let","clojure.core/when-not","clojure.core/when-some","cond","cond->","cond->>","condp","if-let","if-not","if-some","when","when-first","when-let","when-not","when-some"]
\ , 'clojureConstant': ["nil"]
\ , 'clojureDefine': ["clojure.core/definline","clojure.core/definterface","clojure.core/defmacro","clojure.core/defmethod","clojure.core/defmulti","clojure.core/defn","clojure.core/defn-","clojure.core/defonce","clojure.core/defprotocol","clojure.core/defrecord","clojure.core/defstruct","clojure.core/deftype","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype"]
\ , 'clojureException': ["catch","finally","throw","try"]
- \ , 'clojureFunc': ["*","*'","+","+'","-","-'","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","/","<","<=","=","==",">",">=","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","ancestors","apply","array-map","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","booleans","bound-fn*","bound?","butlast","byte","byte-array","bytes","cast","cat","char","char-array","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","clojure.core/*","clojure.core/*'","clojure.core/+","clojure.core/+'","clojure.core/-","clojure.core/-'","clojure.core/->ArrayChunk","clojure.core/->Eduction","clojure.core/->Vec","clojure.core/->VecNode","clojure.core/->VecSeq","clojure.core/-cache-protocol-fn","clojure.core/-reset-methods","clojure.core//","clojure.core/<","clojure.core/<=","clojure.core/=","clojure.core/==","clojure.core/>","clojure.core/>=","clojure.core/Throwable->map","clojure.core/accessor","clojure.core/aclone","clojure.core/add-classpath","clojure.core/add-watch","clojure.core/agent","clojure.core/agent-error","clojure.core/agent-errors","clojure.core/aget","clojure.core/alength","clojure.core/alias","clojure.core/all-ns","clojure.core/alter","clojure.core/alter-meta!","clojure.core/alter-var-root","clojure.core/ancestors","clojure.core/apply","clojure.core/array-map","clojure.core/aset","clojure.core/aset-boolean","clojure.core/aset-byte","clojure.core/aset-char","clojure.core/aset-double","clojure.core/aset-float","clojure.core/aset-int","clojure.core/aset-long","clojure.core/aset-short","clojure.core/assoc","clojure.core/assoc!","clojure.core/assoc-in","clojure.core/associative?","clojure.core/atom","clojure.core/await","clojure.core/await-for","clojure.core/await1","clojure.core/bases","clojure.core/bean","clojure.core/bigdec","clojure.core/bigint","clojure.core/biginteger","clojure.core/bit-and","clojure.core/bit-and-not","clojure.core/bit-clear","clojure.core/bit-flip","clojure.core/bit-not","clojure.core/bit-or","clojure.core/bit-set","clojure.core/bit-shift-left","clojure.core/bit-shift-right","clojure.core/bit-test","clojure.core/bit-xor","clojure.core/boolean","clojure.core/boolean-array","clojure.core/booleans","clojure.core/bound-fn*","clojure.core/bound?","clojure.core/butlast","clojure.core/byte","clojure.core/byte-array","clojure.core/bytes","clojure.core/cast","clojure.core/cat","clojure.core/char","clojure.core/char-array","clojure.core/char?","clojure.core/chars","clojure.core/chunk","clojure.core/chunk-append","clojure.core/chunk-buffer","clojure.core/chunk-cons","clojure.core/chunk-first","clojure.core/chunk-next","clojure.core/chunk-rest","clojure.core/chunked-seq?","clojure.core/class","clojure.core/class?","clojure.core/clear-agent-errors","clojure.core/clojure-version","clojure.core/coll?","clojure.core/commute","clojure.core/comp","clojure.core/comparator","clojure.core/compare","clojure.core/compare-and-set!","clojure.core/compile","clojure.core/complement","clojure.core/completing","clojure.core/concat","clojure.core/conj","clojure.core/conj!","clojure.core/cons","clojure.core/constantly","clojure.core/construct-proxy","clojure.core/contains?","clojure.core/count","clojure.core/counted?","clojure.core/create-ns","clojure.core/create-struct","clojure.core/cycle","clojure.core/dec","clojure.core/dec'","clojure.core/decimal?","clojure.core/dedupe","clojure.core/delay?","clojure.core/deliver","clojure.core/denominator","clojure.core/deref","clojure.core/derive","clojure.core/descendants","clojure.core/destructure","clojure.core/disj","clojure.core/disj!","clojure.core/dissoc","clojure.core/dissoc!","clojure.core/distinct","clojure.core/distinct?","clojure.core/doall","clojure.core/dorun","clojure.core/double","clojure.core/double-array","clojure.core/doubles","clojure.core/drop","clojure.core/drop-last","clojure.core/drop-while","clojure.core/eduction","clojure.core/empty","clojure.core/empty?","clojure.core/ensure","clojure.core/ensure-reduced","clojure.core/enumeration-seq","clojure.core/error-handler","clojure.core/error-mode","clojure.core/eval","clojure.core/even?","clojure.core/every-pred","clojure.core/every?","clojure.core/ex-data","clojure.core/ex-info","clojure.core/extend","clojure.core/extenders","clojure.core/extends?","clojure.core/false?","clojure.core/ffirst","clojure.core/file-seq","clojure.core/filter","clojure.core/filterv","clojure.core/find","clojure.core/find-keyword","clojure.core/find-ns","clojure.core/find-protocol-impl","clojure.core/find-protocol-method","clojure.core/find-var","clojure.core/first","clojure.core/flatten","clojure.core/float","clojure.core/float-array","clojure.core/float?","clojure.core/floats","clojure.core/flush","clojure.core/fn?","clojure.core/fnext","clojure.core/fnil","clojure.core/force","clojure.core/format","clojure.core/frequencies","clojure.core/future-call","clojure.core/future-cancel","clojure.core/future-cancelled?","clojure.core/future-done?","clojure.core/future?","clojure.core/gensym","clojure.core/get","clojure.core/get-in","clojure.core/get-method","clojure.core/get-proxy-class","clojure.core/get-thread-bindings","clojure.core/get-validator","clojure.core/group-by","clojure.core/hash","clojure.core/hash-combine","clojure.core/hash-map","clojure.core/hash-ordered-coll","clojure.core/hash-set","clojure.core/hash-unordered-coll","clojure.core/identical?","clojure.core/identity","clojure.core/ifn?","clojure.core/in-ns","clojure.core/inc","clojure.core/inc'","clojure.core/init-proxy","clojure.core/instance?","clojure.core/int","clojure.core/int-array","clojure.core/integer?","clojure.core/interleave","clojure.core/intern","clojure.core/interpose","clojure.core/into","clojure.core/into-array","clojure.core/ints","clojure.core/isa?","clojure.core/iterate","clojure.core/iterator-seq","clojure.core/juxt","clojure.core/keep","clojure.core/keep-indexed","clojure.core/key","clojure.core/keys","clojure.core/keyword","clojure.core/keyword?","clojure.core/last","clojure.core/line-seq","clojure.core/list","clojure.core/list*","clojure.core/list?","clojure.core/load","clojure.core/load-file","clojure.core/load-reader","clojure.core/load-string","clojure.core/loaded-libs","clojure.core/long","clojure.core/long-array","clojure.core/longs","clojure.core/macroexpand","clojure.core/macroexpand-1","clojure.core/make-array","clojure.core/make-hierarchy","clojure.core/map","clojure.core/map-entry?","clojure.core/map-indexed","clojure.core/map?","clojure.core/mapcat","clojure.core/mapv","clojure.core/max","clojure.core/max-key","clojure.core/memoize","clojure.core/merge","clojure.core/merge-with","clojure.core/meta","clojure.core/method-sig","clojure.core/methods","clojure.core/min","clojure.core/min-key","clojure.core/mix-collection-hash","clojure.core/mod","clojure.core/munge","clojure.core/name","clojure.core/namespace","clojure.core/namespace-munge","clojure.core/neg?","clojure.core/newline","clojure.core/next","clojure.core/nfirst","clojure.core/nil?","clojure.core/nnext","clojure.core/not","clojure.core/not-any?","clojure.core/not-empty","clojure.core/not-every?","clojure.core/not=","clojure.core/ns-aliases","clojure.core/ns-imports","clojure.core/ns-interns","clojure.core/ns-map","clojure.core/ns-name","clojure.core/ns-publics","clojure.core/ns-refers","clojure.core/ns-resolve","clojure.core/ns-unalias","clojure.core/ns-unmap","clojure.core/nth","clojure.core/nthnext","clojure.core/nthrest","clojure.core/num","clojure.core/number?","clojure.core/numerator","clojure.core/object-array","clojure.core/odd?","clojure.core/parents","clojure.core/partial","clojure.core/partition","clojure.core/partition-all","clojure.core/partition-by","clojure.core/pcalls","clojure.core/peek","clojure.core/persistent!","clojure.core/pmap","clojure.core/pop","clojure.core/pop!","clojure.core/pop-thread-bindings","clojure.core/pos?","clojure.core/pr","clojure.core/pr-str","clojure.core/prefer-method","clojure.core/prefers","clojure.core/print","clojure.core/print-ctor","clojure.core/print-dup","clojure.core/print-method","clojure.core/print-simple","clojure.core/print-str","clojure.core/printf","clojure.core/println","clojure.core/println-str","clojure.core/prn","clojure.core/prn-str","clojure.core/promise","clojure.core/proxy-call-with-super","clojure.core/proxy-mappings","clojure.core/proxy-name","clojure.core/push-thread-bindings","clojure.core/quot","clojure.core/rand","clojure.core/rand-int","clojure.core/rand-nth","clojure.core/random-sample","clojure.core/range","clojure.core/ratio?","clojure.core/rational?","clojure.core/rationalize","clojure.core/re-find","clojure.core/re-groups","clojure.core/re-matcher","clojure.core/re-matches","clojure.core/re-pattern","clojure.core/re-seq","clojure.core/read","clojure.core/read-line","clojure.core/read-string","clojure.core/reader-conditional","clojure.core/reader-conditional?","clojure.core/realized?","clojure.core/record?","clojure.core/reduce","clojure.core/reduce-kv","clojure.core/reduced","clojure.core/reduced?","clojure.core/reductions","clojure.core/ref","clojure.core/ref-history-count","clojure.core/ref-max-history","clojure.core/ref-min-history","clojure.core/ref-set","clojure.core/refer","clojure.core/release-pending-sends","clojure.core/rem","clojure.core/remove","clojure.core/remove-all-methods","clojure.core/remove-method","clojure.core/remove-ns","clojure.core/remove-watch","clojure.core/repeat","clojure.core/repeatedly","clojure.core/replace","clojure.core/replicate","clojure.core/require","clojure.core/reset!","clojure.core/reset-meta!","clojure.core/resolve","clojure.core/rest","clojure.core/restart-agent","clojure.core/resultset-seq","clojure.core/reverse","clojure.core/reversible?","clojure.core/rseq","clojure.core/rsubseq","clojure.core/run!","clojure.core/satisfies?","clojure.core/second","clojure.core/select-keys","clojure.core/send","clojure.core/send-off","clojure.core/send-via","clojure.core/seq","clojure.core/seq?","clojure.core/seque","clojure.core/sequence","clojure.core/sequential?","clojure.core/set","clojure.core/set-agent-send-executor!","clojure.core/set-agent-send-off-executor!","clojure.core/set-error-handler!","clojure.core/set-error-mode!","clojure.core/set-validator!","clojure.core/set?","clojure.core/short","clojure.core/short-array","clojure.core/shorts","clojure.core/shuffle","clojure.core/shutdown-agents","clojure.core/slurp","clojure.core/some","clojure.core/some-fn","clojure.core/some?","clojure.core/sort","clojure.core/sort-by","clojure.core/sorted-map","clojure.core/sorted-map-by","clojure.core/sorted-set","clojure.core/sorted-set-by","clojure.core/sorted?","clojure.core/special-symbol?","clojure.core/spit","clojure.core/split-at","clojure.core/split-with","clojure.core/str","clojure.core/string?","clojure.core/struct","clojure.core/struct-map","clojure.core/subs","clojure.core/subseq","clojure.core/subvec","clojure.core/supers","clojure.core/swap!","clojure.core/symbol","clojure.core/symbol?","clojure.core/tagged-literal","clojure.core/tagged-literal?","clojure.core/take","clojure.core/take-last","clojure.core/take-nth","clojure.core/take-while","clojure.core/test","clojure.core/the-ns","clojure.core/thread-bound?","clojure.core/to-array","clojure.core/to-array-2d","clojure.core/trampoline","clojure.core/transduce","clojure.core/transient","clojure.core/tree-seq","clojure.core/true?","clojure.core/type","clojure.core/unchecked-add","clojure.core/unchecked-add-int","clojure.core/unchecked-byte","clojure.core/unchecked-char","clojure.core/unchecked-dec","clojure.core/unchecked-dec-int","clojure.core/unchecked-divide-int","clojure.core/unchecked-double","clojure.core/unchecked-float","clojure.core/unchecked-inc","clojure.core/unchecked-inc-int","clojure.core/unchecked-int","clojure.core/unchecked-long","clojure.core/unchecked-multiply","clojure.core/unchecked-multiply-int","clojure.core/unchecked-negate","clojure.core/unchecked-negate-int","clojure.core/unchecked-remainder-int","clojure.core/unchecked-short","clojure.core/unchecked-subtract","clojure.core/unchecked-subtract-int","clojure.core/underive","clojure.core/unreduced","clojure.core/unsigned-bit-shift-right","clojure.core/update","clojure.core/update-in","clojure.core/update-proxy","clojure.core/use","clojure.core/val","clojure.core/vals","clojure.core/var-get","clojure.core/var-set","clojure.core/var?","clojure.core/vary-meta","clojure.core/vec","clojure.core/vector","clojure.core/vector-of","clojure.core/vector?","clojure.core/volatile!","clojure.core/volatile?","clojure.core/vreset!","clojure.core/with-bindings*","clojure.core/with-meta","clojure.core/with-redefs-fn","clojure.core/xml-seq","clojure.core/zero?","clojure.core/zipmap","coll?","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","dedupe","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","double","double-array","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn?","fnext","fnil","force","format","frequencies","future-call","future-cancel","future-cancelled?","future-done?","future?","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","identical?","identity","ifn?","in-ns","inc","inc'","init-proxy","instance?","int","int-array","integer?","interleave","intern","interpose","into","into-array","ints","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","long","long-array","longs","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos?","pr","pr-str","prefer-method","prefers","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy-call-with-super","proxy-mappings","proxy-name","push-thread-bindings","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","slurp","some","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","symbol","symbol?","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","use","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","with-bindings*","with-meta","with-redefs-fn","xml-seq","zero?","zipmap"]
+ \ , 'clojureFunc': ["*","*'","+","+'","-","-'","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","/","<","<=","=","==",">",">=","PrintWriter-on","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-tap","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","ancestors","any?","apply","array-map","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case-fallthrough-err-impl","cast","cat","char","char-array","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","clojure.core/*","clojure.core/*'","clojure.core/+","clojure.core/+'","clojure.core/-","clojure.core/-'","clojure.core/->ArrayChunk","clojure.core/->Eduction","clojure.core/->Vec","clojure.core/->VecNode","clojure.core/->VecSeq","clojure.core/-cache-protocol-fn","clojure.core/-reset-methods","clojure.core//","clojure.core/<","clojure.core/<=","clojure.core/=","clojure.core/==","clojure.core/>","clojure.core/>=","clojure.core/PrintWriter-on","clojure.core/StackTraceElement->vec","clojure.core/Throwable->map","clojure.core/accessor","clojure.core/aclone","clojure.core/add-classpath","clojure.core/add-tap","clojure.core/add-watch","clojure.core/agent","clojure.core/agent-error","clojure.core/agent-errors","clojure.core/aget","clojure.core/alength","clojure.core/alias","clojure.core/all-ns","clojure.core/alter","clojure.core/alter-meta!","clojure.core/alter-var-root","clojure.core/ancestors","clojure.core/any?","clojure.core/apply","clojure.core/array-map","clojure.core/aset","clojure.core/aset-boolean","clojure.core/aset-byte","clojure.core/aset-char","clojure.core/aset-double","clojure.core/aset-float","clojure.core/aset-int","clojure.core/aset-long","clojure.core/aset-short","clojure.core/assoc","clojure.core/assoc!","clojure.core/assoc-in","clojure.core/associative?","clojure.core/atom","clojure.core/await","clojure.core/await-for","clojure.core/await1","clojure.core/bases","clojure.core/bean","clojure.core/bigdec","clojure.core/bigint","clojure.core/biginteger","clojure.core/bit-and","clojure.core/bit-and-not","clojure.core/bit-clear","clojure.core/bit-flip","clojure.core/bit-not","clojure.core/bit-or","clojure.core/bit-set","clojure.core/bit-shift-left","clojure.core/bit-shift-right","clojure.core/bit-test","clojure.core/bit-xor","clojure.core/boolean","clojure.core/boolean-array","clojure.core/boolean?","clojure.core/booleans","clojure.core/bound-fn*","clojure.core/bound?","clojure.core/bounded-count","clojure.core/butlast","clojure.core/byte","clojure.core/byte-array","clojure.core/bytes","clojure.core/bytes?","clojure.core/case-fallthrough-err-impl","clojure.core/cast","clojure.core/cat","clojure.core/char","clojure.core/char-array","clojure.core/char?","clojure.core/chars","clojure.core/chunk","clojure.core/chunk-append","clojure.core/chunk-buffer","clojure.core/chunk-cons","clojure.core/chunk-first","clojure.core/chunk-next","clojure.core/chunk-rest","clojure.core/chunked-seq?","clojure.core/class","clojure.core/class?","clojure.core/clear-agent-errors","clojure.core/clojure-version","clojure.core/coll?","clojure.core/commute","clojure.core/comp","clojure.core/comparator","clojure.core/compare","clojure.core/compare-and-set!","clojure.core/compile","clojure.core/complement","clojure.core/completing","clojure.core/concat","clojure.core/conj","clojure.core/conj!","clojure.core/cons","clojure.core/constantly","clojure.core/construct-proxy","clojure.core/contains?","clojure.core/count","clojure.core/counted?","clojure.core/create-ns","clojure.core/create-struct","clojure.core/cycle","clojure.core/dec","clojure.core/dec'","clojure.core/decimal?","clojure.core/dedupe","clojure.core/delay?","clojure.core/deliver","clojure.core/denominator","clojure.core/deref","clojure.core/derive","clojure.core/descendants","clojure.core/destructure","clojure.core/disj","clojure.core/disj!","clojure.core/dissoc","clojure.core/dissoc!","clojure.core/distinct","clojure.core/distinct?","clojure.core/doall","clojure.core/dorun","clojure.core/double","clojure.core/double-array","clojure.core/double?","clojure.core/doubles","clojure.core/drop","clojure.core/drop-last","clojure.core/drop-while","clojure.core/eduction","clojure.core/empty","clojure.core/empty?","clojure.core/ensure","clojure.core/ensure-reduced","clojure.core/enumeration-seq","clojure.core/error-handler","clojure.core/error-mode","clojure.core/eval","clojure.core/even?","clojure.core/every-pred","clojure.core/every?","clojure.core/ex-cause","clojure.core/ex-data","clojure.core/ex-info","clojure.core/ex-message","clojure.core/extend","clojure.core/extenders","clojure.core/extends?","clojure.core/false?","clojure.core/ffirst","clojure.core/file-seq","clojure.core/filter","clojure.core/filterv","clojure.core/find","clojure.core/find-keyword","clojure.core/find-ns","clojure.core/find-protocol-impl","clojure.core/find-protocol-method","clojure.core/find-var","clojure.core/first","clojure.core/flatten","clojure.core/float","clojure.core/float-array","clojure.core/float?","clojure.core/floats","clojure.core/flush","clojure.core/fn?","clojure.core/fnext","clojure.core/fnil","clojure.core/force","clojure.core/format","clojure.core/frequencies","clojure.core/future-call","clojure.core/future-cancel","clojure.core/future-cancelled?","clojure.core/future-done?","clojure.core/future?","clojure.core/gensym","clojure.core/get","clojure.core/get-in","clojure.core/get-method","clojure.core/get-proxy-class","clojure.core/get-thread-bindings","clojure.core/get-validator","clojure.core/group-by","clojure.core/halt-when","clojure.core/hash","clojure.core/hash-combine","clojure.core/hash-map","clojure.core/hash-ordered-coll","clojure.core/hash-set","clojure.core/hash-unordered-coll","clojure.core/ident?","clojure.core/identical?","clojure.core/identity","clojure.core/ifn?","clojure.core/in-ns","clojure.core/inc","clojure.core/inc'","clojure.core/indexed?","clojure.core/init-proxy","clojure.core/inst-ms","clojure.core/inst-ms*","clojure.core/inst?","clojure.core/instance?","clojure.core/int","clojure.core/int-array","clojure.core/int?","clojure.core/integer?","clojure.core/interleave","clojure.core/intern","clojure.core/interpose","clojure.core/into","clojure.core/into-array","clojure.core/ints","clojure.core/isa?","clojure.core/iterate","clojure.core/iterator-seq","clojure.core/juxt","clojure.core/keep","clojure.core/keep-indexed","clojure.core/key","clojure.core/keys","clojure.core/keyword","clojure.core/keyword?","clojure.core/last","clojure.core/line-seq","clojure.core/list","clojure.core/list*","clojure.core/list?","clojure.core/load","clojure.core/load-file","clojure.core/load-reader","clojure.core/load-string","clojure.core/loaded-libs","clojure.core/long","clojure.core/long-array","clojure.core/longs","clojure.core/macroexpand","clojure.core/macroexpand-1","clojure.core/make-array","clojure.core/make-hierarchy","clojure.core/map","clojure.core/map-entry?","clojure.core/map-indexed","clojure.core/map?","clojure.core/mapcat","clojure.core/mapv","clojure.core/max","clojure.core/max-key","clojure.core/memoize","clojure.core/merge","clojure.core/merge-with","clojure.core/meta","clojure.core/method-sig","clojure.core/methods","clojure.core/min","clojure.core/min-key","clojure.core/mix-collection-hash","clojure.core/mod","clojure.core/munge","clojure.core/name","clojure.core/namespace","clojure.core/namespace-munge","clojure.core/nat-int?","clojure.core/neg-int?","clojure.core/neg?","clojure.core/newline","clojure.core/next","clojure.core/nfirst","clojure.core/nil?","clojure.core/nnext","clojure.core/not","clojure.core/not-any?","clojure.core/not-empty","clojure.core/not-every?","clojure.core/not=","clojure.core/ns-aliases","clojure.core/ns-imports","clojure.core/ns-interns","clojure.core/ns-map","clojure.core/ns-name","clojure.core/ns-publics","clojure.core/ns-refers","clojure.core/ns-resolve","clojure.core/ns-unalias","clojure.core/ns-unmap","clojure.core/nth","clojure.core/nthnext","clojure.core/nthrest","clojure.core/num","clojure.core/number?","clojure.core/numerator","clojure.core/object-array","clojure.core/odd?","clojure.core/parents","clojure.core/partial","clojure.core/partition","clojure.core/partition-all","clojure.core/partition-by","clojure.core/pcalls","clojure.core/peek","clojure.core/persistent!","clojure.core/pmap","clojure.core/pop","clojure.core/pop!","clojure.core/pop-thread-bindings","clojure.core/pos-int?","clojure.core/pos?","clojure.core/pr","clojure.core/pr-str","clojure.core/prefer-method","clojure.core/prefers","clojure.core/print","clojure.core/print-ctor","clojure.core/print-dup","clojure.core/print-method","clojure.core/print-simple","clojure.core/print-str","clojure.core/printf","clojure.core/println","clojure.core/println-str","clojure.core/prn","clojure.core/prn-str","clojure.core/promise","clojure.core/proxy-call-with-super","clojure.core/proxy-mappings","clojure.core/proxy-name","clojure.core/push-thread-bindings","clojure.core/qualified-ident?","clojure.core/qualified-keyword?","clojure.core/qualified-symbol?","clojure.core/quot","clojure.core/rand","clojure.core/rand-int","clojure.core/rand-nth","clojure.core/random-sample","clojure.core/range","clojure.core/ratio?","clojure.core/rational?","clojure.core/rationalize","clojure.core/re-find","clojure.core/re-groups","clojure.core/re-matcher","clojure.core/re-matches","clojure.core/re-pattern","clojure.core/re-seq","clojure.core/read","clojure.core/read+string","clojure.core/read-line","clojure.core/read-string","clojure.core/reader-conditional","clojure.core/reader-conditional?","clojure.core/realized?","clojure.core/record?","clojure.core/reduce","clojure.core/reduce-kv","clojure.core/reduced","clojure.core/reduced?","clojure.core/reductions","clojure.core/ref","clojure.core/ref-history-count","clojure.core/ref-max-history","clojure.core/ref-min-history","clojure.core/ref-set","clojure.core/refer","clojure.core/release-pending-sends","clojure.core/rem","clojure.core/remove","clojure.core/remove-all-methods","clojure.core/remove-method","clojure.core/remove-ns","clojure.core/remove-tap","clojure.core/remove-watch","clojure.core/repeat","clojure.core/repeatedly","clojure.core/replace","clojure.core/replicate","clojure.core/require","clojure.core/requiring-resolve","clojure.core/reset!","clojure.core/reset-meta!","clojure.core/reset-vals!","clojure.core/resolve","clojure.core/rest","clojure.core/restart-agent","clojure.core/resultset-seq","clojure.core/reverse","clojure.core/reversible?","clojure.core/rseq","clojure.core/rsubseq","clojure.core/run!","clojure.core/satisfies?","clojure.core/second","clojure.core/select-keys","clojure.core/send","clojure.core/send-off","clojure.core/send-via","clojure.core/seq","clojure.core/seq?","clojure.core/seqable?","clojure.core/seque","clojure.core/sequence","clojure.core/sequential?","clojure.core/set","clojure.core/set-agent-send-executor!","clojure.core/set-agent-send-off-executor!","clojure.core/set-error-handler!","clojure.core/set-error-mode!","clojure.core/set-validator!","clojure.core/set?","clojure.core/short","clojure.core/short-array","clojure.core/shorts","clojure.core/shuffle","clojure.core/shutdown-agents","clojure.core/simple-ident?","clojure.core/simple-keyword?","clojure.core/simple-symbol?","clojure.core/slurp","clojure.core/some","clojure.core/some-fn","clojure.core/some?","clojure.core/sort","clojure.core/sort-by","clojure.core/sorted-map","clojure.core/sorted-map-by","clojure.core/sorted-set","clojure.core/sorted-set-by","clojure.core/sorted?","clojure.core/special-symbol?","clojure.core/spit","clojure.core/split-at","clojure.core/split-with","clojure.core/str","clojure.core/string?","clojure.core/struct","clojure.core/struct-map","clojure.core/subs","clojure.core/subseq","clojure.core/subvec","clojure.core/supers","clojure.core/swap!","clojure.core/swap-vals!","clojure.core/symbol","clojure.core/symbol?","clojure.core/tagged-literal","clojure.core/tagged-literal?","clojure.core/take","clojure.core/take-last","clojure.core/take-nth","clojure.core/take-while","clojure.core/tap>","clojure.core/test","clojure.core/the-ns","clojure.core/thread-bound?","clojure.core/to-array","clojure.core/to-array-2d","clojure.core/trampoline","clojure.core/transduce","clojure.core/transient","clojure.core/tree-seq","clojure.core/true?","clojure.core/type","clojure.core/unchecked-add","clojure.core/unchecked-add-int","clojure.core/unchecked-byte","clojure.core/unchecked-char","clojure.core/unchecked-dec","clojure.core/unchecked-dec-int","clojure.core/unchecked-divide-int","clojure.core/unchecked-double","clojure.core/unchecked-float","clojure.core/unchecked-inc","clojure.core/unchecked-inc-int","clojure.core/unchecked-int","clojure.core/unchecked-long","clojure.core/unchecked-multiply","clojure.core/unchecked-multiply-int","clojure.core/unchecked-negate","clojure.core/unchecked-negate-int","clojure.core/unchecked-remainder-int","clojure.core/unchecked-short","clojure.core/unchecked-subtract","clojure.core/unchecked-subtract-int","clojure.core/underive","clojure.core/unreduced","clojure.core/unsigned-bit-shift-right","clojure.core/update","clojure.core/update-in","clojure.core/update-proxy","clojure.core/uri?","clojure.core/use","clojure.core/uuid?","clojure.core/val","clojure.core/vals","clojure.core/var-get","clojure.core/var-set","clojure.core/var?","clojure.core/vary-meta","clojure.core/vec","clojure.core/vector","clojure.core/vector-of","clojure.core/vector?","clojure.core/volatile!","clojure.core/volatile?","clojure.core/vreset!","clojure.core/with-bindings*","clojure.core/with-meta","clojure.core/with-redefs-fn","clojure.core/xml-seq","clojure.core/zero?","clojure.core/zipmap","coll?","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","dedupe","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-cause","ex-data","ex-info","ex-message","extend","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn?","fnext","fnil","force","format","frequencies","future-call","future-cancel","future-cancelled?","future-done?","future?","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","ifn?","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","long","long-array","longs","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy-call-with-super","proxy-mappings","proxy-name","push-thread-bindings","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read+string","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-tap","remove-watch","repeat","repeatedly","replace","replicate","require","requiring-resolve","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","tap>","test","the-ns","thread-bound?","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","with-bindings*","with-meta","with-redefs-fn","xml-seq","zero?","zipmap"]
\ , 'clojureMacro': ["->","->>","..","amap","and","areduce","as->","assert","binding","bound-fn","clojure.core/->","clojure.core/->>","clojure.core/..","clojure.core/amap","clojure.core/and","clojure.core/areduce","clojure.core/as->","clojure.core/assert","clojure.core/binding","clojure.core/bound-fn","clojure.core/comment","clojure.core/declare","clojure.core/delay","clojure.core/dosync","clojure.core/doto","clojure.core/extend-protocol","clojure.core/extend-type","clojure.core/for","clojure.core/future","clojure.core/gen-class","clojure.core/gen-interface","clojure.core/import","clojure.core/io!","clojure.core/lazy-cat","clojure.core/lazy-seq","clojure.core/letfn","clojure.core/locking","clojure.core/memfn","clojure.core/ns","clojure.core/or","clojure.core/proxy","clojure.core/proxy-super","clojure.core/pvalues","clojure.core/refer-clojure","clojure.core/reify","clojure.core/some->","clojure.core/some->>","clojure.core/sync","clojure.core/time","clojure.core/vswap!","clojure.core/with-bindings","clojure.core/with-in-str","clojure.core/with-loading-context","clojure.core/with-local-vars","clojure.core/with-open","clojure.core/with-out-str","clojure.core/with-precision","clojure.core/with-redefs","comment","declare","delay","dosync","doto","extend-protocol","extend-type","for","future","gen-class","gen-interface","import","io!","lazy-cat","lazy-seq","letfn","locking","memfn","ns","or","proxy","proxy-super","pvalues","refer-clojure","reify","some->","some->>","sync","time","vswap!","with-bindings","with-in-str","with-loading-context","with-local-vars","with-open","with-out-str","with-precision","with-redefs"]
\ , 'clojureRepeat': ["clojure.core/doseq","clojure.core/dotimes","clojure.core/while","doseq","dotimes","while"]
\ , 'clojureSpecial': [".","clojure.core/fn","clojure.core/let","clojure.core/loop","def","do","fn","if","let","loop","monitor-enter","monitor-exit","new","quote","recur","set!","var"]
- \ , 'clojureVariable': ["*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-readably*","*read-eval*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","EMPTY-NODE","char-escape-string","char-name-string","clojure.core/*1","clojure.core/*2","clojure.core/*3","clojure.core/*agent*","clojure.core/*allow-unresolved-vars*","clojure.core/*assert*","clojure.core/*clojure-version*","clojure.core/*command-line-args*","clojure.core/*compile-files*","clojure.core/*compile-path*","clojure.core/*compiler-options*","clojure.core/*data-readers*","clojure.core/*default-data-reader-fn*","clojure.core/*e","clojure.core/*err*","clojure.core/*file*","clojure.core/*flush-on-newline*","clojure.core/*fn-loader*","clojure.core/*in*","clojure.core/*math-context*","clojure.core/*ns*","clojure.core/*out*","clojure.core/*print-dup*","clojure.core/*print-length*","clojure.core/*print-level*","clojure.core/*print-meta*","clojure.core/*print-readably*","clojure.core/*read-eval*","clojure.core/*source-path*","clojure.core/*suppress-read*","clojure.core/*unchecked-math*","clojure.core/*use-context-classloader*","clojure.core/*verbose-defrecords*","clojure.core/*warn-on-reflection*","clojure.core/EMPTY-NODE","clojure.core/char-escape-string","clojure.core/char-name-string","clojure.core/default-data-readers","clojure.core/primitives-classnames","clojure.core/unquote","clojure.core/unquote-splicing","default-data-readers","primitives-classnames","unquote","unquote-splicing"]
+ \ , 'clojureVariable': ["*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","EMPTY-NODE","Inst","char-escape-string","char-name-string","clojure.core/*1","clojure.core/*2","clojure.core/*3","clojure.core/*agent*","clojure.core/*allow-unresolved-vars*","clojure.core/*assert*","clojure.core/*clojure-version*","clojure.core/*command-line-args*","clojure.core/*compile-files*","clojure.core/*compile-path*","clojure.core/*compiler-options*","clojure.core/*data-readers*","clojure.core/*default-data-reader-fn*","clojure.core/*e","clojure.core/*err*","clojure.core/*file*","clojure.core/*flush-on-newline*","clojure.core/*fn-loader*","clojure.core/*in*","clojure.core/*math-context*","clojure.core/*ns*","clojure.core/*out*","clojure.core/*print-dup*","clojure.core/*print-length*","clojure.core/*print-level*","clojure.core/*print-meta*","clojure.core/*print-namespace-maps*","clojure.core/*print-readably*","clojure.core/*read-eval*","clojure.core/*reader-resolver*","clojure.core/*source-path*","clojure.core/*suppress-read*","clojure.core/*unchecked-math*","clojure.core/*use-context-classloader*","clojure.core/*verbose-defrecords*","clojure.core/*warn-on-reflection*","clojure.core/EMPTY-NODE","clojure.core/Inst","clojure.core/char-escape-string","clojure.core/char-name-string","clojure.core/default-data-readers","clojure.core/primitives-classnames","clojure.core/unquote","clojure.core/unquote-splicing","default-data-readers","primitives-classnames","unquote","unquote-splicing"]
\ }
function! s:syntax_keyword(dict)
@@ -116,16 +114,16 @@ syntax region clojureRegexpQuoted start=/\\Q/ms=e+1 skip=/\\\\\|\\"/ end=/\\E/me
syntax region clojureRegexpQuote start=/\\Q/ skip=/\\\\\|\\"/ end=/\\E/ end=/"/me=s-1 contains=clojureRegexpQuoted keepend contained
" -*- CHARACTER PROPERTY CLASSES -*-
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj
-" Java version 1.8.0_92
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/f8594e7030cdfb0b7990ac92953c77a08a7220f0/clj/src/vim_clojure_static/generate.clj
+" Java version 15.0.2
syntax match clojureRegexpPosixCharClass "\v\\[pP]\{%(Cntrl|A%(l%(pha|num)|SCII)|Space|Graph|Upper|P%(rint|unct)|Blank|XDigit|Digit|Lower)\}" contained display
syntax match clojureRegexpJavaCharClass "\v\\[pP]\{java%(Whitespace|JavaIdentifier%(Part|Start)|SpaceChar|Mirrored|TitleCase|I%(SOControl|de%(ographic|ntifierIgnorable))|D%(efined|igit)|U%(pperCase|nicodeIdentifier%(Part|Start))|L%(etter%(OrDigit)?|owerCase)|Alphabetic)\}" contained display
syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\cIs%(l%(owercase|etter)|hex%(digit|_digit)|w%(hite%(_space|space)|ord)|noncharacter%(_code_point|codepoint)|p%(rint|unctuation)|ideographic|graph|a%(l%(num|phabetic)|ssigned)|uppercase|join%(control|_control)|titlecase|blank|digit|control)\}" contained display
syntax match clojureRegexpUnicodeCharClass "\v\\[pP][NSCMZPL]" contained display
syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(N[dlo]?|P[dcifeos]?|C[ncfos]?|M[nce]?|Z[lsp]?|S[mcko]?|L[muCDlto]?)\}" contained display
syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(Is|gc\=|general_category\=)?%(N[dlo]?|P[dcifeos]?|C[ncfos]?|M[nce]?|Z[lsp]?|S[mcko]?|L[muCDlto]?)\}" contained display
-syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(Is|sc\=|script\=)%(l%(epc%(ha)?|y%([dc]i%(an)?)|a%(t%(n|in)|na|oo?)|i%(n%(b|ear_b)|mbu?|su))|p%(rti|lrd|h%(oenician|li|ag%(s_pa)?|nx))|vaii?|d%(srt|e%(seret|va%(nagari)?))|g%(lag%(olitic)?|eor%(gian)?|oth%(ic)?|re%(k|ek)|u%(j%(arati|r)|r%(u|mukhi)))|u%(gar%(itic)?|nknown)|a%(r%(ab%(ic)?|m%([ni]|enian))|v%(st|estan))|e%(thi%(opic)?|gyp%(tian_hieroglyphs)?)|z%(inh|yyy|zzz)|r%(un%(ic|r)|ejang|jng)|s%(inh%(ala)?|h%(rd|a%(vian|rada|w))|a%(ur%(ashtra)?|m%(r|aritan)|rb)|y%(r%(c|iac)|lo%(ti_nagri)?)|und%(anese)?|ora%(_sompeng)?)|i%(n%(scriptional_pa%(rthian|hlavi)|herited)|mperial_aramaic|tal)|b%(eng%(ali)?|a%(t%(ak|k)|li%(nese)?|mum?)|ra%(i%(lle)?|h%(mi)?)|opo%(mofo)?|u%(gi%(nese)?|h%(d|id)))|o%(g%(am|ham)|r%(iya|kh|ya)|sma%(nya)?|l%(d_%(south_arabian|persian|italic|turkic)|ck|_chiki))|k%(h%(m%(r|er)|ar%(oshthi)?)|nda|a%(li|n%(a|nada)|takana|yah_li|ithi)|thi)|m%(a%(nd%(aic)?|layalam)|lym|y%(anmar|mr)|tei|e%(r%(c|o%(itic_%(hieroglyphs|cursive))?)|etei_mayek)|ong%(olian)?|iao)|yi%(ii)?|x%(peo|sux)|n%(ew_tai_lue|koo?)|h%(ira%(gana)?|an%([io]|unoo|g%(ul)?)?|ebr%(ew)?)|c%(y%(priot|r%(l|illic))|a%(km|n%(adian_aboriginal|s)|ri%(an)?)|prt|h%(er%(okee)?|a%(m|kma))|uneiform|o%(pt%(ic)?|mmon))|t%(elu%(gu)?|i%(finagh|b%(t|etan))|ha%(i|a%(na)?)|a%(i_%(le|tham|viet)|g%(alog|b%(anwa)?)|vt|kri?|l[ue]|m%(il|l))|fng|glg)|java%(nese)?)\}" contained display
-syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(In|blk\=|block\=)%(javanese|h%(a%(lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms)|n%(unoo|gul%(compatibilityjamo|syllables|jamo%(extended\-[ab])?|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)| %(syllables|compatibility jamo|jamo%( extended\-[ab])?))))|i%(ragana|gh%( %(private use surrogates|surrogates)|_%(private_use_surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew)|i%(pa%([ _]extensions|extensions)|deographic%( description characters|_description_characters|descriptioncharacters)|nscriptional%(%([ _]pa%(rthian|hlavi))|pa%(rthian|hlavi))|mperial%(aramaic|[_ ]aramaic))|l%(e%(tterlike%([_ ]symbols|symbols)|pcha)|ow%([_ ]surrogates|surrogates)|i%(mbu|near%(_b_%(ideograms|syllabary)|b%(ideograms|syllabary)| b %(ideograms|syllabary))|su)|a%(tin%(extended%(additional|\-[dacb])| extended%( additional|\-[dacb])|\-1%(supplement| supplement)|_%(extended_%([dcb]|a%(dditional)?)|1_supplement))|o)|y[cd]ian)|b%(u%(ginese|hid)|ra%(hmi|ille%(patterns|[_ ]patterns))|o%(x%([ _]drawing|drawing)|pomofo%([ _]extended|extended)?)|lock%([ _]elements|elements)|yzantine%( musical symbols|musicalsymbols|_musical_symbols)|engali|a%(linese|mum%(supplement|[ _]supplement)?|tak|sic%([ _]latin|latin)))|e%(gyptian%([ _]hieroglyphs|hieroglyphs)|moticons|nclosed%( %(cjk letters and months|ideographic supplement|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|thiopic%(supplement|_%(supplement|extended%(_a)?)| %(supplement|extended%(\-a)?)|extended%(\-a)?)?)|k%(h%(aroshthi|mer%([_ ]symbols|symbols)?)|a%(takana%(_phonetic_extensions|phoneticextensions| phonetic extensions)?|n%(gxi%([_ ]radicals|radicals)|a%(supplement|[ _]supplement)|bun|nada)|ithi|yah%([ _]li|li)))|m%(i%(ao|scellaneous%(technical|symbols%(and%(pictographs|arrows))?|mathematicalsymbols\-[ab]| %(technical|mathematical symbols\-[ab]|symbols%( and %(pictographs|arrows))?)|_%(technical|symbols%(_and_%(pictographs|arrows))?|mathematical_symbols_[ab])))|usical%([_ ]symbols|symbols)|e%(etei%(mayek%(extensions)?|_mayek%(_extensions)?| mayek%( extensions)?)|roitic%(hieroglyphs|%([_ ]%(hieroglyphs|cursive))|cursive))|a%(ndaic|hjong%([ _]tiles|tiles)|layalam|thematical%(alphanumericsymbols| %(alphanumeric symbols|operators)|_%(alphanumeric_symbols|operators)|operators))|yanmar%(extended\-a|_extended_a| extended\-a)?|o%(difier%(_tone_letters| tone letters|toneletters)|ngolian))|r%(u%(nic|mi%(numeralsymbols| numeral symbols|_numeral_symbols))|ejang)|n%(umber%(forms|[ _]forms)|ko|ew%(_tai_lue|tailue| tai lue))|c%(o%(ntrol%(pictures|[ _]pictures)|m%(bining%(diacriticalmarks%(supplement|forsymbols)?|halfmarks| %(diacritical marks%( %(supplement|for symbols))?|half marks|marks for symbols)|marksforsymbols|_%(marks_for_symbols|half_marks|diacritical_marks%(_supplement)?))|mon%(_indic_number_forms|indicnumberforms| indic number forms))|ptic|unting%( rod numerals|_rod_numerals|rodnumerals))|y%(rillic%(extended\-[ab]|_%(extended_[ab]|supplementary)|supplement%(ary)?| %(extended\-[ab]|supplement%(ary)?))?|priot%(syllabary|[ _]syllabary))|u%(rrency%([_ ]symbols|symbols)|neiform%(_numbers_and_punctuation|numbersandpunctuation| numbers and punctuation)?)|h%(a%(m|kma)|erokee)|arian|jk%(s%(ymbolsandpunctuation|trokes)|compatibility%(forms|ideographs%(supplement)?)?|radicalssupplement| %(compatibility%( %(ideographs%( supplement)?|forms))?|radicals supplement|unified ideographs%( extension [dacb])?|s%(ymbols and punctuation|trokes))|_%(s%(trokes|ymbols_and_punctuation)|radicals_supplement|compatibility%(_%(forms|ideographs%(_supplement)?))?|unified_ideographs%(_extension_[dacb])?)|unifiedideographs%(extension[dacb])?))|d%(e%(seret|vanagari%([ _]extended|extended)?)|ingbats|omino%([ _]tiles|tiles))|yi%(syllables|%([_ ]%(syllables|radicals))|radicals|jing%(hexagramsymbols| hexagram symbols|_hexagram_symbols))|s%(mall%( form variants|formvariants|_form_variants)|p%(acing%(_modifier_letters| modifier letters|modifierletters)|ecials)|ora%(sompeng|[ _]sompeng)|ha%(vian|rada)|a%(maritan|urashtra)|inhala|y%(riac|loti%([_ ]nagri|nagri))|u%(ndanese%(supplement|[ _]supplement)?|p%(erscripts%(_and_subscripts|andsubscripts| and subscripts)|plementa%(ry%(_private_use_area_[ab]|privateusearea\-[ab]| private use area\-[ab])|l%(_%(arrows_[ab]|mathematical_operators|punctuation)| %(mathematical operators|punctuation|arrows\-[ab])|mathematicaloperators|punctuation|arrows\-[ab])))|rrogates_area))|p%(h%(o%(enician|netic%( extensions%( supplement)?|extensions%(supplement)?|_extensions%(_supplement)?))|a%(istos%([ _]disc|disc)|gs[_\-]pa))|laying%(cards|[_ ]cards)|rivate%(usearea| use area|_use_area))|o%(smanya|l%([ _]chiki|d%( %(south arabian|persian|italic|turkic)|southarabian|_%(south_arabian|persian|italic|turkic)|persian|italic|turkic)|chiki)|riya|ptical%( character recognition|_character_recognition|characterrecognition)|gham)|g%(u%(jarati|rmukhi)|othic|lagolitic|e%(o%(rgian%(supplement|[ _]supplement)?|metric%(shapes|[ _]shapes))|neral%([_ ]punctuation|punctuation))|reek%( %(and coptic|extended)|andcoptic|_extended|extended)?)|t%(i%(betan|finagh)|elugu|ransport%( and map symbols|_and_map_symbols|andmapsymbols)|a%(mil|kri|i%(xuanjingsymbols|_%(le|xuan_jing_symbols|tham|viet)|le| %(xuan jing symbols|le|tham|viet)|tham|viet)|g%(alog|s|banwa))|ha%(i|ana))|a%(l%(chemical%([_ ]symbols|symbols)|phabetic%( presentation forms|_presentation_forms|presentationforms))|r%(menian|abic%(extended\-a|mathematicalalphabeticsymbols|supplement|_%(presentation_forms_[ab]|supplement|extended_a|mathematical_alphabetic_symbols)| %(extended\-a|mathematical alphabetic symbols|supplement|presentation forms\-[ab])|presentationforms\-[ab])?|rows)|ncient%(_%(greek_%(musical_notation|numbers)|symbols)|greek%(numbers|musicalnotation)| %(greek %(numbers|musical notation)|symbols)|symbols)|egean%(numbers|[ _]numbers)|vestan)|u%(garitic|nified%(canadianaboriginalsyllabics%(extended)?|_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?))|v%(a%(i|riation%( selectors%( supplement)?|selectors%(supplement)?|_selectors%(_supplement)?))|e%(rtical%(forms|[ _]forms)|dic%([ _]extensions|extensions))))\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(Is|sc\=|script\=)%(k%(its|h%(oj%(ki)?|m%(r|er)|itan_small_script|udawadi|ar%(oshthi)?)|a%(li|n%(a|nada)|takana%(_or_hiragana)?|yah_li|ithi)|nda|thi)|r%(ohg|un%(ic|r)|ejang|jng)|l%(epc%(ha)?|i%(mbu?|n%([ab]|ear_[ab])|su)|y%([dc]i%(an)?)|a%(t%(n|in)|na|oo?))|t%(elu%(gu)?|ha%(i|a%(na)?)|i%(finagh|rh%(uta)?|b%(t|etan))|fng|glg|a%(i_%(le|tham|viet)|g%(alog|b%(anwa)?)|vt|kri?|ng%(ut)?|l[ue]|m%(il|l)))|vaii?|y%(i%(ii)?|ezi%(di)?)|e%(thi%(opic)?|l%(ym%(aic)?|ba%(san)?)|gyp%(tian_hieroglyphs)?)|u%(gar%(itic)?|nknown)|h%(ung|ira%(gana)?|rkt|mn[gp]|a%(n%(i%(fi_rohingya)?|unoo|o|g%(ul)?)?|tr%(an)?)|luw|ebr%(ew)?)|g%(r%(e%(k|ek)|an%(tha)?)|lag%(olitic)?|eor%(gian)?|o%(n[mg]|th%(ic)?)|u%(j%(arati|r)|r%(u|mukhi)|njala_gondi))|m%(lym|a%(n%(d%(aic)?|i%(chaean)?)|saram_gondi|h%(ajani|j)|ka%(sar)?|rc%(hen)?|layalam)|o%(di|ng%(olian)?)|e%(r%(c|o%(itic_%(hieroglyphs|cursive))?)|etei_mayek|nd%(e_kikakui)?|d%(f|efaidrin))|roo?|y%(anmar|mr)|tei|iao|ult%(ani)?)|d%(upl%(oyan)?|srt|i%(ak|ves_akuru)|ogra?|e%(seret|va%(nagari)?))|z%(an%(abazar_square|b)|inh|yyy|zzz)|n%(yiakeng_puachue_hmong|bat|koo?|ew%(_tai_lue|a)|ushu|shu|a%(bataean|rb|nd%(inagari)?))|s%(h%(rd|a%(vian|rada|w))|o%(yo%(mbo)?|g%(d%(ian)?|o)|ra%(_sompeng)?)|i%(n%(d|h%(ala)?)|dd%(ham)?|gnwriting)|a%(ur%(ashtra)?|m%(r|aritan)|rb)|y%(r%(c|iac)|lo%(ti_nagri)?)|und%(anese)?|gnw)|w%(cho|a%(ncho|ra%(ng_citi)?))|c%(y%(priot|r%(l|illic))|h%(er%(okee)?|a%(m|kma)|rs|orasmian)|a%(km|ucasian_albanian|n%(adian_aboriginal|s)|ri%(an)?)|prt|uneiform|o%(pt%(ic)?|mmon))|i%(n%(scriptional_pa%(rthian|hlavi)|herited)|mperial_aramaic|tal)|p%(h%(l[ip]|oenician|ag%(s_pa)?|nx)|a%(lm%(yrene)?|u%(_cin_hau|c)|hawh_hmong)|rti|salter_pahlavi|lrd|erm)|x%(peo|sux)|b%(eng%(ali)?|ra%(i%(lle)?|h%(mi)?)|opo%(mofo)?|u%(gi%(nese)?|h%(d|id))|h%(ks|aiksuki)|a%(ss%(a_vah)?|t%(ak|k)|li%(nese)?|mum?))|java%(nese)?|o%(g%(am|ham)|s%(age|ge|ma%(nya)?)|l%(d_%(hungarian|north_arabian|so%(gdian|uth_arabian)|per%(mic|sian)|italic|turkic)|ck|_chiki)|r%(iya|kh|ya))|a%(r%(ab%(ic)?|m%([ni]|enian))|dl%(m|am)|natolian_hieroglyphs|hom|v%(st|estan)|ghb))\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(In|blk\=|block\=)%(zanabazar%([ _]square|square)|javanese|h%(a%(lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms)|tran|n%(unoo|gul%(compatibilityjamo|syllables|jamo%(extended\-[ab])?|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)| %(syllables|compatibility jamo|jamo%( extended\-[ab])?))|ifi%([_ ]rohingya|rohingya)))|i%(ragana|gh%( %(private use surrogates|surrogates)|_%(private_use_surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew)|i%(pa%([ _]extensions|extensions)|n%(scriptional%(%([ _]pa%(rthian|hlavi))|pa%(rthian|hlavi))|dic%(siyaqnumbers|_siyaq_numbers| siyaq numbers))|deographic%(symbolsandpunctuation|_%(description_characters|symbols_and_punctuation)| %(description characters|symbols and punctuation)|descriptioncharacters)|mperial%(aramaic|[_ ]aramaic))|c%(o%(ntrol%(pictures|[ _]pictures)|ptic%(epactnumbers|_epact_numbers| epact numbers)?|m%(mon%(_indic_number_forms|indicnumberforms| indic number forms)|bining%(halfmarks|_%(diacritical_marks%(_%(supplement|for_symbols|extended))?|marks_for_symbols|half_marks)| %(half marks|diacritical marks%( %(supplement|for symbols|extended))?|marks for symbols)|diacriticalmarks%(supplement|forsymbols|extended)?|marksforsymbols))|unting%( rod numerals|_rod_numerals|rodnumerals))|a%(rian|ucasian%([ _]albanian|albanian))|jk%(unifiedideographs%(extension[dgacfbe])?|s%(ymbolsandpunctuation|trokes)|_%(s%(trokes|ymbols_and_punctuation)|radicals_supplement|unified_ideographs%(_extension_[dgacfbe])?|compatibility%(_%(forms|ideographs%(_supplement)?))?)|compatibility%(forms|ideographs%(supplement)?)?|radicalssupplement| %(compatibility%( %(ideographs%( supplement)?|forms))?|unified ideographs%( extension [dgacfbe])?|radicals supplement|s%(ymbols and punctuation|trokes)))|y%(rillic%(supplement%(ary)?| %(supplement%(ary)?|extended\-[acb])|extended\-[acb]|_%(extended_[acb]|supplement%(ary)?))?|priot%(syllabary|[ _]syllabary))|u%(rrency%([_ ]symbols|symbols)|neiform%(_numbers_and_punctuation|numbersandpunctuation| numbers and punctuation)?)|h%(e%(ss%([_ ]symbols|symbols)|rokee%(supplement|[ _]supplement)?)|a%(m|kma)|orasmian))|g%(othic|u%(njala%(gondi|[_ ]gondi)|jarati|rmukhi)|lagolitic%(supplement|[ _]supplement)?|e%(o%(rgian%(supplement|%([_ ]%(supplement|extended))|extended)?|metric%( shapes%( extended)?|shapes%(extended)?|_shapes%(_extended)?))|neral%([_ ]punctuation|punctuation))|r%(eek%( %(and coptic|extended)|andcoptic|_%(and_coptic|extended)|extended)?|antha))|s%(h%(orthand%( format controls|_format_controls|formatcontrols)|a%(vian|rada))|u%(ndanese%(supplement|[ _]supplement)?|p%(erscripts%(_and_subscripts|andsubscripts| and subscripts)|plementa%(ry%(_private_use_area_[ab]|privateusearea\-[ab]| private use area\-[ab])|l%( %(mathematical operators|symbols and pictographs|punctuation|arrows\-[acb])|symbolsandpictographs|mathematicaloperators|punctuation|arrows\-[acb]|_%(arrows_[acb]|symbols_and_pictographs|mathematical_operators|punctuation))))|tton%(signwriting|[_ ]signwriting))|i%(nhala%( archaic numbers|archaicnumbers|_archaic_numbers)?|ddham)|y%(loti%([_ ]nagri|nagri)|mbols%( %(for legacy computing|and pictographs extended\-a)|forlegacycomputing|andpictographsextended\-a|_%(and_pictographs_extended_a|for_legacy_computing))|riac%(supplement|[ _]supplement)?)|p%(acing%(_modifier_letters| modifier letters|modifierletters)|ecials)|a%(maritan|urashtra)|o%(yombo|gdian|ra%(sompeng|[ _]sompeng))|mall%(kanaextension| %(kana extension|form variants)|_%(kana_extension|form_variants)|formvariants))|y%(i%(syllables|%([_ ]%(syllables|radicals))|radicals|jing%(hexagramsymbols| hexagram symbols|_hexagram_symbols))|ezidi)|p%(h%(o%(enician|netic%( extensions%( supplement)?|extensions%(supplement)?|_extensions%(_supplement)?))|a%(istos%([ _]disc|disc)|gs[_\-]pa))|laying%(cards|[_ ]cards)|rivate%(usearea| use area|_use_area)|a%(hawh%(hmong|[_ ]hmong)|u%(_cin_hau|cinhau| cin hau)|lmyrene)|salter%(pahlavi|[ _]pahlavi))|e%(l%(basan|ymaic)|arly%(_dynastic_cuneiform|dynasticcuneiform| dynastic cuneiform)|moticons|gyptian%(hieroglyph%(formatcontrols|s)| hieroglyph%( format controls|s)|_hieroglyph%(_format_controls|s))|nclosed%( %(cjk letters and months|ideographic supplement|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|thiopic%(supplement|_%(supplement|extended%(_a)?)| %(supplement|extended%(\-a)?)|extended%(\-a)?)?)|r%(u%(nic|mi%(numeralsymbols| numeral symbols|_numeral_symbols))|ejang)|d%(o%(gra|mino%([ _]tiles|tiles))|e%(seret|vanagari%([ _]extended|extended)?)|uployan|i%(ngbats|ves%([_ ]akuru|akuru)))|m%(e%(defaidrin|nde%([ _]kikakui|kikakui)|etei%(mayek%(extensions)?|_mayek%(_extensions)?| mayek%( extensions)?)|roitic%(hieroglyphs|%([_ ]%(hieroglyphs|cursive))|cursive))|o%(ngolian%(supplement|[ _]supplement)?|di%(fier%(_tone_letters| tone letters|toneletters))?)|ro|u%(ltani|sical%([_ ]symbols|symbols))|i%(ao|scellaneous%(technical|symbols%(and%(pictographs|arrows))?|mathematicalsymbols\-[ab]| %(technical|mathematical symbols\-[ab]|symbols%( and %(pictographs|arrows))?)|_%(technical|symbols%(_and_%(pictographs|arrows))?|mathematical_symbols_[ab])))|yanmar%( extended\-[ab]|extended\-[ab]|_extended_[ab])?|a%(h%(ajani|jong%([ _]tiles|tiles))|rchen|n%(daic|ichaean)|yan%([_ ]numerals|numerals)|saram%(gondi|[_ ]gondi)|layalam|thematical%(alphanumericsymbols| %(alphanumeric symbols|operators)|_%(alphanumeric_symbols|operators)|operators)|kasar))|o%(s%(age|manya)|ttoman%(siyaqnumbers|_siyaq_numbers| siyaq numbers)|r%(namental%([ _]dingbats|dingbats)|iya)|ptical%( character recognition|_character_recognition|characterrecognition)|gham|l%([ _]chiki|d%(hungarian| %(hungarian|so%(uth arabian|gdian)|per%(mic|sian)|north arabian|italic|turkic)|per%(mic|sian)|so%(utharabian|gdian)|italic|turkic|_%(hungarian|north_arabian|so%(gdian|uth_arabian)|per%(mic|sian)|italic|turkic)|northarabian)|chiki))|n%(ew%(_tai_lue|a|tailue| tai lue)|ko|yiakeng%( puachue hmong|puachuehmong|_puachue_hmong)|a%(bataean|ndinagari)|u%(shu|mber%(forms|[ _]forms)))|b%(u%(ginese|hid)|a%(s%(sa%([ _]vah|vah)|ic%([ _]latin|latin))|linese|mum%(supplement|[ _]supplement)?|tak)|ra%(hmi|ille%(patterns|[_ ]patterns))|o%(x%([ _]drawing|drawing)|pomofo%([ _]extended|extended)?)|lock%([ _]elements|elements)|haiksuki|yzantine%( musical symbols|musicalsymbols|_musical_symbols)|engali)|l%(i%(mbu|near%(a| %(a|b %(ideograms|syllabary))|b%(ideograms|syllabary)|_%(a|b_%(ideograms|syllabary)))|su%(supplement|[ _]supplement)?)|a%(tin%(extended%(\-[dacbe]|additional)|_%(extended_%([dcbe]|a%(dditional)?)|1_supplement)|\-1%(supplement| supplement)| extended%(\-[dacbe]| additional))|o)|e%(tterlike%([_ ]symbols|symbols)|pcha)|ow%([_ ]surrogates|surrogates)|y[cd]ian)|k%(h%(aroshthi|ojki|mer%([_ ]symbols|symbols)?|udawadi|itan%( small script|smallscript|_small_script))|a%(takana%(_phonetic_extensions|phoneticextensions| phonetic extensions)?|n%(gxi%([_ ]radicals|radicals)|a%(extended\-a|supplement| %(extended\-a|supplement)|_%(supplement|extended_a))|bun|nada)|ithi|yah%([ _]li|li)))|wa%(ncho|rang%(citi|[ _]citi))|t%(elugu|ransport%( and map symbols|_and_map_symbols|andmapsymbols)|i%(rhuta|betan|finagh)|a%(mil%(supplement|[ _]supplement)?|kri|ngut%(supplement|%([ _]%(supplement|components))|components)?|i%(xuanjingsymbols|_%(le|xuan_jing_symbols|tham|viet)|le| %(xuan jing symbols|le|tham|viet)|tham|viet)|g%(alog|s|banwa))|ha%(i|ana))|a%(l%(chemical%([_ ]symbols|symbols)|phabetic%( presentation forms|_presentation_forms|presentationforms))|n%(cient%(_%(greek_%(musical_notation|numbers)|symbols)|greek%(numbers|musicalnotation)| %(greek %(numbers|musical notation)|symbols)|symbols)|atolian%([ _]hieroglyphs|hieroglyphs))|dlam|r%(menian|abic%(extended\-a|mathematicalalphabeticsymbols|supplement|_%(presentation_forms_[ab]|supplement|extended_a|mathematical_alphabetic_symbols)| %(extended\-a|mathematical alphabetic symbols|supplement|presentation forms\-[ab])|presentationforms\-[ab])?|rows)|egean%(numbers|[ _]numbers)|vestan|hom)|u%(garitic|nified%(canadianaboriginalsyllabics%(extended)?|_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?))|v%(a%(i|riation%( selectors%( supplement)?|selectors%(supplement)?|_selectors%(_supplement)?))|e%(rtical%(forms|[ _]forms)|dic%([ _]extensions|extensions))))\}" contained display
syntax match clojureRegexpPredefinedCharClass "\v%(\\[dDsSwW]|\.)" contained display
syntax cluster clojureRegexpCharPropertyClasses contains=clojureRegexpPosixCharClass,clojureRegexpJavaCharClass,clojureRegexpUnicodeCharClass
@@ -136,7 +134,7 @@ syntax match clojureRegexpBoundary "[$^]" contained display
syntax match clojureRegexpQuantifier "[?*+][?+]\=" contained display
syntax match clojureRegexpQuantifier "\v\{\d+%(,|,\d+)?}\??" contained display
syntax match clojureRegexpOr "|" contained display
-syntax match clojureRegexpBackRef "\v\\%([1-9]\d*|k\<[a-zA-Z]+\>)" contained display
+syntax match clojureRegexpBackRef "\v\\%([1-9]\d*|k\<[a-zA-z]+\>)" contained display
" Mode modifiers, mode-modified spans, lookaround, regular and atomic
" grouping, and named-capturing.
@@ -148,13 +146,13 @@ syntax match clojureRegexpMod "\v\(@<=\?\<[a-zA-Z]+\>" contained display
syntax region clojureRegexpGroup start="(" skip=/\\\\\|\\)/ end=")" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses
syntax region clojureRegexp start=/\#"/ skip=/\\\\\|\\"/ end=/"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend
-syntax keyword clojureCommentTodo contained FIXME XXX TODO FIXME: XXX: TODO:
+syntax keyword clojureCommentTodo contained FIXME XXX TODO BUG NOTE HACK FIXME: XXX: TODO: BUG: NOTE: HACK:
syntax match clojureComment ";.*$" contains=clojureCommentTodo,@Spell
syntax match clojureComment "#!.*$"
" -*- TOP CLUSTER -*-
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/f8594e7030cdfb0b7990ac92953c77a08a7220f0/clj/src/vim_clojure_static/generate.clj
syntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVarArg,clojureVariable,clojureVector
syntax region clojureSexp matchgroup=clojureParen start="(" end=")" contains=@clojureTop fold
diff --git a/runtime/syntax/conf.vim b/runtime/syntax/conf.vim
index 9b8a6361bc..6a78ef8c6e 100644
--- a/runtime/syntax/conf.vim
+++ b/runtime/syntax/conf.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: generic configure file
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Jun 20
+" Last Change: 2021 May 01
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -10,8 +10,8 @@ endif
syn keyword confTodo contained TODO FIXME XXX
" Avoid matching "text#text", used in /etc/disktab and /etc/gettytab
-syn match confComment "^#.*" contains=confTodo
-syn match confComment "\s#.*"ms=s+1 contains=confTodo
+syn match confComment "^#.*" contains=confTodo,@Spell
+syn match confComment "\s#.*"ms=s+1 contains=confTodo,@Spell
syn region confString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
syn region confString start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline
diff --git a/runtime/syntax/cpp.vim b/runtime/syntax/cpp.vim
index 9cb0860e84..ed38913f29 100644
--- a/runtime/syntax/cpp.vim
+++ b/runtime/syntax/cpp.vim
@@ -2,13 +2,16 @@
" Language: C++
" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp)
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
-" Last Change: 2017 Jun 05
+" Last Change: 2021 Jan 12
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
+" inform C syntax that the file was included from cpp.vim
+let b:filetype_in_cpp_family = 1
+
" Read the C syntax to start with
runtime! syntax/c.vim
unlet b:current_syntax
@@ -42,6 +45,8 @@ if !exists("cpp_no_cpp11")
syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE
syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE
syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
+ syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*<"me=e-1
+ syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*$"
endif
" C++ 14 extensions
@@ -53,6 +58,21 @@ if !exists("cpp_no_cpp14")
syn case match
endif
+" C++ 20 extensions
+if !exists("cpp_no_cpp20")
+ syn keyword cppStatement co_await co_return co_yield requires
+ syn keyword cppStorageClass consteval constinit
+ syn keyword cppStructure concept
+ syn keyword cppType char8_t
+ syn keyword cppModule import module export
+endif
+
+" C++ 17 extensions
+if !exists("cpp_no_cpp17")
+ syn match cppCast "\<reinterpret_pointer_cast\s*<"me=e-1
+ syn match cppCast "\<reinterpret_pointer_cast\s*$"
+endif
+
" The minimum and maximum operators in GNU C++
syn match cppMinMax "[<>]?"
@@ -71,6 +91,7 @@ hi def link cppConstant Constant
hi def link cppRawStringDelimiter Delimiter
hi def link cppRawString String
hi def link cppNumber Number
+hi def link cppModule Include
let b:current_syntax = "cpp"
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim
index eeb990215d..b4cb6489e6 100644
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -3,7 +3,7 @@
" Maintainer: Nick Jensen <nickspoon@gmail.com>
" Former Maintainers: Anduin Withers <awithers@anduin.com>
" Johannes Zellner <johannes@zellner.org>
-" Last Change: 2019-08-01
+" Last Change: 2020-11-23
" Filenames: *.cs
" License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
@@ -18,7 +18,6 @@ endif
let s:save_cpo = &cpoptions
set cpoptions&vim
-
syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
syn keyword csStorage delegate enum interface namespace struct
syn keyword csRepeat break continue do for foreach goto return while
@@ -27,7 +26,7 @@ syn keyword csLabel case default
syn match csOperatorError display +::+
syn match csGlobal display +global::+
" user labels (see [1] 8.6 Statements)
-syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
+syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+
syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
syn keyword csConstant false null true
syn keyword csException try catch finally throw when
@@ -39,9 +38,10 @@ syn keyword csUnsupportedStatement add remove value
syn keyword csUnspecifiedKeyword explicit implicit
" Contextual Keywords
-syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
-syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
-syn match csContextualStatement /\<\(get\|set\)\(;\|[[:space:]\n]*{\)/me=s+3
+syn match csContextualStatement /\<yield[[:space:]\n]\+\%(return\|break\)/me=s+5
+syn match csContextualStatement /\<partial[[:space:]\n]\+\%(class\|struct\|interface\)/me=s+7
+syn match csContextualStatement /\<\%(get\|set\)\%(;\|[[:space:]\n]*{\)/me=s+3
+syn match csContextualStatement /\<\%(get\|set\)\s*=>/me=s+3
syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
" Operators
@@ -97,9 +97,11 @@ syn match csXmlComment "///.*$" contains=csXmlCommentLeader,@csXml,@Spell keepen
syn include @csXml syntax/xml.vim
hi def link xmlRegion Comment
+" Since syntax/xml.vim contains `syn spell toplevel`, we need to set it back to `default` here.
+syn spell default
" [1] 9.5 Pre-processing directives
-syn region csPreCondit start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" skip="\\$" end="$" contains=csComment keepend
+syn region csPreCondit start="^\s*#\s*\%(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\|pragma\)\>" skip="\\$" end="$" contains=csComment keepend
syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" end="^\s*#\s*endregion" transparent fold contains=TOP
syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
@@ -118,25 +120,27 @@ syn match csSpecialError "\\." contained
syn match csSpecialCharError "[^']" contained
" [1] 9.4.4.4 Character literals
syn match csSpecialChar +\\["\\'0abfnrtvx]+ contained display
+syn match csUnicodeNumber +\\x\x\{2,4}+ contained contains=csUnicodeSpecifier display
syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
syn match csUnicodeNumber +\\U\x\{8}+ contained contains=csUnicodeSpecifier display
syn match csUnicodeSpecifier +\\[uU]+ contained display
syn region csString matchgroup=csQuote start=+"+ end=+"+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
-syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError display
+syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
syn match csCharacter "'\\''" contains=csSpecialChar display
syn match csCharacter "'[^\\]'" display
syn match csNumber "\<0[0-7]*[lL]\=\>" display
-syn match csNumber "\<0[xX]\x\+[lL]\=\>" display
-syn match csNumber "\<\d\+[lL]\=\>" display
-syn match csNumber "\<\d\+\.\d*\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
-syn match csNumber "\.\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
-syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" display
-syn match csNumber "\<\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\>" display
+syn match csNumber "\<0[xX][[:xdigit:]_]\+[lL]\=\>" display
+syn match csNumber "\<0[bB][01_]\+[lL]\=\>" display
+syn match csNumber "\<[[:digit:]_]\+[lL]\=\>" display
+syn match csNumber "\<[[:digit:]_]\+\.[[:digit:]_]*\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\=" display
+syn match csNumber "\.[[:digit:]_]\+\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\=" display
+syn match csNumber "\<[[:digit:]_]\+[eE][-+]\=[[:digit:]_]\+[fFdDmM]\=\>" display
+syn match csNumber "\<[[:digit:]_]\+\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\>" display
-syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ end=+$+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
-syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBracketed,csInterpolationAlign,csInterpolationFormat
+syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
syn match csEscapedInterpolation "{{" transparent contains=NONE display
syn match csEscapedInterpolation "}}" transparent contains=NONE display
syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=csNumber,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
@@ -150,9 +154,10 @@ syn match csQuoteError +@$"+he=s+2,me=s+2
syn region csInterVerbString matchgroup=csQuote start=+\$@"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
-syn region csBracketed matchgroup=csParens start=+(+ end=+)+ contained transparent contains=@csAll,csBracketed
+syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed
+syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed
-syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csInterpolatedString,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csType,csUnicodeNumber,csUnicodeSpecifier,csVerbatimString,csUserType,csUserIdentifier,csUserInterface,csUserMethod
+syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csType,csUnicodeNumber,csUnicodeSpecifier,csInterpolatedString,csVerbatimString,csInterVerbString,csUserType,csUserIdentifier,csUserInterface,csUserMethod
" The default highlighting.
hi def link csType Type
diff --git a/runtime/syntax/csh.vim b/runtime/syntax/csh.vim
index c134aa7ef3..6a056c7004 100644
--- a/runtime/syntax/csh.vim
+++ b/runtime/syntax/csh.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: C-shell (csh)
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 13
+" Version: 14
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH
" quit when a syntax file was already loaded
diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim
index 73bbd8d03f..19326d01e4 100644
--- a/runtime/syntax/css.vim
+++ b/runtime/syntax/css.vim
@@ -1,11 +1,12 @@
" Vim syntax file
" Language: Cascading Style Sheets
" Previous Contributor List:
+" Jules Wang <w.jq0722@gmail.com>
" Claudio Fleiner <claudio@fleiner.com> (Maintainer)
" Yeti (Add full CSS2, HTML4 support)
" Nikolai Weibull (Add CSS2 support)
-" URL: https://github.com/JulesWang/css.vim
-" Maintainer: Jules Wang <w.jq0722@gmail.com>
+" URL: https://github.com/jsit/css.vim
+" Maintainer: Jay Sitter <jay@jaysitter.com>
" Last Change: 2019 Jul. 29
" quit when a syntax file was already loaded
@@ -60,7 +61,7 @@ syn match cssClassName "\.-\=[A-Za-z_][A-Za-z0-9_-]*" contains=cssClassNameDot
syn match cssClassNameDot contained '\.'
try
-syn match cssIdentifier "#[A-Za-z-_@][A-Za-z-0-9_@-]*"
+syn match cssIdentifier "#[A-Za-zÀ-ÿ_@][A-Za-zÀ-ÿ0-9_@-]*"
catch /^.*/
syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
endtry
@@ -68,7 +69,7 @@ endtry
" digits
syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators
syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators
-syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\)\>" contains=cssUnitDecorators
+syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\|ch\)\>" contains=cssUnitDecorators
syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=%" contains=cssUnitDecorators
syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)\>" contains=cssUnitDecorators
syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)\>" contains=cssUnitDecorators
@@ -128,12 +129,14 @@ syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y\|Z\)\=\|translate\(3d\|X\|Y\|Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y\|Z\)\=\|perspective\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(blur\|brightness\|contrast\|drop-shadow\|grayscale\|hue-rotate\|invert\|opacity\|saturate\|sepia\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at
syn match cssFunctionComma contained ","
" Common Prop and Attr
syn keyword cssCommonAttr contained auto none inherit all default normal
syn keyword cssCommonAttr contained top bottom center stretch hidden visible
+syn match cssCommonAttr contained "\<\(max-\|min-\|fit-\)content\>"
"------------------------------------------------
" CSS Animations
" http://www.w3.org/TR/css3-animations/
@@ -646,5 +649,5 @@ endif
let &cpo = s:cpo_save
unlet s:cpo_save
-" vim: ts=8
+" vim: ts=8
diff --git a/runtime/syntax/cvs.vim b/runtime/syntax/cvs.vim
index 3eac191637..e1e413fcf9 100644
--- a/runtime/syntax/cvs.vim
+++ b/runtime/syntax/cvs.vim
@@ -1,7 +1,6 @@
" Vim syntax file
" Language: CVS commit file
-" Maintainer: Matt Dunford (zoot@zotikos.com)
-" URL: http://www.zotikos.com/downloads/cvs.vim
+" Maintainer: Matt Dunford (zenmatic@gmail.com)
" Last Change: Sat Nov 24 23:25:11 CET 2001
" quit when a syntax file was already loaded
diff --git a/runtime/syntax/dart.vim b/runtime/syntax/dart.vim
new file mode 100644
index 0000000000..d1c2bf2158
--- /dev/null
+++ b/runtime/syntax/dart.vim
@@ -0,0 +1,90 @@
+" Vim syntax file
+"
+" Language: Dart
+" Maintainer: Eugene 'pr3d4t0r' Ciurana <dart.syntax AT cime.net >
+" Source: https://github.com/pr3d4t0r/dart-vim-syntax
+" Last Update: 2019 Oct 19
+"
+" License: Vim is Charityware. dart.vim syntax is Charityware.
+" (c) Copyright 2019 by Eugene Ciurana / pr3d4t0r. Licensed
+" under the standard VIM LICENSE - Vim command :help uganda.txt
+" for details.
+"
+" Questions, comments: <dart.syntax AT cime.net>
+" https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r
+"
+" vim: set fileencoding=utf-8:
+
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+
+syn keyword dartCommentTodo contained TODO FIXME XXX TBD
+syn match dartLineComment "//.*" contains=dartTodo,@Spell
+syn match dartCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
+syn region dartComment start="/\*" end="\*/" contains=@Spell,dartTodo
+syn keyword dartReserved assert async await class const export extends external final hide import implements interface library mixin on show super sync yield
+syn match dartNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+
+
+syn keyword dartBoolean false true
+syn keyword dartBranch break continue
+syn keyword dartConditional if else switch
+syn keyword dartException catch finally rethrow throw try
+syn keyword dartIdentifier abstract covariant deferred dynamic factory Function operator part static this typedef var
+syn keyword dartLabel case default
+syn keyword dartNull null
+syn keyword dartOperator is new
+syn keyword dartRepeat for do in while
+syn keyword dartStatement return with
+syn keyword dartType bool double enum int String StringBuffer void
+syn keyword dartTodo contained TODO FIXME XXX
+
+
+syn match dartEscape contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn match dartSpecialError contained "\\."
+syn match dartStrInterpol contained "\${[\x, _]*\}"
+
+syn region dartDQString start=+"+ end=+"+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell
+syn region dartSQString start=+'+ end=+'+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell
+
+syn match dartBraces "[{}\[\]]"
+syn match dartParens "[()]"
+
+
+syn sync fromstart
+syn sync maxlines=100
+
+
+hi def link dartBoolean Boolean
+hi def link dartBranch Conditional
+hi def link dartComment Comment
+hi def link dartConditional Conditional
+hi def link dartDQString String
+hi def link dartEscape SpecialChar
+hi def link dartException Exception
+hi def link dartIdentifier Identifier
+hi def link dartLabel Label
+hi def link dartLineComment Comment
+hi def link dartNull Keyword
+hi def link dartOperator Operator
+hi def link dartRepeat Repeat
+hi def link dartReserved Keyword
+hi def link dartSQString String
+hi def link dartSpecialError Error
+hi def link dartStatement Statement
+hi def link dartStrInterpol Special
+hi def link dartTodo Todo
+hi def link dartType Type
+
+
+let b:current_syntax = "dart"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
diff --git a/runtime/syntax/dcl.vim b/runtime/syntax/dcl.vim
index c0d0ebcf95..7e9741efc7 100644
--- a/runtime/syntax/dcl.vim
+++ b/runtime/syntax/dcl.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: DCL (Digital Command Language - vms)
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Mar 26, 2019
-" Version: 12
+" Version: 13
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_DCL
" quit when a syntax file was already loaded
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
index 9d6dfe96a5..220f184bc0 100644
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2019 Apr 21
+" Last Change: 2020 Nov 28
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Standard syntax initialization
@@ -17,11 +17,34 @@ syn case ignore
let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\='
let s:binNMU='binary-only=yes'
+let s:cpo = &cpo
+set cpo-=C
+let s:supported = [
+ \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
+ \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
+ \ 'trixie', 'sid', 'rc-buggy',
+ \
+ \ 'trusty', 'xenial', 'bionic', 'focal', 'groovy', 'hirsute', 'devel'
+ \ ]
+let s:unsupported = [
+ \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
+ \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
+ \
+ \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
+ \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
+ \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
+ \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
+ \ 'disco', 'eoan'
+ \ ]
+let &cpo=s:cpo
+
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
-syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+exe 'syn match debchangelogTarget contained "\%( \%('.join(s:supported, '\|').'\)\>[-[:alnum:]]*\)\+"'
+exe 'syn match debchangelogUnsupportedTarget contained "\%( \%('.join(s:unsupported, '\|').'\)\>[-[:alnum:]]*\)\+"'
+syn match debchangelogUnreleased contained / UNRELEASED/
syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
@@ -29,7 +52,7 @@ syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+"
syn match debchangelogEmail contained "<.\{-}>"
" Define the entries that make up the changelog
-syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogVersion,debchangelogBinNMU oneline
+syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogUnsupportedTarget,debchangelogUnreleased,debchangelogVersion,debchangelogBinNMU oneline
syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline
syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline
@@ -44,6 +67,8 @@ hi def link debchangelogOtherKV Identifier
hi def link debchangelogName Comment
hi def link debchangelogVersion Identifier
hi def link debchangelogTarget Identifier
+hi def link debchangelogUnsupportedTarget Identifier
+hi def link debchangelogUnreleased WarningMsg
hi def link debchangelogEmail Special
let b:current_syntax = 'debchangelog'
diff --git a/runtime/syntax/debcontrol.vim b/runtime/syntax/debcontrol.vim
index 9085cd01d5..25fc252de6 100644
--- a/runtime/syntax/debcontrol.vim
+++ b/runtime/syntax/debcontrol.vim
@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2018 Aug 11
+" Last Change: 2020 Oct 26
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim
" Standard syntax initialization
@@ -47,22 +47,24 @@ exe 'syn keyword debcontrolArchitecture contained '. join(s:pairs)
unlet s:kernels s:archs s:pairs
+" Keep in sync with https://metadata.ftp-master.org/sections.822
+" curl -q https://metadata.ftp-master.debian.org/sections.822 2>/dev/null| grep-dctrl -n --not -FSection -sSection / -
let s:sections = [
\ 'admin', 'cli-mono', 'comm', 'database', 'debian-installer', 'debug'
\, 'devel', 'doc', 'editors', 'education', 'electronics', 'embedded'
- \, 'fonts', 'games', 'gnome', 'gnustep', 'gnu-r', 'golang', 'graphics'
+ \, 'fonts', 'games', 'gnome', 'gnu-r', 'gnustep', 'golang', 'graphics'
\, 'hamradio', 'haskell', 'httpd', 'interpreters', 'introspection'
- \, 'java\%(script\)\=', 'kde', 'kernel', 'libs', 'libdevel', 'lisp'
- \, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net'
- \, 'news', 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python'
- \, 'ruby', 'rust', 'science', 'shells', 'sound', 'text', 'tex'
+ \, 'java', 'javascript', 'kde', 'kernel', 'libdevel', 'libs', 'lisp'
+ \, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net', 'news'
+ \, 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python', 'raku'
+ \, 'ruby', 'rust', 'science', 'shells', 'sound', 'tasks', 'tex', 'text'
\, 'utils', 'vcs', 'video', 'web', 'x11', 'xfce', 'zope'
\ ]
syn keyword debcontrolMultiArch contained no foreign allowed same
syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
syn keyword debcontrolPriority contained extra important optional required standard
-exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\%('.join(s:sections, '\|').'\)"'
+exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\<\%('.join(s:sections, '\|').'\)\>"'
syn keyword debcontrolPackageType contained udeb deb
syn match debcontrolVariable contained "\${.\{-}}"
syn keyword debcontrolDmUpload contained yes
diff --git a/runtime/syntax/debcopyright.vim b/runtime/syntax/debcopyright.vim
index c85ca372d0..c87b876eea 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: 2018 Feb 05
+" Last Change: 2019 Sep 07
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/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\): *"
+syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-Excluded\%(-[-a-zA-Z0-9]\+\)\=\): *"
syn match debcopyrightEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
syn match debcopyrightEmail "<.\{-}>"
syn match debcopyrightComment "^#.*$" contains=@Spell
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
index f90476fe25..2352466a3b 100644
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2019 Apr 21
+" Last Change: 2020 Nov 28
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
" Standard syntax initialization
@@ -23,19 +23,20 @@ let s:cpo = &cpo
set cpo-=C
let s:supported = [
\ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
- \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
- \ 'sid', 'rc-buggy',
+ \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
+ \ 'trixie', 'sid', 'rc-buggy',
\
- \ 'trusty', 'xenial', 'bionic', 'cosmic', 'disco', 'eoan', 'devel'
+ \ 'trusty', 'xenial', 'bionic', 'focal', 'groovy', 'hirsute', 'devel'
\ ]
let s:unsupported = [
\ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
- \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze',
+ \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
\
\ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
\ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
\ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
- \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful'
+ \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
+ \ 'disco', 'eoan'
\ ]
let &cpo=s:cpo
diff --git a/runtime/syntax/desktop.vim b/runtime/syntax/desktop.vim
index 915107887a..2c1102238d 100644
--- a/runtime/syntax/desktop.vim
+++ b/runtime/syntax/desktop.vim
@@ -1,107 +1,267 @@
" Vim syntax file
-" Language: .desktop, .directory files
-" according to freedesktop.org specification 0.9.4
-" http://pdx.freedesktop.org/Standards/desktop-entry-spec/desktop-entry-spec-0.9.4.html
-" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2016 Apr 02
-" (added "Keywords")
-" Version Info: desktop.vim 0.9.4-1.2
+" Language: XDG desktop entry
+" Filenames: *.desktop, *.directory
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
+" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
+" Last Change: 2020-06-11
+" Version Info: desktop.vim 1.5
+" References:
+" - https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html (2020-04-27)
+" - https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-0.11.html (2006-02-07)
" quit when a syntax file was already loaded
if exists("b:current_syntax")
- finish
+ finish
endif
+let s:cpo_save = &cpo
+set cpo&vim
+syn case match
+
+" Variable {{{1
" This syntax file can be used to all *nix configuration files similar to dos
-" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode. But
-" you can also enforce strict following of freedesktop.org standard for
-" .desktop and .directory files . Set (eg. in vimrc)
-" let enforce_freedesktop_standard = 1
-" and nonstandard extensions not following X- notation will not be highlighted.
-if exists("enforce_freedesktop_standard")
- let b:enforce_freedesktop_standard = 1
+" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode.
+" By default strict following of freedesktop.org standard is enforced.
+" To highlight nonstandard extensions that does not begin with X-, set
+" let g:desktop_enable_nonstd = v:true
+" Note that this may cause wrong highlight.
+" To highlight KDE-reserved features, set
+" let g:desktop_enable_kde = v:true
+" g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
+
+if exists("g:desktop_enable_nonstd") && g:desktop_enable_nonstd
+ let s:desktop_enable_nonstd = v:true
else
- let b:enforce_freedesktop_standard = 0
+ let s:desktop_enable_nonstd = v:false
endif
-" case on
-syn case match
+if exists("g:desktop_enable_kde") && g:desktop_enable_kde || s:desktop_enable_nonstd
+ let s:desktop_enable_kde = v:true
+else
+ let s:desktop_enable_kde = v:false
+endif
+
+" Comment {{{1
+syn match dtComment /^#.*$/
-" General
-if b:enforce_freedesktop_standard == 0
- syn match dtNotStLabel "^.\{-}=\@=" nextgroup=dtDelim
+" Error {{{1
+syn match dtError /\%(^\s.*\|\s\+$\)/
+
+" Group Header {{{1
+" ASCII printable characters except for brackets [ (0x5B) and ] (0x5D)
+syn match dtGroup /^\[[\x20-\x5A\x5C\x5E-\x7E]\+\]$/
+
+" Entries {{{1
+syn match dtDelim /=/ contained
+" lang_territory.codeset@modifier
+syn match dtLocaleSuffix
+ \ /\[\%(C\|POSIX\|[a-z]\{2,4}\%(_[A-Z0-9]\{2,3}\)\?\)\%(\.[A-Za-z0-9_-]\+\)\?\%(@[A-Za-z]\+\)\?\]\ze\s*=/
+ \ contained
+
+" Boolean Value {{{2
+syn match dtBoolean
+ \ /^\%(DBusActivatable\|Hidden\|NoDisplay\|PrefersNonDefaultGPU\|StartupNotify\|Terminal\)\s*=\s*\%(true\|false\)/
+ \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
+syn keyword dtBooleanKey
+ \ DBusActivatable Hidden NoDisplay PrefersNonDefaultGPU StartupNotify Terminal
+ \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+ syn match dtBoolean
+ \ /^ReadOnly\s*=\s*\%(true\|false\)/
+ \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
+ syn keyword dtBooleanKey
+ \ ReadOnly
+ \ contained nextgroup=dtDelim
endif
+syn keyword dtBooleanValue true false contained
-syn match dtGroup /^\s*\[.*\]/
-syn match dtComment /^\s*#.*$/
-syn match dtDelim /=/ contained
+" Numeric Value {{{2
+" icon theme
+syn match dtNumeric /^\%(MaxSize\|MinSize\|Size\|Threshold\)\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
+syn keyword dtNumericKey
+ \ MaxSize MinSize Size Threshold
+ \ contained nextgroup=dtDelim
-" Locale
-syn match dtLocale /^\s*\<\(Name\|GenericName\|Comment\|SwallowTitle\|Icon\|UnmountIcon\)\>.*/ contains=dtLocaleKey,dtLocaleName,dtDelim transparent
-syn keyword dtLocaleKey Name GenericName Comment SwallowTitle Icon UnmountIcon nextgroup=dtLocaleName containedin=dtLocale
-syn match dtLocaleName /\(\[.\{-}\]\s*=\@=\|\)/ nextgroup=dtDelim containedin=dtLocale contained
+if s:desktop_enable_kde
+ syn match dtNumeric /^InitialPreference\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
+ syn keyword dtNumericKey
+ \ InitialPreference
+ \ contained nextgroup=dtDelim
+endif
+
+syn match dtNumericDecimal /\<\d\+$/ contained
-" Numeric
-syn match dtNumeric /^\s*\<Version\>/ contains=dtNumericKey,dtDelim
-syn keyword dtNumericKey Version nextgroup=dtDelim containedin=dtNumeric contained
+" String Value {{{2
+syn match dtString
+ \ /^\%(Actions\|Implements\|MimeType\|NotShowIn\|OnlyShowIn\|Path\|StartupWMClass\|URL\)\s*=.*\S/
+ \ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey
+ \ Actions Implements MimeType NotShowIn OnlyShowIn Path StartupWMClass URL Version
+ \ contained nextgroup=dtDelim
-" Boolean
-syn match dtBoolean /^\s*\<\(StartupNotify\|ReadOnly\|Terminal\|Hidden\|NoDisplay\)\>.*/ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
-syn keyword dtBooleanKey StartupNotify ReadOnly Terminal Hidden NoDisplay nextgroup=dtDelim containedin=dtBoolean contained
-syn keyword dtBooleanValue true false containedin=dtBoolean contained
+" icon theme
+syn match dtString
+ \ /^\%(Context\|Directories\|Example\|Inherits\)\s*=.*\S/
+ \ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey
+ \ Context Directories Example Inherits
+ \ contained nextgroup=dtDelim
-" String
-syn match dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Keywords\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
-syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Keywords Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
+if s:desktop_enable_kde
+ syn match dtString
+ \ /^\%(Dev\|DocPath\|FSType\|MountPoint\|ServiceTypes\)\s*=.*\S/
+ \ contains=dtStringKey,dtDelim transparent
+ syn keyword dtStringKey
+ \ Dev DocPath FSType MountPoint ServiceTypes
+ \ contained nextgroup=dtDelim
+endif
-" Exec
-syn match dtExec /^\s*\<\(Exec\|TryExec\|SwallowExec\)\>.*/ contains=dtExecKey,dtDelim,dtExecParam transparent
-syn keyword dtExecKey Exec TryExec SwallowExec nextgroup=dtDelim containedin=dtExec contained
-syn match dtExecParam /%[fFuUnNdDickv]/ containedin=dtExec contained
+" Categories {{{3
+" https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry
+syn match dtCategories /^Categories\s*=.\+\S/ contains=dtCategoriesKey,dtDelim,dtCategoriesValue transparent
+syn keyword dtCategoriesKey
+ \ Categories
+ \ contained nextgroup=dtDelim
-" Type
-syn match dtType /^\s*\<Type\>.*/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
-syn keyword dtTypeKey Type nextgroup=dtDelim containedin=dtType contained
-syn keyword dtTypeValue Application Link FSDevice Directory containedin=dtType contained
+" Main Categories
+syn keyword dtCategoriesValue
+ \ Audio AudioVideo Development Education Game Graphics Network Office
+ \ Settings System Utility Video
+ \ contained
-" X-Addition
-syn match dtXAdd /^\s*X-.*/ contains=dtXAddKey,dtDelim transparent
-syn match dtXAddKey /^\s*X-.\{-}\s*=\@=/ nextgroup=dtDelim containedin=dtXAdd contains=dtXLocale contained
+" Additional Categories
+syn keyword dtCategoriesValue
+ \ BoardGame Chat Clock Geoscience Presentation 2DGraphics 3DGraphics
+ \ Accessibility ActionGame AdventureGame Amusement ArcadeGame Archiving
+ \ Art ArtificialIntelligence Astronomy AudioVideoEditing Biology
+ \ BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat
+ \ Chemistry Clock Compression ComputerScience ConsoleOnly Construction
+ \ ContactManagement Core DataVisualization Database Debugger
+ \ DesktopSettings Dialup Dictionary DiscBurning Documentation Economy
+ \ Electricity Electronics Email Emulator Engineering FileManager
+ \ FileTools FileTransfer Filesystem Finance FlowChart GNOME GTK
+ \ GUIDesigner Geography Geology Geoscience HamRadio HardwareSettings
+ \ History IDE IRCClient ImageProcessing InstantMessaging Java KDE
+ \ KidsGame Languages Literature LogicGame Math MedicalSoftware Midi
+ \ Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PDA
+ \ PackageManager ParallelComputing Photography Physics Player
+ \ Presentation Printing Profiling ProjectManagement Publishing Qt
+ \ RasterGraphics Recorder RemoteAccess RevisionControl Robotics
+ \ RolePlaying Scanning Science Security Sequencer Simulation Sports
+ \ SportsGame Spreadsheet StrategyGame TV Telephony TelephonyTools
+ \ TerminalEmulator TextEditor TextTools Translation Tuner VectorGraphics
+ \ VideoConference Viewer WebBrowser WebDevelopment WordProcessor
+ \ contained
-" Locale for X-Addition
-syn match dtXLocale /\[.\{-}\]\s*=\@=/ containedin=dtXAddKey contained
+" Reserved Category
+syn keyword dtCategoriesValue
+ \ Applet Screensaver Shell TrayIcon
+ \ contained
+
+" Exec/TryExec {{{3
+syn match dtExec /^\%(Exec\|TryExec\)\s*=.\+\S/ contains=dtExecKey,dtDelim,dtExecParam transparent
+syn keyword dtExecKey
+ \ Exec TryExec
+ \ contained nextgroup=dtDelim
+" code for file(s), URL(s), etc
+syn match dtExecParam /\s\zs%[fFuUick]\ze\%(\W\|$\)/ contained
+
+" Type {{{3
+syn match dtType /^Type\s*=\s*\S\+/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
+syn keyword dtTypeKey
+ \ Type
+ \ contained nextgroup=dtDelim
+syn keyword dtTypeValue
+ \ Application Directory Link
+ \ contained
+
+if s:desktop_enable_kde
+ syn keyword dtTypeValue
+ \ FSDevice Service ServiceType
+ \ contained
+endif
+
+
+" Version {{{3
+syn match dtVersion /^Version\s*=\s*\S\+/ contains=dtVersionKey,dtDelim,dtVersionValue transparent
+syn keyword dtVersionKey
+ \ Version
+ \ contained nextgroup=dtDelim
+syn match dtVersionValue /[0-9]\+\%(\.[0-9]\+\)\{1,2}$/ contained
+
+" Localestring Value {{{2
+syn match dtLocalestring
+ \ /^\%(Comment\|GenericName\|Keywords\|Name\)\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtLocalestringKey,dtLocaleSuffix,dtDelim transparent
+syn keyword dtLocalestringKey
+ \ Comment GenericName Keywords Name
+ \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
+
+" Iconstring Value {{{2
+syn match dtIconstring
+ \ /^Icon\s*=.*\S/
+ \ contains=dtIconstringKey,dtDelim transparent
+syn keyword dtIconstringKey
+ \ Icon
+ \ contained nextgroup=dtDelim skipwhite
+
+if s:desktop_enable_kde
+ syn match dtIconstring
+ \ /^UnmountIcon\>\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtIconstringKey,dtLocaleSuffix,dtDelim transparent
+ syn keyword dtIconstringKey
+ \ UnmountIcon
+ \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
+endif
+
+" X-Extension {{{2
+syn match dtXExtension /^X-[0-9A-Za-z-]*\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtXExtensionKey,dtLocaleSuffix,dtDelim transparent
+syn match dtXExtensionKey /^X-[0-9A-Za-z-]*/ contained nextgroup=dtLocaleSuffix,dtDelim
+
+" non standard {{{2
+if s:desktop_enable_nonstd
+ syn match dtNonStdLabel /^[0-9A-Za-z-]\+\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtNonStdLabelKey,dtLocaleSuffix,dtDelim transparent
+ syn match dtNonStdLabelKey /^[0-9A-Za-z-]\+/ contained nextgroup=dtLocaleSuffix,dtDelim
+endif
-" Locale for all
-syn match dtALocale /\[.\{-}\]\s*=\@=/ containedin=ALL
+" Highlight {{{1
+hi def link dtComment Comment
+hi def link dtError Error
+hi def link dtGroup Special
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+hi def link dtDelim Delimiter
+hi def link dtLocaleSuffix Identifier
-hi def link dtGroup Special
-hi def link dtComment Comment
-hi def link dtDelim String
+hi def link dtBooleanKey Type
+hi def link dtBooleanValue Boolean
-hi def link dtLocaleKey Type
-hi def link dtLocaleName Identifier
-hi def link dtXLocale Identifier
-hi def link dtALocale Identifier
+hi def link dtNumericKey Type
+hi def link dtNumericDecimal Number
-hi def link dtNumericKey Type
+hi def link dtStringKey Type
+hi def link dtCategoriesKey Type
+hi def link dtCategoriesValue Constant
+hi def link dtExecKey Type
+hi def link dtExecParam Special
+hi def link dtTypeKey Type
+hi def link dtTypeValue Constant
+hi def link dtVersionKey Type
+hi def link dtVersionValue Constant
-hi def link dtBooleanKey Type
-hi def link dtBooleanValue Constant
+hi def link dtLocalestringKey Type
-hi def link dtStringKey Type
+hi def link dtIconStringKey Type
-hi def link dtExecKey Type
-hi def link dtExecParam Special
-hi def link dtTypeKey Type
-hi def link dtTypeValue Constant
-hi def link dtNotStLabel Type
-hi def link dtXAddKey Type
+hi def link dtXExtensionKey Type
+hi def link dtNonStdLabelKey Type
+" Clean Up {{{1
let b:current_syntax = "desktop"
+let &cpo = s:cpo_save
-" vim:ts=8
+" vim:ts=8:sw=2:fdm=marker
diff --git a/runtime/syntax/diff.vim b/runtime/syntax/diff.vim
index b656cd97a6..408556ac13 100644
--- a/runtime/syntax/diff.vim
+++ b/runtime/syntax/diff.vim
@@ -2,7 +2,7 @@
" Language: Diff (context or unified)
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Translations by Jakson Alves de Aquino.
-" Last Change: 2016 Apr 02
+" Last Change: 2020 Dec 30
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -346,11 +346,18 @@ syn match diffLine "^---$"
syn match diffLine "^\d\+\(,\d\+\)\=[cda]\d\+\>.*"
syn match diffFile "^diff\>.*"
-syn match diffFile "^+++ .*"
syn match diffFile "^Index: .*"
syn match diffFile "^==== .*"
-syn match diffOldFile "^\*\*\* .*"
-syn match diffNewFile "^--- .*"
+
+if search('^@@ -\S\+ +\S\+ @@', 'nw', '', 100)
+ " unified
+ syn match diffOldFile "^--- .*"
+ syn match diffNewFile "^+++ .*"
+else
+ " context / old style
+ syn match diffOldFile "^\*\*\* .*"
+ syn match diffNewFile "^--- .*"
+endif
" Used by git
syn match diffIndexLine "^index \x\x\x\x.*"
diff --git a/runtime/syntax/dot.vim b/runtime/syntax/dot.vim
index 0fdd6ea080..68a0f57a98 100644
--- a/runtime/syntax/dot.vim
+++ b/runtime/syntax/dot.vim
@@ -1,16 +1,22 @@
-" Vim syntax file
" Language: Dot
" Filenames: *.dot
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: http://www.ocaml.info/vim/syntax/dot.vim
-" Last Change: 2011 May 17 - improved identifier matching + two new keywords
+" Last Change: 2021 Mar 24 - better attr + escape string matching, new keywords (Farbod Salamat-Zadeh)
+" 2011 May 17 - improved identifier matching + two new keywords
" 2001 May 04 - initial version
-" quit when a syntax file was already loaded
-if exists("b:current_syntax")
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
finish
endif
+let s:keepcpo = &cpo
+set cpo&vim
+
" Errors
syn match dotParErr ")"
syn match dotBrackErr "]"
@@ -29,39 +35,43 @@ syn keyword dotTodo contained TODO FIXME XXX
" Strings
syn region dotString start=+"+ skip=+\\\\\|\\"+ end=+"+
-" General keywords
-syn keyword dotKeyword digraph node edge subgraph
-
-" Graph attributes
-syn keyword dotType center layers margin mclimit name nodesep nslimit
-syn keyword dotType ordering page pagedir rank rankdir ranksep ratio
-syn keyword dotType rotate size
-
-" Node attributes
-syn keyword dotType distortion fillcolor fontcolor fontname fontsize
-syn keyword dotType height layer orientation peripheries regular
-syn keyword dotType shape shapefile sides skew width
+" Escape strings
+syn match dotEscString /\v\\(N|G|E|T|H|L)/ containedin=dotString
+syn match dotEscString /\v\\(n|l|r)/ containedin=dotString
-" Edge attributes
-syn keyword dotType arrowhead arrowsize arrowtail constraint decorateP
-syn keyword dotType dir headclip headlabel headport labelangle labeldistance
-syn keyword dotType labelfontcolor labelfontname labelfontsize
-syn keyword dotType minlen port_label_distance samehead sametail
-syn keyword dotType tailclip taillabel tailport weight
-
-" Shared attributes (graphs, nodes, edges)
-syn keyword dotType color
-
-" Shared attributes (graphs and edges)
-syn keyword dotType bgcolor label URL
-
-" Shared attributes (nodes and edges)
-syn keyword dotType fontcolor fontname fontsize layer style
+" General keywords
+syn keyword dotKeyword graph digraph subgraph node edge strict
+
+" Node, edge and graph attributes
+syn keyword dotType _background area arrowhead arrowsize arrowtail bb bgcolor
+ \ center charset class clusterrank color colorscheme comment compound
+ \ concentrate constraint Damping decorate defaultdist dim dimen dir
+ \ diredgeconstraints distortion dpi edgehref edgetarget edgetooltip
+ \ edgeURL epsilon esep fillcolor fixedsize fontcolor fontname fontnames
+ \ fontpath fontsize forcelabels gradientangle group head_lp headclip
+ \ headhref headlabel headport headtarget headtooltip headURL height href
+ \ id image imagepath imagepos imagescale inputscale K label label_scheme
+ \ labelangle labeldistance labelfloat labelfontcolor labelfontname
+ \ labelfontsize labelhref labeljust labelloc labeltarget labeltooltip
+ \ labelURL landscape layer layerlistsep layers layerselect layersep
+ \ layout len levels levelsgap lhead lheight lp ltail lwidth margin
+ \ maxiter mclimit mindist minlen mode model mosek newrank nodesep
+ \ nojustify normalize notranslate nslimit nslimit1 ordering orientation
+ \ outputorder overlap overlap_scaling overlap_shrink pack packmode pad
+ \ page pagedir pencolor penwidth peripheries pin pos quadtree quantum
+ \ rank rankdir ranksep ratio rects regular remincross repulsiveforce
+ \ resolution root rotate rotation samehead sametail samplepoints scale
+ \ searchsize sep shape shapefile showboxes sides size skew smoothing
+ \ sortv splines start style stylesheet tail_lp tailclip tailhref
+ \ taillabel tailport tailtarget tailtooltip tailURL target tooltip
+ \ truecolor URL vertices viewport voro_margin weight width xdotversion
+ \ xlabel xlp z
" Special chars
syn match dotKeyChar "="
syn match dotKeyChar ";"
syn match dotKeyChar "->"
+syn match dotKeyChar "--"
" Identifier
syn match dotIdentifier /\<\w\+\(:\w\+\)\?\>/
@@ -71,27 +81,41 @@ syn sync minlines=50
syn sync maxlines=500
" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
-
-hi def link dotParErr Error
-hi def link dotBraceErr Error
-hi def link dotBrackErr Error
-
-hi def link dotComment Comment
-hi def link dotTodo Todo
-
-hi def link dotParEncl Keyword
-hi def link dotBrackEncl Keyword
-hi def link dotBraceEncl Keyword
-
-hi def link dotKeyword Keyword
-hi def link dotType Type
-hi def link dotKeyChar Keyword
-
-hi def link dotString String
-hi def link dotIdentifier Identifier
-
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_dot_syntax_inits")
+ if version < 508
+ let did_dot_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink dotParErr Error
+ HiLink dotBraceErr Error
+ HiLink dotBrackErr Error
+
+ HiLink dotComment Comment
+ HiLink dotTodo Todo
+
+ HiLink dotParEncl Keyword
+ HiLink dotBrackEncl Keyword
+ HiLink dotBraceEncl Keyword
+
+ HiLink dotKeyword Keyword
+ HiLink dotType Type
+ HiLink dotKeyChar Keyword
+
+ HiLink dotString String
+ HiLink dotEscString Keyword
+ HiLink dotIdentifier Identifier
+
+ delcommand HiLink
+endif
let b:current_syntax = "dot"
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
" vim: ts=8
diff --git a/runtime/syntax/doxygen.vim b/runtime/syntax/doxygen.vim
index adc0c41dd6..cfd5452ee4 100644
--- a/runtime/syntax/doxygen.vim
+++ b/runtime/syntax/doxygen.vim
@@ -2,10 +2,10 @@
" Language: doxygen on top of c, cpp, idl, java, php
" Maintainer: Michael Geddes <vimmer@frog.wheelycreek.net>
" Author: Michael Geddes
-" Last Change: November 2017 (\throws by Candy Gumdrop)
-" Version: 1.27
+" Last Change: December 2020
+" Version: 1.30
"
-" Copyright 2004-2017 Michael Geddes
+" Copyright 2004-2020 Michael Geddes
" Please feel free to use, modify & distribute all or part of this script,
" providing this copyright message remains.
" I would appreciate being acknowledged in any derived scripts, and would
@@ -170,7 +170,7 @@ endif
fun! s:DxyCreateSmallSpecial( kword, name )
- let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,][0-9a-zA-Z_]\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'
+ let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,]\w\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'
exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueCommentWhite,doxygen'.a:name.'Word'
exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend'
endfun
@@ -186,7 +186,7 @@ endif
syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word
" Now for special characters
- syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion
+ syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenTParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion
" doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word
"
syn match doxygenGroupDefine contained +@\@<=[{}]+
@@ -199,13 +199,14 @@ endif
syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite
syn keyword doxygenTParam contained tparam nextgroup=doxygenParamName skipwhite
syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
- syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenParamName skipwhite
+ syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenReturnValue skipwhite
+ syn match doxygenReturnValue contained +\S\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
" Match one line identifiers.
syn keyword doxygenOther contained addindex anchor
\ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer
- \ example htmlonly image include includelineno ingroup internal latexonly line
- \ overload relates relatesalso sa skip skipline
+ \ example htmlonly image include includelineno ingroup latexonly line
+ \ overload relates related relatesalso relatedalso sa skip skipline
\ until verbinclude version addtogroup htmlinclude copydoc dotfile
\ xmlonly endxmlonly
\ nextgroup=doxygenSpecialOnelineDesc copybrief copydetails copyright dir extends
@@ -241,8 +242,8 @@ endif
syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine
syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc
-
- syn keyword doxygenOther contained arg author authors date deprecated li return returns see invariant note post pre remarks since test nextgroup=doxygenSpecialMultilineDesc
+ " Match the start of other multiline comments.
+ syn keyword doxygenOther contained arg author authors date deprecated li return returns result see invariant note post pre remarks since test internal nextgroup=doxygenSpecialMultilineDesc
syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc
syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc
syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc
@@ -256,7 +257,7 @@ endif
syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest
syn match doxygenLinkError "\*/" contained
" #Link hilighting.
- syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
+ syn match doxygenHashLink /\(\h\w*\)\?#\(\.\w\@=\|\w\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
syn match doxygenHashSpecial /#/ contained
syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained
@@ -264,12 +265,12 @@ endif
syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent
syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody
- syn match doxygenPageIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenPageDesc
+ syn match doxygenPageIdent "\<\w\+\>" contained nextgroup=doxygenPageDesc
" Handle section
syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent
syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueCommentWhite
- syn match doxygenSpecialIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc
+ syn match doxygenSpecialIdent "\<\w\+\>" contained nextgroup=doxygenSpecialSectionDesc
" Does the one-line description for the one-line type identifiers.
syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend
@@ -421,7 +422,7 @@ endif
if &guifont == ''
let font="font='FreeSerif 12'"
else
- let font="font='".substitute(&guifont, '^.\{-}\([0-9]\+\)$', 'FreeSerif \1','')."'"
+ let font="font='".substitute(&guifont, '^.\{-}\(\d\+\)$', 'FreeSerif \1','')."'"
endif
elseif has('gui_win32') || has('gui_win16') || has('gui_win95')
@@ -475,6 +476,7 @@ endif
SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold
SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen
endif
+ SynLink doxygenValue doxygenParamName
else
SynLink doxygenComment SpecialComment
SynLink doxygenBrief Statement
@@ -486,7 +488,10 @@ endif
SynLink doxygenSpecialOnelineDesc Statement
SynLink doxygenSpecialHeading Statement
SynLink doxygenPrev SpecialComment
+ SynLink doxygenValue Constant
endif
+ SynLink doxygenTParam doxygenParam
+
endfun
call s:Doxygen_Hilights()
@@ -550,6 +555,7 @@ endif
SynLink doxygenLinkRest doxygenSpecialMultilineDesc
SynLink doxygenHyperLink doxygenLinkWord
SynLink doxygenHashLink doxygenLinkWord
+ SynLink doxygenReturnValue doxygenValue
SynLink doxygenPage doxygenSpecial
SynLink doxygenPagePage doxygenBOther
diff --git a/runtime/syntax/dtd.vim b/runtime/syntax/dtd.vim
index ae0bd1288e..ef0592e1d1 100644
--- a/runtime/syntax/dtd.vim
+++ b/runtime/syntax/dtd.vim
@@ -1,10 +1,11 @@
" Vim syntax file
-" Language: DTD (Document Type Definition for XML)
-" Maintainer: Johannes Zellner <johannes@zellner.org>
-" Author and previous maintainer:
-" Daniel Amyot <damyot@site.uottawa.ca>
-" Last Change: Tue, 27 Apr 2004 14:54:59 CEST
-" Filenames: *.dtd
+" Language: DTD (Document Type Definition for XML)
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Repository: https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Author: Daniel Amyot <damyot@site.uottawa.ca>
+" Last Changed: Sept 24, 2019
+" Filenames: *.dtd
"
" REFERENCES:
" http://www.w3.org/TR/html40/
diff --git a/runtime/syntax/dune.vim b/runtime/syntax/dune.vim
index f901813d24..b4254057c0 100644
--- a/runtime/syntax/dune.vim
+++ b/runtime/syntax/dune.vim
@@ -1,7 +1,8 @@
+" Vim syntax file
" Language: Dune buildsystem
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" Anton Kochkov <anton.kochkov@gmail.com>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2019 Feb 27 - Add newer keywords to the syntax (Simon Cruanes)
" 2018 May 8 - Check current_syntax (Kawahara Satoru)
@@ -28,7 +29,7 @@ syn keyword lispKey ppx_runtime_libraries virtual_deps js_of_ocaml link_flags
syn keyword lispKey javascript_files flags ocamlc_flags ocamlopt_flags pps staged_pps
syn keyword lispKey library_flags c_flags c_library_flags kind package action
syn keyword lispKey deps targets locks fallback
-syn keyword lispKey inline_tests tests names
+syn keyword lispKey inline_tests tests test names
syn keyword lispAtom true false
diff --git a/runtime/syntax/elf.vim b/runtime/syntax/elf.vim
index e695dbc79a..c8e5a61bd1 100644
--- a/runtime/syntax/elf.vim
+++ b/runtime/syntax/elf.vim
@@ -1,6 +1,6 @@
" Vim syntax file
" Language: ELF
-" Maintainer: Christian V. J. Brssow <cvjb@cvjb.de>
+" Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
" Last Change: Son 22 Jun 2003 20:43:14 CEST
" Filenames: *.ab,*.am
" URL: http://www.cvjb.de/comp/vim/elf.vim
diff --git a/runtime/syntax/elmfilt.vim b/runtime/syntax/elmfilt.vim
index ec97af038d..d995853e8e 100644
--- a/runtime/syntax/elmfilt.vim
+++ b/runtime/syntax/elmfilt.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Elm Filter rules
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 8
+" Version: 9
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_ELMFILT
" quit when a syntax file was already loaded
diff --git a/runtime/syntax/erlang.vim b/runtime/syntax/erlang.vim
index 870fcca106..b8cbf07bb2 100644
--- a/runtime/syntax/erlang.vim
+++ b/runtime/syntax/erlang.vim
@@ -2,7 +2,7 @@
" Language: Erlang (http://www.erlang.org)
" Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
" Contributor: Adam Rutkowski <hq@mtod.org>
-" Last Update: 2017-Mar-05
+" Last Update: 2020-May-26
" License: Vim license
" URL: https://github.com/vim-erlang/vim-erlang-runtime
@@ -44,7 +44,7 @@ setlocal iskeyword+=$,@-@
" Comments
syn match erlangComment '%.*$' contains=erlangCommentAnnotation,erlangTodo
-syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained
+syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|param\|private\|equiv\|spec\|throws\)' contained
syn match erlangCommentAnnotation /`[^']*'/ contained
syn keyword erlangTodo TODO FIXME XXX contained
@@ -79,6 +79,7 @@ syn match erlangGlobalFuncRef '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\
syn match erlangVariable '\<[A-Z_][[:alnum:]_@]*'
syn match erlangMacro '??\=[[:alnum:]_@]\+'
syn match erlangMacro '\%(-define(\)\@<=[[:alnum:]_@]\+'
+syn region erlangQuotedMacro start=/??\=\s*'/ end=/'/ contains=erlangQuotedAtomModifier
syn match erlangMap '#'
syn match erlangRecord '#\s*\l[[:alnum:]_@]*'
syn region erlangQuotedRecord start=/#\s*'/ end=/'/ contains=erlangQuotedAtomModifier
@@ -91,7 +92,7 @@ syn match erlangBitType '\%(\/\%(\s\|\n\|%.*\n\)*\)\@<=\%(integer\|float\|binary
" Constants and Directives
syn match erlangUnknownAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\l[[:alnum:]_@]*' contains=erlangComment
-syn match erlangAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\%(behaviou\=r\|compile\|export\(_type\)\=\|file\|import\|module\|author\|copyright\|doc\|vsn\|on_load\)\>' contains=erlangComment
+syn match erlangAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\%(behaviou\=r\|compile\|export\(_type\)\=\|file\|import\|module\|author\|copyright\|doc\|vsn\|on_load\|optional_callbacks\)\>' contains=erlangComment
syn match erlangInclude '^\s*-\%(\s\|\n\|%.*\n\)*\%(include\|include_lib\)\>' contains=erlangComment
syn match erlangRecordDef '^\s*-\%(\s\|\n\|%.*\n\)*record\>' contains=erlangComment
syn match erlangDefine '^\s*-\%(\s\|\n\|%.*\n\)*\%(define\|undef\)\>' contains=erlangComment
@@ -116,14 +117,14 @@ syn keyword erlangBIF garbage_collect get get_keys group_leader contained
syn keyword erlangBIF halt hd integer_to_binary integer_to_list contained
syn keyword erlangBIF iolist_to_binary iolist_size is_alive contained
syn keyword erlangBIF is_atom is_binary is_bitstring is_boolean contained
-syn keyword erlangBIF is_float is_function is_integer is_list contained
+syn keyword erlangBIF is_float is_function is_integer is_list is_map is_map_key contained
syn keyword erlangBIF is_number is_pid is_port is_process_alive contained
syn keyword erlangBIF is_record is_reference is_tuple length link contained
syn keyword erlangBIF list_to_atom list_to_binary contained
syn keyword erlangBIF list_to_bitstring list_to_existing_atom contained
syn keyword erlangBIF list_to_float list_to_integer list_to_pid contained
-syn keyword erlangBIF list_to_tuple load_module make_ref max min contained
-syn keyword erlangBIF module_loaded monitor monitor_node node contained
+syn keyword erlangBIF list_to_tuple load_module make_ref map_size max contained
+syn keyword erlangBIF min module_loaded monitor monitor_node node contained
syn keyword erlangBIF nodes now open_port pid_to_list port_close contained
syn keyword erlangBIF port_command port_connect pre_loaded contained
syn keyword erlangBIF process_flag process_flag process_info contained
@@ -191,6 +192,7 @@ hi def link erlangGlobalFuncCall Function
hi def link erlangGlobalFuncRef Function
hi def link erlangVariable Normal
hi def link erlangMacro Normal
+hi def link erlangQuotedMacro Normal
hi def link erlangRecord Normal
hi def link erlangQuotedRecord Normal
hi def link erlangMap Normal
@@ -202,6 +204,7 @@ hi def link erlangGlobalFuncCall Normal
hi def link erlangGlobalFuncRef Normal
hi def link erlangVariable Identifier
hi def link erlangMacro Macro
+hi def link erlangQuotedMacro Macro
hi def link erlangRecord Structure
hi def link erlangQuotedRecord Structure
hi def link erlangMap Structure
diff --git a/runtime/syntax/exports.vim b/runtime/syntax/exports.vim
index 55efbb1e50..05a3f1acfe 100644
--- a/runtime/syntax/exports.vim
+++ b/runtime/syntax/exports.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: exports
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 7
+" Version: 8
" Notes: This file includes both SysV and BSD 'isms
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_EXPORTS
diff --git a/runtime/syntax/forth.vim b/runtime/syntax/forth.vim
index a1912461e6..9b39a7fd7d 100644
--- a/runtime/syntax/forth.vim
+++ b/runtime/syntax/forth.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: FORTH
" Current Maintainer: Johan Kotlinski <kotlinski@gmail.com>
-" Previous Maintainer: Christian V. J. Brssow <cvjb@cvjb.de>
+" Previous Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
" Last Change: 2018-03-29
" Filenames: *.fs,*.ft
" URL: https://github.com/jkotlinski/forth.vim
diff --git a/runtime/syntax/fortran.vim b/runtime/syntax/fortran.vim
index 4c26e78f16..b5c9b1ef8d 100644
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -1,17 +1,17 @@
" Vim syntax file
" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
-" Version: 100
-" Last Change: 2016 Oct. 29
+" Version: (v104) 2021 April 06
" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
" Usage: For instructions, do :help fortran-syntax from Vim
" Credits:
-" Version 0.1 (April 2000) for Fortran 95 was based on the Fortran 77 syntax file by
-" Mario Eusebio and Preben Guldberg. Since then, useful suggestions and contributions
-" have been made, in chronological order, by:
+" Version 0.1 for Fortran 95 was created in April 2000 by Ajit Thakkar from an
+" older Fortran 77 syntax file by Mario Eusebio and Preben Guldberg.
+" Since then, useful suggestions and contributions have been made, in order, by:
" Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
-" Walter Dieudonn, Alexander Wagner, Roman Bertle, Charles Rendleman,
+" Walter Dieudonne, Alexander Wagner, Roman Bertle, Charles Rendleman,
" Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, Jan Hermann,
-" Stefano Zaghi, Vishnu V. Krishnan and Judical Grasset
+" Stefano Zaghi, Vishnu V. Krishnan, Judicael Grasset, Takuma Yoshida,
+" Eisuke Kawashima, Andre Chalella, and Fritz Reese.
if exists("b:current_syntax")
finish
@@ -53,10 +53,10 @@ if !exists("b:fortran_fixed_source")
elseif exists("fortran_fixed_source")
" User guarantees fixed source form for all fortran files
let b:fortran_fixed_source = 1
- elseif expand("%:e") ==? "f\<90\|95\|03\|08\>"
+ elseif expand("%:e") =~? '^f\%(90\|95\|03\|08\)$'
" Free-form file extension defaults as in Intel ifort, gcc(gfortran), NAG, Pathscale, and Cray compilers
let b:fortran_fixed_source = 0
- elseif expand("%:e") ==? "f\|f77\|for"
+ elseif expand("%:e") =~? '^\%(f\|f77\|for\)$'
" Fixed-form file extension defaults
let b:fortran_fixed_source = 1
else
@@ -92,15 +92,17 @@ else
syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:"
endif
if exists("fortran_more_precise")
- syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*"
- syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*"
- syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*"
+ syn match fortranConstructName "\(\<end\s*do\s\+\)\@11<=\a\w*"
+ syn match fortranConstructName "\(\<end\s*if\s\+\)\@11<=\a\w*"
+ syn match fortranConstructName "\(\<end\s*select\s\+\)\@15<=\a\w*"
endif
syn match fortranUnitHeader "\<end\>"
syn match fortranType "\<character\>"
syn match fortranType "\<complex\>"
syn match fortranType "\<integer\>"
+syn match fortranType "\<real\>"
+syn match fortranType "\<logical\>"
syn keyword fortranType intrinsic
syn match fortranType "\<implicit\>"
syn keyword fortranStructure dimension
@@ -148,11 +150,9 @@ syn keyword fortranExtraIntrinsic algama cdabs cdcos cdexp cdlog cdsin cdsqrt cq
syn keyword fortranIntrinsic abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh
syn match fortranIntrinsic "\<len\s*[(,]"me=s+3
syn match fortranIntrinsic "\<real\s*("me=s+4
-syn match fortranType "\<implicit\s\+real"
-syn match fortranType "^\s*real\>"
syn match fortranIntrinsic "\<logical\s*("me=s+7
-syn match fortranType "\<implicit\s\+logical"
-syn match fortranType "^\s*logical\>"
+syn match fortranType "\<implicit\s\+real\>"
+syn match fortranType "\<implicit\s\+logical\>"
"Numbers of various sorts
" Integers
@@ -167,6 +167,12 @@ syn match fortranFloatIll display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
syn match fortranFloatIll display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
" floating point number
syn match fortranFloat display "\<\d\+\.\d\+\(e[-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+" binary number
+syn match fortranBinary display "b["'][01]\+["']"
+" octal number
+syn match fortranOctal display "o["'][0-7]\+["']"
+" hexadecimal number
+syn match fortranHex display "z["'][0-9A-F]\+["']"
" Numbers in formats
syn match fortranFormatSpec display "\d*f\d\+\.\d\+"
syn match fortranFormatSpec display "\d*e[sn]\=\d\+\.\d\+\(e\d+\>\)\="
@@ -185,8 +191,8 @@ syn match fortranLabelNumber display "^ \d\s"ms=s+4,me=e-1
if exists("fortran_more_precise")
" Numbers as targets
syn match fortranTarget display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
- syn match fortranTarget display "\(\<do\s\+\)\@<=\d\+\>"
- syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>"
+ syn match fortranTarget display "\(\<do\s\+\)\@11<=\d\+\>"
+ syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@11<=\(\d\+\s*,\s*\)*\d\+\>"
endif
syn keyword fortranTypeR external
@@ -214,7 +220,6 @@ syn match fortranUnitHeader "\<submodule\>"
syn keyword fortranUnitHeader use only contains
syn keyword fortranUnitHeader result operator assignment
syn match fortranUnitHeader "\<interface\>"
-syn match fortranUnitHeader "\<recursive\>"
syn keyword fortranKeyword allocate deallocate nullify cycle exit
syn match fortranConditional "\<select\>"
syn keyword fortranConditional case default where elsewhere
@@ -273,8 +278,9 @@ syn keyword fortranIntrinsic null cpu_time
syn match fortranType "\<elemental\>"
syn match fortranType "\<pure\>"
syn match fortranType "\<impure\>"
+syn match fortranType "\<recursive\>"
if exists("fortran_more_precise")
- syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
+ syn match fortranConstructName "\(\<end\s*forall\s\+\)\@15<=\a\w*\>"
endif
if b:fortran_dialect == "f08"
@@ -354,8 +360,15 @@ syn cluster fortranCommentGroup contains=fortranTodo
if (b:fortran_fixed_source == 1)
if !exists("fortran_have_tabs")
- "Flag items beyond column 72
- syn match fortranSerialNumber excludenl "^.\{73,}$"lc=72
+ " Fixed format requires a textwidth of 72 for code,
+ " but some vendor extensions allow longer lines
+ if exists("fortran_extended_line_length")
+ syn match fortranSerialNumber excludenl "^.\{133,}$"lc=132
+ elseif exists("fortran_cardimage_line_length")
+ syn match fortranSerialNumber excludenl "^.\{81,}$"lc=80
+ else
+ syn match fortranSerialNumber excludenl "^.\{73,}$"lc=72
+ endif
"Flag left margin errors
syn match fortranLabelError "^.\{-,4}[^0-9 ]" contains=fortranTab
syn match fortranLabelError "^.\{4}\d\S"
@@ -375,7 +388,8 @@ syn match cPreProc "^\s*#\s*\(define\|ifdef\)\>.*"
syn match cPreProc "^\s*#\s*\(elif\|if\)\>.*"
syn match cPreProc "^\s*#\s*\(ifndef\|undef\)\>.*"
syn match cPreCondit "^\s*#\s*\(else\|endif\)\>.*"
-syn region cIncluded contained start=+"[^(]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
+syn region cIncluded contained start=+"[^("]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
+"syn region cIncluded contained start=+"[^("]+ skip=+\\\\\|\\"+ end=+"+
syn match cIncluded contained "<[^>]*>"
syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded
@@ -451,6 +465,9 @@ hi def link fortranTodo Todo
hi def link fortranContinueMark Special
hi def link fortranString String
hi def link fortranNumber Number
+hi def link fortranBinary Number
+hi def link fortranOctal Number
+hi def link fortranHex Number
hi def link fortranOperator Operator
hi def link fortranBoolean Boolean
hi def link fortranLabelError Error
diff --git a/runtime/syntax/fpcmake.vim b/runtime/syntax/fpcmake.vim
new file mode 100644
index 0000000000..bbc6f1d770
--- /dev/null
+++ b/runtime/syntax/fpcmake.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: Free Pascal Makefile Definition Files
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 Apr 23
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/make.vim
+
+" NOTE: using start-of-line anchored syn-match groups is simpler than other
+" alternatives when interacting with the sourced make.vim syntax groups
+
+" Sections
+syn region fpcmakeSection matchgroup=fpcmakeSectionDelimiter start="^\s*\[" end="]" contains=fpcmakeSectionName
+
+syn keyword fpcmakeSectionName contained clean compiler default dist install
+syn keyword fpcmakeSectionName contained lib package prerules require rules
+syn keyword fpcmakeSectionName contained shared target
+
+" [clean]
+syn match fpcmakeRule "^\s*\(units\|files\)\>"
+" [compiler]
+syn match fpcmakeRule "^\s*\(options\|version\|unitdir\|librarydir\|objectdir\)\>"
+syn match fpcmakeRule "^\s*\(targetdir\|sourcedir\|unittargetdir\|includedir\)\>"
+" [default]
+syn match fpcmakeRule "^\s*\(cpu\|dir\|fpcdir\|rule\|target\)\>"
+" [dist]
+syn match fpcmakeRule "^\s*\(destdir\|zipname\|ziptarget\)\>"
+" [install]
+syn match fpcmakeRule "^\s*\(basedir\|datadir\|fpcpackage\|files\|prefix\)\>"
+syn match fpcmakeRule "^\s*\(units\)\>"
+" [package]
+syn match fpcmakeRule "^\s*\(name\|version\|main\)\>"
+" [requires]
+syn match fpcmakeRule "^\s*\(fpcmake\|packages\|libc\|nortl\|unitdir\)\>"
+syn match fpcmakeRule "^\s*\(packagedir\|tools\)\>"
+" [shared]
+syn match fpcmakeRule "^\s*\(build\|libname\|libversion\|libunits\)\>"
+" [target]
+syn match fpcmakeRule "^\s*\(dirs\|exampledirs\|examples\|loaders\|programs\)\>"
+syn match fpcmakeRule "^\s*\(rsts\|units\)\>"
+
+" Comments
+syn keyword fpcmakeTodo TODO FIXME XXX contained
+syn match fpcmakeComment "#.*" contains=fpcmakeTodo,@Spell
+
+" Default highlighting
+hi def link fpcmakeSectionDelimiter Delimiter
+hi def link fpcmakeSectionName Type
+hi def link fpcmakeComment Comment
+hi def link fpcmakeTodo Todo
+hi def link fpcmakeRule Identifier
+
+let b:current_syntax = "fpcmake"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/freebasic.vim b/runtime/syntax/freebasic.vim
index bce7f9ebc1..68e838f393 100644
--- a/runtime/syntax/freebasic.vim
+++ b/runtime/syntax/freebasic.vim
@@ -1,12 +1,13 @@
" Vim syntax file
" Language: FreeBasic
-" Maintainer: Mark Manning <markem@airmail.net>
-" Updated: 10/22/2006
+" Maintainer: Mark Manning <markem@sim1.us>
+" Updated: 10/9/2019
+" Version: 7.0b
"
" Description:
"
" Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
-" Updated by Mark Manning <markem@airmail.net>
+" Updated by Mark Manning <markem@sim1.us>
" Applied FreeBasic support to the already excellent support
" for standard basic syntax (like QB).
"
@@ -138,7 +139,7 @@ syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY
" types of identifiers like functions, basic commands and
" such. MEM 9/9/2006
"
-syn match freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
syn match freebasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
"
" Function list
@@ -154,9 +155,13 @@ syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,fr
"
" Integer number, or floating point number without a dot and with "f".
"
-syn region freebasicHex start="&h" end="\W"
-syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W"
-syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>"
+syn region freebasicHex start="&h" end="\W"
+syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W"
+syn region freebasicOctal start="&o" end="\W"
+syn region freebasicOctalError start="&o[0-7]*[89a-zA-Z]" end="\W"
+syn region freebasicBinary start="&b" end="\W"
+syn region freebasicBinaryError start="&b[01]*[2-9a-zA-Z]" end="\W"
+syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>"
"
" Floating point number, with dot, optional exponent
"
@@ -170,11 +175,11 @@ syn match freebasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
"
syn match freebasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
"
-" Hex number
+" Octal number
"
syn case match
-syn match freebasicOctal "\<0\o*\>"
-syn match freebasicOctalError "\<0\o*[89]"
+syn match freebasicOctal2 "\<0\o*\>"
+syn match freebasicOctal2Error "\<0\o*[89a-zA-Z]"
"
" String and Character contstants
"
@@ -183,7 +188,7 @@ syn region freebasicString start="'" end="'" contains=freebasicSpecial,freebasi
"
" Comments
"
-syn match freebasicSpecial contained "\\."
+syn match freebasicSpecial contained "\\\\."
syn region freebasicComment start="^rem" end="$" contains=freebasicSpecial,freebasicTodo
syn region freebasicComment start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo
syn region freebasicComment start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo
@@ -197,12 +202,12 @@ syn region freebasicLineNumber start="^\d" end="\s"
"
" Create the clusters
"
-syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat
-syn cluster freebasicError contains=freebasicHexError,freebasicOctalError
+syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicOctal2,freebasicBinary,freebasicInteger,freebasicFloat
+syn cluster freebasicError contains=freebasicHexError,freebasicOctalError,freebasicOctal2,freebasicBinary
"
" Used with OPEN statement
"
-syn match freebasicFilenumber "#\d\+"
+syn match freebasicFilenumber "#\d\+"
syn match freebasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen
"
" The default methods for highlighting. Can be overridden later
diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim
index e416a9abfc..318488713b 100644
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -1,9 +1,9 @@
" Vim syntax file
" Language: fstab file
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
-" URL: https://raw.github.com/rid9/vim-fstab/master/fstab.vim
-" Last Change: 2019 Jun 06
-" Version: 1.3
+" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
+" Last Change: 2020 Dec 30
+" Version: 1.4
"
" Credits:
" David Necas (Yeti) <yeti@physics.muni.cz>
@@ -68,7 +68,7 @@ syn match fsOptionsString /[a-zA-Z0-9_-]\+/
syn keyword fsOptionsYesNo yes no
syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck
syn keyword fsOptionsSize 512 1024 2048
-syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail
+syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok
syn match fsOptionsGeneral /_netdev/
" Options: adfs
diff --git a/runtime/syntax/gift.vim b/runtime/syntax/gift.vim
new file mode 100644
index 0000000000..3f8d631ec0
--- /dev/null
+++ b/runtime/syntax/gift.vim
@@ -0,0 +1,216 @@
+" Vim syntax file
+"
+" Language: Moodle GIFT (General Import Format Template)
+" Maintainer: Selim Temizer (http://selimtemizer.com)
+" Creation: November 28, 2020
+" Latest Revision: December 21, 2020
+" Note: The order of entities in this file is important!
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+
+setlocal conceallevel=1
+
+"-----------------------------------------------
+" GIFT entities
+
+syn match giftS "\~" contained "GIFT special characters
+syn match giftS "=" contained
+syn match giftS "#" contained
+syn match giftS "{" contained
+syn match giftS "}" contained
+syn match giftS ":" contained
+
+syn match giftES "\\\~" contained conceal cchar=~ "GIFT escaped special characters
+syn match giftES "\\=" contained conceal cchar==
+syn match giftES "\\#" contained conceal cchar=#
+syn match giftES "\\{" contained conceal cchar={
+syn match giftES "\\}" contained conceal cchar=}
+syn match giftES "\\:" contained conceal cchar=:
+
+syn match giftEN "\\n" contained conceal cchar=n "GIFT escaped newline
+
+syn match giftFormat "\[html]" contained "GIFT formats
+syn match giftFormat "\[plain]" contained
+syn match giftFormat "\[moodle]" contained
+syn match giftFormat "\[markdown]" contained
+
+"--------------------------------------------------------
+" HTML entities
+
+syn match giftH "<" contained "HTML characters that might need to be handled/escaped
+syn match giftH ">" contained
+syn match giftH "&" contained
+
+syn match giftEH "&lt;" contained conceal cchar=< "HTML escaped characters
+syn match giftEH "&gt;" contained conceal cchar=>
+syn match giftEH "&amp;" contained conceal cchar=&
+syn match giftEH "&nbsp;" contained conceal cchar=_
+
+"-------------------------------------------------------
+" Answer components: Feedback and general feedback
+
+syn match giftFB "#\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)" contained contains=giftF "Feedback block
+syn match giftF "#\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)" contained contains=@giftCEF "Feedback
+
+syn match giftGFB "####\_.\{-}\(\_^\|[^\\]\)\ze}" contained contains=giftGF "General feedback block
+syn match giftGF "####\zs\_.\{-}\(\_^\|[^\\]\)\ze}" contained contains=@giftCEF "General feedback
+
+"------------------------------------------------------
+" Answer components: Other components
+
+syn keyword giftTF T TRUE F FALSE contained
+
+syn match giftNum1 "[-+]\=[.0-9]\+" contained "Something matching a number
+
+syn match giftNum2 "[-+]\=[.0-9]\+\s*:\s*[-+]\=[.0-9]\+" contained contains=giftNum2D "Number with error margin
+syn match giftNum2D ":" contained "Associated delimiter
+
+syn match giftNum3 "[-+]\=[.0-9]\+\s*\.\.\s*[-+]\=[.0-9]\+" contained contains=giftNum3D "Number as min/max range
+syn match giftNum3D "\.\." contained "Associated delimiter
+
+syn match giftWeightB "%-*[0-9]\{1,2}\.\?[0-9]*%" contained contains=giftWeight "Weight block
+syn match giftWeight "%\zs-*[0-9]\{1,2}\.\?[0-9]*\ze%" contained "Weight
+
+"-----------------------------------------------------
+" Answer choices
+
+syn match giftWrongNum "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(####\|}\)" contained contains=@giftCEFF "Wrong numeric choice
+syn match giftRightNum "=\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCEFFW,@giftNums "Right numeric choice
+
+syn match giftWrong "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCEFFW "Wrong choice
+syn match giftRight "=\zs\_.\{-}\(\ze->\|\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)\)" contained contains=@giftCEFFW "Right choice
+syn match giftMatchB "->\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=giftMatch "Match choice block
+syn match giftMatch "->\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCE "Match choice
+
+"----------------------------------------------------
+" Answer
+
+syn match giftAnswer "{\_.\{-}\(\_^\|[^\\]\)}" contained keepend contains=@giftA "General answer
+syn match giftAnswer "{}" contained "Minimal answer
+
+syn match giftAnswerNum "{\_[[:space:]]*#\_[^#]\_.\{-}\(\_^\|[^\\]\)}" contained keepend contains=@giftANum "Numeric answer
+syn match giftAnswerNumD "{\zs\_[[:space:]]*#" contained "Associated delimiter
+
+"---------------------------------------------------
+" Question
+
+" The first pattern matches the last question at the end of the file (in case there is no empty line coming after).
+" However, it slows down parsing (and especially scrolling up), therefore it is commented out.
+
+"syn match giftQuestion "[^{[:space:]]\_.\{-}\%$" keepend contains=@giftCEF,giftAnswer,giftAnswerNum
+ syn match giftQuestion "[^{[:space:]]\_.\{-}\n\(\s*\n\)\+" keepend contains=@giftCEF,giftAnswer,giftAnswerNum
+
+"--------------------------------------------------
+" Question name
+
+syn match giftName "::\_.\{-}::" contains=@giftCE,giftNameD "Question name
+syn match giftNameD "::" contained "Associated delimiter
+
+"-------------------------------------------------
+" Category
+
+syn match giftCategoryB "^\s*\$CATEGORY:.*\n\+" contains=giftCategory "Category block
+syn match giftCategory "^\s*\$CATEGORY:\zs.*\ze\n" contained "Category
+
+"------------------------------------------------
+" Comments (may need to be the last entity)
+
+syn keyword giftTodo FIXME TODO NOTE FIX XXX contained
+
+syn match giftIdB "\[id:\(\\]\|[^][:cntrl:]]\)\+]" contained contains=giftId "Id block
+syn match giftId "\[id:\zs\(\\]\|[^][:cntrl:]]\)\+\ze]" contained "Id
+
+syn match giftTagB "\[tag:\(\\]\|[^]<>`[:cntrl:]]\)\+]" contained contains=giftTag "Tag block
+syn match giftTag "\[tag:\zs\(\\]\|[^]<>`[:cntrl:]]\)\+\ze]" contained "Tag
+
+syn match giftComment "^\s*//.*" contains=giftTodo,giftIdB,giftTagB
+
+"-----------------------------------------------
+" Clusters
+
+"Comments and entities (to be escaped)
+syn cluster giftCE contains=giftComment,giftS,giftES,giftEN,giftH,giftEH
+
+"The above plus format
+syn cluster giftCEF contains=@giftCE,giftFormat
+
+"The above plus feedback block
+syn cluster giftCEFF contains=@giftCEF,giftFB
+
+"The above plus weight block
+syn cluster giftCEFFW contains=@giftCEFF,giftWeightB
+
+"Possible numerical representations
+syn cluster giftNums contains=giftNum1,giftNum2,giftNum3
+
+"Possible contents of answers
+syn cluster giftA contains=giftComment,giftTF,giftWrong,giftRight,giftMatchB,giftFB,giftGFB
+
+"Possible contents of numerical answers
+syn cluster giftANum contains=giftAnswerNumD,giftComment,@giftNums,giftWrongNum,giftRightNum,giftFB,giftGFB
+
+"-----------------------------------------------
+
+let b:current_syntax = "gift"
+
+"-----------------------------------------------
+
+hi Conceal ctermbg=NONE ctermfg=Blue guibg=NONE guifg=Blue
+hi Feedback ctermbg=NONE ctermfg=DarkCyan guibg=NONE guifg=DarkCyan
+hi GFeedback ctermbg=NONE ctermfg=DarkGreen guibg=NONE guifg=DarkGreen
+hi WeightB ctermbg=NONE ctermfg=DarkYellow guibg=NONE guifg=DarkYellow
+
+"-----------------------------------------------
+
+hi def link giftS Error
+hi def link giftES Conceal
+hi def link giftEN Conceal
+hi def link giftFormat LineNr
+
+hi def link giftH Error
+hi def link giftEH Conceal
+
+hi def link giftFB PreProc
+hi def link giftF Feedback
+hi def link giftGFB Title
+hi def link giftGF GFeedback
+
+hi def link giftTF Question
+hi def link giftNum1 Question
+hi def link giftNum2 Question
+hi def link giftNum2D Special
+hi def link giftNum3 Question
+hi def link giftNum3D Special
+hi def link giftWeightB WeightB
+hi def link giftWeight Identifier
+
+hi def link giftWrongNum Constant
+hi def link giftRightNum Question
+hi def link giftWrong Constant
+hi def link giftRight Question
+hi def link giftMatchB ModeMsg
+hi def link giftMatch Constant
+
+hi def link giftAnswer MoreMsg
+hi def link giftAnswerNum MoreMsg
+hi def link giftAnswerNumD Identifier
+
+hi def link giftQuestion Identifier
+
+hi def link giftName PreProc
+hi def link giftNameD Directory
+
+hi def link giftCategoryB LineNr
+hi def link giftCategory Directory
+
+hi def link giftTodo Todo
+hi def link giftIdB LineNr
+hi def link giftId Title
+hi def link giftTagB LineNr
+hi def link giftTag Constant
+hi def link giftComment Comment
diff --git a/runtime/syntax/git.vim b/runtime/syntax/git.vim
index 48264c7bf2..a8467edd43 100644
--- a/runtime/syntax/git.vim
+++ b/runtime/syntax/git.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2010 May 21
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -13,7 +13,7 @@ syn sync minlines=50
syn include @gitDiff syntax/diff.vim
syn region gitHead start=/\%^/ end=/^$/
-syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
+syn region gitHead start=/\%(^commit\%( \x\{40\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
" For git reflog and git show ...^{tree}, avoid sync issues
syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/
@@ -25,12 +25,14 @@ syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\)
syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
+syn match gitDiffAdded "{+.*+}" contained containedin=gitDiff
syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
+syn match gitDiffRemoved "\[-.*-\]" contained containedin=gitDiff
syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite
-syn match gitMode /^\d\{6\}/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite
+syn match gitMode /^\d\{6\}\>/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite
syn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
syn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite
diff --git a/runtime/syntax/gnuplot.vim b/runtime/syntax/gnuplot.vim
index 7777cc9e46..9c98e67e58 100644
--- a/runtime/syntax/gnuplot.vim
+++ b/runtime/syntax/gnuplot.vim
@@ -3,7 +3,7 @@
" Maintainer: Josh Wainwright <wainwright DOT ja AT gmail DOT com>
" Last Maintainer: Andrew Rasmussen andyras@users.sourceforge.net
" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
-" Last Change: 2015-08-25
+" Last Change: 2020 May 12
" Filenames: *.gnu *.plt *.gpi *.gih *.gp *.gnuplot scripts: #!*gnuplot
" URL: http://www.vim.org/scripts/script.php?script_id=4873
" Original URL: http://johnh51.get.to/vim/syntax/gnuplot.vim
@@ -479,7 +479,7 @@ syn keyword gnuplotKeyword terminal palette rgb rbg grb gbr brg bgr
" ---- Macros ---- "
-syn region gnuplotMacro start="@" end=" "
+syn match gnuplotMacro "@[a-zA-Z0-9_]*"
" ---- Todos ---- "
diff --git a/runtime/syntax/gprof.vim b/runtime/syntax/gprof.vim
index 381a3c63b0..880452a84b 100644
--- a/runtime/syntax/gprof.vim
+++ b/runtime/syntax/gprof.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Syntax for Gprof Output
" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
-" Last Change: 2013 Jun 09
+" Last Change: 2021 Apr 08
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -28,7 +28,7 @@ syn match gprofCallGraphTitle "Call graph (explanation follows)"
syn region gprofCallGraphHeader
\ start="^granularity: each sample hit covers.*"
\ end="^\s*index % time\s\+self\s\+children\s\+called\s\+name$"
-syn match gprofCallGraphFunction "\s\+\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\["
+syn match gprofCallGraphFunction "\<\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\["
syn match gprofCallGraphSeparator "^-\+$"
syn region gprofCallGraphTrailer
\ start="This table describes the call tree of the program"
@@ -41,7 +41,7 @@ syn region gprofIndex
syn match gprofIndexFunctionTitle "^Index by function name$"
-syn match gprofNumbers "^\s\+[0-9 ./+]\+"
+syn match gprofNumbers "^\s*[0-9 ./+]\+"
syn match gprofFunctionIndex "\[\d\+\]"
syn match gprofSpecial "<\(spontaneous\|cycle \d\+\)>"
diff --git a/runtime/syntax/groff.vim b/runtime/syntax/groff.vim
index d4dc0cc4f7..c076c8d973 100644
--- a/runtime/syntax/groff.vim
+++ b/runtime/syntax/groff.vim
@@ -1,7 +1,7 @@
" VIM syntax file
" Language: groff
-" Maintainer: Alejandro Lpez-Valencia <dradul@yahoo.com>
-" URL: http://dradul.tripod.com/vim
+" Maintainer: John Marshall <jmarshall@hey.com>
+" Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
" Last Change: 2003-05-08-12:41:13 GMT-5.
" This uses the nroff.vim syntax file.
diff --git a/runtime/syntax/groovy.vim b/runtime/syntax/groovy.vim
index 2245b79d04..41495e6682 100644
--- a/runtime/syntax/groovy.vim
+++ b/runtime/syntax/groovy.vim
@@ -1,10 +1,10 @@
" Vim syntax file
" Language: Groovy
-" Original Author: Alessio Pace <billy.corgan@tiscali.it>
-" Maintainer: Tobias Rapp <yahuxo@gmx.de>
-" Version: 0.1.16
+" Original Author: Alessio Pace <billy.corgan AT tiscali.it>
+" Maintainer: Tobias Rapp <yahuxo+vim AT mailbox.org>
+" Version: 0.1.18
" URL: http://www.vim.org/scripts/script.php?script_id=945
-" Last Change: 2016 May 23
+" Last Change: 2021 Feb 03
" THE ORIGINAL AUTHOR'S NOTES:
"
@@ -253,7 +253,8 @@ if exists("groovy_regex_strings")
endif
" syn region groovyELExpr start=+${+ end=+}+ keepend contained
syn match groovyELExpr /\${.\{-}}/ contained
-syn match groovyELExpr /\$[a-zA-Z_][a-zA-Z0-9_.]*/ contained
+" Fix: force use of the NFA regexp engine (2), see GitHub issue #7280
+syn match groovyELExpr /\%#=2\$[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE_][a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE0-9_.]*/ contained
hi def link groovyELExpr Identifier
" TODO: better matching. I am waiting to understand how it really works in groovy
diff --git a/runtime/syntax/haml.vim b/runtime/syntax/haml.vim
index 5369695c22..c14b88f502 100644
--- a/runtime/syntax/haml.vim
+++ b/runtime/syntax/haml.vim
@@ -2,7 +2,7 @@
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.haml
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -38,7 +38,7 @@ syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,
syn match hamlSelfCloser "/" contained
syn match hamlClassChar "\." contained nextgroup=hamlClass
syn match hamlIdChar "#{\@!" contained nextgroup=hamlId
-syn match hamlClass "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
+syn match hamlClass "\%(\w\|-\|\:\)\+" contained nextgroup=@hamlComponent
syn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
syn region hamlDocType start="^\s*!!!" end="$"
diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim
index 642d177cdd..d3d8f4f435 100644
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
-" Last Change: 2019 May 12
+" Last Change: 2020 Jul 28
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -11,7 +11,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
-syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()_]*[ \t]\+\*"me=e-1
+syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()_]*\ze\(\s\+\*\|$\)"
syn match helpSectionDelim "^===.*===$"
syn match helpSectionDelim "^---.*--$"
if has("conceal")
@@ -85,6 +85,7 @@ syn match helpSpecial "\[group]"
syn match helpNormal "\[\(readonly\|fifo\|socket\|converted\|crypted\)]"
syn match helpSpecial "CTRL-."
+syn match helpSpecial "CTRL-SHIFT-."
syn match helpSpecial "CTRL-Break"
syn match helpSpecial "CTRL-PageUp"
syn match helpSpecial "CTRL-PageDown"
diff --git a/runtime/syntax/help_ru.vim b/runtime/syntax/help_ru.vim
new file mode 100644
index 0000000000..8fcd63a917
--- /dev/null
+++ b/runtime/syntax/help_ru.vim
@@ -0,0 +1,65 @@
+" Vim syntax file
+" Language: Russian Vim program help files *.rux
+" Maintainer: Restorer (restorers@users.sourceforge.net)
+" Last Change: 04 Aprl 2017
+"
+
+" Проверяем язык локали и установки опции 'helplang'
+" Если не русский, то выходим из скрипта.
+if ('ru' !~? v:lang || 'russian' !~? v:lang) && 'ru' !~? &helplang
+ finish
+endif
+
+" Подсветка русских гиперссылок
+syntax match helpHyperTextJump "\\\@<!|[^"*~# |]\+|" contains=helpBar
+syntax match helpHyperTextEntry "\*[^"*|]\+\*\s"he=e-1 contains=helpStar
+syntax match helpHyperTextEntry "\*[^"*|]\+\*$" contains=helpStar
+
+" Заголовок статьи, раздела и т. п.
+syntax match helpHeadline "^[А-ЯЁ]\{2}[ .]\=[-,А-ЯЁA-Z0-9 .()]*"
+
+" Наименование справочника
+" новый заголовок
+" syntax match helpVim "\<СПРАВОЧНИК ПО РЕДАКТОРУ VIM\>"
+"старый заголовок
+syntax match helpVim "\<СПРАВОЧНИК ПО .*"
+" новый заголовок
+"syntax match helpVim "\<РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ РЕДАКТОРОМ VIM\>"
+"syntax match helpVim "\<автор\%[ы:] .*$"
+"старый заголовок
+syntax match helpVim "\<РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ .*"
+" Подсветка примечаний в тексте, начала примеров и т.п.
+syntax keyword helpNote Примечание. Совет. Пример. Примеры:
+syntax keyword helpWarning Внимание!
+" в старой версии документации
+syntax keyword helpNote Замечание:
+" в старой версии документации
+syntax keyword helpWarning ВНИМАНИЕ! Предупреждение:
+" Подсветка Ex-команд в документации Vim
+syntax match helpCommand "\":[A-Za-z!]\+\""hs=s+1,he=e-1
+" Подсветка специальных обозначений
+syntax match helpSpecial "{[-а-яёА-ЯЁ0-9'":%#=[\]<>.,]\+}"
+syntax match helpSpecial "{[-а-яёА-ЯЁ0-9'"*+/:%#=[\]<>.,]\+}"
+syntax match helpSpecial "\s\[[-а-яё^А-ЯЁ0-9_]\{2,}]"ms=s+1
+syntax match helpSpecial "<[-а-яёА-ЯЁ0-9_]\+>"
+syntax match helpSpecial "\[диапазон]"
+syntax match helpSpecial "\[счётчик]"
+syntax match helpSpecial "\[число]"
+syntax match helpSpecial "\[+число]"
+syntax match helpSpecial "\[-число]"
+syntax match helpSpecial "\[кол-во]"
+syntax match helpSpecial "\[строка]"
+syntax match helpSpecial "\[смещение]"
+syntax match helpSpecial "\[параметр]"
+syntax match helpSpecial "\[параметры]"
+syntax match helpSpecial "CTRL-{символ}"
+syntax region helpNotVi start="{Доступно только" start="{В редкторе Vim" start="{В редакторе Vi" end="}" contains=helpLeadBlank,helpHyperTextJump
+" Подсветка примечаний переводчика
+syntax region helpTrnsNote start="\[Прим. перевод." end="]" contains=helpComment
+" Определение группы подсветки Ex-команд в документации Vim
+"hi def link helpCommand vimCommand
+" Определение группы подсветки примечаний переводчика
+hi def link helpTrnsNote Comment
+" hi def link helpTrnsNote Comment
+"
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/hog.vim b/runtime/syntax/hog.vim
index 7206815202..24aa2035ba 100644
--- a/runtime/syntax/hog.vim
+++ b/runtime/syntax/hog.vim
@@ -1,8 +1,9 @@
" Vim syntax file
" Language: hog (Snort.conf + .rules)
" Maintainer: Victor Roemer, <vroemer@badsec.org>.
-" Last Change: 2015 Oct 24 -> Rename syntax items from Snort -> Hog
+" Last Change: 2019 Sep 22
" 2012 Oct 24 -> Originalish release
+" 2019 Sep 22 -> included PR 3069
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -91,7 +92,7 @@ syn match HogOpRange ":" contained
" Rules
syn keyword HogRuleAction activate alert drop block dynamic log pass reject sdrop sblock skipwhite nextgroup=HogRuleProto,HogRuleBlock
-syn keyword HogRuleProto ip tcp udp icmp skipwhite contained nextgroup=HogRuleSrcIP
+syn keyword HogRuleProto ip tcp tcp-pkt tcp-stream udp icmp http ftp tls smb dns dcerpc ssh smtp imap msn modbus dnp3 enip nfs ikev2 ntp skipwhite contained nextgroup=HogRuleSrcIP
syn match HogRuleSrcIP "\S\+" transparent skipwhite contained contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot nextgroup=HogRuleSrcPort
syn match HogRuleSrcPort "\S\+" transparent skipwhite contained contains=HogPortVarList,HogVar,HogPort,HogOpRange,HogOpNot nextgroup=HogRuleDir
syn match HogRuleDir "->\|<>" skipwhite contained nextgroup=HogRuleDstIP
@@ -100,13 +101,21 @@ syn match HogRuleDstPort "\S\+" transparent skipwhite contained contain
syn region HogRuleBlock start="(" end=")" transparent skipwhite contained contains=HogRuleOption,HogComment fold
",HogString,HogComment,HogVar,HogOptNot
"syn region HogRuleOption start="\<gid\|sid\|rev\|depth\|offset\|distance\|within\>" end="\ze;" skipwhite contained contains=HogNumber
-syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP msg gid sid rev classtype priority metadata content nocase rawbytes
-syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP depth offset distance within http_client_body http_cookie http_raw_cookie http_header
-syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_raw_header http_method http_uri http_raw_uri http_stat_code http_stat_msg
-syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP fast_pattern uricontent urilen isdataat pcre pkt_data file_data base64_decode base64_data
-syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP byte_test byte_jump byte_extract ftpbounce asn1 cvs dce_iface dce_opnum dce_stub_data
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP msg gid sid rev classtype priority metadata target content nocase rawbytes
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP depth startswith offset distance within http_client_body http_cookie http_raw_cookie http_header
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_raw_header http_request_line http_method http_uri http_raw_uri http_protocol http_response_line http_stat_code http_stat_msg
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_user_agent http_accept http_accept_enc http_accept_lang http_connection http_content_type http_content_len
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_referer http_start http_header_names http_server_body http_host http_raw_host
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP filename fileext filemagic filestore filemd5 filesha1 filesha256 filesize
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP dns_query tls_cert_subject tls_cert_issuer tls_cert_serial tls_cert_fingerprint
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP tls_sni tls_cert_notbefore tls_cert_notafter tls_cert_expired tls_cert_valid
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP tls.version tls.subject tls.issuerdn tls.fingerprint tls.store ja3_hash ja3_string
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP modbus dnp3_func dnp3_ind dnp3_obj dnp3_data enip_command cip_service
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP app-layer-protocol app-layer-event xbits iprep lua luajit
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP fast_pattern prefilter uricontent urilen isdataat pcre pkt_data file_data base64_decode base64_data
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP byte_test byte_jump byte_extract ftpdata_command ftpbounce asn1 cvs dce_iface dce_opnum dce_stub_data
syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP sip_method sip_stat_code sip_header sip_body gtp_type gtp_info gtp_version ssl_version
-syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP ssl_state fragoffset ttl tos id ipopts fragbits dsize flags flow flowbits seq ack window
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP ssl_state fragoffset ttl tos id ipopts geoip fragbits dsize flags flow flowbits flowint seq ack window
syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP itype icode icmp_id icmp_seq rpc ip_proto sameip stream_reassemble stream_size
syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP logto session resp react tag activates activated_by count replace detection_filter
syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP threshold reference sd_pattern file_type file_group
diff --git a/runtime/syntax/hollywood.vim b/runtime/syntax/hollywood.vim
index 34fbb45c54..ce5ba29553 100644
--- a/runtime/syntax/hollywood.vim
+++ b/runtime/syntax/hollywood.vim
@@ -1,8 +1,8 @@
" Vim syntax file
-" Language: Hollywood 8.0
+" Language: Hollywood 9.0
" Maintainer: Tom Crecelius <holly@net-eclipse.net>
" First Author: Tom Crecelius <holly@net-eclipse.net>
-" Last Change: 2018 May 18
+" Last Change: 2021 April 13
" Highlighting Issues:
" Depending on your colour schema, Strings or Comments might be highlighted in
" a way, you don't like. If so, try one of the following settings after
@@ -30,7 +30,7 @@ let s:cpo_save = &cpo
set cpo&vim
if !exists("hw_version")
- let hw_version = 8
+ let hw_version = 9
let hw_subversion = 0
elseif !exists("hw_subversion")
let hw_subversion = 0
@@ -109,12 +109,11 @@ syn match hwOperator "\%(&\|\*\|+\|-\|\.\||\|//\|/\|:\|<\|=\|>\|<>\|<=\|=>\|\^\|
syn keyword hwConstant Nil
syn keyword hwConstant True False
" predefined preprocessing commands
-syn match hwPreProcessor "@\<\%(BGPIC\|BRUSH\|ANIM\|SPRITE\|SAMPLE\|MUSIC\|FILE\|FONT\|VIDEO\|VERSION\|APPTITLE\|APPAUTHOR\|APPCOPYRIGHT\|APPDESCRIPTION\|APPVERSION\|APPICON\|BACKFILL\|SCREEN\|DISPLAY\|INCLUDE\|OPTIONS\|REQUIRE\|MENU\|APPIDENTIFIER\|WARNING\|ERROR\|IF\|ELSEIF\|ELSE\|ENDIF\)\>"ms=s+1
+syn match hwPreProcessor "@\<\%(ANIM\|APPAUTHOR\|APPCOPYRIGHT\|APPDESCRIPTION\|APPICON\|APPIDENTIFIER\|APPTITLE\|APPVERSION\|BACKFILL\|BGPIC\|BRUSH\|CATALOG\|DIRECTORY\|DISPLAY\|ELSE\|ELSEIF\|ENDIF\|ERROR\|FILE\|FONT\|ICON\|IF\|INCLUDE\|LINKER\|MENU\|MUSIC\|OPTIONS\|PALETTE\|REQUIRE\|SAMPLE\|SCREEN\|SPRITE\|VERSION\|VIDEO\|WARNING\)\>"ms=s+1
" predefined constants
-syn match hwConstant "#\<\%(ERR_PORTNOTAVAIL\|SEEK_END\|ERR_CREATESHORTCUT\|PURPLE\|ERR_ALLOCCHANNEL\|PRGTYPE_SCRIPT\|ERR_NORETVAL\|ERR_DDRECVIDEO\|ERR_FINDPATH\|LANGUAGE_RUNDI\|ERR_STRINGCST\|COUNTRY_COLOMBIA\|LANGUAGE_KOREAN\|ERR_USERABORT\|ERR_WENDWOWHILE\|FONT\|FILEATTR_WRITE_OTH\|ERR_MODIFYABGPIC\|COUNTRY_DRCONGO\|LANGUAGE_KIRGHIZ\|LANGUAGE_ROMANSH\|FILEATTR_EXECUTE_GRP\|ERR_READVIDEOPIXELS\|SCROLLTOP\|ERR_ANIMDISK\|COUNTRY_IVORYCOAST\|LANGUAGE_GUJARATI\|SHORT\|COUNTRY_SOUTHAFRICA\|VIDEO\|ERR_BLKWOENDBLK\|ERR_WRONGHEX\|SPRITE_VS_BRUSH\|LANGUAGE_HIRIMOTU\|ZOOMSOUTHEAST\|COUNTRY_SLOVAKIA\|COUNTRY_GIBRALTAR\|ERR_INVALIDDATE\|RTS_ON\|PIXELZOOM1\|ATTRFRAMEDELAY\|AQUA\|ATTRFONTSCALABLE\|FILEATTR_NORMAL\|COUNTRY_ALBANIA\|COUNTRY_JAMAICA\|FONTWEIGHT_MEDIUM\|ERR_MALFORMPAT1\|COUNTRY_FRENCHGUIANA\|ERR_MAXPARAMS\|ERR_FORWONEXT\|COUNTRY_CONGO\|COUNTRY_GAMBIA\|UPNDOWN\|COUNTRY_ANDORRA\|BRUSH\|ERR_SELECTALPHACHANNEL\|MODLCOMMAND\|CLIENT\|COUNTRY_TRINIDADANDTOBAGO\|DIRECTORY\|LANGUAGE_ESPERANTO\|ATTRRAWHEIGHT\|COUNTRY_DENMARK\|FILETYPE_SOUND\|CLIPBOARD_TEXT\|LANGUAGE_FULAH\|ATTRPOSITION\|PLUGINCAPS_CONVERT\|ERR_APPLETVERSION\|COUNTRY_VANUATU\|COUNTDIRECTORIES\|ATTRNOHIDE\|VSTRIPES64\|AMIGAICON_SETPOSITION\|PUSHBOTTOM\|ERR_BACKFILL\|COUNTRY_MOROCCO\|ERR_FILEFORMAT\|COUNTRY_CHILE\|ATTRHOSTSCALEY\|ERR_AHI\|HW_VERSION\|ERR_ALRDYDECLRD\|ATTRRAWWIDTH\|ERR_PIXELFORMAT\|IMGFMT_PLUGIN\|LANGUAGE_HEBREW\|ERR_SETMENU\|ERR_NOLAYERS\|CRUSHTOP\|ERR_MAXLINES\|ATTRHASMASK\|LEFT\|ERR_SELECTANIM\|WALLPAPERLEFT\|TEXTOBJECT\|ERR_AFILEPROP\|LANGUAGE_CZECH\|LANGUAGE_XHOSA\|ERR_PIPE\|LANGUAGE_MANX\|ERR_EXECUTE\|ERR_ENDDOUBLEBUFFER\|ATTRGROUP\|ERR_NAMETOOLONG\|ATTRBORDERRIGHT\|COUNTRY_BOSNIAANDHERZEGOVINA\|ATTRMARGINRIGHT\|RTS_OFF\|LANGUAGE_MARSHALLESE\|LANGUAGE_AZERBAIJANI\|LANGUAGE_TAHITIAN\|JOINMITER\|ATTRNOCLOSE\|REQICON_WARNING\|ERR_NOTPROTRACKER\|LANGUAGE_LAO\|ERR_EMPTYPATH\|ERR_NOCALLBACK\|COUNTRY_UGANDA\|ERR_READFUNC\|IMGFMT_UNKNOWN\|ADF_ANIM\|ERR_LAYERSWITCH\|ERR_RECVCLOSED\|ERR_CTRLSTRUCT\|ERR_TABLEOVERFLOW\|SCROLLBOTTOM\|VSTRIPES\|ERR_VAREXPECTED\|ERR_NOTIGER\|BEEPSYSTEM\|ERR_LOWFREQ\|COUNTFILES\|COUNTRY_MONACO\|BLUE\|ERR_VFONT\|STRUDEL\|REQ_GALLERY\|ERR_NOCOORDCST\|MENU\|HSTRIPES64\|COUNTRY_COCOSISLANDS\|LANGUAGE_SOUTHNDEBELE\|COUNTRY_FALKLANDISLANDS\|COUNTRY_UAE\|LANGUAGE_KANNADA\|ERR_VIDRECMULTI\|FILETYPE_VIDEO\|LANGUAGE_ESTONIAN\|COUNTRY_CAYMANISLANDS\|ERR_BADINTEGER\|MONO16\|COUNTRY_CAMEROON\|COUNTRY_GUAM\|ERR_DISPLAYDESKTOP\|ERR_SETENV\|ERR_INTERNAL\|MASKVISIBLE\|ERR_OPENFONT\|LANGUAGE_WELSH\|ATTRRAWXPOS\|LANGUAGE_THAI\|ATTRHOSTMONITORS\|LANGUAGE_GALICIAN\|COUNTRY_GUATEMALA\|ATTRYPOS\|COUNTRY_UZBEKISTAN\|ERR_ELSEIFAFTERELSE\|MODRCONTROL\|BAUD_4800\|JOYDOWNRIGHT\|COUNTRY_LUXEMBOURG\|COUNTRY_MOZAMBIQUE\|ERR_PAKFORMAT\|LANGUAGE_TAJIK\|LANGUAGE_PANJABI\|ERR_MISSINGFIELD\|PLUGINCAPS_LIBRARY\|ERR_FUNCARGS\|LANGUAGE_MALAY\|COUNTRY_PORTUGAL\|COUNTRY_JAPAN\|ERR_ICONPARMS\|COUNTRY_NEWCALEDONIA\|REMOVELAYER\|MOVEWINDOW\|ATTRFONTASCENDER\|PLUGINCAPS_DIRADAPTER\|ERR_VARLENGTH\|ATTRSIZEABLE\|ERR_SENDUNKNOWN\|MENUITEM_RADIO\|COUNTRY_BELIZE\|ERR_LABELDOUBLE\|QUADRECT\|VBLINDS8\|ERR_UNKNOWNCMD\|SCROLLEAST\|ONBUTTONCLICKALL\|RECTNORTHEAST\|FONTWEIGHT_EXTRABOLD\|COUNTRY_SAINTKITTSANDNEVIS\|ERR_CLOSEDDISPLAY\|PLUGINCAPS_SAVEANIM\|ERR_WINDOW\|LANGUAGE_ZHUANG\|CAPROUND\|ERR_OUTOFRANGE\|REQ_CAMERA\|ERR_WARPOS\|COUNTRY_ELSALVADOR\|ERR_GROUPNAMEUSED\|COUNTRY_GUYANA\|ERR_ALREADYASYNC\|COUNTRY_PALESTINE\|DISPMODE_FAKEFULLSCREEN\|ERR_SYNTAXLEVELS\|ERR_BADPLATFORM\|ERR_VERSION\|ATTRVISIBLE\|HSTRETCHCENTER\|COUNTRY_REUNION\|COUNTRY_INDIA\|STRETCHLEFT\|ERR_ZERODIVISION\|LANGUAGE_NORTHERNSAMI\|SIMPLEBUTTON\|ERR_FINDMENU\|ERR_EMPTYOBJ\|LANGUAGE_BIHARI\|LANGUAGE_LIMBURGAN\|LANGUAGE_BOSNIAN\|ERR_SYSTOOOLD\|ERR_WRITEJPEG\|STOP_1\|COPYFILE_OVERWRITE\|ERR_REVDWORD\|PLUGINCAPS_ANIM\|ERR_ASSERTFAILED\|ERR_BRACEOPEN\|ERR_NEEDMORPHOS2\|BLACK\|LANGUAGE_SWEDISH\|ERR_DBLENCODING\|COPYFILE_STATUS\|ERR_WRONGOPCST\|ERR_BADIP\|ERR_UNKNOWNSEQ\|LANGUAGE_LUXEMBOURGISH\|ERR_WITHWOENDWITH\|ERR_LABINIF\|LANGUAGE_TATAR\|ERR_VIDEOLAYERDRV\|ERR_LEGACYPTMOD\|ERR_SAVEPNG\|NOTRANSPARENCY\|ATTRMASKMODE\|LANGUAGE_VENDA\|ERR_NEWHWPLUGIN\|LANGUAGE_LATIN\|LANGUAGE_EWE\|MENUITEM_TOGGLE\|ERR_BRACKETOPEN\|JOYUP\|COUNTRY_SENEGAL\|LANGUAGE_CHURCHSLAVIC\|ERR_ZLIBIO\|RECTBACKNORTHWEST\|MOVELIST\|ERR_TEXTARG\|ONBUTTONOVER\|VIDDRV_HOLLYWOOD\|IMGFMT_JPEG\|REQ_MULTISELECT\|COUNTRY_NIGERIA\|LANGUAGE_GUARANI\|LANGUAGE_POLISH\|ERR_ICONSTANDARD\|REQ_HIDEICONS\|LANGUAGE_CORSICAN\|DISPMODE_MODEREQUESTER\|ERR_NOABSPATH\|LANGUAGE_GERMAN\|ERR_RANDOMIZE\|ERR_ARGS\|PLUGINCAPS_AUDIOADAPTER\|IMAGETYPE_VECTOR\|LANGUAGE_GREEK\|COUNTRY_HOLYSEE\|COUNTRY_NORTHKOREA\|LANGUAGE_MALAYALAM\|COUNTRY_BOTSWANA\|LANGUAGE_CREE\|ATTRNUMENTRIES\|REQICON_ERROR\|IMGFMT_GIF\|FTPBINARY\|WORD\|VIDDRV_OS\|ATTRDURATION\|LANGUAGE_AKAN\|ERR_FTPERROR\|PLUGINCAPS_VIDEO\|ERR_EXAMINE\|HSTRIPES8\|COUNTRY_OMAN\|CIRCLE\|ERR_BRUSHLINK\|ERR_STREAMASSAMPLE\|ERR_DISPLAYSIZE\|ERR_WRONGFLOAT\|PLUGINCAPS_FILEADAPTER\|ERR_UNSUPPORTEDFEAT\|DISPLAY\|ERR_MUSPAUSED\|INTEGER\|COUNTRY_BOLIVIA\|ERR_RECVTIMEOUT\|ATTRMONITOR\|LANGUAGE_INUKTITUT\|ATTRPAUSED\|LANGUAGE_LITHUANIAN\|DATEYEAR\|JOYUPRIGHT\|ERR_LAYERSOFF\|ERR_EMPTYSCRIPT\|LIGHTUSERDATA\|ERR_FINDTIMER\|ALPHACHANNEL\|LANGUAGE_WALLOON\|ERR_ADFWRONGDISP\|ERR_HTTPERROR\|ERR_REWINDDIR\|ERR_LOCKEDOBJ\|COUNTRY_NEPAL\|HSTRIPES2\|RECTSOUTH\|ERR_UNKPROTOCOL\|COUNTRY_CANADA\|COUNTRY_VENEZUELA\|COUNTRY_MALDIVES\|ERR_SQBRACKETCLOSE\|ERR_HTTPTE\|VSTRIPES2\|COUNTRY_NORWAY\|ERR_FIRSTPREPROC\|SNAPDESKTOP\|LANGUAGE_FINNISH\|COUNTRY_TURKEY\|LANGUAGE_VIETNAMESE\|VBLINDS64\|ERR_FONTFORMAT\|ERR_PIXELRANGE\|LANGUAGE_AVESTAN\|ERR_SYSIMAGE\|BIGSINE\|CLIPBOARD_EMPTY\|ERR_WRONGCLIPREG\|AMIGAICON_NONE\|FONTWEIGHT_EXTRABLACK\|LANGUAGE_IDO\|ATTRFORMAT\|ERR_FUNCJMP\|PARITY_NONE\|ATTRHOSTDEPTH\|ERR_RENDERCALLBACK\|ERR_FINDPORT\|LANGUAGE_NEPALI\|COUNTRY_AMERICANSAMOA\|ERR_MISSINGSEPARTR\|MODRALT\|COUNTRY_BESISLANDS\|LANGUAGE_AVARIC\|ERR_VIDNOTPAUSED\|TOPOUT\|ERR_VALUEEXPECTED\|ERR_WRONGUSAGE\|TURNDOWNLEFT\|ERR_ICONDIMS\|LANGUAGE_HAUSA\|ERR_TRANSBGMOBILE\|SEEK_CURRENT\|ERR_MONITORRANGE\|COUNTRY_FAROEISLANDS\|SHAPE\|COUNTRY_SOLOMONISLANDS\|NAVY\|ERR_PREPROCSYM\|COUNTRY_GEORGIA\|LANGUAGE_OSSETIAN\|ERR_THREAD\|DATA_5\|ERR_INISYNTAX\|ERR_MUSFMTSUPPORT\|LANGUAGE_YIDDISH\|ATTRLAYERS\|SMOOTHOUT\|LANGUAGE_KONGO\|COUNTRY_KYRGYZSTAN\|ATTRDOUBLEBUFFER\|TOP\|ERR_SYSBUTTON\|ERR_DATATYPESAVE\|COUNTRY_LIBYA\|ERR_FUNCWOENDFUNC\|ANIMSTREAM\|ATTRUSERDATA\|LANGUAGE_NORTHNDEBELE\|UDPCLIENT\|ERR_MUSNOTPLYNG\|FILEATTR_READ_OTH\|ERR_EVNTEXPCTED\|ERR_BADDIMENSIONS\|ATTROUTPUTDEVICE\|LANGUAGE_BULGARIAN\|LANGUAGE_SPANISH\|DISPMODE_FULLSCREENSCALE\|LANGUAGE_INTERLINGUE\|FASTSPEED\|ERR_NODISPMODES\|LANGUAGE_CHAMORRO\|ATTRACTIVE\|COUNTRY_TOGO\|INACTIVEWINDOW\|ERR_CREATEEVENT\|COUNTRY_SAUDIARABIA\|FILEATTR_EXECUTE_OTH\|IPAUTO\|SHDWNORTHEAST\|MEMORY\|ERR_XF86VIDMODEEXT\|ARC\|TIMER\|COUNTRY_ICELAND\|FUCHSIA\|NETWORKUDP\|ERR_FINDCLIPREGION\|NETWORKSERVER\|NETWORKCONNECTION\|ATTRFONTNAME\|UDPOBJECT\|ERR_UNTERMINTDSTR\|LANGUAGE_NORWEGIANNYNORSK\|RECTBACKCENTER\|COUNTRY_BANGLADESH\|UPLOADFILE_RESPONSE\|COUNTRY_ITALY\|MASKINVISIBLE\|UPLOADFILE_STATUS\|ERR_FOREVERWOREPEAT\|STRETCHBOTTOM\|STRETCHRIGHT\|MOVEFILE_COPY\|FTPASCII\|RECEIVELINE\|RECEIVEBYTES\|ERR_DRAWPATH\|ATTRFONTAA\|VSTRANGEPUSH\|ERR_BADBASE64\|ERR_NOCLIPREG\|SCROLLNORTHWEST\|RECEIVEALL\|ERR_PLUGINARCH\|DTR_OFF\|HEXNUMERICAL\|FLOW_XON_XOFF\|ERR_LAYERSUPPORT2\|FLOW_HARDWARE\|LANGUAGE_GAELIC\|FLOW_OFF\|COUNTRY_ANTARCTICA\|ERR_REQAUTH\|STOP_2\|SERIF\|ERR_FINDANIM\|PARITY_ODD\|DATA_8\|VSTRIPES32\|COUNTRY_FRANCE\|DATA_6\|BAUD_460800\|HKEY_CURRENT_USER\|COUNTRY_BELARUS\|BAUD_115200\|BAUD_57600\|BAUD_38400\|BAUD_19200\|VSTRIPES4\|COUNTRY_ALANDISLANDS\|LANGUAGE_UKRAINIAN\|ERR_ICONSIZE\|BAUD_9600\|COUNTRY_SYRIA\|COUNTRY_NICARAGUA\|COUNTRY_PERU\|ERR_SIGNAL\|BAUD_2400\|JOYDOWN\|BAUD_300\|FILLRULEEVENODD\|ERR_COMMODITY\|ERR_UNKNOWN\|LANGUAGE_CORNISH\|FONTWEIGHT_LIGHT\|ERR_BAD8SVX\|ONBUTTONOVERALL\|CROSSFADE\|CAPSQUARE\|CAPBUTT\|ERR_STRORNUM\|LANGUAGE_SINDHI\|BEEPQUESTION\|JOINBEVEL\|ERR_PLUGINDOUBLET\|JOINROUND\|LANGUAGE_WESTERNFRISIAN\|ERR_PROTMETATABLE\|LANGUAGE_TURKISH\|BOTTOM\|ZOOMNORTH\|ERR_DATATYPEALPHA\|ERR_FINDUDPOBJECT\|SUN\|TURNDOWNRIGHT\|UDPSERVER\|MODRCOMMAND\|LANGUAGE_SWATI\|COUNTRY_MALAWI\|KEEPASPRAT\|DEFAULTICON\|LANGUAGE_TONGA\|ERR_NUMCALLBACK\|STRING\|ATTRPITCH\|ERR_ELSEWOIF\|COUNTRY_SAMOA\|LANGUAGE_PASHTO\|CARDTOP\|DENSITY_NONE\|ITALIC\|PLUGINCAPS_DISPLAYADAPTER\|FILEATTR_READ_USR\|LANGUAGE_UIGHUR\|ERR_EMPTYTABLE\|COUNTRY_CAPEVERDE\|ERR_FGRABVIDSTATE\|ERR_LOCK2\|LANGUAGE_ICELANDIC\|LIME\|ATTRCURSUBSONG\|CENTER\|ERR_VECGFXPLUGIN\|THREAD\|SLIDERIGHT\|NORMALSPEED\|SELMODE_LAYERS\|SLIDELEFT\|HLOWFLIPCOIN\|HFLIPCOIN\|VLOWFLIPCOIN\|ERR_INVCAPIDX\|VFLIPCOIN\|ASYNCDRAW\|ERR_INCOMPATBRUSH\|RECTBACKWEST\|FILEATTR_WRITE_USR\|ATTRONSCREEN\|CRUSHRIGHT\|LANGUAGE_BRETON\|ERR_REPEATWOUNTIL\|ERR_NOLOOP\|ATTRDISPLAY\|ERR_FILENOTFOUND\|ATTRDENSITY\|ERR_GETMONITORINFO\|ERR_POINTERFORMAT\|ZOOMIN\|PIXELZOOM2\|HSTRANGEPUSH\|FILEATTR_SYSTEM\|ERR_COLORSPACE\|LANGUAGE_ZULU\|ATTRHOSTWIDTH\|LANGUAGE_SANGO\|ERR_SOCKET\|STAR\|ERR_FINDBUTTON\|CLOCKWIPE\|FILLCOLOR\|USELAYERPOSITION\|LANGUAGE_BELARUSIAN\|COUNTRY_MICRONESIA\|COPYFILE_UNPROTECT\|DISSOLVE\|UNDERLINED\|WATER4\|COUNTRY_BURKINAFASO\|LANGUAGE_LINGALA\|WATER3\|MASK\|ATTRNOMODESWITCH\|ERR_SETFILEATTR\|LANGUAGE_KASHMIRI\|FILEATTR_HIDDEN\|DELETEFILE_UNPROTECT\|COUNTRY_CUBA\|HKEY_USERS\|ATTRKEYBOARD\|COUNTBOTH\|ROLLLEFT\|HSTRIPES\|CRUSHBOTTOM\|RECTBACKSOUTHWEST\|LANGUAGE_TSONGA\|RECTBACKSOUTH\|ERR_DIFFDEPTH\|RECTBACKSOUTHEAST\|RECTBACKEAST\|ERR_TRIALLIMIT\|ERR_FINDMOVE\|ERR_SCREEN\|ERR_FINDPLUGIN\|LANGUAGE_ITALIAN\|ERR_MULTIBGPIC\|ERR_BADLAYERTYPE\|JUSTIFIED\|ERR_ADDAPPWIN\|LANGUAGE_NAURU\|ERR_UNKNOWNFILTER\|RECTBACKNORTHEAST\|JOYDOWNLEFT\|RECTBACKNORTH\|WALLPAPERTOP\|ROLLTOP\|ERR_NOFALLTHROUGH\|BRUSH_VS_BOX\|USERDATA\|RANDOMPARAMETER\|IMAGETYPE_RASTER\|NATIVE\|DIAGONAL\|COUNTRY_SUDAN\|PUZZLE\|ERR_ENDIFWOIF\|ERR_MEM\|ERR_OPENSERIAL\|PUSHRIGHT\|NEXTFRAME\|DOSTYPE_FILE\|PUSHLEFT\|ERR_SORTFUNC\|ENCODING_ISO8859_1\|VOPENGATE\|ERR_XFIXES\|HCLOSEGATE\|ZOOMSOUTHWEST\|HOPENGATE\|VFLOWRIGHT\|ERR_BADBYTECODE\|VFLOWLEFT\|HFLOWBOTTOM\|HFLOWTOP\|ERR_DLOPEN\|ZOOMNORTHWEST\|ZOOMWEST\|ERR_NODOUBLEBUFFER\|ZOOMSOUTH\|ZOOMEAST\|ZOOMNORTHEAST\|COUNTRY_UK\|ZOOMCENTER\|ERR_FINDMEMBLK\|ERR_BGPICBUTTON\|VSTRETCHCENTER\|ERR_FREEABGPIC\|STRETCHTOP\|SCROLLNORTHEAST\|ATTRFUNCTION\|ERR_TABLEINDEX\|ERR_MULDISMOBILE\|COUNTRY_INDONESIA\|SCROLLSOUTHEAST\|NOCOLOR\|ERR_SELECTBGPIC2\|JOYUPLEFT\|MASKAND\|CLIPBOARD_SOUND\|SCROLLSOUTH\|SCROLLNORTH\|ERR_NOMENU\|ERR_NOANMLAYER\|SCROLLWEST\|ERR_CHANNELRANGE\|ERR_STRTABLEARG\|SCROLLRIGHT\|SCROLLLEFT\|RECTNORTHWEST\|ERR_BEGINREFRESH\|COUNTRY_SPAIN\|RECTSOUTHWEST\|COUNTRY_PHILIPPINES\|RECTSOUTHEAST\|ERR_LOADSOUND\|RECTEAST\|RECTNORTH\|LANGUAGE_ARABIC\|COUNTRY_JORDAN\|RECTCENTER\|ERR_TRANSBRUSH\|BLEND\|ERR_PLUGINVER\|RANDOMEFFECT\|FILLRULEWINDING\|ANMFMT_GIF\|VLINES\|ERR_LABINFOR\|DISPMODE_SYSTEMSCALE\|VLINES2\|ERR_NOARGBVISUAL\|COUNTRY_YEMEN\|HSTRIPES32\|ERR_SAVESAMPLE\|ERR_CHRCSTEMPTY\|LANGUAGE_CATALAN\|ERR_SEEK\|SANS\|LANGUAGE_JAVANESE\|ATTRLAYERID\|ERR_BRACECLOSE\|ERR_CONSOLEARG\|ATTRXPOS\|PLUGINCAPS_REQUESTERADAPTER\|REVEALRIGHT\|ERR_FINDFONT2\|REVEALLEFT\|LANGUAGE_DUTCH\|ERR_CHRCSTLEN\|HCLOSECURTAIN\|ERR_SELECTBGPIC\|ERR_MAGICKEY\|SELMODE_COMBO\|HOPENCURTAIN\|ERR_ZLIBSTREAM\|CARDBOTTOM\|VBLINDS16\|HBLINDS128\|HBLINDS64\|DURATION_SHORT\|COUNTRY_GREECE\|COUNTRY_MARSHALLISLANDS\|LANGUAGE_KAZAKH\|ERR_BADCONSTANT\|MODLCONTROL\|HBLINDS16\|COUNTRY_NAURU\|HBLINDS8\|SILVER\|DATA_7\|DAMPED\|ATTRORIENTATION\|COUNTRY_UNKNOWN\|COUNTRY_CZECHREPUBLIC\|LANGUAGE_INDONESIAN\|LANGUAGE_NAVAJO\|ERR_NOBLOCKBREAK\|ERR_8OR16BITONLY\|BOLD\|VSTRIPES8\|ERR_FUNCEXPECTED\|COUNTRY_AZERBAIJAN\|COUNTRY_KAZAKHSTAN\|ERR_FINDFONT\|QUARTERS\|WATER1\|HSTRIPES4\|COUNTRY_BRUNEI\|VOPENCURTAIN\|MONO8\|ERR_ICONENTRY\|PLUGINCAPS_VECTOR\|ATTRFIXED\|ALPHABETICAL\|VANILLACOPY\|MASKOR\|MASKXOR\|ERR_STAT\|SMPFMT_WAVE\|HSPLIT\|LANGUAGE_ABKHAZIAN\|COUNTRY_GABON\|ERR_ADDSYSEVENT\|ERR_INTEXPECTED\|COUNTRY_ECUADOR\|STEREO16\|ERR_UPDATEICON\|ERR_LABELDECLA\|MENUITEM_DISABLED\|ERR_FILEEXIST\|LANGUAGE_DIVEHI\|ATTRHOSTTASKBAR\|ERR_FINDOBJECTDATA\|ERR_BADENCODING\|ERR_GTK\|DENSITY_MEDIUM\|DENSITY_LOW\|VSPLIT\|ORIENTATION_LANDSCAPEREV\|TEAL\|ERR_COMMENTSTRUCT\|ORIENTATION_LANDSCAPE\|ERR_FT2\|ORIENTATION_PORTRAITREV\|DATELOCALNATIVE\|ERR_MAXLOCALS\|POLYGON\|BRUSHPART\|COUNTRY_CHINA\|ORIENTATION_NONE\|ERR_FIELDINIT\|CLIPREGION\|ERR_DELETEFILE\|LANGUAGE_SLOVENIAN\|SCALEMODE_LAYER\|MILLISECONDS\|COUNTRY_MALI\|SCALEMODE_AUTO\|LAYERBUTTON\|ERR_LOADICON\|COUNTRY_AUSTRIA\|ERR_NOFUNCTION\|COUNTRY_MALTA\|HLINES\|ERR_NUMSTRCMP\|ERR_SQBRACKETOPEN\|ERR_MODIFYABG\|LANGUAGE_GEORGIAN\|DISPMODE_ASK\|ERR_READRANGE\|ERR_UNTILWOREPEAT\|DISPMODE_WINDOWED\|FONTWEIGHT_REGULAR\|LANGUAGE_QUECHUA\|DISPSTATE_MINIMIZED\|DISPSTATE_CLOSED\|DISPSTATE_OPEN\|ERR_FREECURPOINTER\|DEINTERLACE_DOUBLE\|DEINTERLACE_DEFAULT\|ENCODING_AMIGA\|ENCODING_UTF8\|ENCODING_RAW\|FONTSLANT_OBLIQUE\|ERR_STRTOOSHORT\|ANMFMT_MJPEG\|ERR_CLIPWRITE\|FONTSLANT_ROMAN\|PERMREQ_READEXTERNAL\|TURNDOWNBOTTOM\|FONTWEIGHT_HEAVY\|ATTRPLAYING\|FONTWEIGHT_ULTRABOLD\|LANGUAGE_RUSSIAN\|FONTWEIGHT_BOLD\|FONTWEIGHT_DEMIBOLD\|REQICON_QUESTION\|COUNTRY_TANZANIA\|COUNTRY_SAINTBARTHELEMY\|DISPMODE_FULLSCREEN\|FONTWEIGHT_NORMAL\|ERR_GUIGFX\|ERR_LOADFRAME\|HIDELAYER\|COUNTRY_SAOTOMEANDPRINCIPE\|FONTWEIGHT_ULTRALIGHT\|ERR_GRABSCREEN\|SPIRAL\|FONTWEIGHT_THIN\|FONTENGINE_INBUILT\|COUNTRY_TIMOR\|ATTRDRIVER\|MONOSPACE\|ERR_SYNTAXERROR\|PRGTYPE_APPLET\|COUNTRY_URUGUAY\|PARITY_EVEN\|COUNTRY_ERITREA\|MODE_READ\|LANGUAGE_CENTRALKHMER\|ERR_SHORTIF\|BITMAP_DEFAULT\|ERR_ESCREPLACE\|ERR_FINDMUSIC\|ERR_MEMCODE\|ATTRMENU\|ERR_DISPMINIMIZED\|JOYNODIR\|ATTRMODE\|ERR_FINDDISPLAY\|ERR_BADWAVE\|LANGUAGE_PERSIAN\|SHDWSOUTHWEST\|ERR_ADDTASK\|ERR_NAMEUSED\|ERR_CLIPREAD\|LANGUAGE_TSWANA\|ATTRBORDERBOTTOM\|SPRITE\|ERR_DOUBLEMENU\|ERR_TOKENEXPECTED\|EDGE\|FILLTEXTURE\|IO_BUFFERED\|ERR_JAVAMETHOD\|GRAY\|NUMERICAL\|ERR_VFONTTYPE\|COUNTRY_LIECHTENSTEIN\|COUNTRY_GHANA\|ERR_LAYERSON\|LANGUAGE_BASQUE\|SERIAL\|ALL\|ERR_SELECTMASK\|COUNTRY_CYPRUS\|LANGUAGE_MAORI\|ERR_DBTRANSWIN\|ATTRID\|ERR_NUMBEREXPECTED\|ANTIALIAS\|SCROLLSOUTHWEST\|ERR_PLUGINSUPPORT\|ERR_WRONGID\|COUNTRY_SRILANKA\|ERR_SENDTIMEOUT\|ERR_EQUALEXPECTED\|ERR_SERIALIO\|COUNTRY_LESOTHO\|ERR_CREATEDOCKY\|ERR_INITSERIAL\|COUNTRY_SLOVENIA\|COUNTRY_AFGHANISTAN\|ERR_FUNCDECLA\|HW_REVISION\|ERR_MALFORMPAT2\|ERR_RENDERER\|COUNTRY_KUWAIT\|ERR_SURFACE\|ERR_FINDARRAY\|ERR_MULTIDISPLAYS\|ERR_TEXTSYNTAX\|ERR_ICONVECTOR\|ERR_BRACKETCLOSE\|SELMODE_NORMAL\|SCALEMODE_NONE\|LANGUAGE_KINYARWANDA\|ERR_CORETEXT\|COUNTRY_MONTENEGRO\|ERR_VIDEOINIT\|LANGUAGE_LUBAKATANGA\|ERR_TRIALINCLUDE\|ERR_READFILE\|ERR_TRIALSAVEVID\|ERR_ATSUI\|ERR_TRIALCOMPILE\|ERR_RADIOTOGGLEMENU\|LANGUAGE_MALAGASY\|COUNTRY_ALGERIA\|ERR_TABEXPECTED3\|LANGUAGE_TIBETAN\|ERR_ELSETWICE\|ERR_FINDSELECTOR\|ERR_FRAMEGRABBER\|ERR_COREFOUNDATION\|COUNTRY_HONDURAS\|ERR_FINDICON\|FILEATTR_READONLY\|ERR_INVALIDUTF8ARG\|ERR_DIFFENCODING\|COUNTRY_BARBADOS\|ERR_INVALIDUTF8\|ERR_INVREPLACE\|ERR_COMPLEXPATTERN\|ERR_AMIGAGUIDE\|LANGUAGE_AFRIKAANS\|ERR_LINKPLUGIN\|ERR_STACK\|MASKVANILLACOPY\|MODE_READWRITE\|ERR_FILESIZE\|ERR_MUSPLAYING\|ERR_VIDNOTPLAYING\|COUNTRY_DJIBOUTI\|ERR_ALLOCMASK\|ERR_ALLOCALPHA\|ERR_KEYFILE\|ERR_VISUALINFO\|ERR_FINDCLIENT\|ERR_SENDDATA\|LANGUAGE_NDONGA\|COUNTRY_DOMINICANREPUBLIC\|ERR_UNEXPECTEDSYM\|ERR_FULLSCREEN\|ERR_SCREENMODE\|ATTRBORDERLEFT\|COUNTRY_SWEDEN\|ERR_TFIMAGE\|ERR_LOCKBMAP\|ERR_FINDMONITOR\|COUNTRY_ROMANIA\|ATTRCURSORX\|ERR_NOCONTEXTMENU\|ERR_ACCELERATOR\|ERR_VECTORBRUSH\|FILEATTR_ARCHIVE\|ERR_ENDWITHWOWITH\|ERR_CONTEXTMENU\|SHDWNORTH\|SHDWNORTHWEST\|ERR_EMPTYMENUTREE\|ERR_FINDMENUITEM\|COUNTRY_RUSSIA\|ERR_DEFFONT\|ERR_CREATEMENU\|ANIM\|COUNTRY_ETHIOPIA\|ERR_MENUCOMPLEXITY\|MODLALT\|ERR_WRONGCMDRECVIDEO\|ERR_REGISTRYWRITE\|HIDEBRUSH\|ERR_SENDMESSAGE\|COUNTRY_LIBERIA\|ERR_FINDAPPLICATION\|ERR_NEEDAPPLICATION\|ERR_COORDSRANGE\|JOYRIGHT\|ERR_UNKNOWNATTR\|ERR_APPLICATION\|COUNTRY_FIJI\|ERR_SEEKFILE\|ERR_TABLEDECLA\|ERR_FINDDIR\|AMIGAICON_DRAWER\|COUNTRY_COMOROS\|ERR_MODIFYSPRITE\|STEREO8\|ERR_DDMOBILE\|ERR_HWBMCLOSEDISP\|ERR_HWDBFREEDISP\|BOTTOMOUT\|ERR_FINDBGPIC\|ERR_RETWOGOSUB\|ERR_BITMAP\|ERR_REQUIREPLUGIN\|ERR_DISPLAYADAPTERSUPPORT\|ERR_SOCKNAME\|RED\|ERR_SCRPIXFMT\|PI\|ERR_FINDSPRITE\|LANGUAGE_OJIBWA\|ERR_REQUIREFIELD\|COUNTRY_TAJIKISTAN\|ERR_WRITEONLY\|ERR_VIDLAYERFUNC\|ERR_VIDSTOPPED\|ERR_VIDEOLAYER\|ERR_CMDASVAR\|ERR_REGCLASS\|AMIGAICON_TOOL\|RECTWEST\|ERR_FINDACTIVITY\|ERR_JAVA\|ERR_UDEXPECTED\|LANGUAGE_CHICHEWA\|ERR_NOMIMEVIEWER\|ACTIVEWINDOW\|FILEATTR_SCRIPT\|ERR_GETSHORTCUT\|IMGFMT_PNG\|LAYER_VS_BOX\|LANGUAGE_MALTESE\|ATTRXSERVER\|ERR_CREATEICON\|LANGUAGE_DANISH\|ERR_SATFREEDISP\|ERR_PERCENTFORMATSTR\|COUNTRY_BELGIUM\|ERR_VIDPLAYING\|ERR_VIDPAUSED\|SECONDS\|ERR_SAVERALPHA\|ATTRMAXWIDTH\|ERR_HWBRUSHFUNC\|COUNTRY_ARGENTINA\|LANGUAGE_TIGRINYA\|SLOWSPEED\|LANGUAGE_NORWEGIAN\|ERR_HWBRUSH\|COUNTRY_BENIN\|DENSITY_HIGH\|ERR_PLUGINSYMBOL\|BARS\|ERR_UNKNOWNSMPOUT\|ERR_SAVEANIM\|ERR_FINDPOINTER\|ERR_UNKNOWNANMOUT\|LANGUAGE_FRENCH\|ERR_SAVEIMAGE\|ATTRSCALEMODE\|ERR_UNKNOWNIMGOUT\|CONICAL\|ERR_NOFMBHANDLER\|ERR_NOMUSICCB\|FILETYPE_ANIM\|LANGUAGE_SOMALI\|ATTRFONTSIZE\|COUNTRY_PARAGUAY\|COUNTRY_TURKMENISTAN\|ERR_SEEKFORMAT\|ERR_DBVIDEOLAYER\|LANGUAGE_IRISH\|COUNTRY_MAYOTTE\|ERR_BADCALLBACKRET\|YELLOW\|ERR_MODIFYPSMP\|DELETEFILE_STATUS\|ERR_DSOUNDNOTIPOS\|ERR_READONLY\|ERR_MOBILE\|ERR_MONITORFULLSCREEN\|ERR_WRONGDTYPE\|COUNTRY_CHAD\|LINEAR\|ONKEYDOWNALL\|ERR_INVNEXTKEY\|WHITE\|ATTRSIZE\|ATTRMAXHEIGHT\|ERR_FINDSERIAL\|LITTLEENDIAN\|ERR_NOCOLON\|ERR_LOADPLUGIN\|ERR_VIDEOTRANS\|COUNTRY_TUNISIA\|ERR_WRITE\|COUNTRY_PALAU\|ERR_SELECTBG\|ERR_VIDEOFRAME\|LANGUAGE_BURMESE\|SWISS\|COUNTRY_GREENLAND\|ERR_VIDATTACHED\|PLOT\|ERR_SOCKOPT\|ERR_QUICKTIME\|LANGUAGE_ARMENIAN\|REQICON_INFORMATION\|ERR_OLDAPPLET\|ERR_LOADVIDEO\|ERR_MOVEFILE\|ERR_ENDBLKWOBLK\|ERR_NOTENOUGHPIXELS\|ATTRSCALEHEIGHT\|LANGUAGE_SAMOAN\|VCLOSECURTAIN\|COUNTRY_IRELAND\|ERR_OPENAUDIO\|ERR_NOFILTERNAME\|ATTRMAXIMIZED\|ADF_FX\|COUNTRY_SAINTVINCENT\|RECEIVEDATA_PACKET\|COUNTRY_ARUBA\|ERR_UNSETENV\|ERR_ALSAPCM\|ERR_XCURSOR\|LANGUAGE_ALBANIAN\|HLINES2\|LANGUAGE_KURDISH\|ERR_CREATEGC\|ERR_TOOSMALL2\|COUNTRY_TUVALU\|BIGENDIAN\|LANGUAGE_GREENLANDIC\|ERR_UPLOADFORBIDDEN\|ERR_DINPUT\|TICKS\|ERR_NOCOMPRESS\|ERR_BADURL\|ERR_NOLOOPCONT\|ERR_HOSTNAME\|ERR_PEERNAME\|DOUBLE\|ERR_FINDSERVER\|ERR_OPENSOCKET\|ATTRHOSTSCALE\|ERR_XDISPLAY\|ERR_TFVBRUSH\|ERR_TOOMANYARGS\|DATELOCAL\|ERR_DEMO\|ERR_NOJOYATPORT\|COUNTRY_USA\|ERR_RENDERADLAYER\|ERR_OPENLIB\|COUNTRY_EGYPT\|DTR_ON\|FADE\|COUNTRY_MARTINIQUE\|HKEY_CLASSES_ROOT\|ERR_NOACCESS\|ERR_TFVBGPICBRUSH\|ERR_CLOSEFILE\|ERR_BGPICTYPE\|LANGUAGE_AFAR\|ERR_DEMO2\|VCLOSEGATE\|ERR_LINKFONT\|ERR_FTPAUTH\|ERR_WRONGSPRITESIZE\|ERR_SPRITELINK\|ERR_ADFFREEDISP\|ERR_MONITORDIR\|ERR_REGISTRYREAD\|ERR_REMADLAYER\|ERR_FINDINTERVAL\|ATTRSTATE\|ERR_FINDLAYER\|FONTSLANT_ITALIC\|ERR_SCALEBGPIC\|SHDWSOUTHEAST\|ERR_CLIPOPEN\|ERR_BRUSHTYPE\|ERR_CLIPFORMAT\|ERR_LOADPICTURE2\|ERR_OPENSOUND2\|ATTRZPOS\|ERR_OPENANIM2\|ERR_NEEDOS41\|LANGUAGE_JAPANESE\|ERR_TABEXPECTED\|ATTRTEXT\|ERR_FINDBRUSH\|COUNTRY_BRAZIL\|COUNTRY_SINGAPORE\|LANGUAGE_SANSKRIT\|ERR_ADDAPPICON\|LOWERCURVE\|ERR_FREEADISPLAY\|ERR_ARRAYDECLA\|ERR_SMODEALPHA\|ERR_FINDANIMSTREAM\|ATTRSCALEWIDTH\|ERR_MODIFYAANIM\|CLIPBOARD_UNKNOWN\|ERR_FONTPATH\|COUNTRY_BAHAMAS\|ERR_NEGCOORDS\|ERR_JOYSTICK\|ERR_CASECST\|LANGUAGE_TAGALOG\|LANGUAGE_KANURI\|COUNTRY_PITCAIRN\|NONE\|ERR_WRONGVSTRATEGY\|ERR_APPLET\|ERR_VIDEOSTRATEGY\|ERR_READTABLE\|COUNTRY_SWAZILAND\|BEEPWARNING\|BOUNCE\|LANGUAGE_SLOVAK\|LANGUAGE_SERBIAN\|ERR_FINDASYNCDRAW\|ERR_SPRITEONSCREEN2\|ERR_NOHWFUNC\|ERR_POINTERIMG\|ERR_MUSNOTPLYNG2\|ERR_NODISLAYERS\|ERR_NUMCONCAT\|COUNTRY_PUERTORICO\|ERR_DDAUTOSCALE\|ERR_DIRECTSHOW\|ATTRALPHAINTENSITY\|FILLNONE\|SHDWSOUTH\|ERR_ZLIBVERSION\|IMGFMT_BMP\|LANGUAGE_BENGALI\|COUNTRY_HAITI\|COUNTRY_GRENADA\|VBLINDS128\|ERR_TABCALLBACK\|FILETYPE_IMAGE\|BOOLEAN\|ERR_TEXTCONVERT\|ERR_MSGPORT\|ERR_LOADPICTURE\|VSTRIPES16\|ERR_SEMAPHORE\|ERR_MASKNALPHA\|ERR_TIMER\|PRINT\|ERR_HEXPOINT\|ERR_NODIRPATTERN\|ONBUTTONRIGHTCLICKALL\|ERR_NOTXTLAYER\|ERR_STRCALLBACK\|ERR_CONCAT\|ERR_COMPLEXWHILE\|REQ_NORMAL\|ERR_NOCHANNEL\|FONTWEIGHT_EXTRALIGHT\|COUNTRY_FRENCHPOLYNESIA\|FILEATTR_PURE\|ERR_SETFILEDATE\|HSTRIPES16\|COUNTRY_SEYCHELLES\|ERR_DEMO3\|COUNTRY_HONGKONG\|FASTMEMORY\|ERR_KEYNOTFOUND\|FONTWEIGHT_BOOK\|ERR_DATATYPESAVE2\|ERR_ZLIBDATA\|TEXTOUT\|ATTRCOUNT\|SHDWWEST\|ERR_RENAME\|ERR_CMPUNSUPPORTED\|COUNTRY_MAURITIUS\|ERR_DSOUNDPLAY\|ERR_UNIMPLCMD\|AMIGAICON_DISK\|ERR_NOREXX\|COUNTRY_LAOS\|LANGUAGE_ENGLISH\|ERR_ANTIALIAS\|ERR_MENUATTACHED\|COUNTRY_MAURITANIA\|LANGUAGE_TAMIL\|ERR_UNKTEXTFMT\|ERR_NOTADIR\|ERR_REQUIRETAGFMT\|COUNTRY_CROATIA\|ERR_CACHEERROR\|ERR_TASKSETUP\|LANGUAGE_YORUBA\|ERR_CSTDOUBLEDEF\|NATIVEENDIAN\|ATTRNUMFRAMES\|ATTRSTANDARD\|LANGUAGE_SICHUANYI\|LANGUAGE_WOLOF\|LANGUAGE_SHONA\|ONKEYDOWN\|VOID\|COUNTRY_NIUE\|ERR_UNKNOWNMUSFMT\|ATTRSPRITES\|ERR_MIXMUSMOD\|ERR_SEEKRANGE\|COUNTRY_NEWZEALAND\|LANGUAGE_PALI\|FILLGRADIENT\|ERR_NOKEYWORDS\|ERR_UNKNOWNTAG\|COUNTRY_MYANMAR\|STDPTR_BUSY\|RIGHTOUT\|COUNTRY_JERSEY\|MOVEFILE_UNPROTECT\|IPUNKNOWN\|ERR_FUNCREMOVED\|MENUITEM_SELECTED\|COUNTRY_NORFOLKISLAND\|ERR_OPENANIM\|CHIPMEMORY\|COUNTRY_MADAGASCAR\|ERR_NUMTABLEARG\|ATTRCLIPREGION\|LANGUAGE_SUNDANESE\|ERR_TOOMANYCAPTURES\|ERR_NOALPHA\|ERR_BADSIGNATURE\|ERR_BADUPVALUES\|FILEATTR_DELETE_USR\|COUNTRY_LATVIA\|REQ_SAVEMODE\|ERR_VMMISMATCH\|ERR_NUMEXPECTED\|ERR_UNEXPECTEDEOF\|ERR_UNKNOWNCOND\|ERR_STRINGEXPECTED\|DURATION_LONG\|LANGUAGE_GANDA\|PRGTYPE_PROGRAM\|COUNTRY_CENTRALAFRICANREPUBLIC\|CLIPBOARD_IMAGE\|ERR_LOCK\|ERR_INVINSERT\|ERR_LAYERSUPPORT\|LANGUAGE_ASSAMESE\|COUNTRY_ANTIGUAANDBARBUDA\|FLOAT\|COUNTRY_RWANDA\|FILEATTR_READ_GRP\|LANGUAGE_TELUGU\|COUNTRY_GUINEABISSAU\|JOYLEFT\|SHDWEAST\|BGPIC\|ERR_VARSYNTAX\|ATTRNUMSUBSONGS\|PLUGINCAPS_TIMERADAPTER\|ERR_UNMPARENTHESES\|ERR_ERRORCALLED\|ERR_PERCENTFORMAT\|COUNTRY_GERMANY\|LANGUAGE_BISLAMA\|UNDO\|ERR_FINDFILE\|LANGUAGE_URDU\|PLUGINCAPS_REQUIRE\|SINE\|ERR_FINDTEXTOBJECT\|LANGUAGE_AMHARIC\|REVEALTOP\|COUNTRY_SAINTLUCIA\|ERR_DIRLOCK\|MODE_WRITE\|LANGUAGE_TURKMEN\|ERR_VIDRECTRANS\|LINE\|COUNTRY_NAMIBIA\|FILETYPEFLAGS_SAVE\|LANGUAGE_SARDINIAN\|ERR_NOMASKBRUSH\|ERR_MUSNOTPAUSED\|IPV4\|ERR_UNKNUMFMT\|ERR_DOUBLEDECLA\|ERR_INVPATCAP\|LANGUAGE_HUNGARIAN\|COUNTRY_MONTSERRAT\|LANGUAGE_FAROESE\|LANGUAGE_DZONGKHA\|ERR_LOOPRANGE\|ATTRHASALPHA\|ERR_ENDSWCHWOSWCH\|POINTER\|COUNTRY_BOUVETISLAND\|BYTE\|FILE\|ATTRRAWYPOS\|FONTWEIGHT_ULTRABLACK\|ERR_EXETYPE\|ERR_UNBALANCEDPAT\|COUNTRY_NIGER\|EOF\|ERR_LABMAINBLK\|RIGHT\|LANGUAGE_KUANYAMA\|KEEPPOSITION\|ERR_BRUSHSIZE\|LANGUAGE_KIKUYU\|CLOSEWINDOW\|ERR_CREATEPORT\|ZOOMOUT\|ERR_MODIFYABR\|IMGFMT_TIFF\|ERR_MISSINGPARAMTR\|NORMAL\|STDPTR_CUSTOM\|ERR_MEMRANGE\|LEFTOUT\|LANGUAGE_CHECHEN\|COUNTRY_BERMUDA\|MOVEFILE_DELETE\|SPRITE_VS_BOX\|LANGUAGE_BASHKIR\|ERR_SPRITEONSCREEN\|ERR_SETADAPTER\|LANGUAGE_INUPIAQ\|ALPHANUMERICAL\|COUNTRY_MACEDONIA\|COUNTRY_KENYA\|COUNTRY_PAKISTAN\|BGPICPART\|IO_UNBUFFERED\|FILETYPEFLAGS_ALPHA\|COUNTRY_ZAMBIA\|ERR_STREXPECTED\|ATTRTITLE\|UPPERCURVE\|ERR_MEMCST\|ERR_SELECTBRUSH\|ERR_NOTRANSPARENCY\|COUNTRY_SWITZERLAND\|ERR_INTERNAL1\|LANGUAGE_SINHALA\|ERR_UNKNOWNSEC\|ATTRCANSEEK\|COUNTRY_ISRAEL\|COUNTRY_SANMARINO\|VECTORPATH\|ERR_PLUGINTYPE\|ERR_CONFIG2\|ERR_SWCHWOENDSWCH\|DOUBLEBUFFER\|ERR_TABLEORNIL\|DOSTYPE_DIRECTORY\|MAROON\|ATTRBORDERTOP\|SAMPLE\|ATTRBGPIC\|PLUGINCAPS_SAVESAMPLE\|ERR_SCREENSIZE\|AMIGAICON_PROJECT\|SNAPDISPLAY\|COUNTRY_GUINEA\|SHADOW\|ERR_MAXUPVALS\|ORIENTATION_PORTRAIT\|COUNTRY_CAMBODIA\|ERR_TABEXPECTED2\|ERR_NOCHAR\|ERR_DSOUNDNOTIFY\|ERR_UNFINISHEDCAPTURE\|ATTRBITRATE\|ERR_NOCOMMA\|ERR_IFWOENDIF\|STDPTR_SYSTEM\|LANGUAGE_IGBO\|HKEY_CURRENT_CONFIG\|LANGUAGE_INTERLINGUA\|AMIGAICON_SHOW\|IPV6\|ERR_CONFIG\|ERR_COMPLEXEXPR\|ERR_FINDSAMPLE\|MODLSHIFT\|ERR_ENDFUNCWOFUNC\|PLUGINCAPS_IMAGE\|UDPNONE\|LANGUAGE_OROMO\|ERR_NEEDCOMPOSITE\|ATTRBORDERLESS\|ERR_SETFILECOMMENT\|LANGUAGE_MARATHI\|ERR_LFSYNTAX\|COUNTRY_BULGARIA\|ERR_FINDTIMEOUT\|ERR_RECVUNKNOWN\|ERR_RENDER\|ERR_CREATEDIR\|WATER2\|SLIDETOP\|ERR_PALSCREEN\|CRUSHLEFT\|COUNTRY_UKRAINE\|RADIAL\|ERR_WRONGOP\|COUNTRY_CURACAO\|ERR_NOCONSTANTS\|COUNTRY_IRAN\|FONTWEIGHT_BLACK\|REVEALBOTTOM\|ERR_PLAYERCOMP\|COUNTRY_PANAMA\|COUNTRY_ARMENIA\|INSERTBRUSH\|LANGUAGE_KOMI\|DATEDAY\|TABLE\|ATTRHARDWARE\|ONBUTTONRIGHTCLICK\|AMIGAICON_HIDE\|ERR_OPENSOUND\|SIZEWINDOW\|ATTRHOSTSCALEX\|FONTENGINE_NATIVE\|COUNTRY_IRAQ\|COUNTRY_ISLEOFMAN\|NUMBER\|HOLLYWOOD\|COUNTRY_SERBIA\|AMIGAICON_SETTITLE\|ERR_NEXTWOFOR\|FUNCTION\|ERR_GETDISKOBJ\|MODRSHIFT\|ERR_WRITEFILE\|LANGUAGE_ARAGONESE\|FILEATTR_WRITE_GRP\|LANGUAGE_UNKNOWN\|ERR_KICKSTART\|ERR_KEYWORD\|PLUGINCAPS_SAVEIMAGE\|FREESPACE\|COUNTRY_BHUTAN\|ERR_AUDIOCONVERTER\|TIMEOUT\|PERMREQ_WRITEEXTERNAL\|ERR_FINDCST\|ATTRTYPE\|ATTRHOSTTITLEBARHEIGHT\|ERR_TEXTURE\|OLIVE\|ERR_SATELLITE\|USEDSPACE\|LANGUAGE_HAITIAN\|COUNTRY_SOUTHSUDAN\|ERR_LABINWHILE\|COUNTRY_BAHRAIN\|ERR_WHILEWOWEND\|LANGUAGE_CROATIAN\|LANGUAGE_TWI\|ERR_NOAPPLET\|COUNTRY_QATAR\|ONBUTTONCLICK\|PUSHTOP\|ERR_READ\|BOX\|ADF_MOVEOBJECT\|COUNTRY_COSTARICA\|COUNTRY_POLAND\|ERR_NONE\|INTERVAL\|SLIDEBOTTOM\|HBLINDS32\|LANGUAGE_CHUVASH\|VBLINDS32\|BEEPINFORMATION\|COUNTRY_NETHERLANDS\|BEEPERROR\|FILETYPEFLAGS_FPS\|ATTRADAPTER\|COUNTRY_TONGA\|LANGUAGE_HINDI\|ERR_UNKNOWNMIMETYPE\|ERR_ANIMFRAME\|ERR_NOSPRITES\|IMGFMT_NATIVE\|LAYER\|MUSIC\|COUNTRY_LITHUANIA\|PLUGINCAPS_SOUND\|ELLIPSE\|COUNTRY_VIETNAM\|LANGUAGE_NORWEGIANBOKMAL\|ERR_IMAGEERROR\|REQICON_NONE\|FONTWEIGHT_SEMIBOLD\|SNAPWINDOW\|ATTRLOADER\|ATTRCURFRAME\|LANGUAGE_PORTUGUESE\|NEXTFRAME2\|COUNTRY_SURINAME\|ATTRXDPI\|LANGUAGE_CHINESE\|DATEMONTH\|ATTRMARGINLEFT\|COUNTRY_SOMALIA\|ERR_CONITEMS\|LANGUAGE_FIJIAN\|COUNTRY_SIERRALEONE\|LANGUAGE_OCCITAN\|LANGUAGE_SOUTHERNSOTHO\|COUNTRY_DOMINICA\|LANGUAGE_HERERO\|LANGUAGE_SWAHILI\|COUNTRY_PAPUANEWGUINEA\|COUNTRY_COOKISLANDS\|ATTRFONTDESCENDER\|COUNTRY_HUNGARY\|ERR_MODIFYSPRITE2\|DEFAULTSPEED\|TRUETYPE_DEFAULT\|LANGUAGE_AYMARA\|COUNTRY_MONGOLIA\|ATTRCURSORY\|COUNTRY_MOLDOVA\|COUNTRY_MEXICO\|ERR_PUBSCREEN\|ERR_LAYERRANGE\|ATTRLAYERSON\|DOWNLOADFILE_STATUS\|NIL\|COUNTRY_MALAYSIA\|LONG\|COUNTRY_MACAO\|LANGUAGE_LATVIAN\|COUNTRY_LEBANON\|SERVER\|COUNTRY_SOUTHKOREA\|COUNTRY_KIRIBATI\|COUNTRY_ESTONIA\|COUNTRY_ANGUILLA\|COUNTRY_TAIWAN\|ERR_TAGEXPECTED\|ATTRHEIGHT\|ERR_TFVBRUSHBGPIC\|ATTRYDPI\|COUNTRY_EQUATORIALGUINEA\|DATETIME\|LANGUAGE_BAMBARA\|EVENTHANDLER\|ATTRPOINTER\|FILETYPEFLAGS_QUALITY\|ERR_FINDVIDEO\|TURNDOWNTOP\|COUNTRY_CHRISTMASISLAND\|COUNTRY_BURUNDI\|COUNTRY_FINLAND\|ERR_MISSINGBRACKET\|LANGUAGE_ORIYA\|LANGUAGE_MONGOLIAN\|COUNTRY_THAILAND\|HKEY_LOCAL_MACHINE\|ATTRTRANSPARENTCOLOR\|COUNTRY_AUSTRALIA\|LANGUAGE_UZBEK\|ERR_SMPRANGE\|ATTRHOSTHEIGHT\|LANGUAGE_ROMANIAN\|LANGUAGE_MACEDONIAN\|COUNTRY_ANGOLA\|SEEK_BEGINNING\|IMGFMT_ILBM\|COUNTRY_GUADELOUPE\|DATEUTC\|ERR_REXXERR\|ATTRWIDTH\|FILEATTR_EXECUTE_USR\|COUNTRY_SAINTHELENA\|ICON\|ERR_LABINFUNC\|ATTRPUBSCREEN\|COUNTRY_GUERNSEY\|ERR_FINDLAYERDATA\|GREEN\|ERR_MISSINGOPBRACK\|HW_AMIGA\|HW_MACOS\|HW_LINUX\|HW_WINDOWS\|HW_ANDROID\|HW_IOS\|HW_LITTLE_ENDIAN\|HW_64BIT\|HW_AMIGAOS4\|HW_MORPHOS\|HW_AROS\|HW_WARPOS\|HW_AMIGAOS3\)\>"
-
+syn match hwConstant "#\<\%(ACTIVEWINDOW\|ADF_ANIM\|ADF_FX\|ADF_MOVEOBJECT\|ALL\|ALPHABETICAL\|ALPHACHANNEL\|ALPHANUMERICAL\|AMIGAICON_DEVICE\|AMIGAICON_DISK\|AMIGAICON_DRAWER\|AMIGAICON_GARBAGE\|AMIGAICON_HIDE\|AMIGAICON_KICKSTART\|AMIGAICON_NONE\|AMIGAICON_PROJECT\|AMIGAICON_SETPOSITION\|AMIGAICON_SETTITLE\|AMIGAICON_SHOW\|AMIGAICON_TOOL\|ANIM\|ANIMSTREAM\|ANIMTYPE_RASTER\|ANIMTYPE_VECTOR\|ANMFMT_GIF\|ANMFMT_IFF\|ANMFMT_MJPEG\|ANTIALIAS\|AQUA\|ARC\|ASYNCDRAW\|ASYNCOBJ\|ATTRACTIVE\|ATTRADAPTER\|ATTRALPHAINTENSITY\|ATTRBGPIC\|ATTRBITRATE\|ATTRBORDERBOTTOM\|ATTRBORDERLEFT\|ATTRBORDERLESS\|ATTRBORDERPEN\|ATTRBORDERRIGHT\|ATTRBORDERTOP\|ATTRBULLETPEN\|ATTRCANSEEK\|ATTRCLIPREGION\|ATTRCOUNT\|ATTRCURFRAME\|ATTRCURSORX\|ATTRCURSORY\|ATTRCURSUBSONG\|ATTRCYCLE\|ATTRDENSITY\|ATTRDEPTH\|ATTRDISPLAY\|ATTRDITHERMODE\|ATTRDOUBLEBUFFER\|ATTRDRIVER\|ATTRDURATION\|ATTRELAPSE\|ATTRENCODING\|ATTRFIXED\|ATTRFONTAA\|ATTRFONTASCENDER\|ATTRFONTCHARMAP\|ATTRFONTDEPTH\|ATTRFONTDESCENDER\|ATTRFONTENGINE\|ATTRFONTNAME\|ATTRFONTPALETTE\|ATTRFONTSCALABLE\|ATTRFONTSIZE\|ATTRFONTTRANSPARENTPEN\|ATTRFONTTYPE\|ATTRFORMAT\|ATTRFRAMEDELAY\|ATTRFUNCTION\|ATTRGROUP\|ATTRHARDWARE\|ATTRHASALPHA\|ATTRHASMASK\|ATTRHEIGHT\|ATTRHOSTDEPTH\|ATTRHOSTHEIGHT\|ATTRHOSTMONITORS\|ATTRHOSTSCALE\|ATTRHOSTSCALEX\|ATTRHOSTSCALEY\|ATTRHOSTTASKBAR\|ATTRHOSTTITLEBARHEIGHT\|ATTRHOSTWIDTH\|ATTRID\|ATTRIMMERSIVEMODE\|ATTRINTERPOLATE\|ATTRKEYBOARD\|ATTRLAYERID\|ATTRLAYERS\|ATTRLAYERSON\|ATTRLOADER\|ATTRMARGINLEFT\|ATTRMARGINRIGHT\|ATTRMASKMODE\|ATTRMAXHEIGHT\|ATTRMAXIMIZED\|ATTRMAXWIDTH\|ATTRMENU\|ATTRMODE\|ATTRMONITOR\|ATTRNOCLOSE\|ATTRNOHIDE\|ATTRNOMODESWITCH\|ATTRNUMENTRIES\|ATTRNUMFRAMES\|ATTRNUMSUBSONGS\|ATTRONSCREEN\|ATTRORIENTATION\|ATTROUTPUTDEVICE\|ATTRPALETTE\|ATTRPALETTEMODE\|ATTRPAUSED\|ATTRPEN\|ATTRPITCH\|ATTRPLAYING\|ATTRPOINTER\|ATTRPOSITION\|ATTRPUBSCREEN\|ATTRRAWHEIGHT\|ATTRRAWWIDTH\|ATTRRAWXPOS\|ATTRRAWYPOS\|ATTRSCALEHEIGHT\|ATTRSCALEMODE\|ATTRSCALESWITCH\|ATTRSCALEWIDTH\|ATTRSHADOWPEN\|ATTRSIZE\|ATTRSIZEABLE\|ATTRSPRITES\|ATTRSTANDARD\|ATTRSTATE\|ATTRSYSTEMBARS\|ATTRTEXT\|ATTRTITLE\|ATTRTRANSPARENTCOLOR\|ATTRTRANSPARENTPEN\|ATTRTYPE\|ATTRUSERDATA\|ATTRVISIBLE\|ATTRWIDTH\|ATTRXDPI\|ATTRXPOS\|ATTRXSERVER\|ATTRYDPI\|ATTRYPOS\|ATTRZPOS\|BARS\|BAUD_115200\|BAUD_1200\|BAUD_19200\|BAUD_2400\|BAUD_300\|BAUD_38400\|BAUD_460800\|BAUD_4800\|BAUD_57600\|BAUD_600\|BAUD_9600\|BEEPERROR\|BEEPINFORMATION\|BEEPQUESTION\|BEEPSYSTEM\|BEEPWARNING\|BGPIC\|BGPICPART\|BIGENDIAN\|BIGSINE\|BITMAP_DEFAULT\|BLACK\|BLEND\|BLUE\|BOLD\|BOOLEAN\|BORDER\|BOTTOM\|BOTTOMOUT\|BOUNCE\|BOX\|BRUSH\|BRUSH_VS_BOX\|BRUSHPART\|BULLET_ARROW\|BULLET_BOX\|BULLET_CHECKMARK\|BULLET_CIRCLE\|BULLET_CROSS\|BULLET_DASH\|BULLET_DIAMOND\|BULLET_LALPHA\|BULLET_LALPHADOUBLE\|BULLET_LALPHASINGLE\|BULLET_LROMAN\|BULLET_LROMANDOUBLE\|BULLET_LROMANSINGLE\|BULLET_NONE\|BULLET_NUMERIC\|BULLET_NUMERICDOUBLE\|BULLET_NUMERICSINGLE\|BULLET_UALPHA\|BULLET_UALPHADOUBLE\|BULLET_UALPHASINGLE\|BULLET_UROMAN\|BULLET_UROMANDOUBLE\|BULLET_UROMANSINGLE\|BYTE\|CAPBUTT\|CAPROUND\|CAPSQUARE\|CARDBOTTOM\|CARDTOP\|CENTER\|CHARMAP_ADOBECUSTOM\|CHARMAP_ADOBEEXPERT\|CHARMAP_ADOBELATIN1\|CHARMAP_ADOBESTANDARD\|CHARMAP_APPLEROMAN\|CHARMAP_BIG5\|CHARMAP_DEFAULT\|CHARMAP_JOHAB\|CHARMAP_MSSYMBOL\|CHARMAP_OLDLATIN2\|CHARMAP_SJIS\|CHARMAP_UNICODE\|CHARMAP_WANSUNG\|CHIPMEMORY\|CIRCLE\|CLIENT\|CLIPBOARD_EMPTY\|CLIPBOARD_IMAGE\|CLIPBOARD_SOUND\|CLIPBOARD_TEXT\|CLIPBOARD_UNKNOWN\|CLIPREGION\|CLOCKWIPE\|CLOSEWINDOW\|CONICAL\|COPYFILE_FAILED\|COPYFILE_OVERWRITE\|COPYFILE_STATUS\|COPYFILE_UNPROTECT\|COUNTBOTH\|COUNTDIRECTORIES\|COUNTFILES\|COUNTRY_AFGHANISTAN\|COUNTRY_ALANDISLANDS\|COUNTRY_ALBANIA\|COUNTRY_ALGERIA\|COUNTRY_AMERICANSAMOA\|COUNTRY_ANDORRA\|COUNTRY_ANGOLA\|COUNTRY_ANGUILLA\|COUNTRY_ANTARCTICA\|COUNTRY_ANTIGUAANDBARBUDA\|COUNTRY_ARGENTINA\|COUNTRY_ARMENIA\|COUNTRY_ARUBA\|COUNTRY_AUSTRALIA\|COUNTRY_AUSTRIA\|COUNTRY_AZERBAIJAN\|COUNTRY_BAHAMAS\|COUNTRY_BAHRAIN\|COUNTRY_BANGLADESH\|COUNTRY_BARBADOS\|COUNTRY_BELARUS\|COUNTRY_BELGIUM\|COUNTRY_BELIZE\|COUNTRY_BENIN\|COUNTRY_BERMUDA\|COUNTRY_BESISLANDS\|COUNTRY_BHUTAN\|COUNTRY_BOLIVIA\|COUNTRY_BOSNIAANDHERZEGOVINA\|COUNTRY_BOTSWANA\|COUNTRY_BOUVETISLAND\|COUNTRY_BRAZIL\|COUNTRY_BRUNEI\|COUNTRY_BULGARIA\|COUNTRY_BURKINAFASO\|COUNTRY_BURUNDI\|COUNTRY_CAMBODIA\|COUNTRY_CAMEROON\|COUNTRY_CANADA\|COUNTRY_CAPEVERDE\|COUNTRY_CAYMANISLANDS\|COUNTRY_CENTRALAFRICANREPUBLIC\|COUNTRY_CHAD\|COUNTRY_CHILE\|COUNTRY_CHINA\|COUNTRY_CHRISTMASISLAND\|COUNTRY_COCOSISLANDS\|COUNTRY_COLOMBIA\|COUNTRY_COMOROS\|COUNTRY_CONGO\|COUNTRY_COOKISLANDS\|COUNTRY_COSTARICA\|COUNTRY_CROATIA\|COUNTRY_CUBA\|COUNTRY_CURACAO\|COUNTRY_CYPRUS\|COUNTRY_CZECHREPUBLIC\|COUNTRY_DENMARK\|COUNTRY_DJIBOUTI\|COUNTRY_DOMINICA\|COUNTRY_DOMINICANREPUBLIC\|COUNTRY_DRCONGO\|COUNTRY_ECUADOR\|COUNTRY_EGYPT\|COUNTRY_ELSALVADOR\|COUNTRY_EQUATORIALGUINEA\|COUNTRY_ERITREA\|COUNTRY_ESTONIA\|COUNTRY_ETHIOPIA\|COUNTRY_FALKLANDISLANDS\|COUNTRY_FAROEISLANDS\|COUNTRY_FIJI\|COUNTRY_FINLAND\|COUNTRY_FRANCE\|COUNTRY_FRENCHGUIANA\|COUNTRY_FRENCHPOLYNESIA\|COUNTRY_GABON\|COUNTRY_GAMBIA\|COUNTRY_GEORGIA\|COUNTRY_GERMANY\|COUNTRY_GHANA\|COUNTRY_GIBRALTAR\|COUNTRY_GREECE\|COUNTRY_GREENLAND\|COUNTRY_GRENADA\|COUNTRY_GUADELOUPE\|COUNTRY_GUAM\|COUNTRY_GUATEMALA\|COUNTRY_GUERNSEY\|COUNTRY_GUINEA\|COUNTRY_GUINEABISSAU\|COUNTRY_GUYANA\|COUNTRY_HAITI\|COUNTRY_HOLYSEE\|COUNTRY_HONDURAS\|COUNTRY_HONGKONG\|COUNTRY_HUNGARY\|COUNTRY_ICELAND\|COUNTRY_INDIA\|COUNTRY_INDONESIA\|COUNTRY_IRAN\|COUNTRY_IRAQ\|COUNTRY_IRELAND\|COUNTRY_ISLEOFMAN\|COUNTRY_ISRAEL\|COUNTRY_ITALY\|COUNTRY_IVORYCOAST\|COUNTRY_JAMAICA\|COUNTRY_JAPAN\|COUNTRY_JERSEY\|COUNTRY_JORDAN\|COUNTRY_KAZAKHSTAN\|COUNTRY_KENYA\|COUNTRY_KIRIBATI\|COUNTRY_KUWAIT\|COUNTRY_KYRGYZSTAN\|COUNTRY_LAOS\|COUNTRY_LATVIA\|COUNTRY_LEBANON\|COUNTRY_LESOTHO\|COUNTRY_LIBERIA\|COUNTRY_LIBYA\|COUNTRY_LIECHTENSTEIN\|COUNTRY_LITHUANIA\|COUNTRY_LUXEMBOURG\|COUNTRY_MACAO\|COUNTRY_MACEDONIA\|COUNTRY_MADAGASCAR\|COUNTRY_MALAWI\|COUNTRY_MALAYSIA\|COUNTRY_MALDIVES\|COUNTRY_MALI\|COUNTRY_MALTA\|COUNTRY_MARSHALLISLANDS\|COUNTRY_MARTINIQUE\|COUNTRY_MAURITANIA\|COUNTRY_MAURITIUS\|COUNTRY_MAYOTTE\|COUNTRY_MEXICO\|COUNTRY_MICRONESIA\|COUNTRY_MOLDOVA\|COUNTRY_MONACO\|COUNTRY_MONGOLIA\|COUNTRY_MONTENEGRO\|COUNTRY_MONTSERRAT\|COUNTRY_MOROCCO\|COUNTRY_MOZAMBIQUE\|COUNTRY_MYANMAR\|COUNTRY_NAMIBIA\|COUNTRY_NAURU\|COUNTRY_NEPAL\|COUNTRY_NETHERLANDS\|COUNTRY_NEWCALEDONIA\|COUNTRY_NEWZEALAND\|COUNTRY_NICARAGUA\|COUNTRY_NIGER\|COUNTRY_NIGERIA\|COUNTRY_NIUE\|COUNTRY_NORFOLKISLAND\|COUNTRY_NORTHKOREA\|COUNTRY_NORWAY\|COUNTRY_OMAN\|COUNTRY_PAKISTAN\|COUNTRY_PALAU\|COUNTRY_PALESTINE\|COUNTRY_PANAMA\|COUNTRY_PAPUANEWGUINEA\|COUNTRY_PARAGUAY\|COUNTRY_PERU\|COUNTRY_PHILIPPINES\|COUNTRY_PITCAIRN\|COUNTRY_POLAND\|COUNTRY_PORTUGAL\|COUNTRY_PUERTORICO\|COUNTRY_QATAR\|COUNTRY_REUNION\|COUNTRY_ROMANIA\|COUNTRY_RUSSIA\|COUNTRY_RWANDA\|COUNTRY_SAINTBARTHELEMY\|COUNTRY_SAINTHELENA\|COUNTRY_SAINTKITTSANDNEVIS\|COUNTRY_SAINTLUCIA\|COUNTRY_SAINTVINCENT\|COUNTRY_SAMOA\|COUNTRY_SANMARINO\|COUNTRY_SAOTOMEANDPRINCIPE\|COUNTRY_SAUDIARABIA\|COUNTRY_SENEGAL\|COUNTRY_SERBIA\|COUNTRY_SEYCHELLES\|COUNTRY_SIERRALEONE\|COUNTRY_SINGAPORE\|COUNTRY_SLOVAKIA\|COUNTRY_SLOVENIA\|COUNTRY_SOLOMONISLANDS\|COUNTRY_SOMALIA\|COUNTRY_SOUTHAFRICA\|COUNTRY_SOUTHKOREA\|COUNTRY_SOUTHSUDAN\|COUNTRY_SPAIN\|COUNTRY_SRILANKA\|COUNTRY_SUDAN\|COUNTRY_SURINAME\|COUNTRY_SWAZILAND\|COUNTRY_SWEDEN\|COUNTRY_SWITZERLAND\|COUNTRY_SYRIA\|COUNTRY_TAIWAN\|COUNTRY_TAJIKISTAN\|COUNTRY_TANZANIA\|COUNTRY_THAILAND\|COUNTRY_TIMOR\|COUNTRY_TOGO\|COUNTRY_TONGA\|COUNTRY_TRINIDADANDTOBAGO\|COUNTRY_TUNISIA\|COUNTRY_TURKEY\|COUNTRY_TURKMENISTAN\|COUNTRY_TUVALU\|COUNTRY_UAE\|COUNTRY_UGANDA\|COUNTRY_UK\|COUNTRY_UKRAINE\|COUNTRY_UNKNOWN\|COUNTRY_URUGUAY\|COUNTRY_USA\|COUNTRY_UZBEKISTAN\|COUNTRY_VANUATU\|COUNTRY_VENEZUELA\|COUNTRY_VIETNAM\|COUNTRY_YEMEN\|COUNTRY_ZAMBIA\|COUNTSEPARATE\|CR_DEAD\|CR_RUNNING\|CR_SUSPENDED\|CROSSFADE\|CRUSHBOTTOM\|CRUSHLEFT\|CRUSHRIGHT\|CRUSHTOP\|DAMPED\|DATA_5\|DATA_6\|DATA_7\|DATA_8\|DATEDAY\|DATELOCAL\|DATELOCALNATIVE\|DATEMONTH\|DATETIME\|DATEUTC\|DATEYEAR\|DEFAULTICON\|DEFAULTSPEED\|DEINTERLACE_DEFAULT\|DEINTERLACE_DOUBLE\|DELETEFILE_FAILED\|DELETEFILE_STATUS\|DELETEFILE_UNPROTECT\|DENSITY_HIGH\|DENSITY_LOW\|DENSITY_MEDIUM\|DENSITY_NONE\|DIAGONAL\|DIRECTORY\|DIRMONITOR_ADD\|DIRMONITOR_CHANGE\|DIRMONITOR_REMOVE\|DISPLAY\|DISPMODE_ASK\|DISPMODE_FAKEFULLSCREEN\|DISPMODE_FULLSCREEN\|DISPMODE_FULLSCREENSCALE\|DISPMODE_MODEREQUESTER\|DISPMODE_MODESWITCH\|DISPMODE_SYSTEMSCALE\|DISPMODE_WINDOWED\|DISPSTATE_CLOSED\|DISPSTATE_MINIMIZED\|DISPSTATE_OPEN\|DISSOLVE\|DITHERMODE_FLOYDSTEINBERG\|DITHERMODE_NONE\|DOSTYPE_DIRECTORY\|DOSTYPE_FILE\|DOUBLE\|DOUBLEBUFFER\|DOWNLOADFILE_STATUS\|DTR_OFF\|DTR_ON\|DURATION_LONG\|DURATION_SHORT\|EDGE\|ELLIPSE\|ENCODING_AMIGA\|ENCODING_ISO8859_1\|ENCODING_RAW\|ENCODING_UTF8\|EOF\|ERR_8OR16BITONLY\|ERR_ACCELERATOR\|ERR_ADDAPPICON\|ERR_ADDAPPWIN\|ERR_ADDSYSEVENT\|ERR_ADDTASK\|ERR_ADFFREEDISP\|ERR_ADFWRONGDISP\|ERR_AFILEPROP\|ERR_AHI\|ERR_ALLOCALPHA\|ERR_ALLOCCHANNEL\|ERR_ALLOCCHUNKY\|ERR_ALLOCMASK\|ERR_ALRDYDECLRD\|ERR_ALREADYASYNC\|ERR_ALSAPCM\|ERR_AMIGAGUIDE\|ERR_ANIMDISK\|ERR_ANIMFRAME\|ERR_ANTIALIAS\|ERR_APPLET\|ERR_APPLETVERSION\|ERR_APPLICATION\|ERR_ARGS\|ERR_ARRAYDECLA\|ERR_ASSERTFAILED\|ERR_ATSUI\|ERR_AUDIOCONVERTER\|ERR_BACKFILL\|ERR_BAD8SVX\|ERR_BADBASE64\|ERR_BADBYTECODE\|ERR_BADCALLBACKRET\|ERR_BADCONSTANT\|ERR_BADDIMENSIONS\|ERR_BADENCODING\|ERR_BADINTEGER\|ERR_BADIP\|ERR_BADLAYERTYPE\|ERR_BADPLATFORM\|ERR_BADSIGNATURE\|ERR_BADUPVALUES\|ERR_BADURL\|ERR_BADWAVE\|ERR_BADYIELD\|ERR_BEGINREFRESH\|ERR_BGPICBUTTON\|ERR_BGPICPALETTE\|ERR_BGPICTYPE\|ERR_BITMAP\|ERR_BLKWOENDBLK\|ERR_BRACECLOSE\|ERR_BRACEOPEN\|ERR_BRACKETCLOSE\|ERR_BRACKETOPEN\|ERR_BRUSHLINK\|ERR_BRUSHSIZE\|ERR_BRUSHTYPE\|ERR_CACHEERROR\|ERR_CASECST\|ERR_CHANGEDIR\|ERR_CHANNELRANGE\|ERR_CHRCSTEMPTY\|ERR_CHRCSTLEN\|ERR_CLIPFORMAT\|ERR_CLIPOPEN\|ERR_CLIPREAD\|ERR_CLIPWRITE\|ERR_CLOSEDDISPLAY\|ERR_CLOSEFILE\|ERR_CMDASVAR\|ERR_CMPUNSUPPORTED\|ERR_COLORSPACE\|ERR_COMMENTSTRUCT\|ERR_COMMODITY\|ERR_COMPLEXEXPR\|ERR_COMPLEXPATTERN\|ERR_COMPLEXWHILE\|ERR_CONCAT\|ERR_CONFIG\|ERR_CONFIG2\|ERR_CONITEMS\|ERR_CONSOLEARG\|ERR_CONTEXTMENU\|ERR_COORDSRANGE\|ERR_COREFOUNDATION\|ERR_CORETEXT\|ERR_CREATEDIR\|ERR_CREATEDOCKY\|ERR_CREATEEVENT\|ERR_CREATEGC\|ERR_CREATEICON\|ERR_CREATEMENU\|ERR_CREATEPORT\|ERR_CREATESHORTCUT\|ERR_CSTDOUBLEDEF\|ERR_CTRLSTRUCT\|ERR_CYIELD\|ERR_DATATYPEALPHA\|ERR_DATATYPESAVE\|ERR_DATATYPESAVE2\|ERR_DBLENCODING\|ERR_DBPALETTE\|ERR_DBTRANSWIN\|ERR_DBVIDEOLAYER\|ERR_DDAUTOSCALE\|ERR_DDMOBILE\|ERR_DDRECVIDEO\|ERR_DEADRESUME\|ERR_DEFFONT\|ERR_DELETEFILE\|ERR_DEMO\|ERR_DEMO2\|ERR_DEMO3\|ERR_DEPTHMISMATCH\|ERR_DEPTHRANGE\|ERR_DESERIALIZE\|ERR_DIFFDEPTH\|ERR_DIFFENCODING\|ERR_DINPUT\|ERR_DIRECTSHOW\|ERR_DIRLOCK\|ERR_DISPLAYADAPTERSUPPORT\|ERR_DISPLAYDESKTOP\|ERR_DISPLAYDESKTOPPAL\|ERR_DISPLAYSIZE\|ERR_DISPMINIMIZED\|ERR_DLOPEN\|ERR_DOUBLEDECLA\|ERR_DOUBLEMENU\|ERR_DRAWPATH\|ERR_DSOUNDNOTIFY\|ERR_DSOUNDNOTIPOS\|ERR_DSOUNDPLAY\|ERR_ELSEIFAFTERELSE\|ERR_ELSETWICE\|ERR_ELSEWOIF\|ERR_EMPTYMENUTREE\|ERR_EMPTYOBJ\|ERR_EMPTYPATH\|ERR_EMPTYSCRIPT\|ERR_EMPTYTABLE\|ERR_ENDBLKWOBLK\|ERR_ENDDOUBLEBUFFER\|ERR_ENDFUNCWOFUNC\|ERR_ENDIFWOIF\|ERR_ENDSWCHWOSWCH\|ERR_ENDWITHWOWITH\|ERR_EQUALEXPECTED\|ERR_ERRORCALLED\|ERR_ESCREPLACE\|ERR_EVNTEXPCTED\|ERR_EXAMINE\|ERR_EXECUTE\|ERR_EXETYPE\|ERR_FGRABVIDSTATE\|ERR_FIELDINIT\|ERR_FILEEXIST\|ERR_FILEFORMAT\|ERR_FILENOTFOUND\|ERR_FILESIZE\|ERR_FINDACTIVITY\|ERR_FINDANIM\|ERR_FINDANIMSTREAM\|ERR_FINDAPPLICATION\|ERR_FINDARRAY\|ERR_FINDASYNCDRAW\|ERR_FINDASYNCOBJ\|ERR_FINDBGPIC\|ERR_FINDBRUSH\|ERR_FINDBUTTON\|ERR_FINDCLIENT\|ERR_FINDCLIPREGION\|ERR_FINDCST\|ERR_FINDDIR\|ERR_FINDDISPLAY\|ERR_FINDFILE\|ERR_FINDFONT\|ERR_FINDFONT2\|ERR_FINDICON\|ERR_FINDINTERVAL\|ERR_FINDLAYER\|ERR_FINDLAYERDATA\|ERR_FINDMEMBLK\|ERR_FINDMENU\|ERR_FINDMENUITEM\|ERR_FINDMONITOR\|ERR_FINDMOVE\|ERR_FINDMUSIC\|ERR_FINDOBJECTDATA\|ERR_FINDPALETTE\|ERR_FINDPATH\|ERR_FINDPLUGIN\|ERR_FINDPOINTER\|ERR_FINDPORT\|ERR_FINDSAMPLE\|ERR_FINDSELECTOR\|ERR_FINDSERIAL\|ERR_FINDSERVER\|ERR_FINDSPRITE\|ERR_FINDTEXTOBJECT\|ERR_FINDTIMEOUT\|ERR_FINDTIMER\|ERR_FINDUDPOBJECT\|ERR_FINDVIDEO\|ERR_FIRSTPREPROC\|ERR_FONTFORMAT\|ERR_FONTPATH\|ERR_FONTPATH2\|ERR_FORBIDMODAL\|ERR_FOREVERWOREPEAT\|ERR_FORWONEXT\|ERR_FRAMEGRABBER\|ERR_FREEABGPIC\|ERR_FREEADISPLAY\|ERR_FREECURPOINTER\|ERR_FT2\|ERR_FTPAUTH\|ERR_FTPERROR\|ERR_FULLSCREEN\|ERR_FUNCARGS\|ERR_FUNCDECLA\|ERR_FUNCEXPECTED\|ERR_FUNCJMP\|ERR_FUNCREMOVED\|ERR_FUNCTABLEARG\|ERR_FUNCWOENDFUNC\|ERR_GETDISKOBJ\|ERR_GETIFADDRS\|ERR_GETMONITORINFO\|ERR_GETSHORTCUT\|ERR_GRABSCREEN\|ERR_GROUPNAMEUSED\|ERR_GTK\|ERR_GUIGFX\|ERR_HEXPOINT\|ERR_HOSTNAME\|ERR_HTTPERROR\|ERR_HTTPTE\|ERR_HWBMCLOSEDISP\|ERR_HWBRUSH\|ERR_HWBRUSHFUNC\|ERR_HWDBFREEDISP\|ERR_ICONDIMS\|ERR_ICONENTRY\|ERR_ICONPARMS\|ERR_ICONSIZE\|ERR_ICONSTANDARD\|ERR_ICONVECTOR\|ERR_IFWOENDIF\|ERR_IMAGEERROR\|ERR_INCOMPATBRUSH\|ERR_INISYNTAX\|ERR_INITSERIAL\|ERR_INTERNAL\|ERR_INTERNAL1\|ERR_INTEXPECTED\|ERR_INVALIDDATE\|ERR_INVALIDUTF8\|ERR_INVALIDUTF8ARG\|ERR_INVCAPIDX\|ERR_INVINSERT\|ERR_INVNEXTKEY\|ERR_INVPATCAP\|ERR_INVREPLACE\|ERR_JAVA\|ERR_JAVAMETHOD\|ERR_JOYSTICK\|ERR_KEYFILE\|ERR_KEYNOTFOUND\|ERR_KEYWORD\|ERR_KICKSTART\|ERR_LABELDECLA\|ERR_LABELDOUBLE\|ERR_LABINFOR\|ERR_LABINFUNC\|ERR_LABINIF\|ERR_LABINWHILE\|ERR_LABMAINBLK\|ERR_LAYERRANGE\|ERR_LAYERSOFF\|ERR_LAYERSON\|ERR_LAYERSUPPORT\|ERR_LAYERSUPPORT2\|ERR_LAYERSWITCH\|ERR_LEGACYPTMOD\|ERR_LFSYNTAX\|ERR_LINKFONT\|ERR_LINKPLUGIN\|ERR_LOADFRAME\|ERR_LOADICON\|ERR_LOADPICTURE\|ERR_LOADPICTURE2\|ERR_LOADPLUGIN\|ERR_LOADSOUND\|ERR_LOADVIDEO\|ERR_LOCK\|ERR_LOCK2\|ERR_LOCKBMAP\|ERR_LOCKEDOBJ\|ERR_LOOPRANGE\|ERR_LOWFREQ\|ERR_MAGICKEY\|ERR_MALFORMPAT1\|ERR_MALFORMPAT2\|ERR_MASKNALPHA\|ERR_MAXLINES\|ERR_MAXLOCALS\|ERR_MAXPARAMS\|ERR_MAXUPVALS\|ERR_MEDIAFOUNDATION\|ERR_MEM\|ERR_MEMCODE\|ERR_MEMCST\|ERR_MEMRANGE\|ERR_MENUATTACHED\|ERR_MENUCOMPLEXITY\|ERR_MISSINGBRACKET\|ERR_MISSINGFIELD\|ERR_MISSINGOPBRACK\|ERR_MISSINGPARAMTR\|ERR_MISSINGSEPARTR\|ERR_MIXMUSMOD\|ERR_MOBILE\|ERR_MODIFYAANIM\|ERR_MODIFYABG\|ERR_MODIFYABGPIC\|ERR_MODIFYABR\|ERR_MODIFYPSMP\|ERR_MODIFYSPRITE\|ERR_MODIFYSPRITE2\|ERR_MONITORDIR\|ERR_MONITORFULLSCREEN\|ERR_MONITORRANGE\|ERR_MOVEFILE\|ERR_MSGPORT\|ERR_MULDISMOBILE\|ERR_MULTIBGPIC\|ERR_MULTIDISPLAYS\|ERR_MUSFMTSUPPORT\|ERR_MUSNOTPAUSED\|ERR_MUSNOTPLYNG\|ERR_MUSNOTPLYNG2\|ERR_MUSPAUSED\|ERR_MUSPLAYING\|ERR_NAMETOOLONG\|ERR_NAMEUSED\|ERR_NEEDAPPLICATION\|ERR_NEEDCOMPOSITE\|ERR_NEEDMORPHOS2\|ERR_NEEDOS41\|ERR_NEEDPALETTEIMAGE\|ERR_NEGCOORDS\|ERR_NEWHWPLUGIN\|ERR_NEXTWOFOR\|ERR_NOABSPATH\|ERR_NOACCESS\|ERR_NOALPHA\|ERR_NOANMLAYER\|ERR_NOAPPLET\|ERR_NOARGBVISUAL\|ERR_NOBLOCKBREAK\|ERR_NOCALLBACK\|ERR_NOCHANNEL\|ERR_NOCHAR\|ERR_NOCLIPREG\|ERR_NOCOLON\|ERR_NOCOMMA\|ERR_NOCOMPRESS\|ERR_NOCONSTANTS\|ERR_NOCONTEXTMENU\|ERR_NOCOORDCST\|ERR_NODIRPATTERN\|ERR_NODISLAYERS\|ERR_NODISPMODES\|ERR_NODOUBLEBUFFER\|ERR_NOFALLTHROUGH\|ERR_NOFILTERNAME\|ERR_NOFMBHANDLER\|ERR_NOFUNCTION\|ERR_NOHWFUNC\|ERR_NOJOYATPORT\|ERR_NOKEYWORDS\|ERR_NOLAYERS\|ERR_NOLOOP\|ERR_NOLOOPCONT\|ERR_NOMASKBRUSH\|ERR_NOMENU\|ERR_NOMIMEVIEWER\|ERR_NOMUSICCB\|ERR_NONE\|ERR_NONSUSPENDEDRESUME\|ERR_NOPALETTE\|ERR_NOPALETTEIMAGE\|ERR_NOPALETTEMODE\|ERR_NORETVAL\|ERR_NOREXX\|ERR_NOSPRITES\|ERR_NOTADIR\|ERR_NOTENOUGHPIXELS\|ERR_NOTIGER\|ERR_NOTPROTRACKER\|ERR_NOTRANSPARENCY\|ERR_NOTXTLAYER\|ERR_NUMBEREXPECTED\|ERR_NUMCALLBACK\|ERR_NUMCONCAT\|ERR_NUMEXPECTED\|ERR_NUMSTRCMP\|ERR_NUMTABLEARG\|ERR_OLDAPPLET\|ERR_OPENANIM\|ERR_OPENANIM2\|ERR_OPENAUDIO\|ERR_OPENFONT\|ERR_OPENLIB\|ERR_OPENSERIAL\|ERR_OPENSOCKET\|ERR_OPENSOUND\|ERR_OPENSOUND2\|ERR_OUTOFRANGE\|ERR_PAKFORMAT\|ERR_PALETTEFILL\|ERR_PALETTEMODE\|ERR_PALSCREEN\|ERR_PEERNAME\|ERR_PENRANGE\|ERR_PERCENTFORMAT\|ERR_PERCENTFORMATSTR\|ERR_PIPE\|ERR_PIXELFORMAT\|ERR_PIXELRANGE\|ERR_PLAYERCOMP\|ERR_PLAYVIDEO\|ERR_PLUGINARCH\|ERR_PLUGINDOUBLET\|ERR_PLUGINSUPPORT\|ERR_PLUGINSYMBOL\|ERR_PLUGINTYPE\|ERR_PLUGINVER\|ERR_POINTERFORMAT\|ERR_POINTERIMG\|ERR_PORTNOTAVAIL\|ERR_PREPROCSYM\|ERR_PROTMETATABLE\|ERR_PUBSCREEN\|ERR_QUICKTIME\|ERR_RADIOTOGGLEMENU\|ERR_RANDOMIZE\|ERR_READ\|ERR_READFILE\|ERR_READFUNC\|ERR_READONLY\|ERR_READRANGE\|ERR_READTABLE\|ERR_READVIDEOPIXELS\|ERR_RECVCLOSED\|ERR_RECVTIMEOUT\|ERR_RECVUNKNOWN\|ERR_REGCLASS\|ERR_REGISTRYREAD\|ERR_REGISTRYWRITE\|ERR_REMADLAYER\|ERR_RENAME\|ERR_RENDER\|ERR_RENDERADLAYER\|ERR_RENDERCALLBACK\|ERR_RENDERER\|ERR_REPEATWOUNTIL\|ERR_REQAUTH\|ERR_REQUIREFIELD\|ERR_REQUIREPLUGIN\|ERR_REQUIRETAGFMT\|ERR_RETWOGOSUB\|ERR_REVDWORD\|ERR_REWINDDIR\|ERR_REXXERR\|ERR_SATELLITE\|ERR_SATFREEDISP\|ERR_SAVEANIM\|ERR_SAVEICON\|ERR_SAVEIMAGE\|ERR_SAVEPNG\|ERR_SAVERALPHA\|ERR_SAVESAMPLE\|ERR_SCALEBGPIC\|ERR_SCREEN\|ERR_SCREENMODE\|ERR_SCREENSIZE\|ERR_SCRPIXFMT\|ERR_SEEK\|ERR_SEEKFILE\|ERR_SEEKFORMAT\|ERR_SEEKRANGE\|ERR_SELECTALPHACHANNEL\|ERR_SELECTANIM\|ERR_SELECTBG\|ERR_SELECTBGPIC\|ERR_SELECTBGPIC2\|ERR_SELECTBRUSH\|ERR_SELECTMASK\|ERR_SEMAPHORE\|ERR_SENDDATA\|ERR_SENDMESSAGE\|ERR_SENDTIMEOUT\|ERR_SENDUNKNOWN\|ERR_SERIALIO\|ERR_SERIALIZE\|ERR_SERIALIZETYPE\|ERR_SETADAPTER\|ERR_SETENV\|ERR_SETFILEATTR\|ERR_SETFILECOMMENT\|ERR_SETFILEDATE\|ERR_SETMENU\|ERR_SHORTIF\|ERR_SIGNAL\|ERR_SMODEALPHA\|ERR_SMPRANGE\|ERR_SOCKET\|ERR_SOCKNAME\|ERR_SOCKOPT\|ERR_SORTFUNC\|ERR_SPRITELINK\|ERR_SPRITEONSCREEN\|ERR_SPRITEONSCREEN2\|ERR_SQBRACKETCLOSE\|ERR_SQBRACKETOPEN\|ERR_STACK\|ERR_STAT\|ERR_STRCALLBACK\|ERR_STREAMASSAMPLE\|ERR_STREXPECTED\|ERR_STRINGCST\|ERR_STRINGEXPECTED\|ERR_STRORNUM\|ERR_STRTABLEARG\|ERR_STRTOOSHORT\|ERR_SURFACE\|ERR_SWCHWOENDSWCH\|ERR_SYNTAXERROR\|ERR_SYNTAXLEVELS\|ERR_SYSBUTTON\|ERR_SYSIMAGE\|ERR_SYSTOOOLD\|ERR_TABCALLBACK\|ERR_TABEXPECTED\|ERR_TABEXPECTED2\|ERR_TABEXPECTED3\|ERR_TABLEDECLA\|ERR_TABLEINDEX\|ERR_TABLEORNIL\|ERR_TABLEOVERFLOW\|ERR_TAGEXPECTED\|ERR_TASKSETUP\|ERR_TEXTARG\|ERR_TEXTCONVERT\|ERR_TEXTCONVERT2\|ERR_TEXTSYNTAX\|ERR_TEXTURE\|ERR_TFIMAGE\|ERR_TFVANIM\|ERR_TFVBGPICBRUSH\|ERR_TFVBRUSH\|ERR_TFVBRUSHBGPIC\|ERR_THREAD\|ERR_THREADEXPECTED\|ERR_TIMER\|ERR_TOKENEXPECTED\|ERR_TOOMANYARGS\|ERR_TOOMANYCAPTURES\|ERR_TOOSMALL2\|ERR_TRANSBGMOBILE\|ERR_TRANSBRUSH\|ERR_TRAYICON\|ERR_TRIALCOMPILE\|ERR_TRIALINCLUDE\|ERR_TRIALLIMIT\|ERR_TRIALSAVEVID\|ERR_UDEXPECTED\|ERR_UNBALANCEDPAT\|ERR_UNEXPECTEDEOF\|ERR_UNEXPECTEDSYM\|ERR_UNFINISHEDCAPTURE\|ERR_UNIMPLCMD\|ERR_UNKNOWN\|ERR_UNKNOWNANMOUT\|ERR_UNKNOWNATTR\|ERR_UNKNOWNCMD\|ERR_UNKNOWNCOND\|ERR_UNKNOWNFILTER\|ERR_UNKNOWNICNOUT\|ERR_UNKNOWNIMGOUT\|ERR_UNKNOWNMIMETYPE\|ERR_UNKNOWNMUSFMT\|ERR_UNKNOWNPALETTE\|ERR_UNKNOWNSEC\|ERR_UNKNOWNSEQ\|ERR_UNKNOWNSMPOUT\|ERR_UNKNOWNTAG\|ERR_UNKNUMFMT\|ERR_UNKPROTOCOL\|ERR_UNKTEXTFMT\|ERR_UNMPARENTHESES\|ERR_UNSETENV\|ERR_UNSUPPORTEDFEAT\|ERR_UNTERMINTDSTR\|ERR_UNTILWOREPEAT\|ERR_UPDATEICON\|ERR_UPLOADFORBIDDEN\|ERR_USERABORT\|ERR_VALUEEXPECTED\|ERR_VAREXPECTED\|ERR_VARLENGTH\|ERR_VARSYNTAX\|ERR_VECGFXPLUGIN\|ERR_VECTORANIM\|ERR_VECTORBRUSH\|ERR_VERSION\|ERR_VFONT\|ERR_VFONTTYPE\|ERR_VIDATTACHED\|ERR_VIDEOFRAME\|ERR_VIDEOINIT\|ERR_VIDEOLAYER\|ERR_VIDEOLAYERDRV\|ERR_VIDEOSTRATEGY\|ERR_VIDEOTRANS\|ERR_VIDLAYERFUNC\|ERR_VIDNOTPAUSED\|ERR_VIDNOTPLAYING\|ERR_VIDPAUSED\|ERR_VIDPLAYING\|ERR_VIDRECMULTI\|ERR_VIDRECTRANS\|ERR_VIDSTOPPED\|ERR_VISUALINFO\|ERR_VMMISMATCH\|ERR_WARPOS\|ERR_WENDWOWHILE\|ERR_WHILEWOWEND\|ERR_WINDOW\|ERR_WITHWOENDWITH\|ERR_WRITE\|ERR_WRITEFILE\|ERR_WRITEJPEG\|ERR_WRITEONLY\|ERR_WRONGCLIPREG\|ERR_WRONGCMDRECVIDEO\|ERR_WRONGDTYPE\|ERR_WRONGFLOAT\|ERR_WRONGHEX\|ERR_WRONGID\|ERR_WRONGOP\|ERR_WRONGOPCST\|ERR_WRONGSPRITESIZE\|ERR_WRONGUSAGE\|ERR_WRONGVSTRATEGY\|ERR_XCURSOR\|ERR_XDISPLAY\|ERR_XF86VIDMODEEXT\|ERR_XFIXES\|ERR_YIELD\|ERR_ZERODIVISION\|ERR_ZLIBDATA\|ERR_ZLIBIO\|ERR_ZLIBSTREAM\|ERR_ZLIBVERSION\|EVENTHANDLER\|FADE\|FASTMEMORY\|FASTSPEED\|FILE\|FILEATTR_ARCHIVE\|FILEATTR_DELETE_USR\|FILEATTR_EXECUTE_GRP\|FILEATTR_EXECUTE_OTH\|FILEATTR_EXECUTE_USR\|FILEATTR_HIDDEN\|FILEATTR_NORMAL\|FILEATTR_PURE\|FILEATTR_READ_GRP\|FILEATTR_READ_OTH\|FILEATTR_READ_USR\|FILEATTR_READONLY\|FILEATTR_SCRIPT\|FILEATTR_SYSTEM\|FILEATTR_WRITE_GRP\|FILEATTR_WRITE_OTH\|FILEATTR_WRITE_USR\|FILETYPE_ANIM\|FILETYPE_ICON\|FILETYPE_IMAGE\|FILETYPE_SOUND\|FILETYPE_VIDEO\|FILETYPEFLAGS_ALPHA\|FILETYPEFLAGS_FPS\|FILETYPEFLAGS_QUALITY\|FILETYPEFLAGS_SAVE\|FILLCOLOR\|FILLGRADIENT\|FILLNONE\|FILLRULEEVENODD\|FILLRULEWINDING\|FILLTEXTURE\|FLOAT\|FLOW_HARDWARE\|FLOW_OFF\|FLOW_XON_XOFF\|FONT\|FONTENGINE_INBUILT\|FONTENGINE_NATIVE\|FONTSLANT_ITALIC\|FONTSLANT_OBLIQUE\|FONTSLANT_ROMAN\|FONTTYPE_BITMAP\|FONTTYPE_COLOR\|FONTTYPE_VECTOR\|FONTWEIGHT_BLACK\|FONTWEIGHT_BOLD\|FONTWEIGHT_BOOK\|FONTWEIGHT_DEMIBOLD\|FONTWEIGHT_EXTRABLACK\|FONTWEIGHT_EXTRABOLD\|FONTWEIGHT_EXTRALIGHT\|FONTWEIGHT_HEAVY\|FONTWEIGHT_LIGHT\|FONTWEIGHT_MEDIUM\|FONTWEIGHT_NORMAL\|FONTWEIGHT_REGULAR\|FONTWEIGHT_SEMIBOLD\|FONTWEIGHT_THIN\|FONTWEIGHT_ULTRABLACK\|FONTWEIGHT_ULTRABOLD\|FONTWEIGHT_ULTRALIGHT\|FRAMEMODE_FULL\|FRAMEMODE_SINGLE\|FREESPACE\|FTPASCII\|FTPBINARY\|FUCHSIA\|FUNCTION\|GRAY\|GREEN\|HBLINDS128\|HBLINDS16\|HBLINDS32\|HBLINDS64\|HBLINDS8\|HCLOSECURTAIN\|HCLOSEGATE\|HEXNUMERICAL\|HFLIPCOIN\|HFLOWBOTTOM\|HFLOWTOP\|HIDEBRUSH\|HIDELAYER\|HKEY_CLASSES_ROOT\|HKEY_CURRENT_CONFIG\|HKEY_CURRENT_USER\|HKEY_LOCAL_MACHINE\|HKEY_USERS\|HLINES\|HLINES2\|HLOWFLIPCOIN\|HOLLYWOOD\|HOPENCURTAIN\|HOPENGATE\|HSPLIT\|HSTRANGEPUSH\|HSTRETCHCENTER\|HSTRIPES\|HSTRIPES16\|HSTRIPES2\|HSTRIPES32\|HSTRIPES4\|HSTRIPES64\|HSTRIPES8\|HW_64BIT\|HW_AMIGA\|HW_AMIGAOS3\|HW_AMIGAOS4\|HW_ANDROID\|HW_AROS\|HW_IOS\|HW_LINUX\|HW_LITTLE_ENDIAN\|HW_MACOS\|HW_MORPHOS\|HW_REVISION\|HW_VERSION\|HW_WARPOS\|HW_WINDOWS\|ICNFMT_HOLLYWOOD\|ICON\|IMAGETYPE_RASTER\|IMAGETYPE_VECTOR\|IMGFMT_BMP\|IMGFMT_GIF\|IMGFMT_ILBM\|IMGFMT_JPEG\|IMGFMT_NATIVE\|IMGFMT_PLUGIN\|IMGFMT_PNG\|IMGFMT_TIFF\|IMGFMT_UNKNOWN\|IMMERSIVE_LEANBACK\|IMMERSIVE_NONE\|IMMERSIVE_NORMAL\|IMMERSIVE_STICKY\|INACTIVEWINDOW\|INF\|INSERTBRUSH\|INTEGER\|INTERVAL\|IO_BUFFERED\|IO_FAKE64\|IO_LITTLEENDIAN\|IO_SIGNED\|IO_UNBUFFERED\|IO_UNSIGNED\|IPAUTO\|IPUNKNOWN\|IPV4\|IPV6\|ITALIC\|JOINBEVEL\|JOINMITER\|JOINROUND\|JOYDOWN\|JOYDOWNLEFT\|JOYDOWNRIGHT\|JOYLEFT\|JOYNODIR\|JOYRIGHT\|JOYUP\|JOYUPLEFT\|JOYUPRIGHT\|JUSTIFIED\|KEEPASPRAT\|KEEPPOSITION\|LANGUAGE_ABKHAZIAN\|LANGUAGE_AFAR\|LANGUAGE_AFRIKAANS\|LANGUAGE_AKAN\|LANGUAGE_ALBANIAN\|LANGUAGE_AMHARIC\|LANGUAGE_ARABIC\|LANGUAGE_ARAGONESE\|LANGUAGE_ARMENIAN\|LANGUAGE_ASSAMESE\|LANGUAGE_AVARIC\|LANGUAGE_AVESTAN\|LANGUAGE_AYMARA\|LANGUAGE_AZERBAIJANI\|LANGUAGE_BAMBARA\|LANGUAGE_BASHKIR\|LANGUAGE_BASQUE\|LANGUAGE_BELARUSIAN\|LANGUAGE_BENGALI\|LANGUAGE_BIHARI\|LANGUAGE_BISLAMA\|LANGUAGE_BOSNIAN\|LANGUAGE_BRETON\|LANGUAGE_BULGARIAN\|LANGUAGE_BURMESE\|LANGUAGE_CATALAN\|LANGUAGE_CENTRALKHMER\|LANGUAGE_CHAMORRO\|LANGUAGE_CHECHEN\|LANGUAGE_CHICHEWA\|LANGUAGE_CHINESE\|LANGUAGE_CHURCHSLAVIC\|LANGUAGE_CHUVASH\|LANGUAGE_CORNISH\|LANGUAGE_CORSICAN\|LANGUAGE_CREE\|LANGUAGE_CROATIAN\|LANGUAGE_CZECH\|LANGUAGE_DANISH\|LANGUAGE_DIVEHI\|LANGUAGE_DUTCH\|LANGUAGE_DZONGKHA\|LANGUAGE_ENGLISH\|LANGUAGE_ESPERANTO\|LANGUAGE_ESTONIAN\|LANGUAGE_EWE\|LANGUAGE_FAROESE\|LANGUAGE_FIJIAN\|LANGUAGE_FINNISH\|LANGUAGE_FRENCH\|LANGUAGE_FULAH\|LANGUAGE_GAELIC\|LANGUAGE_GALICIAN\|LANGUAGE_GANDA\|LANGUAGE_GEORGIAN\|LANGUAGE_GERMAN\|LANGUAGE_GREEK\|LANGUAGE_GREENLANDIC\|LANGUAGE_GUARANI\|LANGUAGE_GUJARATI\|LANGUAGE_HAITIAN\|LANGUAGE_HAUSA\|LANGUAGE_HEBREW\|LANGUAGE_HERERO\|LANGUAGE_HINDI\|LANGUAGE_HIRIMOTU\|LANGUAGE_HUNGARIAN\|LANGUAGE_ICELANDIC\|LANGUAGE_IDO\|LANGUAGE_IGBO\|LANGUAGE_INDONESIAN\|LANGUAGE_INTERLINGUA\|LANGUAGE_INTERLINGUE\|LANGUAGE_INUKTITUT\|LANGUAGE_INUPIAQ\|LANGUAGE_IRISH\|LANGUAGE_ITALIAN\|LANGUAGE_JAPANESE\|LANGUAGE_JAVANESE\|LANGUAGE_KANNADA\|LANGUAGE_KANURI\|LANGUAGE_KASHMIRI\|LANGUAGE_KAZAKH\|LANGUAGE_KIKUYU\|LANGUAGE_KINYARWANDA\|LANGUAGE_KIRGHIZ\|LANGUAGE_KOMI\|LANGUAGE_KONGO\|LANGUAGE_KOREAN\|LANGUAGE_KUANYAMA\|LANGUAGE_KURDISH\|LANGUAGE_LAO\|LANGUAGE_LATIN\|LANGUAGE_LATVIAN\|LANGUAGE_LIMBURGAN\|LANGUAGE_LINGALA\|LANGUAGE_LITHUANIAN\|LANGUAGE_LUBAKATANGA\|LANGUAGE_LUXEMBOURGISH\|LANGUAGE_MACEDONIAN\|LANGUAGE_MALAGASY\|LANGUAGE_MALAY\|LANGUAGE_MALAYALAM\|LANGUAGE_MALTESE\|LANGUAGE_MANX\|LANGUAGE_MAORI\|LANGUAGE_MARATHI\|LANGUAGE_MARSHALLESE\|LANGUAGE_MONGOLIAN\|LANGUAGE_NAURU\|LANGUAGE_NAVAJO\|LANGUAGE_NDONGA\|LANGUAGE_NEPALI\|LANGUAGE_NORTHERNSAMI\|LANGUAGE_NORTHNDEBELE\|LANGUAGE_NORWEGIAN\|LANGUAGE_NORWEGIANBOKMAL\|LANGUAGE_NORWEGIANNYNORSK\|LANGUAGE_OCCITAN\|LANGUAGE_OJIBWA\|LANGUAGE_ORIYA\|LANGUAGE_OROMO\|LANGUAGE_OSSETIAN\|LANGUAGE_PALI\|LANGUAGE_PANJABI\|LANGUAGE_PASHTO\|LANGUAGE_PERSIAN\|LANGUAGE_POLISH\|LANGUAGE_PORTUGUESE\|LANGUAGE_QUECHUA\|LANGUAGE_ROMANIAN\|LANGUAGE_ROMANSH\|LANGUAGE_RUNDI\|LANGUAGE_RUSSIAN\|LANGUAGE_SAMOAN\|LANGUAGE_SANGO\|LANGUAGE_SANSKRIT\|LANGUAGE_SARDINIAN\|LANGUAGE_SERBIAN\|LANGUAGE_SHONA\|LANGUAGE_SICHUANYI\|LANGUAGE_SINDHI\|LANGUAGE_SINHALA\|LANGUAGE_SLOVAK\|LANGUAGE_SLOVENIAN\|LANGUAGE_SOMALI\|LANGUAGE_SOUTHERNSOTHO\|LANGUAGE_SOUTHNDEBELE\|LANGUAGE_SPANISH\|LANGUAGE_SUNDANESE\|LANGUAGE_SWAHILI\|LANGUAGE_SWATI\|LANGUAGE_SWEDISH\|LANGUAGE_TAGALOG\|LANGUAGE_TAHITIAN\|LANGUAGE_TAJIK\|LANGUAGE_TAMIL\|LANGUAGE_TATAR\|LANGUAGE_TELUGU\|LANGUAGE_THAI\|LANGUAGE_TIBETAN\|LANGUAGE_TIGRINYA\|LANGUAGE_TONGA\|LANGUAGE_TSONGA\|LANGUAGE_TSWANA\|LANGUAGE_TURKISH\|LANGUAGE_TURKMEN\|LANGUAGE_TWI\|LANGUAGE_UIGHUR\|LANGUAGE_UKRAINIAN\|LANGUAGE_UNKNOWN\|LANGUAGE_URDU\|LANGUAGE_UZBEK\|LANGUAGE_VENDA\|LANGUAGE_VIETNAMESE\|LANGUAGE_WALLOON\|LANGUAGE_WELSH\|LANGUAGE_WESTERNFRISIAN\|LANGUAGE_WOLOF\|LANGUAGE_XHOSA\|LANGUAGE_YIDDISH\|LANGUAGE_YORUBA\|LANGUAGE_ZHUANG\|LANGUAGE_ZULU\|LAYER\|LAYER_VS_BOX\|LAYERBUTTON\|LEFT\|LEFTOUT\|LIGHTUSERDATA\|LIME\|LINE\|LINEAR\|LITTLEENDIAN\|LONG\|LOWERCURVE\|MAROON\|MASK\|MASKAND\|MASKINVISIBLE\|MASKOR\|MASKVANILLACOPY\|MASKVISIBLE\|MASKXOR\|MEMORY\|MENU\|MENUITEM_DISABLED\|MENUITEM_RADIO\|MENUITEM_SELECTED\|MENUITEM_TOGGLE\|MILLISECONDS\|MODE_READ\|MODE_READWRITE\|MODE_WRITE\|MODLALT\|MODLCOMMAND\|MODLCONTROL\|MODLSHIFT\|MODRALT\|MODRCOMMAND\|MODRCONTROL\|MODRSHIFT\|MONO16\|MONO8\|MONOSPACE\|MOVEFILE_COPY\|MOVEFILE_COPYFAILED\|MOVEFILE_DELETE\|MOVEFILE_DELETEFAILED\|MOVEFILE_UNPROTECT\|MOVELIST\|MOVEWINDOW\|MUSIC\|NAN\|NATIVE\|NATIVEENDIAN\|NAVY\|NETWORKCONNECTION\|NETWORKSERVER\|NETWORKUDP\|NEXTFRAME\|NEXTFRAME2\|NIL\|NOCOLOR\|NONE\|NOPEN\|NORMAL\|NORMALSPEED\|NOTRANSPARENCY\|NUMBER\|NUMERICAL\|OLIVE\|ONBUTTONCLICK\|ONBUTTONCLICKALL\|ONBUTTONOVER\|ONBUTTONOVERALL\|ONBUTTONRIGHTCLICK\|ONBUTTONRIGHTCLICKALL\|ONKEYDOWN\|ONKEYDOWNALL\|ORIENTATION_LANDSCAPE\|ORIENTATION_LANDSCAPEREV\|ORIENTATION_NONE\|ORIENTATION_PORTRAIT\|ORIENTATION_PORTRAITREV\|PALETTE\|PALETTE_AGA\|PALETTE_CGA\|PALETTE_DEFAULT\|PALETTE_EGA\|PALETTE_GRAY128\|PALETTE_GRAY16\|PALETTE_GRAY256\|PALETTE_GRAY32\|PALETTE_GRAY4\|PALETTE_GRAY64\|PALETTE_GRAY8\|PALETTE_MACINTOSH\|PALETTE_MONOCHROME\|PALETTE_OCS\|PALETTE_WINDOWS\|PALETTE_WORKBENCH\|PALETTEMODE_PEN\|PALETTEMODE_REMAP\|PARITY_EVEN\|PARITY_NONE\|PARITY_ODD\|PERMREQ_READEXTERNAL\|PERMREQ_WRITEEXTERNAL\|PI\|PIXELZOOM1\|PIXELZOOM2\|PLOT\|PLUGINCAPS_ANIM\|PLUGINCAPS_AUDIOADAPTER\|PLUGINCAPS_CONVERT\|PLUGINCAPS_DIRADAPTER\|PLUGINCAPS_DISPLAYADAPTER\|PLUGINCAPS_EXTENSION\|PLUGINCAPS_FILEADAPTER\|PLUGINCAPS_ICON\|PLUGINCAPS_IMAGE\|PLUGINCAPS_IPCADAPTER\|PLUGINCAPS_LIBRARY\|PLUGINCAPS_NETWORKADAPTER\|PLUGINCAPS_REQUESTERADAPTER\|PLUGINCAPS_REQUIRE\|PLUGINCAPS_SAVEANIM\|PLUGINCAPS_SAVEICON\|PLUGINCAPS_SAVEIMAGE\|PLUGINCAPS_SAVESAMPLE\|PLUGINCAPS_SERIALIZE\|PLUGINCAPS_SOUND\|PLUGINCAPS_TIMERADAPTER\|PLUGINCAPS_VECTOR\|PLUGINCAPS_VIDEO\|POINTER\|POLYGON\|PRGTYPE_APPLET\|PRGTYPE_PROGRAM\|PRGTYPE_SCRIPT\|PRINT\|PURPLE\|PUSHBOTTOM\|PUSHLEFT\|PUSHRIGHT\|PUSHTOP\|PUZZLE\|QUADRECT\|QUARTERS\|RADIAL\|RANDOMEFFECT\|RANDOMPARAMETER\|RECEIVEALL\|RECEIVEBYTES\|RECEIVEDATA_PACKET\|RECEIVELINE\|RECTBACKCENTER\|RECTBACKEAST\|RECTBACKNORTH\|RECTBACKNORTHEAST\|RECTBACKNORTHWEST\|RECTBACKSOUTH\|RECTBACKSOUTHEAST\|RECTBACKSOUTHWEST\|RECTBACKWEST\|RECTCENTER\|RECTEAST\|RECTNORTH\|RECTNORTHEAST\|RECTNORTHWEST\|RECTSOUTH\|RECTSOUTHEAST\|RECTSOUTHWEST\|RECTWEST\|RED\|REMOVELAYER\|REQ_CAMERA\|REQ_GALLERY\|REQ_HIDEICONS\|REQ_MULTISELECT\|REQ_NORMAL\|REQ_SAVEMODE\|REQICON_ERROR\|REQICON_INFORMATION\|REQICON_NONE\|REQICON_QUESTION\|REQICON_WARNING\|REVEALBOTTOM\|REVEALLEFT\|REVEALRIGHT\|REVEALTOP\|RIGHT\|RIGHTOUT\|ROLLLEFT\|ROLLTOP\|RTS_OFF\|RTS_ON\|SAMPLE\|SANS\|SCALEMODE_AUTO\|SCALEMODE_LAYER\|SCALEMODE_NONE\|SCROLLBOTTOM\|SCROLLEAST\|SCROLLLEFT\|SCROLLNORTH\|SCROLLNORTHEAST\|SCROLLNORTHWEST\|SCROLLRIGHT\|SCROLLSOUTH\|SCROLLSOUTHEAST\|SCROLLSOUTHWEST\|SCROLLTOP\|SCROLLWEST\|SECONDS\|SEEK_BEGINNING\|SEEK_CURRENT\|SEEK_END\|SELMODE_COMBO\|SELMODE_LAYERS\|SELMODE_NORMAL\|SERIAL\|SERIF\|SERVER\|SHADOW\|SHAPE\|SHDWEAST\|SHDWNORTH\|SHDWNORTHEAST\|SHDWNORTHWEST\|SHDWSOUTH\|SHDWSOUTHEAST\|SHDWSOUTHWEST\|SHDWWEST\|SHORT\|SILVER\|SIMPLEBUTTON\|SINE\|SIZEWINDOW\|SLIDEBOTTOM\|SLIDELEFT\|SLIDERIGHT\|SLIDETOP\|SLOWSPEED\|SMOOTHOUT\|SMPFMT_WAVE\|SNAPDESKTOP\|SNAPDISPLAY\|SNAPWINDOW\|SPIRAL\|SPRITE\|SPRITE_VS_BOX\|SPRITE_VS_BRUSH\|STAR\|STDERR\|STDIN\|STDOUT\|STDPTR_BUSY\|STDPTR_CUSTOM\|STDPTR_SYSTEM\|STEREO16\|STEREO8\|STOP_1\|STOP_2\|STRETCHBOTTOM\|STRETCHLEFT\|STRETCHRIGHT\|STRETCHTOP\|STRING\|STRUDEL\|SUN\|SWISS\|TABLE\|TEAL\|TEXTOBJECT\|TEXTOUT\|THREAD\|TICKS\|TIMEOUT\|TIMER\|TOP\|TOPOUT\|TRUETYPE_DEFAULT\|TURNDOWNBOTTOM\|TURNDOWNLEFT\|TURNDOWNRIGHT\|TURNDOWNTOP\|UDPCLIENT\|UDPNONE\|UDPOBJECT\|UDPSERVER\|UNDERLINED\|UNDO\|UPLOADFILE_RESPONSE\|UPLOADFILE_STATUS\|UPNDOWN\|UPPERCURVE\|USEDSPACE\|USELAYERPOSITION\|USERDATA\|VANILLACOPY\|VBLINDS128\|VBLINDS16\|VBLINDS32\|VBLINDS64\|VBLINDS8\|VCLOSECURTAIN\|VCLOSEGATE\|VECTORPATH\|VFLIPCOIN\|VFLOWLEFT\|VFLOWRIGHT\|VIDDRV_HOLLYWOOD\|VIDDRV_OS\|VIDEO\|VIEWMODE_DATE\|VIEWMODE_ICONS\|VIEWMODE_NAME\|VIEWMODE_NONE\|VIEWMODE_SIZE\|VIEWMODE_TYPE\|VLINES\|VLINES2\|VLOWFLIPCOIN\|VOID\|VOPENCURTAIN\|VOPENGATE\|VSPLIT\|VSTRANGEPUSH\|VSTRETCHCENTER\|VSTRIPES\|VSTRIPES16\|VSTRIPES2\|VSTRIPES32\|VSTRIPES4\|VSTRIPES64\|VSTRIPES8\|WALLPAPERLEFT\|WALLPAPERTOP\|WATER1\|WATER2\|WATER3\|WATER4\|WHITE\|WORD\|YELLOW\|ZOOMCENTER\|ZOOMEAST\|ZOOMIN\|ZOOMNORTH\|ZOOMNORTHEAST\|ZOOMNORTHWEST\|ZOOMOUT\|ZOOMSOUTH\|ZOOMSOUTHEAST\|ZOOMSOUTHWEST\|ZOOMWEST\)\>"
" Hollywood Functions
-syn keyword hwFunction LowerStr UpperStr Val StrStr UnrightStr UnleftStr Chr MidStr RightStr LeftStr FindStr AddStr HexStr Asc StrLen ReplaceStr BinStr SplitStr PadNum StrToArray TrimStr ToString ToNumber UnmidStr CountStr InsertStr RepeatStr MD5Str CRC32Str FormatStr PatternFindStr PatternReplaceStr Eval PatternFindStrDirect PatternFindStrShort ArrayToStr Base64Str ToUserData ByteOffset CharOffset CharWidth ValidateStr ConvertStr ReverseStr ByteLen IsAlNum IsAlpha IsCntrl IsDigit IsGraph IsLower IsPrint IsPunct IsSpace IsUpper IsXDigit CompareStr ByteAsc ByteChr StartsWith EndsWith StripStr EmptyStr ByteVal ByteStrStr Abs Sin Cos Tan ASin ACos ATan ATan2 Ceil Floor Mod FrExp LdExp Sqrt Min Max Log Ld Ln Exp Deg Pow Rad Rnd RndF Add Sub Div Mul Round Int Frac Shr Shl Rt Wrap Limit BitSet BitTest BitClear BitXor BitComplement Sgn Sar Ror Rol Cast Hypot EndianSwap RndStrong Red Green Blue RGB ARGB MovePointer HidePointer SetPointer ShowPointer GetAttribute GetPen VWait SetFPSLimit GetFPSLimit IsPicture GetRealColor SaveSnapshot MixRGB CreateClipRegion SetClipRegion FreeClipRegion CreatePointer FreePointer AsyncDrawFrame CancelAsyncDraw FinishAsyncDraw DumpVideoTime GetRandomColor SetDrawTagsDefault BeginRefresh EndRefresh Intersection Box Plot Ellipse Line Circle Polygon SetFillStyle ReadPixel Cls Arc SetFormStyle SetLineWidth GetFillStyle GetFormStyle GetLineWidth MoveBrush MoveAnim MoveTextObject MoveLayer MoveSprite OpenFile Eof ReadChr ReadLine ReadString Seek WriteChr WriteLine WriteString Exists FileSize PathPart FilePart MakeDirectory GetVolumeInfo DeleteFile Execute Run ChangeDirectory GetVolumeName CloseFile ReadDirectory FullPath CopyFile Rename IsDirectory CRC32 WriteShort WriteInt WriteFloat ReadShort ReadInt ReadFloat FilePos MatchPattern FlushFile SetIOMode GetFileAttributes SetFileAttributes GetTempFileName FileLength CompressFile DecompressFile OpenDirectory CloseDirectory NextDirectoryEntry WriteFunction ReadFunction DefineVirtualFile ReadTable WriteTable GetCurrentDirectory ApplyPatch DefineVirtualFileFromString UndefineVirtualStringFile FileToString StringToFile GetEnv SetEnv UnsetEnv MD5 FileLines FileAttributes GetAsset ReadByte WriteByte ReadBytes WriteBytes DirectoryItems MoveFile UseCarriageReturn HaveVolume GetDirectoryEntry RewindDirectory CountDirectoryEntries MonitorDirectory WaitLeftMouse WaitRightMouse WaitKeyDown IsKeyDown WhileRightMouseDown WhileMouseDown WhileKeyDown IsLeftMouse IsRightMouse BreakWhileMouseOn SetEventTimeout GetEventCode LeftMouseQuit EscapeQuit CtrlCQuit EnableEvent DisableEvent RemoveButton RemoveKeyDown ModifyButton ModifyKeyDown WhileMouseOn CreateButton CreateKeyDown FreeEventCache ClearEvents CheckEvent WaitEvent MouseX MouseY MakeButton DeleteButton DisableButton EnableButton InstallEventHandler SetInterval SetTimeout ClearInterval ClearTimeout ChangeInterval DumpButtons WaitMidMouse IsMidMouse ResetKeyStates JoyDir JoyFire CountJoysticks BreakEventHandler CheckEvents CreatePort SendMessage ShowKeyboard HideKeyboard Wait OpenCatalog CloseCatalog GetCatalogString GetDate GetTime GetWeekday GetDateNum GetTimer PauseTimer ResumeTimer StartTimer StopTimer SystemRequest GetMemoryInfo End GetErrorName Sort DebugStr DebugVal DebugPrint ExitOnError GetLastError DebugOutput GetType IIf InsertItem RemoveItem ListItems StringRequest Unpack SetMetaTable GetMetaTable RawEqual RawGet RawSet GCInfo CollectGarbage Error WaitTimer FileRequest PathRequest IPairs Pairs NextItem GetVersion GetCommandLine GetProgramInfo ResetTimer GetConstant SetClipboard GetClipboard PeekClipboard ClearClipboard CompareDates OpenURL CopyTable FontRequest ListRequest ColorRequest GetSystemLanguage GetSystemCountry DebugPrompt GetFileArgument Assert ForEach ForEachI Concat GetObjectType GetObjectData SetObjectData ClearObjectData CopyObjectData HaveObjectData GetObjects RaiseOnError HaveObject GetPlugins IsNil HaveItem DisablePlugin EnablePlugin LoadPlugin HavePlugin GetSystemInfo LegacyControl DisableLineHook EnableLineHook IncreasePointer DecreasePointer GetApplicationInfo DebugPrintNR TableItems IsTableEmpty LoadPrefs SavePrefs DeletePrefs IsUnicode GetTimestamp GetCountryInfo GetLanguageInfo GetTimeZone TimestampToDate DateToTimestamp ParseDate MakeDate DateToUTC UTCToDate ValidateDate Pack ConsolePrint ConsolePrintNR ConsolePrompt Beep ShowNotification GetIconProperties SetIconProperties SetWBIcon OpenAmigaGuide CloseAmigaGuide ShowRinghioMessage GetApplicationList SendApplicationMessage ChangeApplicationIcon ReadRegistryKey WriteRegistryKey CreateShortcut SetTrayIcon GetShortcutPath ShowToast PerformSelector OpenResourceMonitor CloseResourceMonitor ImageRequest PermissionRequest Vibrate CallJavaMethod Undo EnableLayers DisableLayers SwapLayers InsertLayer ShowLayer HideLayer RemoveLayer SetLayerTransparency SetLayerLight SetLayerTint AddMove ClearMove DoMove FreeLayers NextFrame SetLayerName Collision DumpLayers ScaleLayer RotateLayer SetLayerStyle GetLayerStyle TransformLayer SetLayerAnchor LayerExists SetLayerZPos TranslateLayer SelectLayer CreateLayer ModifyLayerFrames GetLayerAtPos SetLayerShadow SetLayerFilter SetLayerBorder LayerToFront LayerToBack PlayLayer StopLayer PauseLayer ResumeLayer SeekLayer SetLayerVolume RemoveLayers SetFont SetFontColor TextHeight TextWidth ResetTabs AddTab Locate SetMargins SetFontStyle Print NPrint TextOut CreateTextObject DisplayTextObject FreeTextObject InKeyStr TextExtent ScaleTextObject CopyTextObject RotateTextObject OpenFont CloseFont UseFont GetAvailableFonts FreeGlyphCache SetDefaultEncoding AddFontPath GetKerningPair GetDefaultEncoding GetFontColor GetFontStyle PlayAnim FreeAnim ScaleAnim PlayAnimDisk LoadAnimFrame LoadAnim IsAnim CreateAnim CopyAnim GetAnimFrame DisplayAnimFrame ModifyAnimFrames SelectAnim SaveAnim BeginAnimStream WriteAnimFrame FinishAnimStream SetAnimFrameDelay ChangeDisplaySize SetTitle MoveDisplay HideDisplay ShowDisplay SetDisplayAttributes CreateDisplay FreeDisplay OpenDisplay CloseDisplay SelectDisplay ActivateDisplay ChangeDisplayMode GetDisplayModes GetMonitors CreateMenu FreeMenu SelectMenuItem DeselectMenuItem IsMenuItemSelected DisableMenuItem EnableMenuItem IsMenuItemDisabled GetPubScreens ShowScreen HideScreen SetScreenTitle GetFrontScreen SetSubtitle FreeSample LoadSample IsSound GetPatternPosition GetSongPosition PlaySubsong WaitPatternPosition WaitSongPosition WaitSampleEnd IsSamplePlaying SetVolume SetPitch SetPanning StopSample PlaySample SetMasterVolume IsSample CreateSample OpenMusic CloseMusic PlayMusic StopMusic PauseMusic ResumeMusic SeekMusic SetMusicVolume IsMusic IsMusicPlaying PlayModule StopModule PauseModule ResumeModule LoadModule FreeModule IsModule SaveSample GetSampleData CreateMusic FillMusicBuffer MixSample CopySample InsertSample FlushMusicBuffer IsChannelPlaying HaveFreeChannel StopChannel GetChannels SetChannelVolume OpenAudio CloseAudio ForceSound CreateBrush DisplayBrush DisplayBrushPart ScaleBrush FreeBrush TintBrush ReplaceColors InvertBrush FlipBrush MixBrush BrushToGray RotateBrush GetBrushLink SelectBrush CopyBrush SetBrushTransparency LoadBrush SelectMask SetMaskMode SaveBrush SelectAlphaChannel SetAlphaIntensity DeleteAlphaChannel CropBrush InvertMask InvertAlphaChannel FloodFill DeleteMask BeginDoubleBuffer EndDoubleBuffer Flip ConvertToBrush GrabDesktop TransformBrush TrimBrush RasterizeBrush BlurBrush EmbossBrush EdgeBrush SharpenBrush SolarizeBrush GammaBrush ContrastBrush ModulateBrush SepiaToneBrush CharcoalBrush SwirlBrush PixelateBrush BrushToMonochrome ChangeBrushTransparency CreateShadowBrush CreateBorderBrush WaterRippleBrush OilPaintBrush BrushToRGBArray RGBArrayToBrush PerspectiveDistortBrush ArcDistortBrush PolarDistortBrush BarrelDistortBrush CreateGradientBrush CreateTexturedBrush ReadBrushPixel WriteBrushPixel QuantizeBrush ReduceAlphaChannel IsBrushEmpty DisplayBGPic DisplayBGPicPart ScaleBGPic CreateGradientBGPic CreateRainbowBGPic CreateTexturedBGPic BrushToBGPic BGPicToBrush CreateBGPic FreeBGPic LoadBGPic SelectBGPic EndSelect CopyBGPic DisplayBrushFX DisplayTextObjectFX DisplayTransitionFX DisplayBGPicPartFX UndoFX ShowLayerFX HideLayerFX RemoveLayerFX GetRandomFX ClearScreen CreateSprite DisplaySprite RemoveSprite FreeSprite LoadSprite ScaleSprite CopySprite FlipSprite RemoveSprites SetSpriteZPos AllocMem FreeMem Poke Peek FillMem CopyMem ReadMem WriteMem DumpMem MemToTable TableToMem GetMemPointer GetMemString AllocMemFromPointer AllocMemFromVirtualFile MoveTo LineTo CurveTo RelMoveTo RelLineTo RelCurveTo DrawPath StartPath StartSubPath ClosePath AddArcToPath AddCircleToPath AddEllipseToPath AddBoxToPath SetLineJoin SetLineCap SetDash SetFillRule FreePath ClearPath IsPathEmpty GetCurrentPoint GetPathExtents CopyPath AppendPath AddTextToPath TranslatePath NormalizePath ForcePathUse SetVectorEngine PathItems PathToBrush GetFillRule GetLineJoin GetLineCap GetDash SetMiterLimit GetMiterLimit CreateIcon FreeIcon LoadIcon SaveIcon AddIconImage RemoveIconImage SetStandardIconImage OpenSerialPort CloseSerialPort ReadSerialData WriteSerialData FlushSerialPort SetBaudRate SetStopBits SetDataBits SetParity SetFlowControl SetDTR SetRTS GetBaudRate GetStopBits GetDataBits GetParity GetFlowControl GetDTR GetRTS PollSerialQueue ClearSerialQueue OpenConnection CloseConnection CreateServer CloseServer SendData ReceiveData GetConnectionIP GetConnectionPort GetHostName ToIP ToHostName DownloadFile UploadFile SetNetworkTimeout GetLocalIP GetLocalPort CreateUDPObject CloseUDPObject SendUDPData ReceiveUDPData IsOnline GetMACAddress GetConnectionProtocol GetLocalProtocol SetNetworkProtocol ResolveHostName OpenVideo CloseVideo PlayVideo StopVideo PauseVideo ResumeVideo SeekVideo IsVideo SetVideoSize SetVideoPosition SetVideoVolume GetVideoFrame IsVideoPlaying ForceVideoMode ForceVideoDriver DumpVideo DisplayVideoFrame SendRexxCommand RunRexxScript CreateRexxPort
+syn keyword hwFunction ACos ARGB ASin ATan ATan2 Abs ActivateDisplay Add AddArcToPath AddBoxToPath AddCircleToPath AddEllipseToPath AddFontPath AddIconImage AddMove AddStr AddTab AddTextToPath AllocMem AllocMemFromPointer AllocMemFromVirtualFile AppendPath ApplyPatch Arc ArcDistortBrush ArrayToStr Asc Assert AsyncDrawFrame BGPicToBrush BarrelDistortBrush Base64Str Beep BeginAnimStream BeginDoubleBuffer BeginRefresh BinStr BitClear BitComplement BitSet BitTest BitXor Blue BlurBrush Box BreakEventHandler BreakWhileMouseOn BrushToBGPic BrushToGray BrushToMonochrome BrushToPenArray BrushToRGBArray ByteAsc ByteChr ByteLen ByteOffset ByteStrStr ByteVal CRC32 CRC32Str CallJavaMethod CancelAsyncDraw CancelAsyncOperation CanonizePath Cast Ceil ChangeApplicationIcon ChangeBrushTransparency ChangeDirectory ChangeDisplayMode ChangeDisplaySize ChangeInterval CharOffset CharWidth CharcoalBrush CheckEvent CheckEvents Chr Circle ClearClipboard ClearEvents ClearInterval ClearMove ClearObjectData ClearPath ClearScreen ClearSerialQueue ClearTimeout CloseAmigaGuide CloseAnim CloseAudio CloseCatalog CloseConnection CloseDirectory CloseDisplay CloseFile CloseFont CloseMusic ClosePath CloseResourceMonitor CloseSerialPort CloseServer CloseUDPObject CloseVideo Cls CollectGarbage Collision ColorRequest CompareDates CompareStr CompressFile Concat ConsolePrint ConsolePrintNR ConsolePrompt ContinueAsyncOperation ContrastBrush ContrastPalette ConvertStr ConvertToBrush CopyAnim CopyBGPic CopyBrush CopyFile CopyMem CopyObjectData CopyPalette CopyPath CopyPens CopySample CopySprite CopyTable CopyTextObject Cos CountDirectoryEntries CountJoysticks CountStr CreateAnim CreateBGPic CreateBorderBrush CreateBrush CreateButton CreateClipRegion CreateCoroutine CreateDisplay CreateGradientBGPic CreateGradientBrush CreateIcon CreateKeyDown CreateLayer CreateList CreateMenu CreateMusic CreatePalette CreatePointer CreatePort CreateRainbowBGPic CreateRexxPort CreateSample CreateServer CreateShadowBrush CreateShortcut CreateSprite CreateTextObject CreateTexturedBGPic CreateTexturedBrush CreateUDPObject CropBrush CtrlCQuit CurveTo CyclePalette DateToTimestamp DateToUTC DebugOutput DebugPrint DebugPrintNR DebugPrompt DebugStr DebugVal DecompressFile DecreasePointer DefineVirtualFile DefineVirtualFileFromString Deg DeleteAlphaChannel DeleteButton DeleteFile DeleteMask DeletePrefs DeselectMenuItem DeserializeTable DirectoryItems DisableButton DisableEvent DisableLayers DisableLineHook DisableMenuItem DisablePlugin DisableVWait DisplayAnimFrame DisplayBGPic DisplayBGPicPart DisplayBGPicPartFX DisplayBrush DisplayBrushFX DisplayBrushPart DisplaySprite DisplayTextObject DisplayTextObjectFX DisplayTransitionFX DisplayVideoFrame Div DoMove DownloadFile DrawPath DumpButtons DumpLayers DumpMem DumpVideo DumpVideoTime EdgeBrush Ellipse EmbossBrush EmptyStr EnableButton EnableEvent EnableLayers EnableLineHook EnableMenuItem EnablePlugin EnableVWait End EndDoubleBuffer EndRefresh EndSelect EndianSwap EndsWith Eof Error EscapeQuit Eval Execute Exists ExitOnError Exp ExtractPalette FileAttributes FileLength FileLines FilePart FilePos FileRequest FileSize FileToString FillMem FillMusicBuffer FindStr FinishAnimStream FinishAsyncDraw Flip FlipBrush FlipSprite FloodFill Floor FlushFile FlushMusicBuffer FlushSerialPort FontRequest ForEach ForEachI ForcePathUse ForceSound ForceVideoDriver ForceVideoMode FormatStr FrExp Frac FreeAnim FreeBGPic FreeBrush FreeClipRegion FreeDisplay FreeEventCache FreeGlyphCache FreeIcon FreeLayers FreeMem FreeMenu FreeModule FreePalette FreePath FreePointer FreeSample FreeSprite FreeTextObject FullPath GCInfo GammaBrush GammaPalette GetAnimFrame GetApplicationInfo GetApplicationList GetAsset GetAttribute GetAvailableFonts GetBaudRate GetBestPen GetBrushLink GetBrushPen GetBulletColor GetCatalogString GetChannels GetCharMaps GetClipboard GetCommandLine GetConnectionIP GetConnectionPort GetConnectionProtocol GetConstant GetCoroutineStatus GetCountryInfo GetCurrentDirectory GetCurrentPoint GetDTR GetDash GetDataBits GetDate GetDateNum GetDefaultEncoding GetDirectoryEntry GetDisplayModes GetEnv GetErrorName GetEventCode GetFPSLimit GetFileArgument GetFileAttributes GetFillRule GetFillStyle GetFlowControl GetFontColor GetFontStyle GetFormStyle GetFrontScreen GetHostName GetIconProperties GetItem GetKerningPair GetLanguageInfo GetLastError GetLayerAtPos GetLayerPen GetLayerStyle GetLineCap GetLineJoin GetLineWidth GetLocalIP GetLocalInterfaces GetLocalPort GetLocalProtocol GetMACAddress GetMemPointer GetMemString GetMemoryInfo GetMetaTable GetMiterLimit GetMonitors GetObjectData GetObjectType GetObjects GetPalettePen GetParity GetPathExtents GetPatternPosition GetPen GetPlugins GetProgramDirectory GetProgramInfo GetPubScreens GetRTS GetRandomColor GetRandomFX GetRealColor GetSampleData GetShortcutPath GetSongPosition GetStartDirectory GetStopBits GetSystemCountry GetSystemInfo GetSystemLanguage GetTempFileName GetTime GetTimeZone GetTimer GetTimestamp GetType GetVersion GetVideoFrame GetVolumeInfo GetVolumeName GetWeekday GrabDesktop Green HaveFreeChannel HaveItem HaveObject HaveObjectData HavePlugin HaveVolume HexStr HideDisplay HideKeyboard HideLayer HideLayerFX HidePointer HideScreen Hypot IIf IPairs IgnoreCase ImageRequest InKeyStr IncreasePointer InsertItem InsertLayer InsertSample InsertStr InstallEventHandler Int Intersection InvertAlphaChannel InvertBrush InvertMask InvertPalette IsAbsolutePath IsAlNum IsAlpha IsAnim IsBrushEmpty IsChannelPlaying IsCntrl IsDigit IsDirectory IsFinite IsGraph IsInf IsKeyDown IsLeftMouse IsLower IsMenuItemDisabled IsMenuItemSelected IsMidMouse IsModule IsMusic IsMusicPlaying IsNan IsNil IsOnline IsPathEmpty IsPicture IsPrint IsPunct IsRightMouse IsSample IsSamplePlaying IsSound IsSpace IsTableEmpty IsUnicode IsUpper IsVideo IsVideoPlaying IsXDigit JoyDir JoyFire LayerExists LayerToBack LayerToFront Ld LdExp LeftMouseQuit LeftStr LegacyControl Limit Line LineTo ListItems ListRequest Ln LoadAnim LoadAnimFrame LoadBGPic LoadBrush LoadIcon LoadModule LoadPalette LoadPlugin LoadPrefs LoadSample LoadSprite Locate Log LowerStr MD5 MD5Str MakeButton MakeDate MakeDirectory MakeHostPath MatchPattern Max MemToTable MidStr Min MixBrush MixRGB MixSample Mod ModifyAnimFrames ModifyButton ModifyKeyDown ModifyLayerFrames ModulateBrush ModulatePalette MonitorDirectory MouseX MouseY MoveAnim MoveBrush MoveDisplay MoveFile MoveLayer MovePointer MoveSprite MoveTextObject MoveTo Mul NPrint NextDirectoryEntry NextFrame NextItem NormalizePath OilPaintBrush OpenAmigaGuide OpenAnim OpenAudio OpenCatalog OpenConnection OpenDirectory OpenDisplay OpenFile OpenFont OpenMusic OpenResourceMonitor OpenSerialPort OpenURL OpenVideo Pack PadNum Pairs PaletteToGray ParseDate PathItems PathPart PathRequest PathToBrush PatternFindStr PatternFindStrDirect PatternFindStrShort PatternReplaceStr PauseLayer PauseModule PauseMusic PauseTimer PauseVideo Peek PeekClipboard PenArrayToBrush PerformSelector PermissionRequest PerspectiveDistortBrush Pi PixelateBrush PlayAnim PlayAnimDisk PlayLayer PlayModule PlayMusic PlaySample PlaySubsong PlayVideo Plot Poke PolarDistortBrush PollSerialQueue Polygon Pow Print QuantizeBrush RGB RGBArrayToBrush Rad RaiseOnError RasterizeBrush RawDiv RawEqual RawGet RawSet ReadBrushPixel ReadByte ReadBytes ReadChr ReadDirectory ReadFloat ReadFunction ReadInt ReadLine ReadMem ReadPen ReadPixel ReadRegistryKey ReadSerialData ReadShort ReadString ReadTable ReceiveData ReceiveUDPData Red ReduceAlphaChannel RefreshDisplay RelCurveTo RelLineTo RelMoveTo RemapBrush RemoveBrushPalette RemoveButton RemoveIconImage RemoveItem RemoveKeyDown RemoveLayer RemoveLayerFX RemoveLayers RemoveSprite RemoveSprites Rename RepeatStr ReplaceColors ReplaceStr ResetKeyStates ResetTabs ResetTimer ResolveHostName ResumeCoroutine ResumeLayer ResumeModule ResumeMusic ResumeTimer ResumeVideo ReverseFindStr ReverseStr RewindDirectory RightStr Rnd RndF RndStrong Rol Ror RotateBrush RotateLayer RotateTextObject Round Rt Run RunCallback RunRexxScript Sar SaveAnim SaveBrush SaveIcon SavePalette SavePrefs SaveSample SaveSnapshot ScaleAnim ScaleBGPic ScaleBrush ScaleLayer ScaleSprite ScaleTextObject Seek SeekLayer SeekMusic SeekVideo SelectAlphaChannel SelectAnim SelectBGPic SelectBrush SelectDisplay SelectLayer SelectMask SelectMenuItem SelectPalette SendApplicationMessage SendData SendMessage SendRexxCommand SendUDPData SepiaToneBrush SerializeTable SetAlphaIntensity SetAnimFrameDelay SetBaudRate SetBorderPen SetBrushDepth SetBrushPalette SetBrushPen SetBrushTransparency SetBrushTransparentPen SetBulletColor SetBulletPen SetChannelVolume SetClipRegion SetClipboard SetCycleTable SetDTR SetDash SetDataBits SetDefaultEncoding SetDepth SetDisplayAttributes SetDitherMode SetDrawPen SetDrawTagsDefault SetEnv SetEventTimeout SetFPSLimit SetFileAttributes SetFileEncoding SetFillRule SetFillStyle SetFlowControl SetFont SetFontColor SetFontStyle SetFormStyle SetGradientPalette SetIOMode SetIconProperties SetInterval SetLayerAnchor SetLayerBorder SetLayerDepth SetLayerFilter SetLayerLight SetLayerName SetLayerPalette SetLayerPen SetLayerShadow SetLayerStyle SetLayerTint SetLayerTransparency SetLayerTransparentPen SetLayerVolume SetLayerZPos SetLineCap SetLineJoin SetLineWidth SetListItems SetMargins SetMaskMode SetMasterVolume SetMetaTable SetMiterLimit SetMusicVolume SetNetworkProtocol SetNetworkTimeout SetObjectData SetPalette SetPaletteDepth SetPaletteMode SetPalettePen SetPaletteTransparentPen SetPanning SetParity SetPen SetPitch SetPointer SetRTS SetScreenTitle SetShadowPen SetSpriteZPos SetStandardIconImage SetStandardPalette SetStopBits SetSubtitle SetTimeout SetTimerElapse SetTitle SetTransparentPen SetTransparentThreshold SetTrayIcon SetVectorEngine SetVideoPosition SetVideoSize SetVideoVolume SetVolume SetWBIcon Sgn SharpenBrush Shl ShowDisplay ShowKeyboard ShowLayer ShowLayerFX ShowNotification ShowPointer ShowRinghioMessage ShowScreen ShowToast Shr Sin SolarizeBrush SolarizePalette Sort SplitStr Sqrt StartPath StartSubPath StartTimer StartsWith StopChannel StopLayer StopModule StopMusic StopSample StopTimer StopVideo StrLen StrStr StrToArray StringRequest StringToFile StripStr Sub SwapLayers SwirlBrush SystemRequest TableItems TableToMem Tan TextExtent TextHeight TextOut TextWidth TimerElapsed TimestampToDate TintBrush TintPalette ToHostName ToIP ToNumber ToString ToUserData TransformBrush TransformLayer TranslateLayer TranslatePath TrimBrush TrimStr UTCToDate UndefineVirtualStringFile Undo UndoFX UnleftStr UnmidStr Unpack UnrightStr UnsetEnv UploadFile UpperStr UseCarriageReturn UseFont VWait Val ValidateDate ValidateStr Vibrate Wait WaitEvent WaitKeyDown WaitLeftMouse WaitMidMouse WaitPatternPosition WaitRightMouse WaitSampleEnd WaitSongPosition WaitTimer WaterRippleBrush WhileKeyDown WhileMouseDown WhileMouseOn WhileRightMouseDown Wrap WriteAnimFrame WriteBrushPixel WriteByte WriteBytes WriteChr WriteFloat WriteFunction WriteInt WriteLine WriteMem WritePen WriteRegistryKey WriteSerialData WriteShort WriteString WriteTable YieldCoroutine
" user-defined constants
syn match hwUserConstant "#\<\u\+\>"
diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim
index d16ee1817f..8ccb5574e7 100644
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -1,10 +1,11 @@
" Vim syntax file
" Language: HTML
-" Maintainer: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
+" Previous Maintainer: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
" Repository: https://notabug.org/jorgesumle/vim-html-syntax
-" Last Change: 2018 Apr 7
-" Included patch from Jorge Maldonado Ventura to fix rendering
+" Last Change: 2021 Mar 02
+" Included patch #7900 to fix comments
+" Included patch #7916 to fix a few more things
"
" Please check :help html.vim for some comments and a description of the options
@@ -57,11 +58,12 @@ syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
" new html 5 tags
syn keyword htmlTagName contained article aside audio bdi canvas data
-syn keyword htmlTagName contained datalist details embed figcaption figure
-syn keyword htmlTagName contained footer header hgroup keygen main mark
-syn keyword htmlTagName contained menuitem meter nav output picture
+syn keyword htmlTagName contained datalist details dialog embed figcaption
+syn keyword htmlTagName contained figure footer header hgroup keygen main
+syn keyword htmlTagName contained mark menuitem meter nav output picture
syn keyword htmlTagName contained progress rb rp rt rtc ruby section
-syn keyword htmlTagName contained slot source template time track video wbr
+syn keyword htmlTagName contained slot source summary template time track
+syn keyword htmlTagName contained video wbr
" legal arg names
syn keyword htmlArg contained action
@@ -78,26 +80,16 @@ syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1
" aria attributes
-syn match htmlArg contained "\<\(aria-activedescendant\|aria-atomic\)\>"
-syn match htmlArg contained "\<\(aria-autocomplete\|aria-busy\|aria-checked\)\>"
-syn match htmlArg contained "\<\(aria-colcount\|aria-colindex\|aria-colspan\)\>"
-syn match htmlArg contained "\<\(aria-controls\|aria-current\)\>"
-syn match htmlArg contained "\<\(aria-describedby\|aria-details\)\>"
-syn match htmlArg contained "\<\(aria-disabled\|aria-dropeffect\)\>"
-syn match htmlArg contained "\<\(aria-errormessage\|aria-expanded\)\>"
-syn match htmlArg contained "\<\(aria-flowto\|aria-grabbed\|aria-haspopup\)\>"
-syn match htmlArg contained "\<\(aria-hidden\|aria-invalid\)\>"
-syn match htmlArg contained "\<\(aria-keyshortcuts\|aria-label\)\>"
-syn match htmlArg contained "\<\(aria-labelledby\|aria-level\|aria-live\)\>"
-syn match htmlArg contained "\<\(aria-modal\|aria-multiline\)\>"
-syn match htmlArg contained "\<\(aria-multiselectable\|aria-orientation\)\>"
-syn match htmlArg contained "\<\(aria-owns\|aria-placeholder\|aria-posinset\)\>"
-syn match htmlArg contained "\<\(aria-pressed\|aria-readonly\|aria-relevant\)\>"
-syn match htmlArg contained "\<\(aria-required\|aria-roledescription\)\>"
-syn match htmlArg contained "\<\(aria-rowcount\|aria-rowindex\|aria-rowspan\)\>"
-syn match htmlArg contained "\<\(aria-selected\|aria-setsize\|aria-sort\)\>"
-syn match htmlArg contained "\<\(aria-valuemax\|aria-valuemin\)\>"
-syn match htmlArg contained "\<\(aria-valuenow\|aria-valuetext\)\>"
+exe 'syn match htmlArg contained "\<aria-\%(' . join([
+ \ 'activedescendant', 'atomic', 'autocomplete', 'busy', 'checked', 'colcount',
+ \ 'colindex', 'colspan', 'controls', 'current', 'describedby', 'details',
+ \ 'disabled', 'dropeffect', 'errormessage', 'expanded', 'flowto', 'grabbed',
+ \ 'haspopup', 'hidden', 'invalid', 'keyshortcuts', 'label', 'labelledby', 'level',
+ \ 'live', 'modal', 'multiline', 'multiselectable', 'orientation', 'owns',
+ \ 'placeholder', 'posinset', 'pressed', 'readonly', 'relevant', 'required',
+ \ 'roledescription', 'rowcount', 'rowindex', 'rowspan', 'selected', 'setsize',
+ \ 'sort', 'valuemax', 'valuemin', 'valuenow', 'valuetext'
+ \ ], '\|') . '\)\>"'
syn keyword htmlArg contained role
" Netscape extensions
@@ -123,11 +115,11 @@ syn keyword htmlArg contained summary tabindex valuetype version
" html 5 arg names
syn keyword htmlArg contained allowfullscreen async autocomplete autofocus
syn keyword htmlArg contained autoplay challenge contenteditable contextmenu
-syn keyword htmlArg contained controls crossorigin default dialog dirname
-syn keyword htmlArg contained download draggable dropzone form formaction
-syn keyword htmlArg contained formenctype formmethod formnovalidate formtarget
-syn keyword htmlArg contained hidden high icon inputmode keytype kind list loop
-syn keyword htmlArg contained low max min minlength muted nonce novalidate open
+syn keyword htmlArg contained controls crossorigin default dirname download
+syn keyword htmlArg contained draggable dropzone form formaction formenctype
+syn keyword htmlArg contained formmethod formnovalidate formtarget hidden
+syn keyword htmlArg contained high icon inputmode keytype kind list loop low
+syn keyword htmlArg contained max min minlength muted nonce novalidate open
syn keyword htmlArg contained optimum pattern placeholder poster preload
syn keyword htmlArg contained radiogroup required reversed sandbox spellcheck
syn keyword htmlArg contained sizes srcset srcdoc srclang step title translate
@@ -138,13 +130,19 @@ syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
" Comments (the real ones or the old netscape ones)
if exists("html_wrong_comments")
- syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
+ syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
else
- syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError,@Spell
- syn match htmlCommentError contained "[^><!]"
- syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc,@Spell
+ " The HTML 5.2 syntax 8.2.4.41: bogus comment is parser error; browser skips until next &gt
+ syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError keepend
+ " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
+ " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
+ " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
+ syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=htmlCommentNested,@htmlPreProc,@Spell keepend
+ " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
+ syn match htmlCommentNested contained "<!-->\@!"
+ syn match htmlCommentError contained "[^><!]"
endif
-syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+
+syn region htmlComment start=+<!DOCTYPE+ end=+>+ keepend
" server-parsed commands
syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
@@ -265,7 +263,7 @@ 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 htmlValue String
hi def link htmlSpecialChar Special
if !exists("html_no_rendering")
@@ -309,13 +307,10 @@ hi def link htmlPreProc PreProc
hi def link htmlPreAttr String
hi def link htmlPreProcAttrName PreProc
hi def link htmlPreProcAttrError Error
-hi def link htmlSpecial Special
-hi def link htmlSpecialChar Special
hi def link htmlString String
hi def link htmlStatement Statement
hi def link htmlComment Comment
-hi def link htmlCommentPart Comment
-hi def link htmlValue String
+hi def link htmlCommentNested htmlError
hi def link htmlCommentError htmlError
hi def link htmlTagError htmlError
hi def link htmlEvent javaScript
diff --git a/runtime/syntax/ia64.vim b/runtime/syntax/ia64.vim
index 544fcd402c..ad12f563fb 100644
--- a/runtime/syntax/ia64.vim
+++ b/runtime/syntax/ia64.vim
@@ -1,10 +1,9 @@
" Vim syntax file
-" Language: IA-64 (Itanium) assembly language
-" Maintainer: Parth Malwankar <pmalwankar@yahoo.com>
-" URL: http://www.geocities.com/pmalwankar (Home Page with link to my Vim page)
-" http://www.geocities.com/pmalwankar/vim.htm (for VIM)
-" File Version: 0.7
-" Last Change: 2006 Sep 08
+" Language: IA-64 (Itanium) assembly language
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Parth Malwankar <pmalwankar@yahoo.com>
+" File Version: 0.8
+" Last Change: 2020 Sep 25
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -15,16 +14,16 @@ endif
"ignore case for assembly
syn case ignore
-" Identifier Keyword characters (defines \k)
-setlocal iskeyword=@,48-57,#,$,.,:,?,@-@,_,~
-
syn sync minlines=5
" Read the MASM syntax to start with
" This is needed as both IA-64 as well as IA-32 instructions are supported
source <sfile>:p:h/masm.vim
-syn region ia64Comment start="//" end="$" contains=ia64Todo
+" Identifier Keyword characters (defines \k)
+syn iskeyword @,48-57,#,$,.,:,?,@-@,_,~
+
+syn region ia64Comment start="//" end="$" contains=ia64Todo
syn region ia64Comment start="/\*" end="\*/" contains=ia64Todo
syn match ia64Identifier "[a-zA-Z_$][a-zA-Z0-9_$]*"
@@ -266,22 +265,22 @@ syn match ia64data "stringz\=\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.ls
"put masm groups with our groups
hi def link masmOperator ia64operator
hi def link masmDirective ia64Directive
-hi def link masmOpcode ia64Opcode
+hi def link masmOpcode ia64Opcode
hi def link masmIdentifier ia64Identifier
-hi def link masmFloat ia64Float
+hi def link masmFloat ia64Float
"ia64 specific stuff
-hi def link ia64Label Define
-hi def link ia64Comment Comment
+hi def link ia64Label Define
+hi def link ia64Comment Comment
hi def link ia64Directive Type
-hi def link ia64opcode Statement
+hi def link ia64opcode Statement
hi def link ia64registers Operator
-hi def link ia64string String
+hi def link ia64string String
hi def link ia64Hex Number
-hi def link ia64Binary Number
-hi def link ia64Octal Number
-hi def link ia64Float Float
-hi def link ia64Decimal Number
+hi def link ia64Binary Number
+hi def link ia64Octal Number
+hi def link ia64Float Float
+hi def link ia64Decimal Number
hi def link ia64Identifier Identifier
hi def link ia64data Type
hi def link ia64delimiter Delimiter
diff --git a/runtime/syntax/initng.vim b/runtime/syntax/initng.vim
index 1a912c1d05..5d7685cde1 100644
--- a/runtime/syntax/initng.vim
+++ b/runtime/syntax/initng.vim
@@ -1,6 +1,6 @@
" Vim syntax file
" Language: initng .i files
-" Maintainer: Elan Ruusame <glen@pld-linux.org>
+" Maintainer: Elan Ruusamäe <glen@pld-linux.org>
" URL: http://glen.alkohol.ee/pld/initng/
" License: GPL v2
" Version: 0.13
diff --git a/runtime/syntax/inittab.vim b/runtime/syntax/inittab.vim
index 82bf660105..fc5adfc348 100644
--- a/runtime/syntax/inittab.vim
+++ b/runtime/syntax/inittab.vim
@@ -1,9 +1,8 @@
" Vim syntax file
-" This is a GENERATED FILE. Please always refer to source file at the URI below.
" Language: SysV-compatible init process control file `inittab'
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2002-09-13
-" URL: http://physics.muni.cz/~yeti/download/syntax/inittab.vim
+" Maintainer: Donovan Keohane <donovan.keohane@gmail.com>
+" Previous Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2019-11-19
" Setup
" quit when a syntax file was already loaded
@@ -25,7 +24,7 @@ syn region inittabShString start=+"+ end=+"+ skip=+\\\\\|\\\"+ contained
syn region inittabShString start=+'+ end=+'+ contained
syn match inittabShOption "\s[-+][[:alnum:]]\+"ms=s+1 contained
syn match inittabShOption "\s--[:alnum:][-[:alnum:]]*"ms=s+1 contained
-syn match inittabShCommand "/\S\+" contained
+syn match inittabShCommand "\S\+" contained
syn cluster inittabSh add=inittabShOption,inittabShString,inittabShCommand
" Keywords
@@ -39,7 +38,7 @@ syn match inittabColonAction ":" contained nextgroup=inittabAction,inittabError
syn match inittabAction "\w\+" contained nextgroup=inittabColonProcess,inittabError contains=inittabActionName
syn match inittabColonProcess ":" contained nextgroup=inittabProcessPlus,inittabProcess,inittabError
syn match inittabProcessPlus "+" contained nextgroup=inittabProcess,inittabError
-syn region inittabProcess start="/" end="$" transparent oneline contained contains=@inittabSh,inittabComment
+syn region inittabProcess start="\S" end="$" transparent oneline contained contains=@inittabSh,inittabComment
" Define the default highlighting
diff --git a/runtime/syntax/iss.vim b/runtime/syntax/iss.vim
index e58c618b7f..e41de5db5a 100644
--- a/runtime/syntax/iss.vim
+++ b/runtime/syntax/iss.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Inno Setup File (iss file) and My InnoSetup extension
" Maintainer: Jason Mills (jmills@cs.mun.ca)
-" Previous Maintainer: Dominique Stphan (dominique@mggen.com)
-" Last Change: 2004 Dec 14
+" Previous Maintainer: Dominique Stéphan (dominique@mggen.com)
+" Last Change: 2019 Sep 27
"
" Todo:
" - The paramter String: is matched as flag string (because of case ignore).
@@ -45,13 +45,13 @@ syn match issParam "Components:\|Description:\|GroupDescription:\|Types:\|Extra
syn match issParam "StatusMsg:\|RunOnceId:\|Tasks:"
syn match issParam "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:"
-syn match issComment "^\s*;.*$"
+syn match issComment "^\s*;.*$" contains=@Spell
" folder constant
-syn match issFolder "{[^{]*}"
+syn match issFolder "{[^{]*}" contains=@NoSpell
" string
-syn region issString start=+"+ end=+"+ contains=issFolder
+syn region issString start=+"+ end=+"+ contains=issFolder,@Spell
" [Dirs]
syn keyword issDirsFlags deleteafterinstall uninsalwaysuninstall uninsneveruninstall
diff --git a/runtime/syntax/j.vim b/runtime/syntax/j.vim
index 4912942e8b..a694cb2f1a 100644
--- a/runtime/syntax/j.vim
+++ b/runtime/syntax/j.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: J
-" Maintainer: David Bürgin <676c7473@gmail.com>
-" URL: https://github.com/glts/vim-j
-" Last Change: 2015-01-11
+" Maintainer: David Bürgin <dbuergin@gluet.ch>
+" URL: https://gitlab.com/glts/vim-j
+" Last Change: 2019-11-12
if exists('b:current_syntax')
finish
@@ -23,10 +23,10 @@ syntax match jControl /\<\%(for\|goto\|label\)_\a\k*\./
" Standard library names. A few names need to be defined with ":syntax match"
" because they would otherwise take precedence over the corresponding jControl
" and jDefineExpression items.
-syntax keyword jStdlibNoun ARGV BINPATH CR CRLF DEL Debug EAV EMPTY FF FHS IF64 IFIOS IFJCDROID IFJHS IFQT IFRASPI IFUNIX IFWIN IFWINCE IFWINE IFWOW64 JB01 JBOXED JCHAR JCMPX JFL JINT JPTR JSIZES JSTR JTYPES JVERSION LF LF2 TAB UNAME UNXLIB dbhelp libjqt
+syntax keyword jStdlibNoun ARGV BINPATH CR CRLF DEL Debug EAV EMPTY FF FHS IF64 IFBE IFIOS IFJA IFJHS IFJNET IFQT IFRASPI IFUNIX IFWIN IFWINCE IFWINE IFWOW64 JB01 JBOXED JCHAR JCHAR2 JCHAR4 JCMPX JFL JINT JLIB JPTR JSB JSIZES JSTR JSTR2 JSTR4 JTYPES JVERSION LF LF2 LIBFILE TAB UNAME UNXLIB dbhelp libjqt
syntax keyword jStdlibAdverb define each every fapplylines inv inverse items leaf rows rxapply rxmerge table
syntax keyword jStdlibConjunction bind cuts def on
-syntax keyword jStdlibVerb AND Endian IFDEF OR XOR anddf android_exec_am android_exec_host andunzip apply boxopen boxxopen bx calendar cd cdcb cder cderx cdf charsub chopstring cleartags clear coclass cocreate cocurrent codestroy coerase cofind cofindv cofullname coinfo coinsert compare coname conames conew conl conouns conounsx copath copathnl copathnlx coreset costate cut cutLF cutopen cutpara datatype dbctx dberm dberr dbg dbjmp dblocals dblxq dblxs dbnxt dbq dbr dbret dbrr dbrrx dbrun dbs dbsig dbsq dbss dbst dbstack dbstk dbstop dbstopme dbstopnext dbstops dbtrace dbview deb debc delstring detab dfh dir dircompare dircompares dirfind dirpath dirss dirssrplc dirtree dirused dlb dltb dltbs dquote drop dropafter dropto dtb dtbs echo empty endian erase evtloop exit expand f2utf8 fappend fappends fboxname fc fcompare fcompares fcopynew fdir ferase fetch fexist fexists fgets file2url fixdotdot fliprgb fmakex foldpara foldtext fpathcreate fpathname fputs fread freadblock freadr freads frename freplace fsize fss fssrplc fstamp fstringreplace ftype fview fwrite fwritenew fwrites getalpha getargs getdate getenv getqtbin hfd hostpathsep ic install iospath isatty isotimestamp isutf8 jcwdpath joinstring jpath jpathsep jsystemdefs launch list ljust load loadd loadtags mema memf memr memw nameclass namelist names nc nl pick quote require rjust rplc rxE rxall rxcomp rxcut rxeq rxerror rxfirst rxfree rxfrom rxhandles rxin rxindex rxinfo rxmatch rxmatches rxrplc rxutf8 script scriptd scripts setalpha setbreak shell show sign sminfo smoutput sort split splitnostring splitstring ss startupandroid startupconsole startupide stderr stdin stdout stringreplace symdat symget symset ta tagcp tagopen tagselect take takeafter taketo timespacex timestamp timex tmoutput toCRLF toHOST toJ todate todayno tolower topara toupper tsdiff tsrep tstamp type ucp ucpcount unxlib usleep utf8 uucp valdate wcsize weekday weeknumber weeksinyear winpathsep xedit
+syntax keyword jStdlibVerb AND Endian IFDEF OR XOR abspath anddf android_exec_am android_exec_host android_getdisplaymetrics andunzip apply boxopen boxxopen bx calendar cd cdcb cder cderx cdf charsub chopstring clear coclass cocreate cocurrent codestroy coerase cofind cofindv cofullname coinfo coinsert compare coname conames conew conl conouns conounsx copath copathnl copathnlx coreset costate cut cutLF cutopen cutpara datatype dbctx dbcut dberm dberr dbg dbinto dbjmp dblocals dblxq dblxs dbnxt dbout dbover dbq dbr dbret dbrr dbrrx dbrun dbs dbsig dbsq dbss dbst dbstack dbstk dbstop dbstopme dbstopnext dbstops dbtrace dbview deb debc delstring detab dfh dir dircompare dircompares dirfind dirpath dirss dirssrplc dirtree dirused dlb dltb dltbs dquote drop dropafter dropto dtb dtbs echo empty endian erase evtloop exit expand f2utf8 fappend fappends fboxname fc fcompare fcompares fcopynew fdir ferase fetch fexist fexists fgets file2url fixdotdot fliprgb fmakex foldpara foldtext fpathcreate fpathname fputs fread freadblock freadr freads frename freplace fsize fss fssrplc fstamp fstringreplace ftype fview fwrite fwritenew fwrites getalpha getargs getdate getenv getqtbin hfd hostpathsep ic install iospath isatty isotimestamp isutf16 isutf8 jcwdpath joinstring jpath jpathsep jsystemdefs launch list ljust load loadd mema memf memr memu memw nameclass namelist names nc nl pick quote require rjust rplc rxE rxall rxcomp rxcut rxeq rxerror rxfirst rxfree rxfrom rxhandles rxin rxindex rxinfo rxmatch rxmatches rxrplc rxutf8 script scriptd scripts setalpha setbreak shell show sign sminfo smoutput sort split splitnostring splitstring ss startupandroid stderr stdin stdout stringreplace symdat symget symset take takeafter taketo timespacex timestamp timex tmoutput toCRLF toHOST toJ todate todayno tolist tolower topara toupper tsdiff tsrep tstamp type ucp ucpcount undquote unxlib usleep utf8 uucp valdate wcsize weekday weeknumber weeksinyear winpathsep xedit
syntax match jStdlibNoun /\<\%(adverb\|conjunction\|dyad\|monad\|noun\|verb\)\>/
syntax match jStdlibVerb /\<\%(Note\|\%(assert\|break\|do\)\.\@!\)\>/
diff --git a/runtime/syntax/jargon.vim b/runtime/syntax/jargon.vim
index 415f2bc972..c4b017d9e6 100644
--- a/runtime/syntax/jargon.vim
+++ b/runtime/syntax/jargon.vim
@@ -1,23 +1,24 @@
" Vim syntax file
" Language: Jargon File
-" Maintainer: <rms@poczta.onet.pl>
-" Last Change: 2001 May 26
+" Maintainer: Dan Church (https://github.com/h3xx)
+" Last Change: 2020 Mar 16
"
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
-syn match jargonChaptTitle /:[^:]*:/
-syn match jargonEmailAddr /[^<@ ^I]*@[^ ^I>]*/
-syn match jargonUrl +\(http\|ftp\)://[^\t )"]*+
-syn match jargonMark /{[^}]*}/
+syn region jargonHeader start="^:" end="$" contains=jargonChaptTitle
+syn match jargonChaptTitle /:[^:]*:/ contained
+syn match jargonEmailAddr /[+._A-Za-z0-9-]\+@[+._A-Za-z0-9-]\+/
+syn match jargonUrl +\(https\?\|ftp\)://[^\t )"]*+
+syn region jargonMark start="{[^\t {}]" end="}"
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
-hi def link jargonChaptTitle Title
-hi def link jargonEmailAddr Comment
-hi def link jargonUrl Comment
-hi def link jargonMark Label
+hi def link jargonChaptTitle Title
+hi def link jargonEmailAddr Comment
+hi def link jargonUrl Comment
+hi def link jargonMark Label
let b:current_syntax = "jargon"
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index 8a5e10b261..1ab1c2db11 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -7,7 +7,7 @@
" (ss) repaired several quoting and grouping glitches
" (ss) fixed regex parsing issue with multiple qualifiers [gi]
" (ss) additional factoring of keywords, globals, and members
-" Last Change: 2020 May 14
+" Last Change: 2021 Mar 30
" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
@@ -41,6 +41,7 @@ syn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbed
syn match javaScriptSpecialCharacter "'\\.'"
syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+syn match javaScriptNumber "-\=\<\d\+\%(_\d\+\)*\>"
syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
syn keyword javaScriptConditional if else switch
diff --git a/runtime/syntax/json.vim b/runtime/syntax/json.vim
index e3210a9702..3f49b0c5ea 100644
--- a/runtime/syntax/json.vim
+++ b/runtime/syntax/json.vim
@@ -2,7 +2,7 @@
" Language: JSON
" Maintainer: vacancy
" Previous Maintainer: Eli Parra <eli@elzr.com>
-" Last Change: 2019 Jul 08
+" Last Change: 2019 Sep 17
" Version: 0.12
if !exists("main_syntax")
@@ -20,7 +20,7 @@ syntax match jsonNoise /\%(:\|,\)/
" Syntax: JSON Keywords
" Separated into a match and region because a region by itself is always greedy
syn match jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword
-if has('conceal')
+if has('conceal') && (!exists("g:vim_json_conceal") || g:vim_json_conceal==1)
syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contained
else
syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contained
@@ -31,7 +31,7 @@ endif
" Needs to come after keywords or else a json encoded string will break the
" syntax
syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString
-if has('conceal')
+if has('conceal') && (!exists("g:vim_json_conceal") || g:vim_json_conceal==1)
syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained
else
syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained
diff --git a/runtime/syntax/ld.vim b/runtime/syntax/ld.vim
index 22949d9759..6a117ee87b 100644
--- a/runtime/syntax/ld.vim
+++ b/runtime/syntax/ld.vim
@@ -48,7 +48,7 @@ syn match ldSpecSections '\.\%(text\|data\|bss\|symver\)\>'
syn match ldNumber display '\<0[xX]\x\+\>'
syn match ldNumber display '\d\+[KM]\>' contains=ldNumberMult
-syn match ldNumberMult display '[KM]\>'
+syn match ldNumberMult display '\(\d\+\)\@<=[KM]\>'
syn match ldOctal contained display '\<0\o\+\>'
\ contains=ldOctalZero
syn match ldOctalZero contained display '\<0'
diff --git a/runtime/syntax/less.vim b/runtime/syntax/less.vim
index 5cc8c6d7bd..c44f0775f2 100644
--- a/runtime/syntax/less.vim
+++ b/runtime/syntax/less.vim
@@ -2,14 +2,13 @@
" Language: less
" Maintainer: Alessandro Vioni <jenoma@gmail.com>
" URL: https://github.com/genoma/vim-less
-" Last Change: 2014 November 24
+" Last Change: 2020 Sep 29
if exists("b:current_syntax")
finish
endif
runtime! syntax/css.vim
-runtime! after/syntax/css.vim
syn case ignore
diff --git a/runtime/syntax/lex.vim b/runtime/syntax/lex.vim
index 560aa44be3..82197adbed 100644
--- a/runtime/syntax/lex.vim
+++ b/runtime/syntax/lex.vim
@@ -1,22 +1,19 @@
" Vim syntax file
-" Language: Lex
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Aug 31, 2016
-" Version: 16
-" URL: http://mysite.verizon.net/astronaut/vim/index.html#SYNTAX_LEX
-"
-" Option:
-" lex_uses_cpp : if this variable exists, then C++ is loaded rather than C
+" Language: Lex and Flex
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Contributor: Robert A. van Engelen <engelen@acm.org>
+" Last Change: Apr 24, 2020
+" Version: 18
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
-" Read the C/C++ syntax to start with
-let s:Cpath= fnameescape(expand("<sfile>:p:h").(exists("g:lex_uses_cpp")? "/cpp.vim" : "/c.vim"))
+" Read the C++ syntax to start with
+let s:Cpath= fnameescape(expand("<sfile>:p:h")."/cpp.vim")
if !filereadable(s:Cpath)
- for s:Cpath in split(globpath(&rtp,(exists("g:lex_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n")
+ for s:Cpath in split(globpath(&rtp,"syntax/cpp.vim"),"\n")
if filereadable(fnameescape(s:Cpath))
let s:Cpath= fnameescape(s:Cpath)
break
@@ -29,115 +26,163 @@ exe "syn include @lexCcode ".s:Cpath
" --- Lex stuff ---
" --- ========= ---
-" Options Section
-syn match lexOptions '^%\s*option\>.*$' contains=lexPatString
+" Definitions
+" %%
+" Rules
+" %%
+" User Code
+"
+" --- ======= ---
+" --- Example ---
+" --- ======= ---
+"
+" // this is a valid lex file
+" // indented initial code block
+" #include <stdlib.h>
+" %{
+" // initial code block
+" #include <stdio.h>
+" const char *sep = "";
+" %}
+" %option outfile="scanner.c" noyywrap nodefault
+" %x COMMENT
+" id [A-Za-z_][A-Za-z0-9_]*
+" %%
+" // indented initial action code block
+" printf("BEGIN");
+" {id} printf("%s%s", sep, yytext); sep = "";
+" . |
+" \n { sep = "\n"; }
+" "/*" { BEGIN COMMENT; }
+" "//".* { }
+" <COMMENT>{
+" "*/" { BEGIN INITIAL; }
+" .|\n
+" }
+" <*><<EOF>> { // end of file
+" printf("\nEND\n");
+" yyterminate();
+" }
+" %%
+" void scan()
+" {
+" while (yylex())
+" continue;
+" }
+" /* main program */
+" int main()
+" {
+" scan();
+" }
-" Abbreviations Section
+" Definitions Section with initial code blocks, abbreviations, options, states
if has("folding")
- syn region lexAbbrvBlock fold start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+ syn region lexAbbrvBlock fold start="^\S" end="^\ze%%" skipnl nextgroup=lexPatBlock contains=lexOptions,lexAbbrv,lexInitialCodeBlock,lexInclude,lexAbbrvComment,lexStartState
else
- syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+ syn region lexAbbrvBlock start="^\S" end="^\ze%%" skipnl nextgroup=lexPatBlock contains=lexOptions,lexAbbrv,lexInitialCodeBlock,lexInclude,lexAbbrvComment,lexStartState
endif
-syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvRegExp
-syn match lexAbbrv "^%[sx]" contained
-syn match lexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=lexAbbrv,lexInclude
+syn match lexOptions "^%\a\+\(\s.*\|[^{]*\)$" contains=lexOptionsEq,lexPatString,lexSlashQuote,lexBrace,lexSlashBrace
+syn match lexOptionsEq "=" skipwhite contained
+syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvPat
+syn match lexAbbrvPat "\s\S.*$"lc=1 contained contains=lexPatAbbrv,lexPatString,lexSlashQuote,lexBrace,lexSlashBrace nextgroup=lexAbbrv,lexInclude
+syn match lexStartState "^%\(xs\?\|s\)\(t\(a\(t\(e\?\)\?\)\?\)\?\)\?\(\s\+\I\i*\)\+\s*$" contained contains=lexStartStateCmd
+syn match lexStartStateCmd '^%\(xs\?\|s\)\(t\(a\(t\(e\?\)\?\)\?\)\?\)\?' contained
if has("folding")
- syn region lexInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=@lexCcode
- syn region lexAbbrvComment fold start="^\s\+/\*" end="\*/" contains=@Spell
- syn region lexAbbrvComment fold start="\%^/\*" end="\*/" contains=@Spell
- syn region lexStartState fold matchgroup=lexAbbrv start="^%\a\+" end="$" contained
+ syn region lexInitialCodeBlock fold start="^\s\+" end="^\S"me=e-1 contains=@lexCcode
+ syn region lexInclude fold matchgroup=lexSep start="^%\a*{" end="^%\?}" contained contains=@lexCcode,lexCFunctions
+ syn region lexAbbrvComment fold start="^\s*//" end="$" contains=@Spell
+ syn region lexAbbrvComment fold start="^\s*/\*" end="\*/" contains=@Spell
else
- syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=@lexCcode
- syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell
- syn region lexAbbrvComment start="\%^/\*" end="\*/" contains=@Spell
- syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained
+ syn region lexInitialCodeBlock start="^\s\+" end="^\S"me=e-1 contains=@lexCcode
+ syn region lexInclude matchgroup=lexSep start="^%\a*{" end="^%\?}" contained contains=@lexCcode,lexCFunctions
+ syn region lexAbbrvComment start="^\s*//" end="$" contains=@Spell
+ syn region lexAbbrvComment start="^\s*/\*" end="\*/" contains=@Spell
endif
-"%% : Patterns {Actions}
+" Rules Section with patterns and actions
if has("folding")
- syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%\ze%$" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
- syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
- syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode
- syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained
- syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
+ syn region lexPatBlock fold matchgroup=Todo start="^%%" matchgroup=Todo end="^\ze%%" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPat fold start="\S" skip="\\\\\|\\\s" end="\ze\(\s*$\|\s\+\(\h\|{\W\|{$\|[-+*]\|//\|/\*\)\)" skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPatEnd contains=lexPatTag,lexPatString,lexSlashQuote,lexPatAbbrv,lexBrace,lexSlashBrace
+ syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="^%}" contained contains=@lexCcode
+ syn region lexBrace fold matchgroup=Character start="\[" skip="\\.\|\[:\a\+:\]\|\[\.\a\+\.\]\|\[=.=\]" end="\]" contained
+ syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
else
- syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
- syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
- syn region lexPatInclude matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode
- syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
- syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
+ syn region lexPatBlock matchgroup=Todo start="^%%" matchgroup=Todo end="^\ze%%" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPat start="\S" skip="\\\\\|\\\s" end="\ze\(\s*$\|\s\+\(\h\|{\W\|{$\|[-+*]\|//\|/\*\)\)" skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPatEnd contains=lexPatTag,lexPatString,lexSlashQuote,lexPatAbbrv,lexBrace,lexSlashBrace
+ syn region lexPatInclude matchgroup=lexSep start="^%{" end="^%}" contained contains=@lexCcode
+ syn region lexBrace matchgroup=Character start="\[" skip="\\.\|\[:\a\+:\]\|\[\.\a\+\.\]\|\[=.=\]" end="\]" contained
+ syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
endif
-syn match lexPatTag "^<\I\i*\(,\I\i*\)*>" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
-syn match lexPatTagZone "^<\I\i*\(,\I\i*\)*>\s\+\ze{" contained nextgroup=lexPatTagZoneStart
-syn match lexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
-
-" Lex Patterns
-syn region lexPattern start='[^ \t{}]' end="$" contained contains=lexPatRange
-syn region lexPatRange matchgroup=Delimiter start='\[' skip='\\\\\|\\.' end='\]' contains=lexEscape
-syn match lexEscape '\%(\\\\\)*\\.' contained
+syn match lexPatAbbrv "{\I\i*}"hs=s+1,he=e-1 contained
+syn match lexPatTag "^<\^\?\(\I\i*\|\*\)\(,\^\?\(\I\i*\|\*\)\)*>" contained nextgroup=lexPat,lexMorePat,lexPatSep,lexPatEnd
+syn match lexPatTagZone "^<\^\?\(\I\i*\|\*\)\(,\^\?\(\I\i*\|\*\)\)*>\s*{$"me=e-1 contained nextgroup=lexPatTagZoneStart
if has("folding")
- syn region lexPatTagZoneStart matchgroup=lexPatTag fold start='{' end='}' contained contains=lexPat,lexPatComment
- syn region lexPatComment start="\s\+/\*" end="\*/" fold skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatTagZoneStart fold matchgroup=lexPatTag start='{$' end='^}' skipnl skipwhite contained contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPatComment fold start="//" end="$" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatComment fold start="/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
else
- syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='}' contained contains=lexPat,lexPatComment
- syn region lexPatComment start="\s\+/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='^}' skipnl skipwhite contained contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPatComment start="//" end="$" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatComment start="/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
endif
-syn match lexPatCodeLine "[^{\[].*" contained contains=@lexCcode
-syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment
-syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
+syn match lexPatEnd "\s*$" skipnl contained
+syn match lexPatCodeLine "[^{\[].*" contained contains=@lexCcode,lexCFunctions
+syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment
+syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
syn match lexSlashQuote +\(\\\\\)*\\"+ contained
+syn match lexSlashBrace +\(\\\\\)*\\\[+ contained
if has("folding")
- syn region lexPatCode matchgroup=Delimiter start="{" end="}" fold skipnl contained contains=@lexCcode,lexCFunctions
+ syn region lexPatCode fold matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions
else
- syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions
+ syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions
endif
-" Lex "functions" which may appear in C/C++ code blocks
-syn keyword lexCFunctions BEGIN input unput woutput yyleng yylook yytext
-syn keyword lexCFunctions ECHO output winput wunput yyless yymore yywrap
+" User Code Section with final code block
+syn region lexFinalCodeBlock matchgroup=Todo start="^%%" end="\%$" contained contains=@lexCcode
-" %%
-" lexAbbrevBlock
-" %%
-" lexPatBlock
-" %%
-" lexFinalCodeBlock
-syn region lexFinalCodeBlock matchgroup=Todo start="%$"me=e-1 end="\%$" contained contains=@lexCcode
+" Lex macros which may appear in C/C++ code blocks
+syn keyword lexCFunctions BEGIN ECHO REJECT yytext YYText yyleng YYLeng yymore yyless yywrap yylook
+syn keyword lexCFunctions yyrestart yyterminate yylineno yycolumno yyin yyout
+syn keyword lexCFunctions input unput output winput wunput woutput
+syn keyword lexCFunctions yyinput yyunput yyoutput yywinput yywunput yywoutput
" <c.vim> includes several ALLBUTs; these have to be treated so as to exclude lex* groups
-syn cluster cParenGroup add=lex.*
+syn cluster cParenGroup add=lex.*
syn cluster cDefineGroup add=lex.*
syn cluster cPreProcGroup add=lex.*
-syn cluster cMultiGroup add=lex.*
+syn cluster cMultiGroup add=lex.*
" Synchronization
syn sync clear
syn sync minlines=500
syn sync match lexSyncPat grouphere lexPatBlock "^%[a-zA-Z]"
syn sync match lexSyncPat groupthere lexPatBlock "^<$"
-syn sync match lexSyncPat groupthere lexPatBlock "^%%$"
+syn sync match lexSyncPat groupthere lexPatBlock "^%%"
" The default highlighting.
if !exists("skip_lex_syntax_inits")
hi def link lexAbbrvComment lexPatComment
- hi def link lexAbbrvRegExp Macro
- hi def link lexAbbrv SpecialChar
- hi def link lexBrace lexPat
- hi def link lexCFunctions Function
- hi def link lexCstruct cStructure
- hi def link lexMorePat SpecialChar
- hi def link lexOptions PreProc
+ hi def link lexAbbrvPat lexPat
+ hi def link lexAbbrv Special
+ hi def link lexBrace lexPat
+ hi def link lexCFunctions PreProc
+ hi def link lexMorePat Special
+ hi def link lexOptions PreProc
+ hi def link lexOptionsEq Operator
hi def link lexPatComment Comment
hi def link lexPat Function
- hi def link lexPatString Function
- hi def link lexPatTag Special
+ hi def link lexPatString lexPat
+ hi def link lexPatAbbrv Special
+ hi def link lexPatTag Statement
hi def link lexPatTagZone lexPatTag
hi def link lexSep Delimiter
hi def link lexSlashQuote lexPat
- hi def link lexStartState Statement
+ hi def link lexSlashBrace lexPat
+ hi def link lexStartState lexPatTag
+ hi def link lexStartStateCmd Special
endif
let b:current_syntax = "lex"
-" vim:ts=10
+" vim:ts=8
diff --git a/runtime/syntax/lhaskell.vim b/runtime/syntax/lhaskell.vim
index 0a8a076ff4..cf1f126a3c 100644
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -1,11 +1,11 @@
" Vim syntax file
" Language: Haskell with literate comments, Bird style,
-" TeX style and plain text surrounding
+" Markdown style, TeX style and plain text surrounding
" \begin{code} \end{code} blocks
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
" Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change: 2010 Apr 11
-" Version: 1.04
+" Last Change: 2020 Feb 25
+" Version: 1.05
"
" Thanks to Ian Lynagh for thoughtful comments on initial versions and
" for the inspiration for writing this in the first place.
@@ -44,8 +44,8 @@ endif
" First off, see if we can inherit a user preference for lhs_markup
if !exists("b:lhs_markup")
if exists("lhs_markup")
- if lhs_markup =~ '\<\%(tex\|none\)\>'
- let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|none\)\>')
+ if lhs_markup =~ '\<\%(tex\|md\|none\)\>'
+ let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|md\|none\)\>')
else
echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None
let b:lhs_markup = "unknown"
@@ -54,7 +54,7 @@ if !exists("b:lhs_markup")
let b:lhs_markup = "unknown"
endif
else
- if b:lhs_markup !~ '\<\%(tex\|none\)\>'
+ if b:lhs_markup !~ '\<\%(tex\|md\|none\)\>'
let b:lhs_markup = "unknown"
endif
endif
@@ -74,6 +74,8 @@ call cursor(1,1)
if b:lhs_markup == "unknown"
if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
let b:lhs_markup = "tex"
+ elseif search('```haskell','W') != 0
+ let b:lhs_markup = "md"
else
let b:lhs_markup = "plain"
endif
@@ -86,6 +88,10 @@ if b:lhs_markup == "tex"
" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
setlocal isk+=_
syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+elseif b:lhs_markup == "md"
+ runtime! syntax/markdown.vim
+ unlet b:current_syntax
+ syntax cluster lhsTeXContainer contains=markdown.*
else
syntax cluster lhsTeXContainer contains=.*
endif
@@ -96,9 +102,12 @@ syntax include @haskellTop syntax/haskell.vim
syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
+syntax region lhsHaskellMDBlock start="^```haskell$" matchgroup=NONE end="^```$" keepend contains=@haskellTop,lhsMarkdownCode containedin=@lhsTeXContainer
syntax match lhsBirdTrack "^>" contained
+syntax match lhsMarkdownCode "^\(```haskell\|^```\)$" contained
+
syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
@@ -107,6 +116,8 @@ syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
hi def link lhsBirdTrack Comment
+hi def link lhsMarkdownCode Comment
+
hi def link beginCodeBegin texCmdName
hi def link beginCodeCode texSection
diff --git a/runtime/syntax/lisp.vim b/runtime/syntax/lisp.vim
index 17c54d1a4f..434150ab26 100644
--- a/runtime/syntax/lisp.vim
+++ b/runtime/syntax/lisp.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Lisp
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Jul 11, 2019
-" Version: 29
+" Version: 30
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP
"
" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec
diff --git a/runtime/syntax/lout.vim b/runtime/syntax/lout.vim
index 30c87fce51..b26a7bcc46 100644
--- a/runtime/syntax/lout.vim
+++ b/runtime/syntax/lout.vim
@@ -1,6 +1,6 @@
" Vim syntax file
" Language: Lout
-" Maintainer: Christian V. J. Brssow <cvjb@cvjb.de>
+" Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
" Last Change: So 12 Feb 2012 15:15:03 CET
" Filenames: *.lout,*.lt
" URL: http://www.cvjb.de/comp/vim/lout.vim
diff --git a/runtime/syntax/m3build.vim b/runtime/syntax/m3build.vim
new file mode 100644
index 0000000000..1a378e8175
--- /dev/null
+++ b/runtime/syntax/m3build.vim
@@ -0,0 +1,177 @@
+" Vim syntax file
+" Language: Modula-3 Makefile
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 April 15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/m3quake.vim
+
+" Identifiers
+syn match m3buildPredefinedVariable "\<\%(TARGET\|OS_TYPE\|BUILD_DIR\|PKG_USE\|WDROOT\)\>"
+
+" Build Procedures {{{1
+" Generated from cm3/m3-sys/cm3/src/M3Build.m3
+syn keyword m3buildProcedure HasCBackend
+
+" (* packages & locations *)
+syn keyword m3buildProcedure Pkg
+syn keyword m3buildProcedure override
+syn keyword m3buildProcedure path_of
+syn keyword m3buildProcedure pkg_subdir
+
+" (* names *)
+syn keyword m3buildProcedure program_name
+syn keyword m3buildProcedure library_name
+
+" (* calls in the generated .M3EXPORT files *)
+syn keyword m3buildProcedure _define_lib
+syn keyword m3buildProcedure _define_pgm
+syn keyword m3buildProcedure _import_template
+syn keyword m3buildProcedure _import_m3lib
+syn keyword m3buildProcedure _import_otherlib
+syn keyword m3buildProcedure _map_add_interface
+syn keyword m3buildProcedure _map_add_generic_interface
+syn keyword m3buildProcedure _map_add_module
+syn keyword m3buildProcedure _map_add_generic_module
+syn keyword m3buildProcedure _map_add_c
+syn keyword m3buildProcedure _map_add_h
+syn keyword m3buildProcedure _map_add_s
+
+" (* compiler options *)
+syn keyword m3buildProcedure m3_debug
+syn keyword m3buildProcedure m3_optimize
+syn keyword m3buildProcedure build_shared
+syn keyword m3buildProcedure build_standalone
+
+" (* derived files *)
+syn keyword m3buildProcedure m3_compile_only
+syn keyword m3buildProcedure m3_finish_up
+
+" (* predefined system libraries *)
+syn keyword m3buildProcedure import_sys_lib
+
+" (* options *)
+syn keyword m3buildProcedure m3_option
+syn keyword m3buildProcedure remove_m3_option
+
+" (* deleting *)
+syn keyword m3buildProcedure deriveds
+
+" (* imports *)
+syn keyword m3buildProcedure include_dir
+syn keyword m3buildProcedure include_pkg
+syn keyword m3buildProcedure import
+syn keyword m3buildProcedure import_version
+syn keyword m3buildProcedure import_obj
+syn keyword m3buildProcedure import_lib
+
+" (* objects *)
+syn keyword m3buildProcedure pgm_object
+
+" (* sources *)
+syn keyword m3buildProcedure source
+syn keyword m3buildProcedure pgm_source
+syn keyword m3buildProcedure interface
+syn keyword m3buildProcedure Interface
+syn keyword m3buildProcedure implementation
+syn keyword m3buildProcedure module
+syn keyword m3buildProcedure Module
+syn keyword m3buildProcedure h_source
+syn keyword m3buildProcedure c_source
+syn keyword m3buildProcedure s_source
+syn keyword m3buildProcedure ship_source
+
+" (* generics *)
+syn keyword m3buildProcedure generic_interface
+syn keyword m3buildProcedure Generic_interface
+syn keyword m3buildProcedure generic_implementation
+syn keyword m3buildProcedure Generic_implementation
+syn keyword m3buildProcedure generic_module
+syn keyword m3buildProcedure Generic_module
+syn keyword m3buildProcedure build_generic_intf
+syn keyword m3buildProcedure build_generic_impl
+
+" (* derived sources *)
+syn keyword m3buildProcedure derived_interface
+syn keyword m3buildProcedure derived_implementation
+syn keyword m3buildProcedure derived_c
+syn keyword m3buildProcedure derived_h
+
+" (* hiding/exporting *)
+syn keyword m3buildProcedure hide_interface
+syn keyword m3buildProcedure hide_generic_interface
+syn keyword m3buildProcedure hide_generic_implementation
+syn keyword m3buildProcedure export_interface
+syn keyword m3buildProcedure export_generic_interface
+syn keyword m3buildProcedure export_generic_implementation
+
+" (* templates *)
+syn keyword m3buildProcedure template
+
+" (* library building *)
+syn keyword m3buildProcedure library
+syn keyword m3buildProcedure Library
+
+" (* program building *)
+syn keyword m3buildProcedure program
+syn keyword m3buildProcedure Program
+syn keyword m3buildProcedure c_program
+syn keyword m3buildProcedure C_program
+
+" (* man pages *)
+syn keyword m3buildProcedure manPage
+syn keyword m3buildProcedure ManPage
+
+" (* emacs *)
+syn keyword m3buildProcedure Gnuemacs
+syn keyword m3buildProcedure CompiledGnuemacs
+
+" (* "-find" support *)
+syn keyword m3buildProcedure find_unit
+syn keyword m3buildProcedure enum_units
+
+" (* export functions *)
+syn keyword m3buildProcedure install_sources
+syn keyword m3buildProcedure install_derived
+syn keyword m3buildProcedure install_derived_link
+syn keyword m3buildProcedure install_derived_symbolic_link
+syn keyword m3buildProcedure install_derived_hard_link
+syn keyword m3buildProcedure install_link_to_derived
+syn keyword m3buildProcedure install_symbolic_link_to_derived
+syn keyword m3buildProcedure install_hard_link_to_derived
+syn keyword m3buildProcedure install_symbolic_link
+syn keyword m3buildProcedure install_file
+
+" (* installation functions *)
+syn keyword m3buildProcedure BindExport
+syn keyword m3buildProcedure BinExport
+syn keyword m3buildProcedure LibdExport
+syn keyword m3buildProcedure LibExport
+syn keyword m3buildProcedure EmacsdExport
+syn keyword m3buildProcedure EmacsExport
+syn keyword m3buildProcedure DocdExport
+syn keyword m3buildProcedure DocExport
+syn keyword m3buildProcedure MandExport
+syn keyword m3buildProcedure ManExport
+syn keyword m3buildProcedure HtmlExport
+syn keyword m3buildProcedure RootExport
+syn keyword m3buildProcedure RootdExport
+
+" (* misc *)
+syn keyword m3buildProcedure gen_m3exports
+syn keyword m3buildProcedure generate_tfile
+syn keyword m3buildProcedure delete_file
+syn keyword m3buildProcedure link_file
+syn keyword m3buildProcedure symbolic_link_file
+syn keyword m3buildProcedure hard_link_file
+" }}}
+
+hi def link m3buildPredefinedVariable Identifier
+hi def link m3buildProcedure Function
+
+let b:current_syntax = "m3build"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/m3quake.vim b/runtime/syntax/m3quake.vim
new file mode 100644
index 0000000000..c202d90e74
--- /dev/null
+++ b/runtime/syntax/m3quake.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: Modula-3 Quake
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 April 15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Keywords
+syn keyword m3quakeKeyword else end foreach if in is local or proc readonly
+syn keyword m3quakeKeyword return
+
+" Builtin procedures {{{
+" Generated from m3-sys/m3quake/src/QMachine.m3
+syn keyword m3quakeProcedure arglist cp_if defined empty equal error escape
+syn keyword m3quakeProcedure exec cm3_exec file format include make_dir
+syn keyword m3quakeProcedure normalize path stale try_exec try_cm3_exec
+syn keyword m3quakeProcedure unlink_file write datetime date datestamp
+syn keyword m3quakeProcedure TRACE_INSTR eval_func hostname
+
+syn keyword m3quakeProcedure pushd popd cd getwd
+
+syn keyword m3quakeProcedure quake
+
+syn keyword m3quakeProcedure q_exec q_exec_put q_exec_get
+
+syn keyword m3quakeProcedure fs_exists fs_readable fs_writable fs_executable
+syn keyword m3quakeProcedure fs_isdir fs_isfile fs_contents fs_putfile
+syn keyword m3quakeProcedure fs_mkdir fs_touch fs_lsdirs fs_lsfiles fs_rmdir
+syn keyword m3quakeProcedure fs_rmfile fs_rmrec fs_cp
+
+syn keyword m3quakeProcedure pn_valid pn_decompose pn_compose pn_absolute
+syn keyword m3quakeProcedure pn_prefix pn_last pn_base pn_lastbase pn_lastext
+syn keyword m3quakeProcedure pn_join pn_join2 pn_replace_ext pn_parent
+syn keyword m3quakeProcedure pn_current
+
+syn keyword m3quakeProcedure len
+
+syn keyword m3quakeProcedure split sub skipl skipr squeeze compress pos
+syn keyword m3quakeProcedure tcontains bool encode decode subst_chars
+syn keyword m3quakeProcedure del_chars subst subst_env add_prefix add_suffix
+" }}}
+
+" Identifiers
+syn match m3quakeEnvVariable "$\h\w\+"
+
+" Operators
+syn match m3quakeOperator "&"
+syn match m3quakeOperator "\<\%(contains\|not\|and\|or\)\>"
+
+" Strings
+syn match m3quakeEscape "\\[\\nrtbf"]" contained display
+syn region m3quakeString start=+"+ end=+"+ contains=m3quakeEscape
+
+" Comments
+syn keyword m3quakeTodo TODO FIXME XXX contained
+syn region m3quakeComment start="%" end="$" contains=m3quakeTodo,@Spell
+syn region m3quakeComment start="/\*" end="\*/" contains=m3quakeTodo,@Spell
+
+" Default highlighting
+hi def link m3quakeCommand Statement
+hi def link m3quakeComment Comment
+hi def link m3quakeEnvVariable Identifier
+hi def link m3quakeEscape Special
+hi def link m3quakeKeyword Keyword
+hi def link m3quakeOperator Operator
+hi def link m3quakeProcedure Function
+hi def link m3quakeString String
+hi def link m3quakeTodo Todo
+
+let b:current_syntax = "m3quake"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim
index 377e4450d9..d0d7f1523b 100644
--- a/runtime/syntax/make.vim
+++ b/runtime/syntax/make.vim
@@ -1,9 +1,9 @@
" Vim syntax file
" Language: Makefile
-" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>
+" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb>
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
-" URL: https://github.com/vim/vim/syntax/make.vim
-" Last Change: 2019 Apr 02
+" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
+" Last Change: 2020 May 03
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -13,35 +13,27 @@ endif
let s:cpo_save = &cpo
set cpo&vim
-
" some special characters
syn match makeSpecial "^\s*[@+-]\+"
syn match makeNextLine "\\\n\s*"
-" some directives
-syn match makePreCondit "^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)"
-syn match makeInclude "^ *[-s]\=include"
-syn match makeStatement "^ *vpath"
-syn match makeExport "^ *\(export\|unexport\)\>"
-syn match makeOverride "^ *override"
-hi link makeOverride makeStatement
-hi link makeExport makeStatement
-
" catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend
-syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" contains=makeStatement,makeIdent,makePreCondit,makeDefine
+syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$"
+ \ contains=makeStatement,makeIdent,makePreCondit,makeDefine
" Microsoft Makefile specials
syn case ignore
-syn match makeInclude "^!\s*include"
+syn match makeInclude "^!\s*include\s.*$"
syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|else\s*if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>"
syn case match
" identifiers
-syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString
-syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString
+syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent
+syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent
syn match makeIdent "\$\$\w*"
syn match makeIdent "\$[^({]"
syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2
+syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3
syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1
syn match makeIdent "%"
@@ -49,21 +41,39 @@ syn match makeIdent "%"
syn match makeConfig "@[A-Za-z0-9_]\+@"
" make targets
-" syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>"
-syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource
-syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource
-
-syn region makeTarget transparent matchgroup=makeTarget start="^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands
-syn match makeTarget "^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget,makeComment skipnl nextgroup=makeCommands,makeCommandError
-
-syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands
-syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent,makeComment skipnl nextgroup=makeCommands,makeCommandError
+syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1
+syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2
+
+syn region makeTarget transparent matchgroup=makeTarget
+ \ start="^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1
+ \ end=";"re=e-1,me=e-1 end="[^\\]$"
+ \ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString
+ \ skipnl nextGroup=makeCommands
+syn match makeTarget "^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$"
+ \ contains=makeIdent,makeSpecTarget,makeComment
+ \ skipnl nextgroup=makeCommands,makeCommandError
+
+syn region makeSpecTarget transparent matchgroup=makeSpecTarget
+ \ start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1
+ \ end="[^\\]$" keepend
+ \ contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands
+syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$"
+ \ contains=makeIdent,makeComment
+ \ skipnl nextgroup=makeCommands,makeCommandError
syn match makeCommandError "^\s\+\S.*" contained
-syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError
+syn region makeCommands contained start=";"hs=s+1 start="^\t"
+ \ end="^[^\t#]"me=e-1,re=e-1 end="^$"
+ \ contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString
+ \ nextgroup=makeCommandError
syn match makeCmdNextLine "\\\n."he=e-1 contained
-
+" some directives
+syn match makePreCondit "^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)"
+syn match makeInclude "^ *[-s]\=include\s.*$"
+syn match makeStatement "^ *vpath"
+syn match makeExport "^ *\(export\|unexport\)\>"
+syn match makeOverride "^ *override\>"
" Statements / Functions (GNU make)
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
@@ -84,8 +94,8 @@ syn keyword makeTodo TODO FIXME XXX contained
syn match makeEscapedChar "\\[^$]"
-syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contains=makeIdent
-syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contains=makeIdent
+syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contained contains=makeIdent
+syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contained contains=makeIdent
syn region makeBString start=+\(\\\)\@<!`+ skip=+\\.+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine
" Syncing
@@ -103,6 +113,9 @@ syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Z
hi def link makeNextLine makeSpecial
hi def link makeCmdNextLine makeSpecial
+hi link makeOverride makeStatement
+hi link makeExport makeStatement
+
hi def link makeSpecTarget Statement
if !exists("make_no_commands")
hi def link makeCommands Number
diff --git a/runtime/syntax/man.vim b/runtime/syntax/man.vim
index 7ac02c3f63..a01bd1c0e7 100644
--- a/runtime/syntax/man.vim
+++ b/runtime/syntax/man.vim
@@ -8,11 +8,11 @@ endif
syntax case ignore
syntax match manReference display '[^()[:space:]]\+([0-9nx][a-z]*)'
syntax match manSectionHeading display '^\S.*$'
-syntax match manTitle display '^\%1l.*$'
+syntax match manHeader display '^\%1l.*$'
syntax match manSubHeading display '^ \{3\}\S.*$'
syntax match manOptionDesc display '^\s\+\%(+\|-\)\S\+'
-highlight default link manTitle Title
+highlight default link manHeader Title
highlight default link manSectionHeading Statement
highlight default link manOptionDesc Constant
highlight default link manReference PreProc
diff --git a/runtime/syntax/maple.vim b/runtime/syntax/maple.vim
index f14cf79cf4..78f2b4e09e 100644
--- a/runtime/syntax/maple.vim
+++ b/runtime/syntax/maple.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Maple V (based on release 4)
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Mar 26, 2019
-" Version: 16
+" Version: 17
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_MAPLE
"
" Package Function Selection: {{{1
diff --git a/runtime/syntax/masm.vim b/runtime/syntax/masm.vim
index bb3c9681bc..c3b2a9bd63 100644
--- a/runtime/syntax/masm.vim
+++ b/runtime/syntax/masm.vim
@@ -2,8 +2,7 @@
" Language: Microsoft Macro Assembler (80x86)
" Orig Author: Rob Brady <robb@datatone.com>
" Maintainer: Wu Yongwei <wuyongwei@gmail.com>
-" Last Change: $Date: 2013/11/13 11:49:24 $
-" $Revision: 1.48 $
+" Last Change: 2020-05-09 22:55:38 +0800
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -13,10 +12,12 @@ endif
let s:cpo_save = &cpo
set cpo&vim
+syn iskeyword @,48-57,_,36,60,62,63,@-@
+
syn case ignore
-syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?]*"
+syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?<>]*"
syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1
syn match masmDecimal "[-+]\?\d\+[dt]\?"
diff --git a/runtime/syntax/meson.vim b/runtime/syntax/meson.vim
new file mode 100644
index 0000000000..78de2ab89e
--- /dev/null
+++ b/runtime/syntax/meson.vim
@@ -0,0 +1,165 @@
+" Vim syntax file
+" Language: Meson
+" License: VIM License
+" Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
+" Last Change: 2019 Oct 18
+" Credits: Zvezdan Petkovic <zpetkovic@acm.org>
+" Neil Schemenauer <nas@meson.ca>
+" Dmitry Vasiliev
+"
+" This version is copied and edited from python.vim
+" It's very basic, and doesn't do many things I'd like it to
+" For instance, it should show errors for syntax that is valid in
+" Python but not in Meson.
+"
+" Optional highlighting can be controlled using these variables.
+"
+" let meson_space_error_highlight = 1
+"
+
+" For version 5.x: Clear all syntax items.
+" For version 6.x: Quit when a syntax file was already loaded.
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" We need nocompatible mode in order to continue lines with backslashes.
+" Original setting will be restored.
+let s:cpo_save = &cpo
+set cpo&vim
+
+" http://mesonbuild.com/Syntax.html
+syn keyword mesonConditional elif else if endif
+syn keyword mesonRepeat foreach endforeach
+syn keyword mesonOperator and not or
+
+syn match mesonComment "#.*$" contains=mesonTodo,@Spell
+syn keyword mesonTodo FIXME NOTE NOTES TODO XXX contained
+
+" Strings can either be single quoted or triple counted across multiple lines,
+" but always with a '
+syn region mesonString
+ \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1"
+ \ contains=mesonEscape,@Spell
+syn region mesonString
+ \ start="\z('''\)" end="\z1" keepend
+ \ contains=mesonEscape,mesonSpaceError,@Spell
+
+syn match mesonEscape "\\[abfnrtv'\\]" contained
+syn match mesonEscape "\\\o\{1,3}" contained
+syn match mesonEscape "\\x\x\{2}" contained
+syn match mesonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match mesonEscape "\\N{\a\+\%(\s\a\+\)*}" contained
+syn match mesonEscape "\\$"
+
+" Meson only supports integer numbers
+" http://mesonbuild.com/Syntax.html#numbers
+syn match mesonNumber "\<\d\+\>"
+
+" booleans
+syn keyword mesonConstant false true
+
+" Built-in functions
+syn keyword mesonBuiltin
+ \ add_global_arguments
+ \ add_global_link_arguments
+ \ add_languages
+ \ add_project_arguments
+ \ add_project_link_arguments
+ \ add_test_setup
+ \ alias_target
+ \ assert
+ \ benchmark
+ \ both_libraries
+ \ build_machine
+ \ build_target
+ \ configuration_data
+ \ configure_file
+ \ custom_target
+ \ declare_dependency
+ \ dependency
+ \ disabler
+ \ environment
+ \ error
+ \ executable
+ \ files
+ \ find_library
+ \ find_program
+ \ generator
+ \ get_option
+ \ get_variable
+ \ gettext
+ \ host_machine
+ \ import
+ \ include_directories
+ \ install_data
+ \ install_headers
+ \ install_man
+ \ install_subdir
+ \ is_disabler
+ \ is_variable
+ \ jar
+ \ join_paths
+ \ library
+ \ meson
+ \ message
+ \ option
+ \ project
+ \ run_command
+ \ run_target
+ \ set_variable
+ \ shared_library
+ \ shared_module
+ \ static_library
+ \ subdir
+ \ subdir_done
+ \ subproject
+ \ target_machine
+ \ test
+ \ vcs_tag
+ \ warning
+
+if exists("meson_space_error_highlight")
+ " trailing whitespace
+ syn match mesonSpaceError display excludenl "\s\+$"
+ " mixed tabs and spaces
+ syn match mesonSpaceError display " \+\t"
+ syn match mesonSpaceError display "\t\+ "
+endif
+
+if version >= 508 || !exists("did_meson_syn_inits")
+ if version <= 508
+ let did_meson_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " The default highlight links. Can be overridden later.
+ HiLink mesonStatement Statement
+ HiLink mesonConditional Conditional
+ HiLink mesonRepeat Repeat
+ HiLink mesonOperator Operator
+ HiLink mesonComment Comment
+ HiLink mesonTodo Todo
+ HiLink mesonString String
+ HiLink mesonEscape Special
+ HiLink mesonNumber Number
+ HiLink mesonBuiltin Function
+ HiLink mesonConstant Number
+ if exists("meson_space_error_highlight")
+ HiLink mesonSpaceError Error
+ endif
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "meson"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/messages.vim b/runtime/syntax/messages.vim
index c22e4e8d0c..8b970aaa7f 100644
--- a/runtime/syntax/messages.vim
+++ b/runtime/syntax/messages.vim
@@ -4,6 +4,7 @@
" Latest Revision: 2008-06-29
" Changes: 2008-06-29 support for RFC3339 tuimestamps James Vega
" 2016 Jan 19: messagesDate changed by Bram
+" 2021 Jan 27: messagesHourRFC3339 changed from #946
if exists("b:current_syntax")
finish
@@ -26,7 +27,7 @@ syn match messagesDateRFC3339 contained display '\d\{4}-\d\d-\d\d'
syn match messagesRFC3339T contained display '\cT'
\ nextgroup=messagesHourRFC3339
-syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)'
+syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)\s*'
\ nextgroup=messagesHost
syn match messagesHost contained display '\S*\s*'
diff --git a/runtime/syntax/mmix.vim b/runtime/syntax/mmix.vim
index 39e209336e..0590767f2d 100644
--- a/runtime/syntax/mmix.vim
+++ b/runtime/syntax/mmix.vim
@@ -1,6 +1,6 @@
" Vim syntax file
" Language: MMIX
-" Maintainer: Dirk Hsken, <huesken@informatik.uni-tuebingen.de>
+" Maintainer: Dirk Hüsken, <huesken@informatik.uni-tuebingen.de>
" Last Change: 2012 Jun 01
" (Dominique Pelle added @Spell)
" Filenames: *.mms
diff --git a/runtime/syntax/modula3.vim b/runtime/syntax/modula3.vim
index d9b89ca7ce..b179303799 100644
--- a/runtime/syntax/modula3.vim
+++ b/runtime/syntax/modula3.vim
@@ -1,59 +1,96 @@
" Vim syntax file
-" Language: Modula-3
-" Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se>
-" Last Change: 2001 May 10
+" Language: Modula-3
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se>
+" Last Change: 2021 Apr 08
-" Basic things only...
-" Based on the modula 2 syntax file
-
-" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
-" Modula-3 is case-sensitive
-" syn case ignore
-
" Modula-3 keywords
-syn keyword modula3Keyword ABS ADDRES ADR ADRSIZE AND ANY
-syn keyword modula3Keyword ARRAY AS BITS BITSIZE BOOLEAN BRANDED BY BYTESIZE
-syn keyword modula3Keyword CARDINAL CASE CEILING CHAR CONST DEC DEFINITION
-syn keyword modula3Keyword DISPOSE DIV
-syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION
-syn keyword modula3Keyword EXIT EXPORTS EXTENDED FALSE FINALLY FIRST FLOAT
-syn keyword modula3Keyword FLOOR FROM GENERIC IMPORT
-syn keyword modula3Keyword IN INC INTEGER ISTYPE LAST LOCK
-syn keyword modula3Keyword LONGREAL LOOPHOLE MAX METHOD MIN MOD MUTEX
-syn keyword modula3Keyword NARROW NEW NIL NOT NULL NUMBER OF OR ORD RAISE
-syn keyword modula3Keyword RAISES READONLY REAL RECORD REF REFANY
-syn keyword modula3Keyword RETURN ROOT
-syn keyword modula3Keyword ROUND SET SUBARRAY TEXT TRUE TRUNC TRY TYPE
-syn keyword modula3Keyword TYPECASE TYPECODE UNSAFE UNTRACED VAL VALUE VAR WITH
+syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION
+syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY
+syn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES
+syn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE
+syn keyword modula3Keyword UNSAFE VALUE VAR WITH
+
+syn match modula3keyword "\<UNTRACED\>"
" Special keywords, block delimiters etc
syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
-" Comments
-syn region modula3Comment start="(\*" end="\*)"
+" Reserved identifiers
+syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC
+syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST
+syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND
+syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL
+
+" Predefined types
+syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER
+syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT
+syn keyword modula3Type WIDECHAR
+
+syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>"
+
+" Operators
+syn keyword modulaOperator DIV MOD IN AND OR NOT
+
+if exists("modula3_operators")
+ syn match modula3Operator "\^"
+ syn match modula3Operator "+\|-\|\*\|/\|&"
+ " TODO: need to exclude = in procedure definitions
+ syn match modula3Operator "<=\|<\|>=\|>\|:\@<!=\|#"
+endif
+
+" Booleans
+syn keyword modula3Boolean TRUE FALSE
+
+" Nil
+syn keyword modula3Nil NIL
+
+" Integers
+syn match modula3Integer "\<\d\+L\=\>"
+syn match modula3Integer "\<\d\d\=_\x\+L\=\>"
+
+" Reals
+syn match modula3Real "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
+
+" String escape sequences
+syn match modula3Escape "\\['"ntrf]" contained display
+syn match modula3Escape "\\\o\{3}" contained display
+syn match modula3Escape "\\\\" contained display
+
+" Characters
+syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape
" Strings
-syn region modula3String start=+"+ end=+"+
-syn region modula3String start=+'+ end=+'+
+syn region modula3String start=+"+ end=+"+ contains=modula3Escape
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+" Pragmas
+syn region modula3Pragma start="<\*" end="\*>"
-" The default methods for highlighting. Can be overridden later
-hi def link modula3Keyword Statement
-hi def link modula3Block PreProc
-hi def link modula3Comment Comment
-hi def link modula3String String
+" Comments
+syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
+" Default highlighting
+hi def link modula3Block Statement
+hi def link modula3Boolean Boolean
+hi def link modula3Character Character
+hi def link modula3Comment Comment
+hi def link modula3Escape Special
+hi def link modula3Identifier Keyword
+hi def link modula3Integer Number
+hi def link modula3Keyword Statement
+hi def link modula3Nil Constant
+hi def link modula3Operator Operator
+hi def link modula3Pragma PreProc
+hi def link modula3Real Float
+hi def link modula3String String
+hi def link modula3Type Type
let b:current_syntax = "modula3"
-"I prefer to use this...
-"set ai
-"vim: ts=8
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/moo.vim b/runtime/syntax/moo.vim
index 617058f8e3..6f2dd59e84 100644
--- a/runtime/syntax/moo.vim
+++ b/runtime/syntax/moo.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: MOO
" Maintainer: Timo Frenay <timo@frenay.net>
-" Last Change: 2001 Oct 06
+" Last Change: 2020 Oct 19
" Note: Requires Vim 6.0 or above
" quit when a syntax file was already loaded
@@ -95,7 +95,7 @@ if exists("moo_unknown_builtin_functions")
syn keyword mooKnownBuiltinFunction abs acos add_property add_verb asin atan binary_hash boot_player buffered_output_length callers caller_perms call_function ceil children chparent clear_property connected_players connected_seconds connection_name connection_option connection_options cos cosh create crypt ctime db_disk_size decode_binary delete_property delete_verb disassemble dump_database encode_binary equal eval exp floatstr floor flush_input force_input function_info idle_seconds index is_clear_property is_member is_player kill_task length listappend listdelete listen listeners listinsert listset log log10 match max max_object memory_usage min move notify object_bytes open_network_connection output_delimiters parent pass players properties property_info queued_tasks queue_info raise random read recycle renumber reset_max_object resume rindex rmatch seconds_left server_log server_version setadd setremove set_connection_option set_player_flag set_property_info set_task_perms set_verb_args set_verb_code set_verb_info shutdown sin sinh sqrt strcmp string_hash strsub substitute suspend tan tanh task_id task_stack ticks_left time tofloat toint toliteral tonum toobj tostr trunc typeof unlisten valid value_bytes value_hash verbs verb_args verb_code verb_info contained
endif
-"Enclosed expressions
+" Enclosed expressions
syn match mooUnenclosedError display ~[')\]|}]~
syn match mooParenthesesError display ~[';\]|}]~ contained
syn region mooParentheses start=~(~ end=~)~ transparent contains=@mooEnclosedContents,mooParenthesesError
diff --git a/runtime/syntax/named.vim b/runtime/syntax/named.vim
index 210d387ece..292d1b2bbf 100644
--- a/runtime/syntax/named.vim
+++ b/runtime/syntax/named.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: BIND configuration file
" Maintainer: Nick Hibma <nick@van-laarhoven.org>
-" Last Change: 2007-01-30
+" Last Change: 2019 Oct 08
" Filenames: named.conf, rndc.conf
" Location: http://www.van-laarhoven.org/vim/syntax/named.vim
"
@@ -54,7 +54,7 @@ syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhi
syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
" --- IntSection: section that does not contain other sections
-syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
+syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError,namedComment
" --- IntKeyword: keywords contained within `{ ... }' sections only
" + these keywords are contained within `key' and `acl' sections
diff --git a/runtime/syntax/nasm.vim b/runtime/syntax/nasm.vim
index 4f70a0f334..d763033225 100644
--- a/runtime/syntax/nasm.vim
+++ b/runtime/syntax/nasm.vim
@@ -3,7 +3,7 @@
" Maintainer: Andrii Sokolov <andriy145@gmail.com>
" Original Author: Manuel M.H. Stol <Manuel.Stol@allieddata.nl>
" Former Maintainer: Manuel M.H. Stol <Manuel.Stol@allieddata.nl>
-" Contributors: Leonard König <leonard.r.koenig@gmail.com> (C string highlighting)
+" Contributors: Leonard König <leonard.r.koenig@gmail.com> (C string highlighting), Peter Stanhope <dev.rptr@gmail.com> (Add missing 64-bit mode registers)
" Last Change: 2017 Jan 23
" NASM Home: http://www.nasm.us/
@@ -240,7 +240,8 @@ syn cluster nasmGrpPreProcs contains=nasmMacroDef,@nasmGrpInMacros,@nasmGrpPreCo
syn match nasmGen08Register "\<[A-D][HL]\>"
syn match nasmGen16Register "\<\([A-D]X\|[DS]I\|[BS]P\)\>"
syn match nasmGen32Register "\<E\([A-D]X\|[DS]I\|[BS]P\)\>"
-syn match nasmGen64Register "\<R\([A-D]X\|[DS]I\|[BS]P\|[89]\|1[0-5]\|[89][WD]\|1[0-5][WD]\)\>"
+syn match nasmGen64Register "\<R\([A-D]X\|[DS]I\|[BS]P\|[89]\|1[0-5]\|[89][WDB]\|1[0-5][WDB]\)\>"
+syn match nasmExtRegister "\<\([SB]PL\|[SD]IL\)\>"
syn match nasmSegRegister "\<[C-GS]S\>"
syn match nasmSpcRegister "\<E\=IP\>"
syn match nasmFpuRegister "\<ST\o\>"
diff --git a/runtime/syntax/neomuttrc.vim b/runtime/syntax/neomuttrc.vim
index 7ff89879d9..bd73de49ea 100644
--- a/runtime/syntax/neomuttrc.vim
+++ b/runtime/syntax/neomuttrc.vim
@@ -1,10 +1,11 @@
" Vim syntax file
" Language: NeoMutt setup files
-" Maintainer: Guillaume Brogi <gui-gui@netcourrier.com>
-" Last Change: 2018-03-25
+" Maintainer: Richard Russon <rich@flatcap.org>
+" Previous Maintainer: Guillaume Brogi <gui-gui@netcourrier.com>
+" Last Change: 2020-06-21
" Original version based on syntax/muttrc.vim
-" This file covers NeoMutt 2018-03-23
+" This file covers NeoMutt 2020-06-19
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -18,23 +19,22 @@ set cpo&vim
setlocal isk=@,48-57,_,-
" handling optional variables
-syntax match muttrcComment "^# .*$" contains=@Spell
-syntax match muttrcComment "^#[^ ].*$"
-syntax match muttrcComment "^#$"
-syntax match muttrcComment "[^\\]#.*$"lc=1
+syntax match muttrcComment "^# .*$" contains=@Spell
+syntax match muttrcComment "^#[^ ].*$"
+syntax match muttrcComment "^#$"
+syntax match muttrcComment "[^\\]#.*$"lc=1
" Escape sequences (back-tick and pipe goes here too)
-syntax match muttrcEscape +\\[#tnr"'Cc ]+
-syntax match muttrcEscape +[`|]+
-syntax match muttrcEscape +\\$+
+syntax match muttrcEscape +\\[#tnr"'Cc ]+
+syntax match muttrcEscape +[`|]+
+syntax match muttrcEscape +\\$+
" The variables takes the following arguments
-"syn match muttrcString contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape
-syntax region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
-syntax region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
+syntax region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
+syntax region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
syntax match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL
-syntax region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand,muttrcVarDeprecatedStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad
+syntax region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand
syntax match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1
syntax match muttrcRXChars contained /[][|()][.*?+]*/
@@ -44,54 +44,53 @@ syntax match muttrcRXChars contained /\\/
" Why does muttrcRXString2 work with one \ when muttrcRXString requires two?
syntax region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
syntax region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
-syntax region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
+syntax region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
" For some reason, skip refuses to match backslashes here...
syntax region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars
syntax region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars
syntax region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
syntax region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
-" these must be kept synchronized with muttrcRXString, but are intended for
-" muttrcRXHooks
+" these must be kept synchronized with muttrcRXString, but are intended for muttrcRXHooks
syntax region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
syntax region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
-syntax region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
syntax region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
syntax region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
-syntax match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+syntax match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
" these are exclusively for args lists (e.g. -rx pat pat pat ...)
-syntax region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
-syntax region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
-syntax match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
-syntax match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
-
-syntax match muttrcSpecial +\(['"]\)!\1+
-
-syntax match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcString
-syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcString
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syntax region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syntax match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
+syntax match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
+
+syntax match muttrcSpecial +\(['"]\)!\1+
+
+syntax match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
" Now catch some email addresses and headers (purified version from mail.vim)
-syntax match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
-syntax match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
+syntax match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
+syntax match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
syntax match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+
-syntax match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName
-syntax region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName
-syntax region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName
+syntax match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName
+syntax region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName
+syntax region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName
syntax match muttrcKeyName contained "\\[trne]"
syntax match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|Next\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>"
syntax match muttrcKeyName contained "\c<F\d\+>"
@@ -102,90 +101,84 @@ syntax match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVv
syntax match muttrcStrftimeEscapes contained /%E[cCxXyY]/
syntax match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/
-syntax region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcAliasFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcAliasFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcComposeFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcComposeFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcQueryFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
" Format escapes and conditionals
syntax match muttrcFormatConditionals2 contained /[^?]*?/
-function! s:escapesConditionals(baseName, sequence, alignment, secondary)
+function! s:escapesConditionals(baseName, sequence, padding, conditional)
exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?\%(' . a:sequence . '\|%\)/'
- if a:alignment
+ if a:padding
exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%[>|*]./'
endif
- if a:secondary
+ if a:conditional
exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/ nextgroup=muttrcFormatConditionals2'
else
exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/'
endif
endfunction
-" CHECKED 2018-04-18
-" Ref: index_format_str() in hdrline.c
-call s:escapesConditionals('IndexFormat', '[AaBbCcDdEeFfgHIiJKLlMmNnOPqRrSsTtuvWXxYyZz(<[{]\|G[a-zA-Z]\+', 1, 1)
-" Ref: alias_format_str() in addrbook.c
-syntax match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/
-" Ref: group_index_format_str() in browser.c
-call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1)
-" Ref: sidebar_format_str() in sidebar.c
-call s:escapesConditionals('SidebarFormat', '[BdFLNnSt!]', 1, 1)
-" Ref: query_format_str() in query.c
-call s:escapesConditionals('QueryFormat', '[acent]', 0, 1)
+" CHECKED 2020-06-21
+" Ref: alias_format_str() in alias/dlgalias.c
+call s:escapesConditionals('AliasFormat', '[acfnrt]', 1, 0)
" Ref: attach_format_str() in recvattach.c
call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1)
" Ref: compose_format_str() in compose.c
-syntax match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/
-syntax match muttrcComposeFormatEscapes contained /%[>|*]./
+call s:escapesConditionals('ComposeFormat', '[ahlv]', 1, 1)
" Ref: folder_format_str() in browser.c
-call s:escapesConditionals('FolderFormat', '[CDdFfglmNnstu]', 1, 0)
+call s:escapesConditionals('FolderFormat', '[CDdFfgilmNnstu]', 1, 0)
+" Ref: group_index_format_str() in browser.c
+call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1)
+" Ref: index_format_str() in hdrline.c
+call s:escapesConditionals('IndexFormat', '[AaBbCDdEefgHIiJKLlMmNnOPqRrSsTtuvWXxYyZ(<[{]\|@\i\+@\|G[a-zA-Z]\+\|Fp\=\|z[cst]\|cr\=', 1, 1)
" Ref: mix_format_str() in remailer.c
-call s:escapesConditionals('MixFormat', '[acns]', 0, 0)
-" Ref: status_format_str() in status.c
-call s:escapesConditionals('StatusFormat', '[bdFfhLlMmnoPpRrSstuVv]', 1, 1)
-" Ref: fmt_smime_command() in ncrypt/smime.c
-call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1)
+call s:escapesConditionals('MixFormat', '[acns]', 1, 0)
+" Ref: pgp_command_format_str() in ncrypt/pgpinvoke.c
+call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
" Ref: crypt_format_str() in ncrypt/crypt_gpgme.c
-" Ref: pgp_entry_fmt() in ncrypt/pgpkey.c
+" Ref: pgp_entry_format_str() in ncrypt/pgpkey.c
" Note: crypt_format_str() supports 'p', but pgp_entry_fmt() does not
-call s:escapesConditionals('PGPFormat', '[acfklnptu[]', 0, 0)
-" Ref: fmt_pgp_command() ncrypt/pgpinvoke.c
-call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
-
-" This matches the documentation, but directly contradicts the code
-" (according to the code, this should be identical to the muttrcPGPCmdFormatEscapes
-syntax match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acfklntu[%]/
+call s:escapesConditionals('PGPFormat', '[AaCcFfKkLlnptu[]', 0, 0)
+" Ref: query_format_str() in alias/dlgquery.c
+call s:escapesConditionals('QueryFormat', '[acent]', 1, 1)
+" Ref: sidebar_format_str() in sidebar.c
+call s:escapesConditionals('SidebarFormat', '[!BDdFLNnorStZ]', 1, 1)
+" Ref: smime_command_format_str() in ncrypt/smime.c
+call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1)
+" Ref: status_format_str() in status.c
+call s:escapesConditionals('StatusFormat', '[bDdFfhLlMmnoPpRrSstuVv]', 1, 1)
-syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes
-syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
-syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes
-syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes
syntax match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr
syntax match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr
@@ -196,29 +189,20 @@ syntax match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=mutt
syntax match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr
syntax match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
syntax match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr
-syntax match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr
syntax match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr
syntax match muttrcVarEqualsSdbFmt contained skipwhite "=" nextgroup=muttrcSidebarFormatStr
syntax match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr
syntax match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
syntax match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr
-syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-" CHECKED 2018-04-18
-" List of the different screens in mutt
+" CHECKED 2020-06-21
+" List of the different screens in mutt (see Menus in keymap.c)
syntax keyword muttrcMenu contained alias attach browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime
syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu
syntax match muttrcMenuCommas /,/ contained
-" CHECKED 2018-04-18
-" List of hooks in Commands in init.h
-syntax keyword muttrcHooks contained skipwhite
- \ account-hook append-hook close-hook crypt-hook fcc-hook fcc-save-hook
- \ folder-hook iconv-hook mbox-hook message-hook open-hook pgp-hook
- \ reply-hook save-hook send-hook send2-hook
-syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand
-
syntax region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
syntax region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
@@ -232,17 +216,17 @@ syntax match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite next
syntax match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)"
syntax keyword muttrcAsterisk contained *
+
syntax keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment
syntax keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment
-syntax keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment
-syntax keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment
+syntax keyword muttrcSubscribeKeyword subscribe skipwhite nextgroup=muttrcGroupDef,muttrcComment
+syntax keyword muttrcSubscribeKeyword unsubscribe skipwhite nextgroup=muttrcAsterisk,muttrcComment
syntax keyword muttrcAlternateKeyword contained alternates unalternates
syntax region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment
-" muttrcVariable includes a prefix because partial strings are considered
-" valid.
+" muttrcVariable includes a prefix because partial strings are considered valid.
syntax match muttrcVariable contained "\\\@<![a-zA-Z_-]*\$[a-zA-Z_-]\+" contains=muttrcVariableInner
syntax match muttrcVariableInner contained "\$[a-zA-Z_-]\+"
syntax match muttrcEscapedVariable contained "\\\$[a-zA-Z_-]\+"
@@ -250,15 +234,19 @@ syntax match muttrcEscapedVariable contained "\\\$[a-zA-Z_-]\+"
syntax match muttrcBadAction contained "[^<>]\+" contains=muttrcEmail
syntax match muttrcAction contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName
+" CHECKED 2020-06-21
" First, functions that take regular expressions:
syntax match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL
syntax match muttrcRXHooks /\<\%(account\|append\|close\|crypt\|folder\|mbox\|open\|pgp\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL
" Now, functions that take patterns
syntax match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern
-syntax match muttrcPatHooks /\<\%(charset\|iconv\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
+syntax match muttrcPatHooks /\<\%(charset\|iconv\|index-format\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
syntax match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|fcc\|fcc-save\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern
+" Global hooks that take a command
+syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand
+
syntax match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction
syntax match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL
syntax match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL
@@ -271,8 +259,8 @@ syntax region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\
syntax region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s
syntax match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
syntax region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
-syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
-syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
syntax match muttrcMacroBodyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroBody,muttrcMacroBodyNL
syntax match muttrcMacroKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcMacroBody,muttrcMacroBodyNL
syntax match muttrcMacroKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroKey,muttrcMacroKeyNL
@@ -282,7 +270,7 @@ syntax match muttrcMacroMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup
syntax match muttrcAddrContent contained "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+\s*" skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
syntax region muttrcAddrContent contained start=+'+ end=+'\s*+ skip=+\\'+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
syntax region muttrcAddrContent contained start=+"+ end=+"\s*+ skip=+\\"+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
-syntax match muttrcAddrDef contained "-addr\s\+" skipwhite nextgroup=muttrcAddrContent
+syntax match muttrcAddrDef contained "-addr\s\+" skipwhite nextgroup=muttrcAddrContent
syntax match muttrcGroupFlag contained "-group"
syntax region muttrcGroupDef contained start="-group\s\+" skip="\\$" end="\s" skipwhite keepend contains=muttrcGroupFlag,muttrcUnHighlightSpace
@@ -307,20 +295,29 @@ syntax match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrc
syntax match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
syntax match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
-syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]"
+" CHECKED 2020-06-21
+" List of letters in Flags in pattern.c
+" Parameter: none
+syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFGgklNOPpQRSTuUvV#$=]"
+" Parameter: range
syntax match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)"
+" Parameter: date
syntax match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable
-syntax match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer
+" Parameter: regex
+syntax match muttrcSimplePat contained "!\?\^\?[~][BbCcefHhIiLMstwxYy]\s*" nextgroup=muttrcSimplePatRXContainer
+" Parameter: pattern
syntax match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
+" Parameter: pattern
syntax match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
syntax region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat
+
"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString
syntax region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+
syntax region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+
-syntax region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1
+syntax region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1
syntax region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString
syntax region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString
-syntax region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
+syntax region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
syntax match muttrcSimplePatMetas contained /[(|)]/
syntax match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas
@@ -349,12 +346,12 @@ syntax keyword muttrcColor contained brightblack brightblue brightcyan brightdef
syntax match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>"
" Now for the structure of the color line
syntax match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL
-syntax match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syntax match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
syntax match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL
-syntax match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
+syntax match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
syntax match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL
-syntax match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace,muttrcColorCompose nextgroup=muttrcColorFG,muttrcColorFGNL
-syntax match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
+syntax match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace,muttrcColorCompose nextgroup=muttrcColorFG,muttrcColorFGNL
+syntax match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
syntax match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
" And now color's brother:
syntax region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
@@ -372,28 +369,27 @@ syntax keyword muttrcMonoAttrib contained bold none normal reverse standout unde
syntax keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField,muttrcColorCompose
syntax match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono
-" CHECKED 2018-04-18
+" CHECKED 2020-06-21
" List of fields in Fields in color.c
syntax keyword muttrcColorField skipwhite contained
- \ attachment attach_headers body bold error hdrdefault header index
- \ index_author index_collapsed index_date index_flags index_label
- \ index_number index_size index_subject index_tag index_tags indicator
- \ markers message normal progress prompt quoted search sidebar_divider
- \ sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new
- \ sidebar_ordinary sidebar_spoolfile signature status tilde tree underline
- \ nextgroup=muttrcColor
+ \ attachment attach_headers body bold error hdrdefault header index index_author
+ \ index_collapsed index_date index_flags index_label index_number index_size index_subject
+ \ index_tag index_tags indicator markers message normal options progress prompt quoted
+ \ search sidebar_divider sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new
+ \ sidebar_ordinary sidebar_spoolfile sidebar_unread signature status tilde tree underline
+ \ warning nextgroup=muttrcColor
+
syntax match muttrcColorField contained "\<quoted\d\=\>"
syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField
-" CHECKED 2018-04-18
+" CHECKED 2020-06-21
" List of fields in ComposeFields in color.c
syntax keyword muttrcColorComposeField skipwhite contained
- \ header security_both security_encrypt security_none security_sign
- \ nextgroup=muttrcColorFG,muttrcColorFGNL
+ \ header security_both security_encrypt security_none security_sign
+ \ nextgroup=muttrcColorFG,muttrcColorFGNL
syntax region muttrcColorLine keepend start=/^\s*color\s\+/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
-
function! s:boolQuadGen(type, vars, deprecated)
let l:novars = copy(a:vars)
call map(l:novars, '"no" . v:val')
@@ -403,643 +399,459 @@ function! s:boolQuadGen(type, vars, deprecated)
let l:orig_type = copy(a:type)
if a:deprecated
let l:type = 'Deprecated' . a:type
+ exec 'syntax keyword muttrcVar' . l:type . ' ' . join(a:vars)
+ exec 'syntax keyword muttrcVar' . l:type . ' ' . join(l:novars)
+ exec 'syntax keyword muttrcVar' . l:type . ' ' . join(l:invvars)
else
let l:type = a:type
+ exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(a:vars) . ' nextgroup=muttrcSet' . l:orig_type . 'Assignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+ exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:novars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+ exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
endif
- exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(a:vars) . ' nextgroup=muttrcSet' . l:orig_type . 'Assignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
- exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:novars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
- exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
endfunction
-" CHECKED 2018-04-18
-" List of DT_BOOL in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_BOOL in MuttVars in mutt_config.c
call s:boolQuadGen('Bool', [
- \ 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc',
- \ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_split', 'autoedit',
- \ 'auto_tag', 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly',
- \ 'change_folder_next', 'check_mbox_size', 'check_new', 'collapse_all',
- \ 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate',
- \ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime',
- \ 'crypt_confirmhook', 'crypt_opportunistic_encrypt', 'crypt_replyencrypt',
- \ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp',
- \ 'crypt_use_gpgme', 'crypt_use_pka', 'delete_untag', 'digest_collapse',
- \ 'duplicate_threads', 'edit_headers', 'encode_from', 'fast_reply',
- \ 'fcc_clear', 'flag_safe', 'followup_to', 'force_name', 'forward_decode',
- \ 'forward_decrypt', 'forward_quote', 'forward_references', 'hdrs',
- \ 'header', 'header_cache_compress', 'header_color_partial', 'help',
- \ 'hidden_host', 'hide_limited', 'hide_missing', 'hide_thread_subject',
- \ 'hide_top_limited', 'hide_top_missing', 'history_remove_dups',
- \ 'honor_disposition', 'idn_decode', 'idn_encode', 'ignore_list_reply_to',
- \ 'imap_check_subscribed', 'imap_idle', 'imap_list_subscribed',
- \ 'imap_passive', 'imap_peek', 'imap_servernoise', 'implicit_autoview',
- \ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize',
- \ 'maildir_check_cur', 'maildir_header_cache_verify', 'maildir_trash',
- \ 'mail_check_recent', 'mail_check_stats', 'markers', 'mark_old',
- \ 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key',
- \ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject',
- \ 'mime_type_query_first', 'narrow_tree', 'nm_record', 'nntp_listgroup',
- \ 'nntp_load_description', 'pager_stop', 'pgp_autoinline',
- \ 'pgp_auto_decode', 'pgp_check_exit', 'pgp_ignore_subkeys', 'pgp_long_ids',
- \ 'pgp_replyinline', 'pgp_retainable_sigs', 'pgp_self_encrypt',
- \ 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent', 'pipe_decode',
- \ 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt',
- \ 'print_decode', 'print_split', 'prompt_after', 'read_only',
- \ 'reflow_space_quotes', 'reflow_text', 'reply_self', 'reply_with_xorig',
- \ 'resolve', 'resume_draft_files', 'resume_edited_draft_files',
- \ 'reverse_alias', 'reverse_name', 'reverse_realname', 'rfc2047_parameters',
- \ 'save_address', 'save_empty', 'save_name', 'save_unsubscribed', 'score',
- \ 'show_new_news', 'show_only_unread', 'sidebar_folder_indent',
- \ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_on_right',
- \ 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top',
- \ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key',
- \ 'smime_is_default', 'smime_self_encrypt', 'sort_re', 'ssl_force_tls',
- \ 'ssl_usesystemcerts', 'ssl_use_sslv2', 'ssl_use_sslv3', 'ssl_use_tlsv1',
- \ 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_verify_dates',
- \ 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top',
- \ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search',
- \ 'thread_received', 'tilde', 'ts_enabled', 'uncollapse_jump',
- \ 'uncollapse_new', 'user_agent', 'use_8bitmime', 'use_domain',
- \ 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile',
- \ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to'
- \ ], 0)
-
-" CHECKED 2018-04-18
+ \ 'abort_backspace', 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc',
+ \ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_save_without_prompting',
+ \ 'attach_split', 'autocrypt', 'autocrypt_reply', 'autoedit', 'auto_subscribe', 'auto_tag',
+ \ 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly',
+ \ 'browser_abbreviate_mailboxes', 'change_folder_next', 'check_mbox_size', 'check_new',
+ \ 'collapse_all', 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate',
+ \ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime',
+ \ 'crypt_confirmhook', 'crypt_opportunistic_encrypt',
+ \ 'crypt_opportunistic_encrypt_strong_keys', 'crypt_protected_headers_read',
+ \ 'crypt_protected_headers_save', 'crypt_protected_headers_write', 'crypt_replyencrypt',
+ \ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp', 'crypt_use_gpgme',
+ \ 'crypt_use_pka', 'delete_untag', 'digest_collapse', 'duplicate_threads', 'edit_headers',
+ \ 'encode_from', 'fast_reply', 'fcc_before_send', 'fcc_clear', 'flag_safe', 'followup_to',
+ \ 'force_name', 'forward_decode', 'forward_decrypt', 'forward_quote', 'forward_references',
+ \ 'hdrs', 'header', 'header_color_partial', 'help', 'hidden_host', 'hide_limited',
+ \ 'hide_missing', 'hide_thread_subject', 'hide_top_limited', 'hide_top_missing',
+ \ 'history_remove_dups', 'honor_disposition', 'idn_decode', 'idn_encode',
+ \ 'ignore_list_reply_to', 'imap_check_subscribed', 'imap_condstore', 'imap_deflate',
+ \ 'imap_idle', 'imap_list_subscribed', 'imap_passive', 'imap_peek', 'imap_qresync',
+ \ 'imap_rfc5161', 'imap_servernoise', 'implicit_autoview', 'include_encrypted',
+ \ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize', 'maildir_check_cur',
+ \ 'maildir_header_cache_verify', 'maildir_trash', 'mail_check_recent', 'mail_check_stats',
+ \ 'markers', 'mark_old', 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key',
+ \ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject', 'mime_type_query_first',
+ \ 'narrow_tree', 'nm_record', 'nntp_listgroup', 'nntp_load_description', 'pager_stop',
+ \ 'pgp_autoinline', 'pgp_auto_decode', 'pgp_check_exit', 'pgp_check_gpg_decrypt_status_fd',
+ \ 'pgp_ignore_subkeys', 'pgp_long_ids', 'pgp_replyinline', 'pgp_retainable_sigs',
+ \ 'pgp_self_encrypt', 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent',
+ \ 'pipe_decode', 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt',
+ \ 'print_decode', 'print_split', 'prompt_after', 'read_only', 'reflow_space_quotes',
+ \ 'reflow_text', 'reply_self', 'reply_with_xorig', 'resolve', 'resume_draft_files',
+ \ 'resume_edited_draft_files', 'reverse_alias', 'reverse_name', 'reverse_realname',
+ \ 'rfc2047_parameters', 'save_address', 'save_empty', 'save_name', 'save_unsubscribed',
+ \ 'score', 'show_new_news', 'show_only_unread', 'sidebar_folder_indent',
+ \ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_non_empty_mailbox_only',
+ \ 'sidebar_on_right', 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top',
+ \ 'size_show_bytes', 'size_show_fractions', 'size_show_mb', 'size_units_on_left',
+ \ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key', 'smime_is_default',
+ \ 'smime_self_encrypt', 'sort_re', 'ssl_force_tls', 'ssl_usesystemcerts', 'ssl_use_sslv2',
+ \ 'ssl_use_sslv3', 'ssl_use_tlsv1', 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_use_tlsv1_3',
+ \ 'ssl_verify_dates', 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top',
+ \ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search', 'thread_received', 'tilde',
+ \ 'ts_enabled', 'uncollapse_jump', 'uncollapse_new', 'user_agent', 'use_8bitmime',
+ \ 'use_domain', 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile',
+ \ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to'
+ \ ], 0)
+
+" CHECKED 2020-06-21
" Deprecated Bools
-" List of DT_SYNONYM synonyms of Bools in MuttVars in init.h
+" List of DT_SYNONYM or DT_DEPRECATED Bools in MuttVars in mutt_config.c
call s:boolQuadGen('Bool', [
- \ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt',
- \ 'forw_quote', 'ignore_linear_white_space', 'pgp_autoencrypt',
- \ 'pgp_autosign', 'pgp_auto_traditional', 'pgp_create_traditional',
- \ 'pgp_replyencrypt', 'pgp_replysign', 'pgp_replysignencrypted',
- \ 'xterm_set_titles'
- \ ], 1)
-
-" CHECKED 2018-04-18
-" List of DT_QUAD in MuttVars in init.h
+ \ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt', 'forw_quote',
+ \ 'header_cache_compress', 'ignore_linear_white_space', 'pgp_autoencrypt', 'pgp_autosign',
+ \ 'pgp_auto_traditional', 'pgp_create_traditional', 'pgp_replyencrypt', 'pgp_replysign',
+ \ 'pgp_replysignencrypted', 'xterm_set_titles'
+ \ ], 1)
+
+" CHECKED 2020-06-21
+" List of DT_QUAD in MuttVars in mutt_config.c
call s:boolQuadGen('Quad', [
- \ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce',
- \ 'catchup_newsgroup', 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach',
- \ 'followup_to_poster', 'forward_edit', 'honor_followup_to', 'include',
- \ 'mime_forward', 'mime_forward_rest', 'move', 'pgp_mime_auto',
- \ 'pop_delete', 'pop_reconnect', 'postpone', 'post_moderated', 'print',
- \ 'quit', 'recall', 'reply_to', 'ssl_starttls'
- \ ], 0)
-
-" CHECKED 2018-04-18
+ \ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce', 'catchup_newsgroup',
+ \ 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach', 'followup_to_poster',
+ \ 'forward_attachments', 'forward_edit', 'honor_followup_to', 'include', 'mime_forward',
+ \ 'mime_forward_rest', 'move', 'pgp_mime_auto', 'pop_delete', 'pop_reconnect', 'postpone',
+ \ 'post_moderated', 'print', 'quit', 'recall', 'reply_to', 'ssl_starttls',
+ \ ], 0)
+
+" CHECKED 2020-06-21
" Deprecated Quads
-" List of DT_SYNONYM synonyms of Quads in MuttVars in init.h
+" List of DT_SYNONYM or DT_DEPRECATED Quads in MuttVars in mutt_config.c
call s:boolQuadGen('Quad', [
- \ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self'
- \ ], 1)
+ \ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self'
+ \ ], 1)
-" CHECKED 2018-04-18
-" List of DT_NUMBER in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_NUMBER or DT_LONG in MuttVars in mutt_config.c
syntax keyword muttrcVarNum skipwhite contained
- \ connect_timeout debug_level history imap_keepalive imap_pipeline_depth
- \ imap_poll_timeout mail_check mail_check_stats_interval menu_context
- \ net_inc nm_db_limit nm_open_timeout nm_query_window_current_position
- \ nm_query_window_duration nntp_context nntp_poll pager_context
- \ pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap
- \ save_history score_threshold_delete score_threshold_flag
- \ score_threshold_read search_context sendmail_wait sidebar_component_depth
- \ sidebar_width skip_quoted_offset sleep_time smime_timeout
- \ ssl_min_dh_prime_bits timeout time_inc wrap wrap_headers write_inc
- \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+ \ connect_timeout debug_level header_cache_compress_level history
+ \ imap_fetch_chunk_size imap_keepalive imap_pipeline_depth imap_poll_timeout mail_check
+ \ mail_check_stats_interval menu_context net_inc nm_db_limit nm_open_timeout
+ \ nm_query_window_current_position nm_query_window_duration nntp_context nntp_poll
+ \ pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap
+ \ save_history score_threshold_delete score_threshold_flag score_threshold_read
+ \ search_context sendmail_wait sidebar_component_depth sidebar_width skip_quoted_offset
+ \ sleep_time smime_timeout ssl_min_dh_prime_bits timeout time_inc toggle_quoted_show_levels
+ \ wrap wrap_headers write_inc
+ \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
syntax keyword muttrcVarDeprecatedNum contained skipwhite
- \ wrapmargin
- \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+ \ header_cache_pagesize wrapmargin
+ \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-" CHECKED 2018-04-18
-" List of DT_STRING in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_STRING in MuttVars in mutt_config.c
" Special cases first, and all the rest at the end
" Formats themselves must be updated in their respective groups
" See s:escapesConditionals
-syntax match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
syntax keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt
syntax keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt
syntax keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt
syntax keyword muttrcVarStr contained skipwhite folder_format vfolder_format nextgroup=muttrcVarEqualsFolderFmt
-syntax keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
-" Deprecated format
-syntax keyword muttrcVarDeprecatedStr contained skipwhite hdr_format msg_format nextgroup=muttrcVarEqualsIdxFmt
+syntax keyword muttrcVarStr contained skipwhite attribution forward_format index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
syntax keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt
syntax keyword muttrcVarStr contained skipwhite
- \ pgp_clearsign_command pgp_decode_command pgp_decrypt_command
- \ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command
- \ pgp_import_command pgp_list_pubring_command pgp_list_secring_command
- \ pgp_sign_command pgp_verify_command pgp_verify_key_command
- \ nextgroup=muttrcVarEqualsPGPCmdFmt
+ \ pgp_clearsign_command pgp_decode_command pgp_decrypt_command
+ \ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command pgp_getkeys_command
+ \ pgp_import_command pgp_list_pubring_command pgp_list_secring_command
+ \ pgp_sign_command pgp_verify_command pgp_verify_key_command
+ \ nextgroup=muttrcVarEqualsPGPCmdFmt
syntax keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
-syntax keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
syntax keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt
syntax keyword muttrcVarStr contained skipwhite
- \ smime_decrypt_command smime_encrypt_command smime_get_cert_command
- \ smime_get_cert_email_command smime_get_signer_cert_command
- \ smime_import_cert_command smime_pk7out_command smime_sign_command
- \ smime_verify_command smime_verify_opaque_command
- \ nextgroup=muttrcVarEqualsSmimeFmt
-syntax keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt
-" Deprecated format
-syntax keyword muttrcVarDeprecatedStr contained skipwhite xterm_icon xterm_title nextgroup=muttrcVarEqualsStatusFmt
+ \ smime_decrypt_command smime_encrypt_command smime_get_cert_command
+ \ smime_get_cert_email_command smime_get_signer_cert_command
+ \ smime_import_cert_command smime_pk7out_command smime_sign_command
+ \ smime_verify_command smime_verify_opaque_command
+ \ nextgroup=muttrcVarEqualsSmimeFmt
+syntax keyword muttrcVarStr contained skipwhite status_format ts_icon_format ts_status_format nextgroup=muttrcVarEqualsStatusFmt
syntax keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt
syntax keyword muttrcVarStr contained skipwhite group_index_format nextgroup=muttrcVarEqualsGrpIdxFmt
syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcVarEqualsSdbFmt
syntax keyword muttrcVarStr contained skipwhite
- \ assumed_charset attach_charset attach_sep attribution_locale charset
- \ config_charset content_type default_hook dsn_notify dsn_return
- \ empty_subject escape forward_attribution_intro forward_attribution_trailer
- \ forward_format header_cache_pagesize hidden_tags hostname
- \ imap_authenticators imap_delim_chars imap_headers imap_login imap_pass
- \ imap_user indent_string mailcap_path mark_macro_prefix mh_seq_flagged
- \ mh_seq_replied mh_seq_unseen mime_type_query_command newsgroups_charset
- \ news_server nm_default_uri nm_exclude_tags nm_query_type
- \ nm_query_window_current_search nm_query_window_timebase nm_record_tags
- \ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key
- \ pgp_sign_as pipe_sep pop_authenticators pop_host pop_pass pop_user
- \ postpone_encrypt_as post_indent_string preconnect realname send_charset
- \ show_multipart_alternative sidebar_delim_chars sidebar_divider_char
- \ sidebar_indent_string simple_search smime_default_key smime_encrypt_with
- \ smime_sign_as smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url
- \ spam_separator ssl_ciphers tunnel
- \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+ \ abort_key arrow_string assumed_charset attach_charset attach_sep attribution_locale
+ \ autocrypt_acct_format charset config_charset content_type crypt_protected_headers_subject
+ \ default_hook dsn_notify dsn_return empty_subject escape forward_attribution_intro
+ \ forward_attribution_trailer header_cache_backend header_cache_compress_method hidden_tags
+ \ hostname imap_authenticators imap_delim_chars imap_headers imap_login imap_pass imap_user
+ \ indent_string mailcap_path mark_macro_prefix mh_seq_flagged mh_seq_replied mh_seq_unseen
+ \ newsgroups_charset news_server nm_default_url nm_exclude_tags nm_flagged_tag nm_query_type
+ \ nm_query_window_current_search nm_query_window_timebase nm_record_tags nm_replied_tag
+ \ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key pgp_sign_as pipe_sep
+ \ pop_authenticators pop_host pop_pass pop_user postpone_encrypt_as post_indent_string
+ \ preconnect preferred_languages realname send_charset show_multipart_alternative
+ \ sidebar_delim_chars sidebar_divider_char sidebar_indent_string simple_search
+ \ smime_default_key smime_encrypt_with smime_sign_as smime_sign_digest_alg
+ \ smtp_authenticators smtp_pass smtp_url smtp_user spam_separator ssl_ciphers
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
" Deprecated strings
-syntax keyword muttrcVarDeprecatedStr contained skipwhite
- \ forw_format indent_str pgp_self_encrypt_as post_indent_str
- \ smime_self_encrypt_as
- \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarDeprecatedStr
+ \ abort_noattach_regexp attach_keyword forw_format hdr_format indent_str msg_format
+ \ nm_default_uri pgp_self_encrypt_as post_indent_str print_cmd quote_regexp reply_regexp
+ \ smime_self_encrypt_as xterm_icon xterm_title
-" CHECKED 2018-04-18
+" CHECKED 2020-06-21
" List of DT_ADDRESS
-syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-" List of DT_HCACHE
-syntax keyword muttrcVarStr contained skipwhite header_cache_backend nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-" List of DT_MAGIC
-syntax keyword muttrcVarStr contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" List of DT_ENUM
+syntax keyword muttrcVarStr contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
" List of DT_MBTABLE
-syntax keyword muttrcVarStr contained skipwhite flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarStr contained skipwhite crypt_chars flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-" CHECKED 2018-04-18
+" CHECKED 2020-06-21
" List of DT_PATH
syntax keyword muttrcVarStr contained skipwhite
- \ alias_file certificate_file debug_file display_filter editor entropy_file
- \ folder header_cache history_file inews ispell mbox message_cachedir mixmaster
- \ new_mail_command news_cache_dir newsrc pager postponed print_command
- \ query_command record sendmail shell signature smime_ca_location
- \ smime_certificates smime_keys spoolfile ssl_ca_certificates_file
- \ ssl_client_cert tmpdir trash visual
- \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-
-" CHECKED 2018-04-18
+ \ alias_file attach_save_dir autocrypt_dir certificate_file debug_file
+ \ entropy_file folder header_cache history_file mbox message_cachedir newsrc
+ \ news_cache_dir postponed record signature smime_ca_location
+ \ smime_certificates smime_keys spoolfile ssl_ca_certificates_file
+ \ ssl_client_cert tmpdir trash
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" List of DT_COMMAND (excluding pgp_*_command and smime_*_command)
+syntax keyword muttrcVarStr contained skipwhite
+ \ display_filter editor inews ispell mixmaster new_mail_command pager
+ \ print_command query_command sendmail shell visual external_search_command
+ \ imap_oauth_refresh_command pop_oauth_refresh_command
+ \ mime_type_query_command smtp_oauth_refresh_command tunnel
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" CHECKED 2020-06-21
" List of DT_REGEX
syntax keyword muttrcVarStr contained skipwhite
- \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign
- \ quote_regex reply_regex smileys
- \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-" List of deprecated DT_PATH
-syntax keyword muttrcVarDeprecatedStr contained skipwhite print_cmd nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-" List of deprecated DT_REGEX
-syntax keyword muttrcVarDeprecatedStr contained skipwhite abort_noattach_regexp attach_keyword quote_regexp reply_regexp nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+ \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign
+ \ quote_regex reply_regex smileys
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
" List of DT_SORT
syntax keyword muttrcVarStr contained skipwhite
- \ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser
- \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+ \ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-" CHECKED 2018-04-18
-" List of commands in Commands in init.h
+" CHECKED 2020-06-21
+" List of commands in Commands in mutt_config.c
" Remember to remove hooks, they have already been dealt with
-syntax keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString
-syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks
-syntax keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern
-syntax keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern
-syntax keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
-syntax keyword muttrcCommand skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
syntax keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
-syntax keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
-syntax keyword muttrcCommand skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
syntax keyword muttrcCommand skipwhite exec nextgroup=muttrcFunction
+syntax keyword muttrcCommand skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+syntax keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern
+syntax keyword muttrcCommand skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern
+syntax keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks
syntax keyword muttrcCommand skipwhite
- \ alternative_order attachments auto_view finish hdr_order ifdef ifndef
- \ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score
- \ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats
- \ tag-transforms unalternative_order unattachments unauto_view uncolor
- \ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono
- \ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from
- \ unvirtual-mailboxes virtual-mailboxes
-
-" CHECKED 2018-04-18
-" List of functions in functions.h
-syntax match muttrcFunction contained "\<accept\>"
-syntax match muttrcFunction contained "\<append\>"
-syntax match muttrcFunction contained "\<attach-file\>"
-syntax match muttrcFunction contained "\<attach-key\>"
-syntax match muttrcFunction contained "\<attach-message\>"
-syntax match muttrcFunction contained "\<attach-news-message\>"
-syntax match muttrcFunction contained "\<backspace\>"
-syntax match muttrcFunction contained "\<backward-char\>"
-syntax match muttrcFunction contained "\<backward-word\>"
-syntax match muttrcFunction contained "\<bol\>"
-syntax match muttrcFunction contained "\<bottom-page\>"
-syntax match muttrcFunction contained "\<bottom\>"
-syntax match muttrcFunction contained "\<bounce-message\>"
-syntax match muttrcFunction contained "\<break-thread\>"
-syntax match muttrcFunction contained "\<buffy-cycle\>"
-syntax match muttrcFunction contained "\<buffy-list\>"
-syntax match muttrcFunction contained "\<capitalize-word\>"
-syntax match muttrcFunction contained "\<catchup\>"
-syntax match muttrcFunction contained "\<chain-next\>"
-syntax match muttrcFunction contained "\<chain-prev\>"
-syntax match muttrcFunction contained "\<change-dir\>"
-syntax match muttrcFunction contained "\<change-folder-readonly\>"
-syntax match muttrcFunction contained "\<change-folder\>"
-syntax match muttrcFunction contained "\<change-newsgroup-readonly\>"
-syntax match muttrcFunction contained "\<change-newsgroup\>"
-syntax match muttrcFunction contained "\<change-vfolder\>"
-syntax match muttrcFunction contained "\<check-new\>"
-syntax match muttrcFunction contained "\<check-traditional-pgp\>"
-syntax match muttrcFunction contained "\<clear-flag\>"
-syntax match muttrcFunction contained "\<collapse-all\>"
-syntax match muttrcFunction contained "\<collapse-parts\>"
-syntax match muttrcFunction contained "\<collapse-thread\>"
-syntax match muttrcFunction contained "\<complete-query\>"
-syntax match muttrcFunction contained "\<complete\>"
-syntax match muttrcFunction contained "\<compose-to-sender\>"
-syntax match muttrcFunction contained "\<copy-file\>"
-syntax match muttrcFunction contained "\<copy-message\>"
-syntax match muttrcFunction contained "\<create-alias\>"
-syntax match muttrcFunction contained "\<create-mailbox\>"
-syntax match muttrcFunction contained "\<current-bottom\>"
-syntax match muttrcFunction contained "\<current-middle\>"
-syntax match muttrcFunction contained "\<current-top\>"
-syntax match muttrcFunction contained "\<decode-copy\>"
-syntax match muttrcFunction contained "\<decode-save\>"
-syntax match muttrcFunction contained "\<decrypt-copy\>"
-syntax match muttrcFunction contained "\<decrypt-save\>"
-syntax match muttrcFunction contained "\<delete-char\>"
-syntax match muttrcFunction contained "\<delete-entry\>"
-syntax match muttrcFunction contained "\<delete-mailbox\>"
-syntax match muttrcFunction contained "\<delete-message\>"
-syntax match muttrcFunction contained "\<delete-pattern\>"
-syntax match muttrcFunction contained "\<delete-subthread\>"
-syntax match muttrcFunction contained "\<delete-thread\>"
-syntax match muttrcFunction contained "\<delete\>"
-syntax match muttrcFunction contained "\<detach-file\>"
-syntax match muttrcFunction contained "\<display-address\>"
-syntax match muttrcFunction contained "\<display-filename\>"
-syntax match muttrcFunction contained "\<display-message\>"
-syntax match muttrcFunction contained "\<display-toggle-weed\>"
-syntax match muttrcFunction contained "\<downcase-word\>"
-syntax match muttrcFunction contained "\<edit-bcc\>"
-syntax match muttrcFunction contained "\<edit-cc\>"
-syntax match muttrcFunction contained "\<edit-description\>"
-syntax match muttrcFunction contained "\<edit-encoding\>"
-syntax match muttrcFunction contained "\<edit-fcc\>"
-syntax match muttrcFunction contained "\<edit-file\>"
-syntax match muttrcFunction contained "\<edit-followup-to\>"
-syntax match muttrcFunction contained "\<edit-from\>"
-syntax match muttrcFunction contained "\<edit-headers\>"
-syntax match muttrcFunction contained "\<edit-label\>"
-syntax match muttrcFunction contained "\<edit-message\>"
-syntax match muttrcFunction contained "\<edit-mime\>"
-syntax match muttrcFunction contained "\<edit-newsgroups\>"
-syntax match muttrcFunction contained "\<edit-or-view-raw-message\>"
-syntax match muttrcFunction contained "\<edit-raw-message\>"
-syntax match muttrcFunction contained "\<edit-reply-to\>"
-syntax match muttrcFunction contained "\<edit-subject\>"
-syntax match muttrcFunction contained "\<edit-to\>"
-syntax match muttrcFunction contained "\<edit-type\>"
-syntax match muttrcFunction contained "\<edit-x-comment-to\>"
-syntax match muttrcFunction contained "\<edit\>"
-syntax match muttrcFunction contained "\<end-cond\>"
-syntax match muttrcFunction contained "\<enter-command\>"
-syntax match muttrcFunction contained "\<enter-mask\>"
-syntax match muttrcFunction contained "\<entire-thread\>"
-syntax match muttrcFunction contained "\<eol\>"
-syntax match muttrcFunction contained "\<exit\>"
-syntax match muttrcFunction contained "\<extract-keys\>"
-syntax match muttrcFunction contained "\<fetch-mail\>"
-syntax match muttrcFunction contained "\<filter-entry\>"
-syntax match muttrcFunction contained "\<first-entry\>"
-syntax match muttrcFunction contained "\<flag-message\>"
-syntax match muttrcFunction contained "\<followup-message\>"
-syntax match muttrcFunction contained "\<forget-passphrase\>"
-syntax match muttrcFunction contained "\<forward-char\>"
-syntax match muttrcFunction contained "\<forward-message\>"
-syntax match muttrcFunction contained "\<forward-to-group\>"
-syntax match muttrcFunction contained "\<forward-word\>"
-syntax match muttrcFunction contained "\<get-attachment\>"
-syntax match muttrcFunction contained "\<get-children\>"
-syntax match muttrcFunction contained "\<get-message\>"
-syntax match muttrcFunction contained "\<get-parent\>"
-syntax match muttrcFunction contained "\<goto-folder\>"
-syntax match muttrcFunction contained "\<goto-parent\>"
-syntax match muttrcFunction contained "\<group-reply\>"
-syntax match muttrcFunction contained "\<half-down\>"
-syntax match muttrcFunction contained "\<half-up\>"
-syntax match muttrcFunction contained "\<help\>"
-syntax match muttrcFunction contained "\<history-down\>"
-syntax match muttrcFunction contained "\<history-search\>"
-syntax match muttrcFunction contained "\<history-up\>"
-syntax match muttrcFunction contained "\<imap-fetch-mail\>"
-syntax match muttrcFunction contained "\<imap-logout-all\>"
-syntax match muttrcFunction contained "\<insert\>"
-syntax match muttrcFunction contained "\<ispell\>"
-syntax match muttrcFunction contained "\<jump\>"
-syntax match muttrcFunction contained "\<kill-eol\>"
-syntax match muttrcFunction contained "\<kill-eow\>"
-syntax match muttrcFunction contained "\<kill-line\>"
-syntax match muttrcFunction contained "\<kill-word\>"
-syntax match muttrcFunction contained "\<last-entry\>"
-syntax match muttrcFunction contained "\<limit-current-thread\>"
-syntax match muttrcFunction contained "\<limit\>"
-syntax match muttrcFunction contained "\<link-threads\>"
-syntax match muttrcFunction contained "\<list-reply\>"
-syntax match muttrcFunction contained "\<mail-key\>"
-syntax match muttrcFunction contained "\<mail\>"
-syntax match muttrcFunction contained "\<mark-as-new\>"
-syntax match muttrcFunction contained "\<mark-message\>"
-syntax match muttrcFunction contained "\<middle-page\>"
-syntax match muttrcFunction contained "\<mix\>"
-syntax match muttrcFunction contained "\<modify-labels-then-hide\>"
-syntax match muttrcFunction contained "\<modify-labels\>"
-syntax match muttrcFunction contained "\<modify-tags-then-hide\>"
-syntax match muttrcFunction contained "\<modify-tags\>"
-syntax match muttrcFunction contained "\<new-mime\>"
-syntax match muttrcFunction contained "\<next-entry\>"
-syntax match muttrcFunction contained "\<next-line\>"
-syntax match muttrcFunction contained "\<next-new-then-unread\>"
-syntax match muttrcFunction contained "\<next-new\>"
-syntax match muttrcFunction contained "\<next-page\>"
-syntax match muttrcFunction contained "\<next-subthread\>"
-syntax match muttrcFunction contained "\<next-thread\>"
-syntax match muttrcFunction contained "\<next-undeleted\>"
-syntax match muttrcFunction contained "\<next-unread-mailbox\>"
-syntax match muttrcFunction contained "\<next-unread\>"
-syntax match muttrcFunction contained "\<noop\>"
-syntax match muttrcFunction contained "\<parent-message\>"
-syntax match muttrcFunction contained "\<pgp-menu\>"
-syntax match muttrcFunction contained "\<pipe-entry\>"
-syntax match muttrcFunction contained "\<pipe-message\>"
-syntax match muttrcFunction contained "\<post-message\>"
-syntax match muttrcFunction contained "\<postpone-message\>"
-syntax match muttrcFunction contained "\<previous-entry\>"
-syntax match muttrcFunction contained "\<previous-line\>"
-syntax match muttrcFunction contained "\<previous-new-then-unread\>"
-syntax match muttrcFunction contained "\<previous-new\>"
-syntax match muttrcFunction contained "\<previous-page\>"
-syntax match muttrcFunction contained "\<previous-subthread\>"
-syntax match muttrcFunction contained "\<previous-thread\>"
-syntax match muttrcFunction contained "\<previous-undeleted\>"
-syntax match muttrcFunction contained "\<previous-unread\>"
-syntax match muttrcFunction contained "\<print-entry\>"
-syntax match muttrcFunction contained "\<print-message\>"
-syntax match muttrcFunction contained "\<purge-message\>"
-syntax match muttrcFunction contained "\<purge-thread\>"
-syntax match muttrcFunction contained "\<quasi-delete\>"
-syntax match muttrcFunction contained "\<query-append\>"
-syntax match muttrcFunction contained "\<query\>"
-syntax match muttrcFunction contained "\<quit\>"
-syntax match muttrcFunction contained "\<quote-char\>"
-syntax match muttrcFunction contained "\<read-subthread\>"
-syntax match muttrcFunction contained "\<read-thread\>"
-syntax match muttrcFunction contained "\<recall-message\>"
-syntax match muttrcFunction contained "\<reconstruct-thread\>"
-syntax match muttrcFunction contained "\<redraw-screen\>"
-syntax match muttrcFunction contained "\<refresh\>"
-syntax match muttrcFunction contained "\<reload-active\>"
-syntax match muttrcFunction contained "\<rename-attachment\>"
-syntax match muttrcFunction contained "\<rename-file\>"
-syntax match muttrcFunction contained "\<rename-mailbox\>"
-syntax match muttrcFunction contained "\<reply\>"
-syntax match muttrcFunction contained "\<resend-message\>"
-syntax match muttrcFunction contained "\<root-message\>"
-syntax match muttrcFunction contained "\<save-entry\>"
-syntax match muttrcFunction contained "\<save-message\>"
-syntax match muttrcFunction contained "\<search-next\>"
-syntax match muttrcFunction contained "\<search-opposite\>"
-syntax match muttrcFunction contained "\<search-reverse\>"
-syntax match muttrcFunction contained "\<search-toggle\>"
-syntax match muttrcFunction contained "\<search\>"
-syntax match muttrcFunction contained "\<select-entry\>"
-syntax match muttrcFunction contained "\<select-new\>"
-syntax match muttrcFunction contained "\<send-message\>"
-syntax match muttrcFunction contained "\<set-flag\>"
-syntax match muttrcFunction contained "\<shell-escape\>"
-syntax match muttrcFunction contained "\<show-limit\>"
-syntax match muttrcFunction contained "\<show-log-messages\>"
-syntax match muttrcFunction contained "\<show-version\>"
-syntax match muttrcFunction contained "\<sidebar-next-new\>"
-syntax match muttrcFunction contained "\<sidebar-next\>"
-syntax match muttrcFunction contained "\<sidebar-open\>"
-syntax match muttrcFunction contained "\<sidebar-page-down\>"
-syntax match muttrcFunction contained "\<sidebar-page-up\>"
-syntax match muttrcFunction contained "\<sidebar-prev-new\>"
-syntax match muttrcFunction contained "\<sidebar-prev\>"
-syntax match muttrcFunction contained "\<sidebar-toggle-virtual\>"
-syntax match muttrcFunction contained "\<sidebar-toggle-visible\>"
-syntax match muttrcFunction contained "\<skip-quoted\>"
-syntax match muttrcFunction contained "\<smime-menu\>"
-syntax match muttrcFunction contained "\<sort-mailbox\>"
-syntax match muttrcFunction contained "\<sort-reverse\>"
-syntax match muttrcFunction contained "\<sort\>"
-syntax match muttrcFunction contained "\<subscribe-pattern\>"
-syntax match muttrcFunction contained "\<subscribe\>"
-syntax match muttrcFunction contained "\<sync-mailbox\>"
-syntax match muttrcFunction contained "\<tag-entry\>"
-syntax match muttrcFunction contained "\<tag-message\>"
-syntax match muttrcFunction contained "\<tag-pattern\>"
-syntax match muttrcFunction contained "\<tag-prefix-cond\>"
-syntax match muttrcFunction contained "\<tag-prefix\>"
-syntax match muttrcFunction contained "\<tag-subthread\>"
-syntax match muttrcFunction contained "\<tag-thread\>"
-syntax match muttrcFunction contained "\<toggle-disposition\>"
-syntax match muttrcFunction contained "\<toggle-mailboxes\>"
-syntax match muttrcFunction contained "\<toggle-new\>"
-syntax match muttrcFunction contained "\<toggle-quoted\>"
-syntax match muttrcFunction contained "\<toggle-read\>"
-syntax match muttrcFunction contained "\<toggle-recode\>"
-syntax match muttrcFunction contained "\<toggle-subscribed\>"
-syntax match muttrcFunction contained "\<toggle-unlink\>"
-syntax match muttrcFunction contained "\<toggle-write\>"
-syntax match muttrcFunction contained "\<top-page\>"
-syntax match muttrcFunction contained "\<top\>"
-syntax match muttrcFunction contained "\<transpose-chars\>"
-syntax match muttrcFunction contained "\<uncatchup\>"
-syntax match muttrcFunction contained "\<undelete-entry\>"
-syntax match muttrcFunction contained "\<undelete-message\>"
-syntax match muttrcFunction contained "\<undelete-pattern\>"
-syntax match muttrcFunction contained "\<undelete-subthread\>"
-syntax match muttrcFunction contained "\<undelete-thread\>"
-syntax match muttrcFunction contained "\<unsubscribe-pattern\>"
-syntax match muttrcFunction contained "\<unsubscribe\>"
-syntax match muttrcFunction contained "\<untag-pattern\>"
-syntax match muttrcFunction contained "\<upcase-word\>"
-syntax match muttrcFunction contained "\<update-encoding\>"
-syntax match muttrcFunction contained "\<verify-key\>"
-syntax match muttrcFunction contained "\<vfolder-from-query\>"
-syntax match muttrcFunction contained "\<vfolder-window-backward\>"
-syntax match muttrcFunction contained "\<vfolder-window-forward\>"
-syntax match muttrcFunction contained "\<view-attachments\>"
-syntax match muttrcFunction contained "\<view-attach\>"
-syntax match muttrcFunction contained "\<view-file\>"
-syntax match muttrcFunction contained "\<view-mailcap\>"
-syntax match muttrcFunction contained "\<view-name\>"
-syntax match muttrcFunction contained "\<view-raw-message\>"
-syntax match muttrcFunction contained "\<view-text\>"
-syntax match muttrcFunction contained "\<what-key\>"
-syntax match muttrcFunction contained "\<write-fcc\>"
-
+ \ alternative_order attachments auto_view finish hdr_order ifdef ifndef
+ \ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score
+ \ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats
+ \ tag-transforms unalternative_order unattachments unauto_view uncolor
+ \ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono
+ \ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from
+ \ unvirtual-mailboxes virtual-mailboxes named-mailboxes
+ \ echo unbind unmacro
+
+function! s:genFunctions(functions)
+ for f in a:functions
+ exec 'syntax match muttrcFunction contained "\<' . l:f . '\>"'
+ endfor
+endfunction
+" CHECKED 2020-06-21
+" List of functions in functions.c
+" Note: 'noop' is included but is elsewhere in the source
+call s:genFunctions(['noop',
+ \ 'accept', 'append', 'attach-file', 'attach-key', 'attach-message', 'attach-news-message',
+ \ 'autocrypt-acct-menu', 'autocrypt-menu', 'backspace', 'backward-char', 'backward-word',
+ \ 'bol', 'bottom-page', 'bottom', 'bounce-message', 'break-thread', 'buffy-cycle',
+ \ 'buffy-list', 'capitalize-word', 'catchup', 'chain-next', 'chain-prev', 'change-dir',
+ \ 'change-folder-readonly', 'change-folder', 'change-newsgroup-readonly',
+ \ 'change-newsgroup', 'change-vfolder', 'check-new', 'check-stats',
+ \ 'check-traditional-pgp', 'clear-flag', 'collapse-all', 'collapse-parts',
+ \ 'collapse-thread', 'complete-query', 'complete', 'compose-to-sender', 'copy-file',
+ \ 'copy-message', 'create-account', 'create-alias', 'create-mailbox', 'current-bottom',
+ \ 'current-middle', 'current-top', 'decode-copy', 'decode-save', 'decrypt-copy',
+ \ 'decrypt-save', 'delete-account', 'delete-char', 'delete-entry', 'delete-mailbox',
+ \ 'delete-message', 'delete-pattern', 'delete-subthread', 'delete-thread', 'delete',
+ \ 'descend-directory', 'detach-file', 'display-address', 'display-filename',
+ \ 'display-message', 'display-toggle-weed', 'downcase-word', 'edit-bcc', 'edit-cc',
+ \ 'edit-description', 'edit-encoding', 'edit-fcc', 'edit-file', 'edit-followup-to',
+ \ 'edit-from', 'edit-headers', 'edit-label', 'edit-language', 'edit-message', 'edit-mime',
+ \ 'edit-newsgroups', 'edit-or-view-raw-message', 'edit-raw-message', 'edit-reply-to',
+ \ 'edit-subject', 'edit-to', 'edit-type', 'edit-x-comment-to', 'edit', 'end-cond',
+ \ 'enter-command', 'enter-mask', 'entire-thread', 'eol', 'exit', 'extract-keys',
+ \ 'fetch-mail', 'filter-entry', 'first-entry', 'flag-message', 'followup-message',
+ \ 'forget-passphrase', 'forward-char', 'forward-message', 'forward-to-group',
+ \ 'forward-word', 'get-attachment', 'get-children', 'get-message', 'get-parent',
+ \ 'goto-folder', 'goto-parent', 'group-alternatives', 'group-chat-reply',
+ \ 'group-multilingual', 'group-reply', 'half-down', 'half-up', 'help', 'history-down',
+ \ 'history-search', 'history-up', 'imap-fetch-mail', 'imap-logout-all', 'insert', 'ispell',
+ \ 'jump', 'kill-eol', 'kill-eow', 'kill-line', 'kill-word', 'last-entry',
+ \ 'limit-current-thread', 'limit', 'link-threads', 'list-reply', 'mail-key',
+ \ 'mailbox-cycle', 'mailbox-list', 'mail', 'mark-as-new', 'mark-message', 'middle-page',
+ \ 'mix', 'modify-labels-then-hide', 'modify-labels', 'modify-tags-then-hide',
+ \ 'modify-tags', 'move-down', 'move-up', 'new-mime', 'next-entry', 'next-line',
+ \ 'next-new-then-unread', 'next-new', 'next-page', 'next-subthread', 'next-thread',
+ \ 'next-undeleted', 'next-unread-mailbox', 'next-unread', 'parent-message', 'pgp-menu',
+ \ 'pipe-entry', 'pipe-message', 'post-message', 'postpone-message', 'previous-entry',
+ \ 'previous-line', 'previous-new-then-unread', 'previous-new', 'previous-page',
+ \ 'previous-subthread', 'previous-thread', 'previous-undeleted', 'previous-unread',
+ \ 'print-entry', 'print-message', 'purge-message', 'purge-thread', 'quasi-delete',
+ \ 'query-append', 'query', 'quit', 'quote-char', 'read-subthread', 'read-thread',
+ \ 'recall-message', 'reconstruct-thread', 'redraw-screen', 'refresh', 'reload-active',
+ \ 'rename-attachment', 'rename-file', 'rename-mailbox', 'reply', 'resend-message',
+ \ 'root-message', 'save-entry', 'save-message', 'search-next', 'search-opposite',
+ \ 'search-reverse', 'search-toggle', 'search', 'select-entry', 'select-new',
+ \ 'send-message', 'set-flag', 'shell-escape', 'show-limit', 'show-log-messages',
+ \ 'show-version', 'sidebar-next-new', 'sidebar-first', 'sidebar-last', 'sidebar-next',
+ \ 'sidebar-open', 'sidebar-page-down', 'sidebar-page-up', 'sidebar-prev-new',
+ \ 'sidebar-prev', 'sidebar-toggle-virtual', 'sidebar-toggle-visible', 'skip-quoted',
+ \ 'smime-menu', 'sort-mailbox', 'sort-reverse', 'sort', 'subscribe-pattern',
+ \ 'sync-mailbox', 'tag-entry', 'tag-message', 'tag-pattern', 'tag-prefix-cond',
+ \ 'tag-prefix', 'tag-subthread', 'tag-thread', 'toggle-active', 'toggle-disposition',
+ \ 'toggle-mailboxes', 'toggle-new', 'toggle-prefer-encrypt', 'toggle-quoted',
+ \ 'toggle-read', 'toggle-recode', 'toggle-subscribed', 'toggle-unlink', 'toggle-write',
+ \ 'top-page', 'top', 'transpose-chars', 'uncatchup', 'undelete-entry', 'undelete-message',
+ \ 'undelete-pattern', 'undelete-subthread', 'undelete-thread', 'unsubscribe-pattern',
+ \ 'untag-pattern', 'upcase-word', 'update-encoding', 'verify-key',
+ \ 'vfolder-from-query-readonly', 'vfolder-from-query', 'vfolder-window-backward',
+ \ 'vfolder-window-forward', 'view-attachments', 'view-attach', 'view-file', 'view-mailcap',
+ \ 'view-name', 'view-raw-message', 'view-text', 'what-key', 'write-fcc'
+ \ ])
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
-highlight def link muttrcComment Comment
-highlight def link muttrcEscape SpecialChar
-highlight def link muttrcRXChars SpecialChar
-highlight def link muttrcString String
-highlight def link muttrcRXString String
-highlight def link muttrcRXString2 String
-highlight def link muttrcSpecial Special
-highlight def link muttrcHooks Type
-highlight def link muttrcGroupFlag Type
-highlight def link muttrcGroupDef Macro
-highlight def link muttrcAddrDef muttrcGroupFlag
-highlight def link muttrcRXDef muttrcGroupFlag
-highlight def link muttrcRXPat String
-highlight def link muttrcAliasGroupName Macro
-highlight def link muttrcAliasKey Identifier
-highlight def link muttrcUnAliasKey Identifier
-highlight def link muttrcAliasEncEmail Identifier
-highlight def link muttrcAliasParens Type
-highlight def link muttrcSetNumAssignment Number
highlight def link muttrcSetBoolAssignment Boolean
highlight def link muttrcSetQuadAssignment Boolean
-highlight def link muttrcSetStrAssignment String
-highlight def link muttrcEmail Special
-highlight def link muttrcVariableInner Special
-highlight def link muttrcEscapedVariable String
-highlight def link muttrcHeader Type
-highlight def link muttrcKeySpecial SpecialChar
-highlight def link muttrcKey Type
-highlight def link muttrcKeyName SpecialChar
+
+highlight def link muttrcComment Comment
+
+highlight def link muttrcAlternatesLine Error
+highlight def link muttrcBadAction Error
+highlight def link muttrcBindFunction Error
+highlight def link muttrcBindMenuList Error
+highlight def link muttrcColorBG Error
+highlight def link muttrcColorBGH Error
+highlight def link muttrcColorBGI Error
+highlight def link muttrcColorContext Error
+highlight def link muttrcColorFG Error
+highlight def link muttrcColorFGH Error
+highlight def link muttrcColorFGI Error
+highlight def link muttrcColorLine Error
+highlight def link muttrcFormatErrors Error
+highlight def link muttrcGroupLine Error
+highlight def link muttrcListsLine Error
+highlight def link muttrcPattern Error
+highlight def link muttrcSubscribeLine Error
+highlight def link muttrcUnColorLine Error
+highlight def link muttrcVarDeprecatedBool Error
+highlight def link muttrcVarDeprecatedQuad Error
+highlight def link muttrcVarDeprecatedStr Error
+
+highlight def link muttrcAliasEncEmail Identifier
+highlight def link muttrcAliasKey Identifier
+highlight def link muttrcColorCompose Identifier
+highlight def link muttrcColorComposeField Identifier
+highlight def link muttrcColorContextH Identifier
+highlight def link muttrcColorContextI Identifier
+highlight def link muttrcColorField Identifier
+highlight def link muttrcMenu Identifier
+highlight def link muttrcSimplePat Identifier
+highlight def link muttrcUnAliasKey Identifier
+highlight def link muttrcUnColorIndex Identifier
highlight def link muttrcVarBool Identifier
-highlight def link muttrcVarQuad Identifier
highlight def link muttrcVarNum Identifier
+highlight def link muttrcVarQuad Identifier
highlight def link muttrcVarStr Identifier
-highlight def link muttrcMenu Identifier
+
highlight def link muttrcCommand Keyword
-highlight def link muttrcMacroDescr String
+
highlight def link muttrcAction Macro
-highlight def link muttrcBadAction Error
-highlight def link muttrcBindFunction Error
-highlight def link muttrcBindMenuList Error
+highlight def link muttrcAliasGroupName Macro
highlight def link muttrcFunction Macro
-highlight def link muttrcGroupKeyword muttrcCommand
-highlight def link muttrcGroupLine Error
-highlight def link muttrcSubscribeKeyword muttrcCommand
-highlight def link muttrcSubscribeLine Error
-highlight def link muttrcListsKeyword muttrcCommand
-highlight def link muttrcListsLine Error
+highlight def link muttrcGroupDef Macro
+highlight def link muttrcSimplePatString Macro
+
+highlight def link muttrcMonoAttrib muttrcColor
+
highlight def link muttrcAlternateKeyword muttrcCommand
-highlight def link muttrcAlternatesLine Error
highlight def link muttrcAttachmentsLine muttrcCommand
-highlight def link muttrcAttachmentsFlag Type
-highlight def link muttrcAttachmentsMimeType String
-highlight def link muttrcColorLine Error
-highlight def link muttrcColorContext Error
-highlight def link muttrcColorContextI Identifier
-highlight def link muttrcColorContextH Identifier
highlight def link muttrcColorKeyword muttrcCommand
-highlight def link muttrcColorField Identifier
-highlight def link muttrcColorCompose Identifier
-highlight def link muttrcColorComposeField Identifier
-highlight def link muttrcColor Type
-highlight def link muttrcColorFG Error
-highlight def link muttrcColorFGI Error
-highlight def link muttrcColorFGH Error
-highlight def link muttrcColorBG Error
-highlight def link muttrcColorBGI Error
-highlight def link muttrcColorBGH Error
-highlight def link muttrcMonoAttrib muttrcColor
+highlight def link muttrcGroupKeyword muttrcCommand
+highlight def link muttrcListsKeyword muttrcCommand
highlight def link muttrcMono muttrcCommand
-highlight def link muttrcSimplePat Identifier
-highlight def link muttrcSimplePatString Macro
-highlight def link muttrcSimplePatMetas Special
-highlight def link muttrcPattern Error
-highlight def link muttrcUnColorLine Error
-highlight def link muttrcUnColorKeyword muttrcCommand
-highlight def link muttrcUnColorIndex Identifier
-highlight def link muttrcShellString muttrcEscape
-highlight def link muttrcRXHooks muttrcCommand
-highlight def link muttrcRXHookNot Type
highlight def link muttrcPatHooks muttrcCommand
-highlight def link muttrcPatHookNot Type
-highlight def link muttrcFormatConditionals2 Type
-highlight def link muttrcIndexFormatStr muttrcString
-highlight def link muttrcIndexFormatEscapes muttrcEscape
-highlight def link muttrcIndexFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcAliasFormatStr muttrcString
+highlight def link muttrcRXHooks muttrcCommand
+highlight def link muttrcSubscribeKeyword muttrcCommand
+highlight def link muttrcUnColorKeyword muttrcCommand
+
highlight def link muttrcAliasFormatEscapes muttrcEscape
-highlight def link muttrcAttachFormatStr muttrcString
highlight def link muttrcAttachFormatEscapes muttrcEscape
-highlight def link muttrcAttachFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcComposeFormatStr muttrcString
highlight def link muttrcComposeFormatEscapes muttrcEscape
-highlight def link muttrcFolderFormatStr muttrcString
highlight def link muttrcFolderFormatEscapes muttrcEscape
-highlight def link muttrcFolderFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcMixFormatStr muttrcString
+highlight def link muttrcGroupIndexFormatEscapes muttrcEscape
+highlight def link muttrcIndexFormatEscapes muttrcEscape
highlight def link muttrcMixFormatEscapes muttrcEscape
-highlight def link muttrcMixFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcPGPFormatStr muttrcString
-highlight def link muttrcPGPFormatEscapes muttrcEscape
-highlight def link muttrcPGPFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcPGPCmdFormatStr muttrcString
highlight def link muttrcPGPCmdFormatEscapes muttrcEscape
-highlight def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcStatusFormatStr muttrcString
+highlight def link muttrcPGPFormatEscapes muttrcEscape
+highlight def link muttrcPGPTimeEscapes muttrcEscape
+highlight def link muttrcQueryFormatEscapes muttrcEscape
+highlight def link muttrcShellString muttrcEscape
+highlight def link muttrcSidebarFormatEscapes muttrcEscape
+highlight def link muttrcSmimeFormatEscapes muttrcEscape
highlight def link muttrcStatusFormatEscapes muttrcEscape
+highlight def link muttrcTimeEscapes muttrcEscape
+
+highlight def link muttrcAliasFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcAttachFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcComposeFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcFolderFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcIndexFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcMixFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcPGPFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcSmimeFormatConditionals muttrcFormatConditionals2
highlight def link muttrcStatusFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcPGPGetKeysFormatStr muttrcString
-highlight def link muttrcPGPGetKeysFormatEscapes muttrcEscape
+
+highlight def link muttrcAddrDef muttrcGroupFlag
+highlight def link muttrcRXDef muttrcGroupFlag
+
+highlight def link muttrcAliasFormatStr muttrcString
+highlight def link muttrcAttachFormatStr muttrcString
+highlight def link muttrcComposeFormatStr muttrcString
+highlight def link muttrcFolderFormatStr muttrcString
+highlight def link muttrcGroupIndexFormatStr muttrcString
+highlight def link muttrcIndexFormatStr muttrcString
+highlight def link muttrcMixFormatStr muttrcString
+highlight def link muttrcPGPCmdFormatStr muttrcString
+highlight def link muttrcPGPFormatStr muttrcString
+highlight def link muttrcQueryFormatStr muttrcString
+highlight def link muttrcSidebarFormatStr muttrcString
highlight def link muttrcSmimeFormatStr muttrcString
-highlight def link muttrcSmimeFormatEscapes muttrcEscape
-highlight def link muttrcSmimeFormatConditionals muttrcFormatConditionals2
-highlight def link muttrcTimeEscapes muttrcEscape
-highlight def link muttrcPGPTimeEscapes muttrcEscape
-highlight def link muttrcStrftimeEscapes Type
+highlight def link muttrcStatusFormatStr muttrcString
highlight def link muttrcStrftimeFormatStr muttrcString
-highlight def link muttrcFormatErrors Error
+highlight def link muttrcSetNumAssignment Number
+
+highlight def link muttrcEmail Special
+highlight def link muttrcSimplePatMetas Special
+highlight def link muttrcSpecial Special
+highlight def link muttrcVariableInner Special
+
+highlight def link muttrcAliasEncEmailNL SpecialChar
+highlight def link muttrcAliasENNL SpecialChar
+highlight def link muttrcAliasGroupDefNL SpecialChar
+highlight def link muttrcAliasNameNL SpecialChar
+highlight def link muttrcAliasNL SpecialChar
highlight def link muttrcBindFunctionNL SpecialChar
highlight def link muttrcBindKeyNL SpecialChar
highlight def link muttrcBindMenuListNL SpecialChar
-highlight def link muttrcMacroDescrNL SpecialChar
-highlight def link muttrcMacroBodyNL SpecialChar
-highlight def link muttrcMacroKeyNL SpecialChar
-highlight def link muttrcMacroMenuListNL SpecialChar
+highlight def link muttrcColorBGNL SpecialChar
+highlight def link muttrcColorFGNL SpecialChar
highlight def link muttrcColorMatchCountNL SpecialChar
highlight def link muttrcColorNL SpecialChar
highlight def link muttrcColorRXNL SpecialChar
-highlight def link muttrcColorBGNL SpecialChar
-highlight def link muttrcColorFGNL SpecialChar
-highlight def link muttrcAliasNameNL SpecialChar
-highlight def link muttrcAliasENNL SpecialChar
-highlight def link muttrcAliasNL SpecialChar
-highlight def link muttrcUnAliasNL SpecialChar
-highlight def link muttrcAliasGroupDefNL SpecialChar
-highlight def link muttrcAliasEncEmailNL SpecialChar
+highlight def link muttrcEscape SpecialChar
+highlight def link muttrcKeyName SpecialChar
+highlight def link muttrcKeySpecial SpecialChar
+highlight def link muttrcMacroBodyNL SpecialChar
+highlight def link muttrcMacroDescrNL SpecialChar
+highlight def link muttrcMacroKeyNL SpecialChar
+highlight def link muttrcMacroMenuListNL SpecialChar
highlight def link muttrcPatternNL SpecialChar
-highlight def link muttrcUnColorPatNL SpecialChar
+highlight def link muttrcRXChars SpecialChar
+highlight def link muttrcStringNL SpecialChar
+highlight def link muttrcUnAliasNL SpecialChar
highlight def link muttrcUnColorAPNL SpecialChar
highlight def link muttrcUnColorIndexNL SpecialChar
-highlight def link muttrcStringNL SpecialChar
+highlight def link muttrcUnColorPatNL SpecialChar
-highlight def link muttrcVarDeprecatedBool Error
-highlight def link muttrcVarDeprecatedQuad Error
-highlight def link muttrcVarDeprecatedStr Error
+highlight def link muttrcAttachmentsMimeType String
+highlight def link muttrcEscapedVariable String
+highlight def link muttrcMacroDescr String
+highlight def link muttrcRXPat String
+highlight def link muttrcRXString String
+highlight def link muttrcRXString2 String
+highlight def link muttrcSetStrAssignment String
+highlight def link muttrcString String
+highlight def link muttrcAliasParens Type
+highlight def link muttrcAttachmentsFlag Type
+highlight def link muttrcColor Type
+highlight def link muttrcFormatConditionals2 Type
+highlight def link muttrcGroupFlag Type
+highlight def link muttrcHeader Type
+highlight def link muttrcHooks Type
+highlight def link muttrcKey Type
+highlight def link muttrcPatHookNot Type
+highlight def link muttrcRXHookNot Type
+highlight def link muttrcStrftimeEscapes Type
let b:current_syntax = "neomuttrc"
diff --git a/runtime/syntax/netrw.vim b/runtime/syntax/netrw.vim
index 83ae17445d..1f02bbef78 100644
--- a/runtime/syntax/netrw.vim
+++ b/runtime/syntax/netrw.vim
@@ -105,7 +105,7 @@ if !exists("did_drchip_netrwlist_syntax")
" special syntax highlighting (see :he g:netrw_special_syntax)
hi default link netrwCoreDump WarningMsg
- hi default link netrwData DiffChange
+ hi default link netrwData Folded
hi default link netrwHdr netrwPlain
hi default link netrwLex netrwPlain
hi default link netrwLib DiffChange
diff --git a/runtime/syntax/nroff.vim b/runtime/syntax/nroff.vim
index 3a8cf95856..5667042515 100644
--- a/runtime/syntax/nroff.vim
+++ b/runtime/syntax/nroff.vim
@@ -1,16 +1,9 @@
" VIM syntax file
" Language: nroff/groff
-" Maintainer: Pedro Alejandro Lpez-Valencia <palopezv@gmail.com>
-" URL: http://vorbote.wordpress.com/
-" Last Change: 2012 Feb 2
-"
-" {{{1 Acknowledgements
-"
-" ACKNOWLEDGEMENTS:
-"
-" My thanks to Jrme Plt <Jerome.Plut@ens.fr>, who was the
-" creator and maintainer of this syntax file for several years.
-" May I be as good at it as he has been.
+" Maintainer: John Marshall <jmarshall@hey.com>
+" Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
+" Previous Maintainer: Jérôme Plût <Jerome.Plut@ens.fr>
+" Last Change: 2021 Mar 28
"
" {{{1 Todo
"
@@ -31,6 +24,13 @@ endif
let s:cpo_save = &cpo
set cpo&vim
+if exists("nroff_is_groff")
+ let b:nroff_is_groff = 1
+endif
+
+syn spell toplevel
+syn case match
+
"
" {{{1 plugin settings...
"
@@ -48,7 +48,7 @@ endif
"
setlocal paragraphs+=XP
"
-" {{{2 Activate navigation to preporcessor sections.
+" {{{2 Activate navigation to preprocessor sections.
"
if exists("b:preprocs_as_sections")
setlocal sections=EQTSPS[\ G1GS
@@ -169,9 +169,9 @@ endif
" <jp />
syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/
-syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/
+syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ contains=@Spell
syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
-syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/
+syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ contains=@Spell
syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/
syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
@@ -179,11 +179,11 @@ syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
" ------------------------------------------------------------
syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./
-syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo
-syn match nroffComment /^'''.*/ contains=nroffTodo
+syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo,@Spell
+syn match nroffComment /^'''.*/ contains=nroffTodo,@Spell
if exists("b:nroff_is_groff")
- syn match nroffComment "\\#.*$" contains=nroffTodo
+ syn match nroffComment "\\#.*$" contains=nroffTodo,@Spell
endif
syn keyword nroffTodo TODO XXX FIXME contained
@@ -198,7 +198,7 @@ syn keyword nroffTodo TODO XXX FIXME contained
"
hi def link nroffEscChar nroffSpecialChar
-hi def link nroffEscCharAr nroffSpecialChar
+hi def link nroffEscCharArg nroffSpecialChar
hi def link nroffSpecialChar SpecialChar
hi def link nroffSpace Delimiter
@@ -211,7 +211,7 @@ hi def link nroffEscPar nroffEscape
hi def link nroffEscRegPar nroffEscape
hi def link nroffEscArg nroffEscape
hi def link nroffSize nroffEscape
-hi def link nroffEscape Preproc
+hi def link nroffEscape PreProc
hi def link nroffIgnore Comment
hi def link nroffComment Comment
diff --git a/runtime/syntax/objc.vim b/runtime/syntax/objc.vim
index 9d7b20ecd0..b29313a3cf 100644
--- a/runtime/syntax/objc.vim
+++ b/runtime/syntax/objc.vim
@@ -1,7 +1,8 @@
" Vim syntax file
" Language: Objective-C
" Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@gmail.com>
-" Last Change: 2015 Dec 14
+" Last Change: 2020 Jun 07
+" Last Change By Maintainer: 2015 Dec 14
""" Preparation for loading ObjC stuff
if exists("b:current_syntax")
@@ -24,7 +25,7 @@ syn keyword objcUsefulTerm nil Nil NO YES
" Preprocessor Directives
syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
-syn match objcImported display contained "\(<\h[-a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
+syn match objcImported display contained "\(<\h[-+a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported
" ObjC Compiler Directives
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
index 42913f228e..af3efd3dab 100644
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -4,7 +4,7 @@
" Maintainers: Markus Mottl <markus.mottl@gmail.com>
" Karl-Heinz Sylla <Karl-Heinz.Sylla@gmd.de>
" Issac Trotts <ijtrotts@ucdavis.edu>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2018 Nov 08 - Improved highlighting of operators (Maëlan)
" 2018 Apr 22 - Improved support for PPX (Andrey Popp)
@@ -18,14 +18,20 @@
" can be distinguished from begin/end, which is used for indentation,
" and folding. (David Baelde)
-" quit when a syntax file was already loaded
+" Quit when a syntax file was already loaded
if exists("b:current_syntax") && b:current_syntax == "ocaml"
finish
endif
+let s:keepcpo = &cpo
+set cpo&vim
+
" ' can be used in OCaml identifiers
setlocal iskeyword+='
+" ` is part of the name of polymorphic variants
+setlocal iskeyword+=`
+
" OCaml is case sensitive.
syn case match
@@ -123,7 +129,7 @@ syn region ocamlSig matchgroup=ocamlSigEncl start="\<sig\>" matchgroup=ocamlSi
syn region ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
" "open"
-syn region ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment
+syn match ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
" "include"
syn match ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
@@ -225,7 +231,18 @@ syn match ocamlStar "*"
syn match ocamlAngle "<"
syn match ocamlAngle ">"
" Custom indexing operators:
-syn match ocamlIndexingOp "\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\(()\|\[]\|{}\)\(<-\)\?"
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
+ \ end=")\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*\["
+ \ end="]\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*{"
+ \ end="}\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlBraceErr
" Extension operators (has to be declared before regular infix operators):
syn match ocamlExtensionOp "#[#~?!.:|&$%<=>@^*/+-]\+"
" Infix and prefix operators:
@@ -283,7 +300,6 @@ syn sync match ocamlSigSync grouphere ocamlSig "\<sig\>"
syn sync match ocamlSigSync groupthere ocamlSig "\<end\>"
" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
hi def link ocamlBraceErr Error
hi def link ocamlBrackErr Error
@@ -308,14 +324,17 @@ 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
hi def link ocamlModTypeRestr Include
hi def link ocamlWith Include
hi def link ocamlMTDef Include
-hi def link ocamlSigEncl ocamlModule
-hi def link ocamlStructEncl ocamlModule
+hi def link ocamlSigEncl ocamlModule
+hi def link ocamlStructEncl ocamlModule
hi def link ocamlScript Include
@@ -326,24 +345,25 @@ hi def link ocamlModPreRHS Keyword
hi def link ocamlMPRestr2 Keyword
hi def link ocamlKeyword Keyword
hi def link ocamlMethod Include
+hi def link ocamlArrow Keyword
hi def link ocamlKeyChar Keyword
hi def link ocamlAnyVar Keyword
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 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
-hi def link ocamlInfixOp ocamlOperator
-hi def link ocamlExtensionOp ocamlOperator
-hi def link ocamlIndexingOp ocamlOperator
+hi def link ocamlPrefixOp ocamlOperator
+hi def link ocamlInfixOp ocamlOperator
+hi def link ocamlExtensionOp ocamlOperator
+hi def link ocamlIndexingOp ocamlOperator
if exists("ocaml_highlight_operators")
hi def link ocamlInfixOpKeyword ocamlOperator
- hi def link ocamlOperator Operator
+ hi def link ocamlOperator Operator
else
hi def link ocamlInfixOpKeyword Keyword
endif
@@ -353,7 +373,7 @@ hi def link ocamlCharacter Character
hi def link ocamlNumber Number
hi def link ocamlFloat Float
hi def link ocamlString String
-hi def link ocamlQuotedStringDelim Identifier
+hi def link ocamlQuotedStringDelim Identifier
hi def link ocamlLabel Identifier
@@ -363,8 +383,11 @@ hi def link ocamlTodo Todo
hi def link ocamlEncl Keyword
-hi def link ocamlPpxEncl ocamlEncl
+hi def link ocamlPpxEncl ocamlEncl
let b:current_syntax = "ocaml"
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
" vim: ts=8
diff --git a/runtime/syntax/opam.vim b/runtime/syntax/opam.vim
new file mode 100644
index 0000000000..9ac1d41ce7
--- /dev/null
+++ b/runtime/syntax/opam.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: OPAM - OCaml package manager
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2020 Dec 31 - Added header (Markus Mottl)
+
+if exists("b:current_syntax")
+ finish
+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 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
+
+hi link opamKeyword1 Keyword
+hi link opamKeyword2 Keyword
+
+hi link opamString String
+hi link opamExp Function
+hi link opamSeq Statement
+hi link opamOperator Operator
+hi link opamComment Comment
+hi link opamInterpolate Identifier
+
+let b:current_syntax = "opam"
+
+" vim: ts=2 sw=2
diff --git a/runtime/syntax/pamconf.vim b/runtime/syntax/pamconf.vim
index 10d667bdf5..29132848a9 100644
--- a/runtime/syntax/pamconf.vim
+++ b/runtime/syntax/pamconf.vim
@@ -1,7 +1,8 @@
" Vim syntax file
" Language: pam(8) configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2011-08-03
+" Latest Revision: 2020/08/04
+" Changes By: Haochen Tong
if exists("b:current_syntax")
@@ -11,23 +12,32 @@ endif
let s:cpo_save = &cpo
set cpo&vim
-syn match pamconfService '^[[:graph:]]\+'
- \ nextgroup=pamconfType,
- \ pamconfServiceLineCont skipwhite
+let s:has_service_field = exists("b:pamconf_has_service_field")
+ \ ? b:pamconf_has_service_field
+ \ : expand('%:t') == 'pam.conf' ? 1 : 0
+
+syn match pamconfType '-\?[[:alpha:]]\+'
+ \ contains=pamconfTypeKeyword
+ \ nextgroup=pamconfControl,
+ \ pamconfTypeLineCont skipwhite
+
+syn keyword pamconfTypeKeyword contained account auth password session
+
+if s:has_service_field
+ syn match pamconfService '^[[:graph:]]\+'
+ \ nextgroup=pamconfType,
+ \ pamconfServiceLineCont skipwhite
+
+ syn match pamconfServiceLineCont contained '\\$'
+ \ nextgroup=pamconfType,
+ \ pamconfServiceLineCont skipwhite skipnl
+endif
syn keyword pamconfTodo contained TODO FIXME XXX NOTE
syn region pamconfComment display oneline start='#' end='$'
\ contains=pamconfTodo,@Spell
-syn match pamconfServiceLineCont contained '\\$'
- \ nextgroup=pamconfType,
- \ pamconfServiceLineCont skipwhite skipnl
-
-syn keyword pamconfType account auth password session
- \ nextgroup=pamconfControl,
- \ pamconfTypeLineCont skipwhite
-
syn match pamconfTypeLineCont contained '\\$'
\ nextgroup=pamconfControl,
\ pamconfTypeLineCont skipwhite skipnl
@@ -98,7 +108,8 @@ hi def link pamconfTodo Todo
hi def link pamconfComment Comment
hi def link pamconfService Statement
hi def link pamconfServiceLineCont Special
-hi def link pamconfType Type
+hi def link pamconfType Special
+hi def link pamconfTypeKeyword Type
hi def link pamconfTypeLineCont pamconfServiceLineCont
hi def link pamconfControl Macro
hi def link pamconfControlBegin Delimiter
diff --git a/runtime/syntax/pamenv.vim b/runtime/syntax/pamenv.vim
new file mode 100644
index 0000000000..90359daa61
--- /dev/null
+++ b/runtime/syntax/pamenv.vim
@@ -0,0 +1,28 @@
+" Vim syntax file
+" Language: pam_env.conf(5) configuration file
+" Latest Revision: 2020-05-10
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword pamenvTodo contained TODO FIXME XXX NOTE
+syn region pamenvComment start='^#' end='$' display oneline contains=pamenvTodo,@Spells
+
+syn match pamenvVars '^[A-Z_][A-Z_0-9]*' nextgroup=pamenvKeywords skipwhite
+
+syn keyword pamenvKeywords contained DEFAULT OVERRIDE nextgroup=pamenvVarEq
+
+syn match pamenvVarEq contained '=' nextgroup=pamenvValue,pamenvValueWithQuote
+
+syn match pamenvValue contained '[^ \t]*' skipwhite nextgroup=pamenvKeywords
+syn region pamenvValueWithQuote contained start='"' end='"' skipwhite nextgroup=pamenvKeywords
+
+hi def link pamenvTodo Todo
+hi def link pamenvComment Comment
+hi def link pamenvKeywords Keyword
+hi def link pamenvVars Identifier
+hi def link pamenvValue String
+hi def link pamenvValueWithQuote String
+
+let b:current_syntax = "pamenv"
diff --git a/runtime/syntax/pascal.vim b/runtime/syntax/pascal.vim
index 2a58ee43f6..3ab5c2e661 100644
--- a/runtime/syntax/pascal.vim
+++ b/runtime/syntax/pascal.vim
@@ -1,16 +1,16 @@
" Vim syntax file
-" Language: Pascal
-" Version: 2.8
-" Last Change: 2004/10/17 17:47:30
-" Maintainer: Xavier Crgut <xavier.cregut@enseeiht.fr>
-" Previous Maintainer: Mario Eusebio <bio@dq.fct.unl.pt>
+" Language: Pascal
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainers: Xavier Crégut <xavier.cregut@enseeiht.fr>
+" Mario Eusebio <bio@dq.fct.unl.pt>
+" Last Change: 2021 Apr 23
" Contributors: Tim Chase <tchase@csc.com>,
-" Stas Grabois <stsi@vtrails.com>,
-" Mazen NEIFER <mazen.neifer.2001@supaero.fr>,
-" Klaus Hast <Klaus.Hast@arcor.net>,
-" Austin Ziegler <austin@halostatue.ca>,
-" Markus Koenig <markus@stber-koenig.de>
+" Stas Grabois <stsi@vtrails.com>,
+" Mazen NEIFER <mazen.neifer.2001@supaero.fr>,
+" Klaus Hast <Klaus.Hast@arcor.net>,
+" Austin Ziegler <austin@halostatue.ca>,
+" Markus Koenig <markus@stber-koenig.de>
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -25,10 +25,10 @@ syn keyword pascalBoolean true false
syn keyword pascalConditional if else then
syn keyword pascalConstant nil maxint
syn keyword pascalLabel case goto label
-syn keyword pascalOperator and div downto in mod not of or packed with
+syn keyword pascalOperator and div downto in mod not of or packed
syn keyword pascalRepeat do for do repeat while to until
syn keyword pascalStatement procedure function
-syn keyword pascalStatement program begin end const var type
+syn keyword pascalStatement program begin end const var type with
syn keyword pascalStruct record
syn keyword pascalType array boolean char integer file pointer real set
syn keyword pascalType string text variant
@@ -40,12 +40,12 @@ syn keyword pascalTodo contained TODO FIXME XXX DEBUG NOTE
" 20010723az: When wanted, highlight the trailing whitespace -- this is
" based on c_space_errors; to enable, use "pascal_space_errors".
if exists("pascal_space_errors")
- if !exists("pascal_no_trail_space_error")
- syn match pascalSpaceError "\s\+$"
- endif
- if !exists("pascal_no_tab_space_error")
- syn match pascalSpaceError " \+\t"me=e-1
- endif
+ if !exists("pascal_no_trail_space_error")
+ syn match pascalSpaceError "\s\+$"
+ endif
+ if !exists("pascal_no_tab_space_error")
+ syn match pascalSpaceError " \+\t"me=e-1
+ endif
endif
@@ -98,9 +98,24 @@ if exists("pascal_symbol_operator")
endif
syn match pascalNumber "-\=\<\d\+\>"
+if !exists("pascal_traditional")
+ syn match pascalHexNumber "\$\x\+\>"
+endif
+if exists("pascal_fpc")
+ syn match pascalOctNumber "&\o\+\>"
+ syn match pascalBinNumber "%[01]\+\>"
+endif
+if exists("pascal_gpc")
+ syn match pascalExtendedNumber "\%([2-9]\|[12]\d\|3[0-6]\)#[[:alnum:]]\+\>"
+endif
+
syn match pascalFloat "-\=\<\d\+\.\d\+\>"
syn match pascalFloat "-\=\<\d\+\.\d\+[eE]-\=\d\+\>"
-syn match pascalHexNumber "\$[0-9a-fA-F]\+\>"
+
+if !exists("pascal_traditional")
+ " allow leading zeros
+ syn match pascalControlCharacter "#\%([01]\=\d\=\d\|2[0-4]\d\|25[0-5]\)\>"
+endif
if exists("pascal_no_tabs")
syn match pascalShowTab "\t"
@@ -142,7 +157,7 @@ if !exists("pascal_traditional")
syn keyword pascalStatement interface unit uses
syn keyword pascalModifier absolute assembler external far forward inline
syn keyword pascalModifier interrupt near virtual
- syn keyword pascalAcces private public
+ syn keyword pascalAccess private public strict
syn keyword pascalStruct object
syn keyword pascalOperator shl shr xor
@@ -157,6 +172,7 @@ if !exists("pascal_traditional")
syn keyword pascalType Single Double Extended Comp
syn keyword pascalType PChar
+ syn keyword pascalPredefined self
if !exists ("pascal_fpc")
syn keyword pascalPredefined Result
@@ -166,11 +182,11 @@ if !exists("pascal_traditional")
syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
syn keyword pascalStatement fail otherwise operator
syn keyword pascalDirective popstack
- syn keyword pascalPredefined self
syn keyword pascalType ShortString AnsiString WideString
endif
if exists("pascal_gpc")
+ syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
syn keyword pascalType SmallInt
syn keyword pascalType AnsiChar
syn keyword pascalType PAnsiChar
@@ -178,6 +194,8 @@ if !exists("pascal_traditional")
if exists("pascal_delphi")
syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
+ syn region pascalDocumentation start="///" end="$" contains=pascalTodo,pascalSpaceError
+ syn region pascalDocumentation start="{!" end="}" contains=pascalTodo,pascalSpaceError
syn keyword pascalType SmallInt Int64
syn keyword pascalType Real48 Currency
syn keyword pascalType AnsiChar WideChar
@@ -192,11 +210,11 @@ if !exists("pascal_traditional")
syn keyword pascalStatement initialization finalization uses exports
syn keyword pascalStatement property out resourcestring threadvar
syn keyword pascalModifier contains
- syn keyword pascalModifier overridden reintroduce abstract
+ syn keyword pascalModifier overridden reintroduce abstract sealed
syn keyword pascalModifier override export dynamic name message
syn keyword pascalModifier dispid index stored default nodefault readonly
syn keyword pascalModifier writeonly implements overload requires resident
- syn keyword pascalAcces protected published automated
+ syn keyword pascalAccess protected published automated
syn keyword pascalDirective register pascal cvar cdecl stdcall safecall
syn keyword pascalOperator as is
endif
@@ -319,37 +337,43 @@ endif
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
-hi def link pascalAcces pascalStatement
+hi def link pascalAccess pascalStatement
hi def link pascalBoolean Boolean
hi def link pascalComment Comment
-hi def link pascalConditional Conditional
+hi def link pascalDocumentation Comment
+hi def link pascalConditional Conditional
hi def link pascalConstant Constant
-hi def link pascalDelimiter Identifier
-hi def link pascalDirective pascalStatement
-hi def link pascalException Exception
-hi def link pascalFloat Float
+hi def link pascalControlCharacter Character
+hi def link pascalDelimiter Identifier
+hi def link pascalDirective pascalStatement
+hi def link pascalException Exception
+hi def link pascalFloat Float
hi def link pascalFunction Function
-hi def link pascalLabel Label
+hi def link pascalLabel Label
hi def link pascalMatrixDelimiter Identifier
hi def link pascalModifier Type
hi def link pascalNumber Number
+hi def link pascalExtendedNumber Number
+hi def link pascalBinNumber pascalNumber
+hi def link pascalHexNumber pascalNumber
+hi def link pascalOctNumber pascalNumber
hi def link pascalOperator Operator
-hi def link pascalPredefined pascalStatement
+hi def link pascalPredefined pascalStatement
hi def link pascalPreProc PreProc
hi def link pascalRepeat Repeat
-hi def link pascalSpaceError Error
-hi def link pascalStatement Statement
+hi def link pascalSpaceError Error
+hi def link pascalStatement Statement
hi def link pascalString String
-hi def link pascalStringEscape Special
+hi def link pascalStringEscape Special
hi def link pascalStringEscapeGPC Special
-hi def link pascalStringError Error
+hi def link pascalStringError Error
hi def link pascalStruct pascalStatement
hi def link pascalSymbolOperator pascalOperator
-hi def link pascalTodo Todo
-hi def link pascalType Type
-hi def link pascalUnclassified pascalStatement
+hi def link pascalTodo Todo
+hi def link pascalType Type
+hi def link pascalUnclassified pascalStatement
" hi def link pascalAsm Assembler
-hi def link pascalError Error
+hi def link pascalError Error
hi def link pascalAsmKey pascalStatement
hi def link pascalShowTab Error
@@ -357,4 +381,4 @@ hi def link pascalShowTab Error
let b:current_syntax = "pascal"
-" vim: ts=8 sw=2
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/pbtxt.vim b/runtime/syntax/pbtxt.vim
new file mode 100644
index 0000000000..92a75560ef
--- /dev/null
+++ b/runtime/syntax/pbtxt.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: Protobuf Text Format
+" Maintainer: Lakshay Garg <lakshayg@outlook.in>
+" Last Change: 2020 Nov 17
+" Homepage: https://github.com/lakshayg/vim-pbtxt
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn keyword pbtxtTodo TODO FIXME contained
+syn keyword pbtxtBool true false contained
+
+syn match pbtxtInt display "\<\(0\|[1-9]\d*\)\>"
+syn match pbtxtHex display "\<0[xX]\x\+\>"
+syn match pbtxtFloat display "\(0\|[1-9]\d*\)\=\.\d*"
+syn match pbtxtMessage display "^\s*\w\+\s*{"me=e-1
+syn match pbtxtField display "^\s*\w\+:"me=e-1
+syn match pbtxtEnum display ":\s*\a\w\+"ms=s+1 contains=pbtxtBool
+syn region pbtxtString start=+"+ skip=+\\"+ end=+"+ contains=@Spell
+syn region pbtxtComment start="#" end="$" keepend contains=pbtxtTodo,@Spell
+
+hi def link pbtxtTodo Todo
+hi def link pbtxtBool Boolean
+hi def link pbtxtInt Number
+hi def link pbtxtHex Number
+hi def link pbtxtFloat Float
+hi def link pbtxtMessage Structure
+hi def link pbtxtField Identifier
+hi def link pbtxtEnum Define
+hi def link pbtxtString String
+hi def link pbtxtComment Comment
+
+let b:current_syntax = "pbtxt"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim
index 6ac28f6915..f4f9520de5 100644
--- a/runtime/syntax/perl.vim
+++ b/runtime/syntax/perl.vim
@@ -1,9 +1,9 @@
" Vim syntax file
" Language: Perl 5
" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl/tree/master
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2017-09-12
+" Homepage: https://github.com/vim-perl/vim-perl/tree/master
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" Last Change: 2020 Apr 15
" Contributors: Andy Lester <andy@petdance.com>
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" Lukas Mai <l.mai.web.de>
diff --git a/runtime/syntax/perl6.vim b/runtime/syntax/perl6.vim
deleted file mode 100644
index 3bcd9ff0e9..0000000000
--- a/runtime/syntax/perl6.vim
+++ /dev/null
@@ -1,2242 +0,0 @@
-" Vim syntax file
-" Language: Perl 6
-" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl/tree/master
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2013-07-21
-
-" Contributors: Luke Palmer <fibonaci@babylonia.flatirons.org>
-" Moritz Lenz <moritz@faui2k3.org>
-" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
-"
-" This is a big undertaking. Perl 6 is the sort of language that only Perl
-" can parse. But I'll do my best to get vim to.
-"
-" You can associate the extension ".pl" with the filetype "perl6" by setting
-" autocmd BufNewFile,BufRead *.pl setf perl6
-" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to
-" put a modeline near the beginning or end of your Perl 6 files instead:
-" # vim: filetype=perl6
-
-" TODO:
-" * Deal with s:Perl5//
-" * m:s// is a match, not a substitution
-" * Make these highlight as strings, not operators:
-" <==> <=:=> <===> <=~> <« »> «>» «<»
-" * Allow more keywords to match as function calls(leave() is export(), etc)
-" * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup)
-" * Fix s''' substitutions being matched as package names
-" * Match s/// and m/// better, so things like "$s/" won't match
-" * Add more support for folding (:help syn-fold)
-" * Add more syntax syncing hooks (:help syn-sync)
-" * Q//:
-" :to, :heredoc
-" interpolate \q:s{$scalar} (though the spec isn't very clear on it)
-"
-" Impossible TODO?:
-" * Unspace
-" * Unicode bracketing characters for quoting (there are so many)
-" * Various tricks depending on context. I.e. we can't know when Perl
-" expects «*» to be a string or a hyperoperator. The latter is presumably
-" more common, so that's what we assume.
-" * Selective highlighting of Pod formatting codes with the :allow option
-" * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//.
-" Currently only the first adverb is considered significant. Anything
-" more would require an exponential amount of regexes, making this
-" already slow syntax file even slower.
-"
-" If you want to have Pir code inside Q:PIR// strings highlighted, do:
-" let perl6_embedded_pir=1
-"
-" The above requires pir.vim, which you can find in Parrot's repository:
-" https://svn.parrot.org/parrot/trunk/editor/
-"
-" Some less than crucial things have been made optional to speed things up.
-" Look at the comments near the if/else branches in this file to see exactly
-" which features are affected. "perl6_extended_all" enables everything.
-"
-" The defaults are:
-"
-" unlet perl6_extended_comments
-" unlet perl6_extended_q
-" unlet perl6_extended_all
-
-" quit when a syntax file was already loaded
-if exists("b:current_syntax")
- finish
-endif
-let s:keepcpo= &cpo
-set cpo&vim
-
-" identifiers
-syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*"
-
-" This is used in the for loops below
-" Don't use the "syn keyword" construct because that always has higher
-" priority than matches/regions, so the words can't be autoquoted with
-" the "=>" and "p5=>" operators. All the lookaround stuff is to make sure
-" we don't match them as part of some other identifier.
-let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@<!\\%("
-let s:after_keyword = "\\)\\%(\\k\\|[-']\\K\\@=\\)\\@!\""
-
-" Billions of keywords
-let s:keywords = {
- \ "p6Attention": [
- \ "ACHTUNG ATTN ATTENTION FIXME NB TODO TBD WTF XXX NOTE",
- \ ],
- \ "p6DeclareRoutine": [
- \ "macro sub submethod method multi proto only rule token regex category",
- \ ],
- \ "p6Module": [
- \ "module class role package enum grammar slang subset",
- \ ],
- \ "p6Variable": [
- \ "self",
- \ ],
- \ "p6Include": [
- \ "use require",
- \ ],
- \ "p6Conditional": [
- \ "if else elsif unless",
- \ ],
- \ "p6VarStorage": [
- \ "let my our state temp has constant",
- \ ],
- \ "p6Repeat": [
- \ "for loop repeat while until gather given",
- \ ],
- \ "p6FlowControl": [
- \ "take do when next last redo return contend maybe defer",
- \ "default exit make continue break goto leave async lift",
- \ ],
- \ "p6TypeConstraint": [
- \ "is as but trusts of returns handles where augment supersede",
- \ ],
- \ "p6ClosureTrait": [
- \ "BEGIN CHECK INIT START FIRST ENTER LEAVE KEEP",
- \ "UNDO NEXT LAST PRE POST END CATCH CONTROL TEMP",
- \ ],
- \ "p6Exception": [
- \ "die fail try warn",
- \ ],
- \ "p6Property": [
- \ "prec irs ofs ors export deep binary unary reparsed rw parsed cached",
- \ "readonly defequiv will ref copy inline tighter looser equiv assoc",
- \ "required",
- \ ],
- \ "p6Number": [
- \ "NaN Inf",
- \ ],
- \ "p6Pragma": [
- \ "oo fatal",
- \ ],
- \ "p6Type": [
- \ "Object Any Junction Whatever Capture Match",
- \ "Signature Proxy Matcher Package Module Class",
- \ "Grammar Scalar Array Hash KeyHash KeySet KeyBag",
- \ "Pair List Seq Range Set Bag Mapping Void Undef",
- \ "Failure Exception Code Block Routine Sub Macro",
- \ "Method Submethod Regex Str Blob Char Byte",
- \ "Codepoint Grapheme StrPos StrLen Version Num",
- \ "Complex num complex Bit bit bool True False",
- \ "Increasing Decreasing Ordered Callable AnyChar",
- \ "Positional Associative Ordering KeyExtractor",
- \ "Comparator OrderingPair IO KitchenSink Role",
- \ "Int int int1 int2 int4 int8 int16 int32 int64",
- \ "Rat rat rat1 rat2 rat4 rat8 rat16 rat32 rat64",
- \ "Buf buf buf1 buf2 buf4 buf8 buf16 buf32 buf64",
- \ "UInt uint uint1 uint2 uint4 uint8 uint16 uint32",
- \ "uint64 Abstraction utf8 utf16 utf32",
- \ ],
- \ "p6Operator": [
- \ "div x xx mod also leg cmp before after eq ne le lt",
- \ "gt ge eqv ff fff and andthen Z X or xor",
- \ "orelse extra m mm rx s tr",
- \ ],
-\ }
-
-for [group, words] in items(s:keywords)
- let s:words_space = join(words, " ")
- let s:temp = split(s:words_space)
- let s:words = join(s:temp, "\\|")
- exec "syn match ". group ." ". s:before_keyword . s:words . s:after_keyword
-endfor
-unlet s:keywords s:words_space s:temp s:words
-
-" More operators
-" Don't put a "\+" at the end of the character class. That makes it so
-" greedy that the "%" " in "+%foo" won't be allowed to match as a sigil,
-" among other things
-syn match p6Operator display "[-+/*~?|=^!%&,<>.;\\]"
-syn match p6Operator display "\%(:\@<!::\@!\|::=\|\.::\)"
-" these require whitespace on the left side
-syn match p6Operator display "\%(\s\|^\)\@<=\%(xx=\|p5=>\)"
-" "i" requires a digit to the left, and no keyword char to the right
-syn match p6Operator display "\d\@<=i\k\@!"
-" index overloading
-syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)"
-
-" all infix operators except nonassocative ones
-let s:infix_a = [
- \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x",
- \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt",
- \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^",
- \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax",
- \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=",
- \ "+ - \\*\\* \\* // / \\~ || |",
-\ ]
-" nonassociative infix operators
-let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^"
-
-let s:infix_a_long = join(s:infix_a, " ")
-let s:infix_a_words = split(s:infix_a_long)
-let s:infix_a_pattern = join(s:infix_a_words, "\\|")
-
-let s:infix_n_words = split(s:infix_n)
-let s:infix_n_pattern = join(s:infix_n_words, "\\|")
-
-let s:both = [s:infix_a_pattern, s:infix_n_pattern]
-let s:infix = join(s:both, "\\|")
-
-let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)"
-let s:infix = "!\\?\\%(" . s:infix . "\\)"
-
-unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern
-unlet s:infix_n s:infix_n_pattern s:both
-
-" [+] reduce
-exec "syn match p6ReduceOp display \"\\k\\@<!\\[[R\\\\]\\?!\\?". s:infix_assoc ."]\\%(«\\|<<\\)\\?\""
-unlet s:infix_assoc
-
-" Reverse and cross operators (Rop, Xop)
-exec "syn match p6ReverseCrossOp display \"[RX]". s:infix ."\""
-
-" q() or whatever() is always a function call
-syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*(\@="
-
-" basically all builtins that can be followed by parentheses
-let s:routines = [
- \ "eager hyper substr index rindex grep map sort join lines hints chmod",
- \ "split reduce min max reverse truncate zip cat roundrobin classify",
- \ "first sum keys values pairs defined delete exists elems end kv any",
- \ "all one wrap shape key value name pop push shift splice unshift floor",
- \ "ceiling abs exp log log10 rand sign sqrt sin cos tan round strand",
- \ "roots cis unpolar polar atan2 pick chop p5chop chomp p5chomp lc",
- \ "lcfirst uc ucfirst capitalize normalize pack unpack quotemeta comb",
- \ "samecase sameaccent chars nfd nfc nfkd nfkc printf sprintf caller",
- \ "evalfile run runinstead nothing want bless chr ord gmtime time eof",
- \ "localtime gethost getpw chroot getlogin getpeername kill fork wait",
- \ "perl graphs codes bytes clone print open read write readline say seek",
- \ "close opendir readdir slurp pos fmt vec link unlink symlink uniq pair",
- \ "asin atan sec cosec cotan asec acosec acotan sinh cosh tanh asinh",
- \ "acos acosh atanh sech cosech cotanh sech acosech acotanh asech ok",
- \ "plan_ok dies_ok lives_ok skip todo pass flunk force_todo use_ok isa_ok",
- \ "diag is_deeply isnt like skip_rest unlike cmp_ok eval_dies_ok nok_error",
- \ "eval_lives_ok approx is_approx throws_ok version_lt plan eval succ pred",
- \ "times nonce once signature new connect operator undef undefine sleep",
- \ "from to infix postfix prefix circumfix postcircumfix minmax lazy count",
- \ "unwrap getc pi e context void quasi body each contains rewinddir subst",
- \ "can isa flush arity assuming rewind callwith callsame nextwith nextsame",
- \ "attr eval_elsewhere none srand trim trim_start trim_end lastcall WHAT",
- \ "WHERE HOW WHICH VAR WHO WHENCE ACCEPTS REJECTS does not true iterator by",
- \ "re im invert flip",
-\ ]
-
-" we want to highlight builtins like split() though, so this comes afterwards
-" TODO: check if this would be faster as one big regex
-let s:words_space = join(s:routines, " ")
-let s:temp = split(s:words_space)
-let s:words = join(s:temp, "\\|")
-exec "syn match p6Routine ". s:before_keyword . s:words . s:after_keyword
-unlet s:before_keyword s:after_keyword s:words_space s:temp s:words s:routines
-
-" packages, must come after all the keywords
-syn match p6Normal display "\%(::\)\@<=\K\%(\k\|[-']\K\@=\)*"
-syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*\%(::\)\@="
-
-" some standard packages
-syn match p6Type display "\%(::\|\k\|\K\@<=[-']\)\@<!\%(Order\%(::Same\|::Increase\|::Decrease\)\?\)\%(\k\|[-']\K\@=\)\@!"
-syn match p6Type display "\%(::\|\k\|\K\@<=[-']\)\@<!\%(Bool\%(::True\|::False\)\?\)\%(\k\|[-']\K\@=\)\@!"
-
-
-syn match p6Shebang display "\%^#!.*"
-syn match p6BlockLabel display "\%(^\s*\)\@<=\h\w*\s*::\@!\_s\@="
-syn match p6Number display "\k\@<!_\@!\%(\d\|__\@!\)\+_\@<!\%([eE]_\@!+\?\%(\d\|_\)\+\)\?_\@<!"
-syn match p6Float display "\k\@<!_\@!\%(\d\|__\@!\)\+_\@<![eE]_\@!-\%(\d\|_\)\+"
-syn match p6Float display "\k\@<!_\@<!\%(\d\|__\@!\)*_\@<!\.\@<!\._\@!\.\@!\a\@!\%(\d\|_\)\+_\@<!\%([eE]_\@!\%(\d\|_\)\+\)\?"
-
-syn match p6NumberBase display "[obxd]" contained
-syn match p6Number display "\<0\%(o[0-7][0-7_]*\)\@=" nextgroup=p6NumberBase
-syn match p6Number display "\<0\%(b[01][01_]*\)\@=" nextgroup=p6NumberBase
-syn match p6Number display "\<0\%(x\x[[:xdigit:]_]*\)\@=" nextgroup=p6NumberBase
-syn match p6Number display "\<0\%(d\d[[:digit:]_]*\)\@=" nextgroup=p6NumberBase
-syn match p6Number display "\%(\<0o\)\@<=[0-7][0-7_]*"
-syn match p6Number display "\%(\<0b\)\@<=[01][01_]*"
-syn match p6Number display "\%(\<0x\)\@<=\x[[:xdigit:]_]*"
-syn match p6Number display "\%(\<0d\)\@<=\d[[:digit:]_]*"
-
-syn match p6Version display "\<v\d\@=" nextgroup=p6VersionNum
-syn match p6VersionNum display "\d\+" nextgroup=p6VersionDot contained
-syn match p6VersionDot display "\.\%(\d\|\*\)\@=" nextgroup=p6VersionNum contained
-
-" try to distinguish the "is" function from the "is" trail auxiliary
-syn match p6Routine display "\%(\%(\S\k\@<!\|^\)\s*\)\@<=is\>"
-
-" does is a type constraint sometimes
-syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@="
-
-" int is a type sometimes
-syn match p6Type display "\<int\>\%(\s*(\|\s\+\d\)\@!"
-
-" these Routine names are also Properties, if preceded by "is"
-syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)"
-
-" The sigil in ::*Package
-syn match p6PackageTwigil display "\%(::\)\@<=\*"
-
-" $<match>
-syn region p6MatchVarSigil
- \ matchgroup=p6Variable
- \ start="\$\%(<<\@!\)\@="
- \ end=">\@<="
- \ contains=p6MatchVar
-
-syn region p6MatchVar
- \ matchgroup=p6Twigil
- \ start="<"
- \ end=">"
- \ contained
-
-" Contextualizers
-syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>"
-syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@="
-
-" the "$" placeholder in "$var1, $, var2 = @list"
-syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@<!::\@!\)\)\@!"
-syn match p6Placeholder display "\$\%(\K\|\%([.^*?=!~]\|:\@<!::\@!\)\)\@!\%(,\s*\)\@="
-
-" Quoting
-
-" one cluster for every quote adverb
-syn cluster p6Interp_s
- \ add=p6InterpScalar
-syn cluster p6Interp_scalar
- \ add=p6InterpScalar
-
-syn cluster p6Interp_a
- \ add=p6InterpArray
-syn cluster p6Interp_array
- \ add=p6InterpArray
-
-syn cluster p6Interp_h
- \ add=p6InterpHash
-syn cluster p6Interp_hash
- \ add=p6InterpHash
-
-syn cluster p6Interp_f
- \ add=p6InterpFunction
-syn cluster p6Interp_f
- \ add=p6InterpFunction
-
-syn cluster p6Interp_c
- \ add=p6InterpClosure
-syn cluster p6Interp_closure
- \ add=p6InterpClosure
-
-
-if exists("perl6_extended_q") || exists("perl6_extended_all")
- syn cluster p6Interp_ww
- \ add=p6StringSQ
- \ add=p6StringDQ
- syn cluster p6Interp_quotewords
- \ add=p6StringSQ
- \ add=p6StringDQ
-endif
-
-syn cluster p6Interp_q
- \ add=p6EscQQ
- \ add=p6EscBackSlash
-syn cluster p6Interp_single
- \ add=p6EscQQ
- \ add=p6EscBackSlash
-
-syn cluster p6Interp_b
- \ add=@p6Interp_q
- \ add=p6Escape
- \ add=p6EscOpenCurly
- \ add=p6EscCodePoint
- \ add=p6EscHex
- \ add=p6EscOct
- \ add=p6EscOctOld
- \ add=p6EscNull
-syn cluster p6Interp_backslash
- \ add=@p6Interp_q
- \ add=p6Escape
- \ add=p6EscOpenCurly
- \ add=p6EscCodePoint
- \ add=p6EscHex
- \ add=p6EscOct
- \ add=p6EscOctOld
- \ add=p6EscNull
-
-syn cluster p6Interp_qq
- \ add=@p6Interp_scalar
- \ add=@p6Interp_array
- \ add=@p6Interp_hash
- \ add=@p6Interp_function
- \ add=@p6Interp_closure
- \ add=@p6Interp_backslash
-syn cluster p6Interp_double
- \ add=@p6Interp_scalar
- \ add=@p6Interp_array
- \ add=@p6Interp_hash
- \ add=@p6Interp_function
- \ add=@p6Interp_closure
- \ add=@p6Interp_backslash
-
-syn region p6InterpScalar
- \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
- \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\|\%(\d\+\|!\|/\|¢\)\)\)"
- \ end="\z1\zs"
- \ contained
- \ contains=TOP
- \ keepend
-
-syn region p6InterpScalar
- \ matchgroup=p6Context
- \ start="\$\ze()\@!"
- \ skip="([^)]*)"
- \ end=")\zs"
- \ contained
- \ contains=TOP
-
-syn region p6InterpArray
- \ start="\ze\z(@\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
- \ end="\z1\zs"
- \ contained
- \ contains=TOP
- \ keepend
-
-syn region p6InterpArray
- \ matchgroup=p6Context
- \ start="@\ze()\@!"
- \ start="@@\ze()\@!"
- \ skip="([^)]*)"
- \ end=")\zs"
- \ contained
- \ contains=TOP
-
-syn region p6InterpHash
- \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
- \ end="\z1\zs"
- \ contained
- \ contains=TOP
- \ keepend
-
-syn region p6InterpHash
- \ matchgroup=p6Context
- \ start="%\ze()\@!"
- \ skip="([^)]*)"
- \ end=")\zs"
- \ contained
- \ contains=TOP
-
-syn region p6InterpFunction
- \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
- \ end="\z1\zs"
- \ contained
- \ contains=TOP
- \ keepend
-
-syn region p6InterpFunction
- \ matchgroup=p6Context
- \ start="&\ze()\@!"
- \ skip="([^)]*)"
- \ end=")\zs"
- \ contained
- \ contains=TOP
-
-syn region p6InterpClosure
- \ start="\\\@<!{}\@!"
- \ skip="{[^}]*}"
- \ end="}"
- \ contained
- \ contains=TOP
- \ keepend
-
-" generic escape
-syn match p6Escape display "\\\S" contained
-
-" escaped closing delimiters
-syn match p6EscQuote display "\\'" contained
-syn match p6EscDoubleQuote display "\\\"" contained
-syn match p6EscCloseAngle display "\\>" contained
-syn match p6EscCloseFrench display "\\»" contained
-syn match p6EscBackTick display "\\`" contained
-syn match p6EscForwardSlash display "\\/" contained
-syn match p6EscVerticalBar display "\\|" contained
-syn match p6EscExclamation display "\\!" contained
-syn match p6EscComma display "\\," contained
-syn match p6EscDollar display "\\\$" contained
-syn match p6EscCloseCurly display "\\}" contained
-syn match p6EscCloseBracket display "\\\]" contained
-
-" misc escapes
-syn match p6EscOctOld display "\\\d\{1,3}" contained
-syn match p6EscNull display "\\0\d\@!" contained
-syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint
-syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence
-syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence
-syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence
-syn match p6EscOpenCurly display "\\{" contained
-syn match p6EscHash display "\\#" contained
-syn match p6EscBackSlash display "\\\\" contained
-
-syn region p6QQSequence
- \ matchgroup=p6Escape
- \ start="\["
- \ skip="\[[^\]]*]"
- \ end="]"
- \ contained
- \ transparent
- \ contains=@p6Interp_qq
-
-syn match p6CodePoint display "\%(\d\+\|\S\)" contained
-syn region p6CodePoint
- \ matchgroup=p6Escape
- \ start="\["
- \ end="]"
- \ contained
-
-syn match p6HexSequence display "\x\+" contained
-syn region p6HexSequence
- \ matchgroup=p6Escape
- \ start="\["
- \ end="]"
- \ contained
-
-syn match p6OctSequence display "\o\+" contained
-syn region p6OctSequence
- \ matchgroup=p6Escape
- \ start="\["
- \ end="]"
- \ contained
-
-" matches :key, :!key, :$var, :key<var>, etc
-" Since we don't know in advance how the adverb ends, we use a trick.
-" Consume nothing with the start pattern (\ze at the beginning),
-" while capturing the whole adverb into \z1 and then putting it before
-" the match start (\zs) of the end pattern.
-syn region p6Adverb
- \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)"
- \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\)\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\)"
- \ end="\z1\zs"
- \ contained
- \ contains=TOP
- \ keepend
-
-" <words>
-" FIXME: not sure how to distinguish this from the "less than" operator
-" in all cases. For now, it matches if any of the following is true:
-"
-" * There is whitespace missing on either side of the "<", since
-" people tend to put spaces around "less than"
-" * It comes after "enum", "for", "any", "all", or "none"
-" * It's the first or last thing on a line (ignoring whitespace)
-" * It's preceded by "= "
-"
-" It never matches when:
-"
-" * Preceded by [<+~=] (e.g. <<foo>>, =<$foo>)
-" * Followed by [-=] (e.g. <--, <=, <==)
-syn region p6StringAngle
- \ matchgroup=p6Quote
- \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
- \ start="\%(\s\|[<+~=]\)\@<!<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
- \ start="[<+~=]\@<!<\%(\s\|<\|=>\|[-=]\{1,2}>\@!\)\@!"
- \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
- \ start="[<+~=]\@<!<\%(\s*$\)\@="
- \ start="\%(=\s\+\)\@=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
- \ skip="\\\@<!\\>"
- \ end=">"
- \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle
-
-syn region p6InnerAnglesOne
- \ matchgroup=p6StringAngle
- \ start="<"
- \ skip="\\\@<!\\>"
- \ end=">"
- \ transparent
- \ contained
- \ contains=p6InnerAnglesOne
-
-" <<words>>
-syn region p6StringAngles
- \ matchgroup=p6Quote
- \ start="<<=\@!"
- \ skip="\\\@<!\\>"
- \ end=">>"
- \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ
-
-syn region p6InnerAnglesTwo
- \ matchgroup=p6StringAngles
- \ start="<<"
- \ skip="\\\@<!\\>"
- \ end=">>"
- \ transparent
- \ contained
- \ contains=p6InnerAnglesTwo
-
-" «words»
-syn region p6StringFrench
- \ matchgroup=p6Quote
- \ start="«"
- \ skip="\\\@<!\\»"
- \ end="»"
- \ contains=p6InnerFrench,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseFrench,p6Adverb,p6StringSQ,p6StringDQ
-
-syn region p6InnerFrench
- \ matchgroup=p6StringFrench
- \ start="«"
- \ skip="\\\@<!\\»"
- \ end="»"
- \ transparent
- \ contained
- \ contains=p6InnerFrench
-
-" 'string'
-syn region p6StringSQ
- \ matchgroup=p6Quote
- \ start="'"
- \ skip="\\\@<!\\'"
- \ end="'"
- \ contains=@p6Interp_q,p6EscQuote
-
-" "string"
-syn region p6StringDQ
- \ matchgroup=p6Quote
- \ start=+"+
- \ skip=+\\\@<!\\"+
- \ end=+"+
- \ contains=@p6Interp_qq,p6EscDoubleQuote
-
-" Q// and friends.
-
-syn match p6QuoteQ display "\%([Qq]\%(ww\|to\|[qwxsahfcb]\)\?\)\>" nextgroup=p6QPairs skipwhite skipempty
-syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*"
-
-if exists("perl6_embedded_pir")
- syn include @p6PIR syntax/pir.vim
-endif
-
-" hardcoded set of delimiters
-let s:delims = [
- \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@<!\\\\\\\""],
- \ ["'", "'", "p6EscQuote", "\\\\\\@<!\\\\'"],
- \ ["/", "/", "p6EscForwardSlash", "\\\\\\@<!\\\\/"],
- \ ["`", "`", "p6EscBackTick", "\\\\\\@<!\\\\`"],
- \ ["|", "|", "p6EscVerticalBar", "\\\\\\@<!\\\\|"],
- \ ["!", "!", "p6EscExclamation", "\\\\\\@<!\\\\!"],
- \ [",", ",", "p6EscComma", "\\\\\\@<!\\\\,"],
- \ ["\\$", "\\$", "p6EscDollar", "\\\\\\@<!\\\\\\$"],
- \ ["{", "}", "p6EscCloseCurly", "\\%(\\\\\\@<!\\\\}\\|{[^}]*}\\)"],
- \ ["<", ">", "p6EscCloseAngle", "\\%(\\\\\\@<!\\\\>\\|<[^>]*>\\)"],
- \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@<!\\\\»\\|«[^»]*»\\)"],
- \ ["\\\[", "]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]\\|\\[^\\]]*]\\)"],
- \ ["\\s\\@<=(", ")", "p6EscCloseParen", "\\%(\\\\\\@<!\\\\)\\|([^)]*)\\)"],
-\ ]
-
-" double and triple delimiters too
-if exists("perl6_extended_q") || exists("perl6_extended_all")
- call add(s:delims, ["««", "»»", "p6EscCloseFrench", "\\%(\\\\\\@<!\\\\»»\\|««\\%([^»]\\|»»\\@!\\)*»»\\)"])
- call add(s:delims, ["«««", "»»»", "p6EscCloseFrench", "\\%(\\\\\\@<!\\\\»»»\\|«««\\%([^»]\\|»\\%(»»\\)\\@!\\)*»»»\\)"])
- call add(s:delims, ["{{", "}}", "p6EscCloseCurly", "\\%(\\\\\\@<!\\\\}}\\|{{\\%([^}]\\|}}\\@!\\)*}}\\)"])
- call add(s:delims, ["{{{", "}}}", "p6EscCloseCurly", "\\%(\\\\\\@<!\\\\}}}\\|{{{\\%([^}]\\|}\\%(}}\\)\\@!\\)*}}}\\)"])
- call add(s:delims, ["\\\[\\\[", "]]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]]\\|\\[\\[\\%([^\\]]\\|]]\\@!\\)*]]\\)"])
- call add(s:delims, ["\\\[\\\[\\\[", "]]]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]]]\\|\\[\\[\\[\\%([^\\]]\\|]\\%(]]\\)\\@!\\)*]]]\\)"])
- call add(s:delims, ["\\s\\@<=((", "))", "p6EscCloseParen", "\\%(\\\\\\@<!\\\\))\\|((\\%([^)]\\|))\\@!\\)*))\\)"])
- call add(s:delims, ["\\s\\@<=(((", ")))", "p6EscCloseParen", "\\%(\\\\\\@<!\\\\)))\\|(((\\%([^)]\\|)\\%())\\)\\@!\\)*)))\\)"])
- call add(s:delims, ["\\s\\@<=<<", ">>", "p6EscCloseAngle", "\\%(\\\\\\@<!\\\\>>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"])
- call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@<!\\\\>>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"])
-endif
-
-if !exists("perl6_extended_q") && !exists("perl6_extended_all")
- " simple version, no special highlighting within the string
- for [start_delim, end_delim, end_group, skip] in s:delims
- exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained"
- endfor
-
- if exists("perl6_embedded_pir")
- " highlight embedded PIR code
- for [start_delim, end_delim, end_group, skip] in s:delims
- exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained"
- endfor
- endif
-else
- let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%("
- let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<="
-
- let s:adverbs = [
- \ ["s", "scalar"],
- \ ["a", "array"],
- \ ["h", "hash"],
- \ ["f", "function"],
- \ ["c", "closure"],
- \ ["b", "backslash"],
- \ ["w", "words"],
- \ ["ww", "quotewords"],
- \ ["x", "exec"],
- \ ]
-
- " these can't be conjoined with q and qq (e.g. as qqq and qqqq)
- let s:q_adverbs = [
- \ ["q", "single"],
- \ ["qq", "double"],
- \ ]
-
- for [start_delim, end_delim, end_group, skip] in s:delims
- " Q, q, and qq with any number of (ignored) adverbs
- exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained"
- exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained"
- exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained"
-
- for [short, long] in s:adverbs
- " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs
- exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained"
- exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained"
- exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained"
-
- " Q, q, and qq, with one significant adverb
- exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained"
- for [q_short, q_long] in s:q_adverbs
- exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained"
- endfor
- exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained"
- exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained"
-
- for [short2, long2] in s:adverbs
- " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb
- exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained"
- for [q_short2, q_long2] in s:q_adverbs
- exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained"
- endfor
- exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained"
- exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained"
- endfor
- endfor
- endfor
- unlet s:before s:after s:adverbs s:q_adverbs
-endif
-unlet s:delims
-
-" Match these so something else above can't. E.g. the "q" in "role q { }"
-" should not be considered a string
-syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*"
-
-" :key
-syn match p6Operator display ":\@<!::\@!!\?" nextgroup=p6Key
-syn match p6Key display "\k\%(\k\|[-']\K\@=\)*" contained
-
-" => and p5=> autoquoting
-syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>"
-syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@<!=>"
-syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>"
-syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>"
-
-" Hyperoperators. Needs to come after the quoting operators (<>, «», etc)
-exec "syn match p6HyperOp display \"»" .s:infix."»\\?\""
-exec "syn match p6HyperOp display \"«\\?".s:infix."«\""
-exec "syn match p6HyperOp display \"»" .s:infix."«\""
-exec "syn match p6HyperOp display \"«" .s:infix. "»\""
-
-exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\""
-exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\""
-exec "syn match p6HyperOp display \">>" .s:infix."<<\""
-exec "syn match p6HyperOp display \"<<" .s:infix.">>\""
-unlet s:infix
-
-" Regexes and grammars
-
-syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty
-syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained
-
-syn region p6RegexBlock
- \ matchgroup=p6Normal
- \ start="{"
- \ end="}"
- \ contained
- \ contains=@p6Regexen,@p6Variables
-
-" Perl 6 regex bits
-
-syn cluster p6Regexen
- \ add=p6RxMeta
- \ add=p6RxEscape
- \ add=p6EscHex
- \ add=p6EscOct
- \ add=p6EscNull
- \ add=p6RxAnchor
- \ add=p6RxCapture
- \ add=p6RxGroup
- \ add=p6RxAlternation
- \ add=p6RxAdverb
- \ add=p6RxAdverbArg
- \ add=p6RxStorage
- \ add=p6RxAssertion
- \ add=p6RxQuoteWords
- \ add=p6RxClosure
- \ add=p6RxStringSQ
- \ add=p6RxStringDQ
- \ add=p6Comment
-
-syn match p6RxMeta display contained ".\%(\k\|\s\)\@<!"
-syn match p6RxAnchor display contained "[$^]"
-syn match p6RxEscape display contained "\\\S"
-syn match p6RxCapture display contained "[()]"
-syn match p6RxAlternation display contained "|"
-syn match p6RxRange display contained "\.\."
-
-syn region p6RxClosure
- \ matchgroup=p6Normal
- \ start="{"
- \ end="}"
- \ contained
- \ containedin=p6RxClosure
- \ contains=TOP
-syn region p6RxGroup
- \ matchgroup=p6StringSpecial2
- \ start="\["
- \ end="]"
- \ contained
- \ contains=@p6Regexen,@p6Variables
-syn region p6RxAssertion
- \ matchgroup=p6StringSpecial2
- \ start="<"
- \ end=">"
- \ contained
- \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall
-syn region p6RxAssertCall
- \ matchgroup=p6Normal
- \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@="
- \ end=")\@<="
- \ contained
- \ contains=TOP
-syn region p6RxCharClass
- \ matchgroup=p6StringSpecial2
- \ start="\%(<[-!+?]\?\)\@<=\["
- \ skip="\\]"
- \ end="]"
- \ contained
- \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull
-syn region p6RxQuoteWords
- \ matchgroup=p6StringSpecial2
- \ start="< "
- \ end=">"
- \ contained
-syn region p6RxAdverb
- \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)"
- \ end="\z1\zs"
- \ contained
- \ contains=TOP
- \ keepend
-syn region p6RxAdverbArg
- \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=("
- \ skip="([^)]*)"
- \ end=")"
- \ contained
- \ contains=TOP
-syn region p6RxStorage
- \ matchgroup=p6Operator
- \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@="
- \ end="$"
- \ contains=TOP
- \ contained
-
-" Perl 5 regex bits
-
-syn cluster p6RegexP5Base
- \ add=p6RxP5Escape
- \ add=p6RxP5Oct
- \ add=p6RxP5Hex
- \ add=p6RxP5EscMeta
- \ add=p6RxP5CodePoint
- \ add=p6RxP5Prop
-
-" normal regex stuff
-syn cluster p6RegexP5
- \ add=@p6RegexP5Base
- \ add=p6RxP5Quantifier
- \ add=p6RxP5Meta
- \ add=p6RxP5QuoteMeta
- \ add=p6RxP5ParenMod
- \ add=p6RxP5Verb
- \ add=p6RxP5Count
- \ add=p6RxP5Named
- \ add=p6RxP5ReadRef
- \ add=p6RxP5WriteRef
- \ add=p6RxP5CharClass
- \ add=p6RxP5Anchor
-
-" inside character classes
-syn cluster p6RegexP5Class
- \ add=@p6RegexP5Base
- \ add=p6RxP5Posix
- \ add=p6RxP5Range
-
-syn match p6RxP5Escape display contained "\\\S"
-syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId
-syn match p6RxP5CPId display contained "\S"
-syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq
-syn match p6RxP5OctSeq display contained "\o\{1,3}"
-syn match p6RxP5Anchor display contained "[\^$]"
-syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq
-syn match p6RxP5HexSeq display contained "\x\{1,2}"
-syn region p6RxP5HexSeq
- \ matchgroup=p6RxP5Escape
- \ start="{"
- \ end="}"
- \ contained
-syn region p6RxP5Named
- \ matchgroup=p6RxP5Escape
- \ start="\%(\\N\)\@<={"
- \ end="}"
- \ contained
-syn match p6RxP5Quantifier display contained "\%([+*]\|(\@<!?\)"
-syn match p6RxP5ReadRef display contained "\\[1-9]\d\@!"
-syn match p6RxP5ReadRef display contained "\\k<\@=" nextgroup=p6RxP5ReadRefId
-syn region p6RxP5ReadRefId
- \ matchgroup=p6RxP5Escape
- \ start="<"
- \ end=">"
- \ contained
-syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId
-syn match p6RxP5WriteRefId display contained "\d\+"
-syn region p6RxP5WriteRefId
- \ matchgroup=p6RxP5Escape
- \ start="{"
- \ end="}"
- \ contained
-syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId
-syn match p6RxP5PropId display contained "\a"
-syn region p6RxP5PropId
- \ matchgroup=p6RxP5Escape
- \ start="{"
- \ end="}"
- \ contained
-syn match p6RxP5Meta display contained "[(|).]"
-syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code
-syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)"
-syn match p6RxP5Mod display contained "?-\?[impsx]\+"
-syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)"
-syn match p6RxP5Mod display contained "?(DEFINE)"
-syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef
-syn match p6RxP5ModDef display contained "\h\w*"
-syn region p6RxP5ModName
- \ matchgroup=p6StringSpecial
- \ start="?'"
- \ end="'"
- \ contained
-syn region p6RxP5ModName
- \ matchgroup=p6StringSpecial
- \ start="?P\?<"
- \ end=">"
- \ contained
-syn region p6RxP5Code
- \ matchgroup=p6StringSpecial
- \ start="??\?{"
- \ end="})\@="
- \ contained
- \ contains=TOP
-syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]"
-syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId
-syn region p6RxP5CountId
- \ matchgroup=p6RxP5Escape
- \ start="{"
- \ end="}"
- \ contained
-syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)"
-syn region p6RxP5QuoteMeta
- \ matchgroup=p6RxP5Escape
- \ start="\\Q"
- \ end="\\E"
- \ contained
- \ contains=@p6Variables,p6EscBackSlash
-syn region p6RxP5CharClass
- \ matchgroup=p6StringSpecial
- \ start="\[\^\?"
- \ skip="\\]"
- \ end="]"
- \ contained
- \ contains=@p6RegexP5Class
-syn region p6RxP5Posix
- \ matchgroup=p6RxP5Escape
- \ start="\[:"
- \ end=":]"
- \ contained
-syn match p6RxP5Range display contained "-"
-
-" 'string' inside a regex
-syn region p6RxStringSQ
- \ matchgroup=p6Quote
- \ start="'"
- \ skip="\\\@<!\\'"
- \ end="'"
- \ contained
- \ contains=p6EscQuote,p6EscBackSlash
-
-" "string" inside a regex
-syn region p6RxStringDQ
- \ matchgroup=p6Quote
- \ start=+"+
- \ skip=+\\\@<!\\"+
- \ end=+"+
- \ contained
- \ contains=p6EscDoubleQuote,p6EscBackSlash
-
-" $!, $var, $!var, $::var, $package::var $*::package::var, etc
-" Thus must come after the matches for the "$" regex anchor, but before
-" the match for the $ regex delimiter
-syn cluster p6Variables
- \ add=p6VarSlash
- \ add=p6VarExclam
- \ add=p6VarMatch
- \ add=p6VarNum
- \ add=p6Variable
-
-syn match p6VarSlash display "\$/"
-syn match p6VarExclam display "\$!"
-syn match p6VarMatch display "\$¢"
-syn match p6VarNum display "\$\d\+"
-syn match p6Variable display "\%(@@\|[@&$%]\$*\)\%(::\|\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\)\|\K\)\@=" nextgroup=p6Twigil,p6VarName,p6PackageScope
-syn match p6VarName display "\K\%(\k\|[-']\K\@=\)*" contained
-syn match p6Twigil display "\%([.^*?=!~]\|:\@<!::\@!\)\K\@=" nextgroup=p6PackageScope,p6VarName contained
-syn match p6PackageScope display "\%(\K\%(\k\|[-']\K\@=\)*\)\?::" nextgroup=p6PackageScope,p6VarName contained
-
-" Perl 6 regex regions
-
-" /foo/
-" Below some hacks to recognise the // variant. This is virtually impossible
-" to catch in all cases as the / is used in so many other ways, but these
-" should be the most obvious ones.
-" TODO: mostly stolen from perl.vim, might need more work
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\%(\<\%(split\|while\|until\|if\|unless\)\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=//\@!"
- \ start="^//\@!"
- \ start=+\s\@<=/[^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!/\@!+
- \ skip="\\/"
- \ end="/"
- \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
-
-" m/foo/, mm/foo/, rx/foo/
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=//\@!"
- \ skip="\\/"
- \ end="/"
- \ keepend
- \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
-
-" m!foo!, mm!foo!, rx!foo!
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=!!\@!"
- \ skip="\\!"
- \ end="!"
- \ keepend
- \ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
-
-" m$foo$, mm$foo$, rx$foo$, m|foo|, mm|foo|, rx|foo|, etc
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([\"'`|,$]\)\$\@!"
- \ skip="\\\z1"
- \ end="\z1"
- \ keepend
- \ contains=@p6Regexen,@p6Variables
-
-" m (foo), mm (foo), rx (foo)
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s\+\)\@<=()\@!)\@!"
- \ skip="\\)"
- \ end=")"
- \ contains=@p6Regexen,@p6Variables
-
-" m[foo], mm[foo], rx[foo]
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\[]\@!]\@!"
- \ skip="\\]"
- \ end="]"
- \ contains=@p6Regexen,@p6Variables
-
-" m{foo}, mm{foo}, rx{foo}
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<={}\@!}\@!"
- \ skip="\\}"
- \ end="}"
- \ contains=@p6Regexen,@p6Variables
-
-" m<foo>, mm<foo>, rx<foo>
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!>\@!"
- \ skip="\\>"
- \ end=">"
- \ contains=@p6Regexen,@p6Variables
-
-" m«foo», mm«foo», rx«foo»
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!»\@!"
- \ skip="\\»"
- \ end="»"
- \ contains=@p6Regexen,@p6Variables
-
-" Substitutions
-
-" s/foo/bar/
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=/"
- \ skip="\\/"
- \ end="/"me=e-1
- \ keepend
- \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
- \ nextgroup=p6Substitution
-
-syn region p6Substitution
- \ matchgroup=p6Quote
- \ start="/"
- \ skip="\\/"
- \ end="/"
- \ contained
- \ keepend
- \ contains=@p6Interp_qq
-
-" s!foo!bar!
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=!"
- \ skip="\\!"
- \ end="!"me=e-1
- \ keepend
- \ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
- \ nextgroup=p6Substitution
-
-syn region p6Substitution
- \ matchgroup=p6Quote
- \ start="!"
- \ skip="\\!"
- \ end="!"
- \ contained
- \ keepend
- \ contains=@p6Interp_qq
-
-" s$foo$bar$, s|foo|bar, etc
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([\"'`|,$]\)"
- \ skip="\\\z1"
- \ end="\z1"me=e-1
- \ keepend
- \ contains=@p6Regexen,@p6Variables
- \ nextgroup=p6Substitution
-
-syn region p6Substitution
- \ matchgroup=p6Quote
- \ start="\z([\"'`|,$]\)"
- \ skip="\\\z1"
- \ end="\z1"
- \ contained
- \ keepend
- \ contains=@p6Interp_qq
-
-" s{foo}
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<={}\@!"
- \ skip="\\}"
- \ end="}"
- \ contains=@p6Regexen,@p6Variables
-
-" s[foo]
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\[]\@!"
- \ skip="\\]"
- \ end="]"
- \ contains=@p6Regexen,@p6Variables
-
-" s<foo>
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!"
- \ skip="\\>"
- \ end=">"
- \ contains=@p6Regexen,@p6Variables
-
-" s«foo»
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!"
- \ skip="\\»"
- \ end="»"
- \ contains=@p6Regexen,@p6Variables
-
-" s (foo)
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s\+\)\@<=()\@!"
- \ skip="\\)"
- \ end=")"
- \ contains=@p6Regexen,@p6Variables
-
-" Perl 5 regex regions
-
-" m:P5//
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<=/"
- \ skip="\\/"
- \ end="/"
- \ contains=@p6RegexP5,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
-
-" m:P5!!
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<=!"
- \ skip="\\!"
- \ end="!"
- \ contains=@p6RegexP5,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
-
-" m:P5$$, m:P5||, etc
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<=\z([\"'`|,$]\)"
- \ skip="\\\z1"
- \ end="\z1"
- \ contains=@p6RegexP5,@p6Variables
-
-" m:P5 ()
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s\+\)\@<=()\@!"
- \ skip="\\)"
- \ end=")"
- \ contains=@p6RegexP5,@p6Variables
-
-" m:P5[]
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<=[]\@!"
- \ skip="\\]"
- \ end="]"
- \ contains=@p6RegexP5,@p6Variables
-
-" m:P5{}
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<={}\@!"
- \ skip="\\}"
- \ end="}"
- \ contains=@p6RegexP5,p6Variables
-
-" m:P5<>
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<=<>\@!"
- \ skip="\\>"
- \ end=">"
- \ contains=@p6RegexP5,p6Variables
-
-" m:P5«»
-syn region p6Match
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<m\s*:P\%(erl\)\?5\s*\)\@<=«»\@!"
- \ skip="\\»"
- \ end="»"
- \ contains=@p6RegexP5,p6Variables
-
-" Transliteration
-
-" tr/foo/bar/, tr|foo|bar, etc
-syn region p6String
- \ matchgroup=p6Quote
- \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@<!\<tr\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([/\"'`|!,$]\)"
- \ skip="\\\z1"
- \ end="\z1"me=e-1
- \ contains=p6RxRange
- \ nextgroup=p6Transliteration
-
-syn region p6Transliteration
- \ matchgroup=p6Quote
- \ start="\z([/\"'`|!,$]\)"
- \ skip="\\\z1"
- \ end="\z1"
- \ contained
- \ contains=@p6Interp_qq
-
-" Comments
-
-" normal end-of-line comment
-syn match p6Comment display "#.*" contains=p6Attention
-
-" Multiline comments. Arbitrary numbers of opening brackets are allowed,
-" but we only define regions for 1 to 3
-syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#("
- \ skip="([^)]*)"
- \ end=")"
- \ matchgroup=p6Error
- \ start="^#("
- \ contains=p6Attention,p6Comment
-syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#\["
- \ skip="\[[^\]]*]"
- \ end="]"
- \ matchgroup=p6Error
- \ start="^#\["
- \ contains=p6Attention,p6Comment
-syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#{"
- \ skip="{[^}]*}"
- \ end="}"
- \ matchgroup=p6Error
- \ start="^#{"
- \ contains=p6Attention,p6Comment
-syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#<"
- \ skip="<[^>]*>"
- \ end=">"
- \ matchgroup=p6Error
- \ start="^#<"
- \ contains=p6Attention,p6Comment
-syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#«"
- \ skip="«[^»]*»"
- \ end="»"
- \ matchgroup=p6Error
- \ start="^#«"
- \ contains=p6Attention,p6Comment
-
-" double and triple delimiters
-if exists("perl6_extended_comments") || exists("perl6_extended_all")
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#(("
- \ skip="((\%([^)\|))\@!]\)*))"
- \ end="))"
- \ matchgroup=p6Error
- \ start="^#(("
- \ contains=p6Attention,p6Comment
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#((("
- \ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
- \ end=")))"
- \ matchgroup=p6Error
- \ start="^#((("
- \ contains=p6Attention,p6Comment
-
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#\[\["
- \ skip="\[\[\%([^\]]\|]]\@!\)*]]"
- \ end="]]"
- \ matchgroup=p6Error
- \ start="^#\[\["
- \ contains=p6Attention,p6Comment
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#\[\[\["
- \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
- \ end="]]]"
- \ matchgroup=p6Error
- \ start="^#\[\[\["
- \ contains=p6Attention,p6Comment
-
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#{{"
- \ skip="{{\%([^}]\|}}\@!\)*}}"
- \ end="}}"
- \ matchgroup=p6Error
- \ start="^#{{"
- \ contains=p6Attention,p6Comment
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#{{{"
- \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
- \ end="}}}"
- \ matchgroup=p6Error
- \ start="^#{{{"
- \ contains=p6Attention,p6Comment
-
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#<<"
- \ skip="<<\%([^>]\|>>\@!\)*>>"
- \ end=">>"
- \ matchgroup=p6Error
- \ start="^#<<"
- \ contains=p6Attention,p6Comment
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#<<<"
- \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
- \ end=">>>"
- \ matchgroup=p6Error
- \ start="^#<<<"
- \ contains=p6Attention,p6Comment
-
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#««"
- \ skip="««\%([^»]\|»»\@!\)*»»"
- \ end="»»"
- \ matchgroup=p6Error
- \ start="^#««"
- \ contains=p6Attention,p6Comment
- syn region p6Comment
- \ matchgroup=p6Comment
- \ start="^\@<!#«««"
- \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
- \ end="»»»"
- \ matchgroup=p6Error
- \ start="^#«««"
- \ contains=p6Attention,p6Comment
-endif
-
-" Pod
-
-" Abbreviated blocks (implicit code forbidden)
-syn region p6PodAbbrRegion
- \ matchgroup=p6PodPrefix
- \ start="^=\ze\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodAbbrNoCodeType
- \ keepend
-
-syn region p6PodAbbrNoCodeType
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodName,p6PodAbbrNoCode
-
-syn match p6PodName contained ".\+" contains=@p6PodFormat
-syn match p6PodComment contained ".\+"
-
-syn region p6PodAbbrNoCode
- \ start="^"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=@p6PodFormat
-
-" Abbreviated blocks (everything is code)
-syn region p6PodAbbrRegion
- \ matchgroup=p6PodPrefix
- \ start="^=\zecode\>"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodAbbrCodeType
- \ keepend
-
-syn region p6PodAbbrCodeType
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodName,p6PodAbbrCode
-
-syn region p6PodAbbrCode
- \ start="^"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
-
-" Abbreviated blocks (everything is a comment)
-syn region p6PodAbbrRegion
- \ matchgroup=p6PodPrefix
- \ start="^=\zecomment\>"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodAbbrCommentType
- \ keepend
-
-syn region p6PodAbbrCommentType
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodComment,p6PodAbbrNoCode
-
-" Abbreviated blocks (implicit code allowed)
-syn region p6PodAbbrRegion
- \ matchgroup=p6PodPrefix
- \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodAbbrType
- \ keepend
-
-syn region p6PodAbbrType
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodName,p6PodAbbr
-
-syn region p6PodAbbr
- \ start="^"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=@p6PodFormat,p6PodImplicitCode
-
-" Abbreviated block to end-of-file
-syn region p6PodAbbrRegion
- \ matchgroup=p6PodPrefix
- \ start="^=\zeEND\>"
- \ end="\%$"
- \ contains=p6PodAbbrEOFType
- \ keepend
-
-syn region p6PodAbbrEOFType
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="\%$"
- \ contained
- \ contains=p6PodName,p6PodAbbrEOF
-
-syn region p6PodAbbrEOF
- \ start="^"
- \ end="\%$"
- \ contained
- \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
-
-" Directives
-syn region p6PodDirectRegion
- \ matchgroup=p6PodPrefix
- \ start="^=\%(config\|use\)\>"
- \ end="^\ze\%([^=]\|=\K\|\s*$\)"
- \ contains=p6PodDirectArgRegion
- \ keepend
-
-syn region p6PodDirectArgRegion
- \ matchgroup=p6PodType
- \ start="\S\+"
- \ end="^\ze\%([^=]\|=\K\|\s*$\)"
- \ contained
- \ contains=p6PodDirectConfigRegion
-
-syn region p6PodDirectConfigRegion
- \ start=""
- \ end="^\ze\%([^=]\|=\K\|\s*$\)"
- \ contained
- \ contains=@p6PodConfig
-
-" =encoding is a special directive
-syn region p6PodDirectRegion
- \ matchgroup=p6PodPrefix
- \ start="^=encoding\>"
- \ end="^\ze\%([^=]\|=\K\|\s*$\)"
- \ contains=p6PodEncodingArgRegion
- \ keepend
-
-syn region p6PodEncodingArgRegion
- \ matchgroup=p6PodName
- \ start="\S\+"
- \ end="^\ze\%([^=]\|=\K\|\s*$\)"
- \ contained
-
-" Paragraph blocks (implicit code forbidden)
-syn region p6PodParaRegion
- \ matchgroup=p6PodPrefix
- \ start="^=for\>"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodParaNoCodeTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodParaNoCodeTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodParaNoCode,p6PodParaConfigRegion
-
-syn region p6PodParaConfigRegion
- \ start=""
- \ end="^\ze\%([^=]\|=\k\@<!\)"
- \ contained
- \ contains=@p6PodConfig
-
-syn region p6PodParaNoCode
- \ start="^[^=]"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=@p6PodFormat
-
-" Paragraph blocks (everything is code)
-syn region p6PodParaRegion
- \ matchgroup=p6PodPrefix
- \ start="^=for\>\ze\s*code\>"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodParaCodeTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodParaCodeTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodParaCode,p6PodParaConfigRegion
-
-syn region p6PodParaCode
- \ start="^[^=]"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
-
-" Paragraph blocks (implicit code allowed)
-syn region p6PodParaRegion
- \ matchgroup=p6PodPrefix
- \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contains=p6PodParaTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodParaTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=p6PodPara,p6PodParaConfigRegion
-
-syn region p6PodPara
- \ start="^[^=]"
- \ end="^\ze\%(\s*$\|=\K\)"
- \ contained
- \ contains=@p6PodFormat,p6PodImplicitCode
-
-" Paragraph block to end-of-file
-syn region p6PodParaRegion
- \ matchgroup=p6PodPrefix
- \ start="^=for\>\ze\s\+END\>"
- \ end="\%$"
- \ contains=p6PodParaEOFTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodParaEOFTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="\%$"
- \ contained
- \ contains=p6PodParaEOF,p6PodParaConfigRegion
-
-syn region p6PodParaEOF
- \ start="^[^=]"
- \ end="\%$"
- \ contained
- \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
-
-" Delimited blocks (implicit code forbidden)
-syn region p6PodDelimRegion
- \ matchgroup=p6PodPrefix
- \ start="^=begin\>"
- \ end="^=end\>"
- \ contains=p6PodDelimNoCodeTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodDelimNoCodeTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze=end\>"
- \ contained
- \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion
-
-syn region p6PodDelimConfigRegion
- \ start=""
- \ end="^\ze\%([^=]\|=\K\|\s*$\)"
- \ contained
- \ contains=@p6PodConfig
-
-syn region p6PodDelimNoCode
- \ start="^"
- \ end="^\ze=end\>"
- \ contained
- \ contains=@p6PodNestedBlocks,@p6PodFormat
-
-" Delimited blocks (everything is code)
-syn region p6PodDelimRegion
- \ matchgroup=p6PodPrefix
- \ start="^=begin\>\ze\s*code\>"
- \ end="^=end\>"
- \ contains=p6PodDelimCodeTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodDelimCodeTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze=end\>"
- \ contained
- \ contains=p6PodDelimCode,p6PodDelimConfigRegion
-
-syn region p6PodDelimCode
- \ start="^"
- \ end="^\ze=end\>"
- \ contained
- \ contains=@p6PodNestedBlocks
-
-" Delimited blocks (implicit code allowed)
-syn region p6PodDelimRegion
- \ matchgroup=p6PodPrefix
- \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
- \ end="^=end\>"
- \ contains=p6PodDelimTypeRegion
- \ keepend
- \ extend
-
-syn region p6PodDelimTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="^\ze=end\>"
- \ contained
- \ contains=p6PodDelim,p6PodDelimConfigRegion
-
-syn region p6PodDelim
- \ start="^"
- \ end="^\ze=end\>"
- \ contained
- \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
-
-" Delimited block to end-of-file
-syn region p6PodDelimRegion
- \ matchgroup=p6PodPrefix
- \ start="^=begin\>\ze\s\+END\>"
- \ end="\%$"
- \ contains=p6PodDelimEOFTypeRegion
- \ extend
-
-syn region p6PodDelimEOFTypeRegion
- \ matchgroup=p6PodType
- \ start="\K\k*"
- \ end="\%$"
- \ contained
- \ contains=p6PodDelimEOF,p6PodDelimConfigRegion
-
-syn region p6PodDelimEOF
- \ start="^"
- \ end="\%$"
- \ contained
- \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
-
-syn cluster p6PodConfig
- \ add=p6PodConfigOperator
- \ add=p6PodExtraConfig
- \ add=p6StringAuto
- \ add=p6PodAutoQuote
- \ add=p6StringSQ
-
-syn region p6PodParens
- \ start="("
- \ end=")"
- \ contained
- \ contains=p6Number,p6StringSQ
-
-syn match p6PodAutoQuote display contained "=>"
-syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption
-syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle
-syn match p6PodExtraConfig display contained "^="
-syn match p6PodVerticalBar display contained "|"
-syn match p6PodColon display contained ":"
-syn match p6PodSemicolon display contained ";"
-syn match p6PodComma display contained ","
-syn match p6PodImplicitCode display contained "^\s.*"
-
-syn region p6PodDelimEndRegion
- \ matchgroup=p6PodType
- \ start="\%(^=end\>\)\@<="
- \ end="\K\k*"
-
-" These may appear inside delimited blocks
-syn cluster p6PodNestedBlocks
- \ add=p6PodAbbrRegion
- \ add=p6PodDirectRegion
- \ add=p6PodParaRegion
- \ add=p6PodDelimRegion
- \ add=p6PodDelimEndRegion
-
-" Pod formatting codes
-
-syn cluster p6PodFormat
- \ add=p6PodFormatOne
- \ add=p6PodFormatTwo
- \ add=p6PodFormatThree
- \ add=p6PodFormatFrench
-
-" Balanced angles found inside formatting codes. Ensures proper nesting.
-
-syn region p6PodFormatAnglesOne
- \ matchgroup=p6PodFormat
- \ start="<"
- \ skip="<[^>]*>"
- \ end=">"
- \ transparent
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne
-
-syn region p6PodFormatAnglesTwo
- \ matchgroup=p6PodFormat
- \ start="<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ transparent
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo
-
-syn region p6PodFormatAnglesThree
- \ matchgroup=p6PodFormat
- \ start="<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ transparent
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree
-
-syn region p6PodFormatAnglesFrench
- \ matchgroup=p6PodFormat
- \ start="«"
- \ skip="«[^»]*»"
- \ end="»"
- \ transparent
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree
-
-" All formatting codes
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="\u<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="\u<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="\u<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="\u«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree
-
-" C<> and V<> don't allow nested formatting formatting codes
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="[CV]<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="[CV]<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAnglesTwo
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="[CV]<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="[CV]«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench
-
-" L<> can have a "|" separator
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="L<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="L<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="L<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="L«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar
-
-" E<> can have a ";" separator
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="E<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="E<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="E<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="E«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon
-
-" M<> can have a ":" separator
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="M<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="M<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="M<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="M«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon
-
-" D<> can have "|" and ";" separators
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="D<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="D<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="D<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="D«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon
-
-" X<> can have "|", "," and ";" separators
-
-syn region p6PodFormatOne
- \ matchgroup=p6PodFormatCode
- \ start="X<"
- \ skip="<[^>]*>"
- \ end=">"
- \ contained
- \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma
-
-syn region p6PodFormatTwo
- \ matchgroup=p6PodFormatCode
- \ start="X<<"
- \ skip="<<[^>]*>>"
- \ end=">>"
- \ contained
- \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma
-
-syn region p6PodFormatThree
- \ matchgroup=p6PodFormatCode
- \ start="X<<<"
- \ skip="<<<[^>]*>>>"
- \ end=">>>"
- \ contained
- \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma
-
-syn region p6PodFormatFrench
- \ matchgroup=p6PodFormatCode
- \ start="X«"
- \ skip="«[^»]*»"
- \ end="»"
- \ contained
- \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma
-
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
-
-hi def link p6EscOctOld p6Error
-hi def link p6PackageTwigil p6Twigil
-hi def link p6StringAngle p6String
-hi def link p6StringFrench p6String
-hi def link p6StringAngles p6String
-hi def link p6StringSQ p6String
-hi def link p6StringDQ p6String
-hi def link p6StringQ p6String
-hi def link p6RxStringSQ p6String
-hi def link p6RxStringDQ p6String
-hi def link p6Substitution p6String
-hi def link p6Transliteration p6String
-hi def link p6StringAuto p6String
-hi def link p6StringP5Auto p6String
-hi def link p6Key p6String
-hi def link p6Match p6String
-hi def link p6RegexBlock p6String
-hi def link p6RxP5CharClass p6String
-hi def link p6RxP5QuoteMeta p6String
-hi def link p6RxCharClass p6String
-hi def link p6RxQuoteWords p6String
-hi def link p6ReduceOp p6Operator
-hi def link p6ReverseCrossOp p6Operator
-hi def link p6HyperOp p6Operator
-hi def link p6QuoteQ p6Operator
-hi def link p6RxRange p6StringSpecial
-hi def link p6RxAnchor p6StringSpecial
-hi def link p6RxP5Anchor p6StringSpecial
-hi def link p6CodePoint p6StringSpecial
-hi def link p6RxMeta p6StringSpecial
-hi def link p6RxP5Range p6StringSpecial
-hi def link p6RxP5CPId p6StringSpecial
-hi def link p6RxP5Posix p6StringSpecial
-hi def link p6RxP5Mod p6StringSpecial
-hi def link p6RxP5HexSeq p6StringSpecial
-hi def link p6RxP5OctSeq p6StringSpecial
-hi def link p6RxP5WriteRefId p6StringSpecial
-hi def link p6HexSequence p6StringSpecial
-hi def link p6OctSequence p6StringSpecial
-hi def link p6RxP5Named p6StringSpecial
-hi def link p6RxP5PropId p6StringSpecial
-hi def link p6RxP5Quantifier p6StringSpecial
-hi def link p6RxP5CountId p6StringSpecial
-hi def link p6RxP5Verb p6StringSpecial
-hi def link p6Escape p6StringSpecial2
-hi def link p6EscNull p6StringSpecial2
-hi def link p6EscHash p6StringSpecial2
-hi def link p6EscQQ p6StringSpecial2
-hi def link p6EscQuote p6StringSpecial2
-hi def link p6EscDoubleQuote p6StringSpecial2
-hi def link p6EscBackTick p6StringSpecial2
-hi def link p6EscForwardSlash p6StringSpecial2
-hi def link p6EscVerticalBar p6StringSpecial2
-hi def link p6EscExclamation p6StringSpecial2
-hi def link p6EscDollar p6StringSpecial2
-hi def link p6EscOpenCurly p6StringSpecial2
-hi def link p6EscCloseCurly p6StringSpecial2
-hi def link p6EscCloseBracket p6StringSpecial2
-hi def link p6EscCloseAngle p6StringSpecial2
-hi def link p6EscCloseFrench p6StringSpecial2
-hi def link p6EscBackSlash p6StringSpecial2
-hi def link p6RxEscape p6StringSpecial2
-hi def link p6RxCapture p6StringSpecial2
-hi def link p6RxAlternation p6StringSpecial2
-hi def link p6RxP5 p6StringSpecial2
-hi def link p6RxP5ReadRef p6StringSpecial2
-hi def link p6RxP5Oct p6StringSpecial2
-hi def link p6RxP5Hex p6StringSpecial2
-hi def link p6RxP5EscMeta p6StringSpecial2
-hi def link p6RxP5Meta p6StringSpecial2
-hi def link p6RxP5Escape p6StringSpecial2
-hi def link p6RxP5CodePoint p6StringSpecial2
-hi def link p6RxP5WriteRef p6StringSpecial2
-hi def link p6RxP5Prop p6StringSpecial2
-
-hi def link p6Property Tag
-hi def link p6Attention Todo
-hi def link p6Type Type
-hi def link p6Error Error
-hi def link p6BlockLabel Label
-hi def link p6Float Float
-hi def link p6Normal Normal
-hi def link p6Package Normal
-hi def link p6PackageScope Normal
-hi def link p6Number Number
-hi def link p6VersionNum Number
-hi def link p6String String
-hi def link p6Repeat Repeat
-hi def link p6Keyword Keyword
-hi def link p6Pragma Keyword
-hi def link p6Module Keyword
-hi def link p6DeclareRoutine Keyword
-hi def link p6VarStorage Special
-hi def link p6FlowControl Special
-hi def link p6NumberBase Special
-hi def link p6Twigil Special
-hi def link p6StringSpecial2 Special
-hi def link p6VersionDot Special
-hi def link p6Comment Comment
-hi def link p6Include Include
-hi def link p6Shebang PreProc
-hi def link p6ClosureTrait PreProc
-hi def link p6Routine Function
-hi def link p6Operator Operator
-hi def link p6Version Operator
-hi def link p6Context Operator
-hi def link p6Quote Delimiter
-hi def link p6TypeConstraint PreCondit
-hi def link p6Exception Exception
-hi def link p6Placeholder Identifier
-hi def link p6Variable Identifier
-hi def link p6VarSlash Identifier
-hi def link p6VarNum Identifier
-hi def link p6VarExclam Identifier
-hi def link p6VarMatch Identifier
-hi def link p6VarName Identifier
-hi def link p6MatchVar Identifier
-hi def link p6RxP5ReadRefId Identifier
-hi def link p6RxP5ModDef Identifier
-hi def link p6RxP5ModName Identifier
-hi def link p6Conditional Conditional
-hi def link p6StringSpecial SpecialChar
-
-hi def link p6PodAbbr p6Pod
-hi def link p6PodAbbrEOF p6Pod
-hi def link p6PodAbbrNoCode p6Pod
-hi def link p6PodAbbrCode p6PodCode
-hi def link p6PodPara p6Pod
-hi def link p6PodParaEOF p6Pod
-hi def link p6PodParaNoCode p6Pod
-hi def link p6PodParaCode p6PodCode
-hi def link p6PodDelim p6Pod
-hi def link p6PodDelimEOF p6Pod
-hi def link p6PodDelimNoCode p6Pod
-hi def link p6PodDelimCode p6PodCode
-hi def link p6PodImplicitCode p6PodCode
-hi def link p6PodExtraConfig p6PodPrefix
-hi def link p6PodVerticalBar p6PodFormatCode
-hi def link p6PodColon p6PodFormatCode
-hi def link p6PodSemicolon p6PodFormatCode
-hi def link p6PodComma p6PodFormatCode
-hi def link p6PodFormatOne p6PodFormat
-hi def link p6PodFormatTwo p6PodFormat
-hi def link p6PodFormatThree p6PodFormat
-hi def link p6PodFormatFrench p6PodFormat
-
-hi def link p6PodType Type
-hi def link p6PodConfigOption String
-hi def link p6PodCode PreProc
-hi def link p6Pod Comment
-hi def link p6PodComment Comment
-hi def link p6PodAutoQuote Operator
-hi def link p6PodConfigOperator Operator
-hi def link p6PodPrefix Statement
-hi def link p6PodName Identifier
-hi def link p6PodFormatCode SpecialChar
-hi def link p6PodFormat SpecialComment
-
-
-" Syncing to speed up processing
-"syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>"
-"syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>"
-"syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>"
-"syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>"
-"syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>"
-
-" Let's just sync whole file, the other methods aren't reliable (or I don't
-" know how to use them reliably)
-syn sync fromstart
-
-setlocal foldmethod=syntax
-
-let b:current_syntax = "perl6"
-
-let &cpo = s:keepcpo
-unlet s:keepcpo
-
-" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/runtime/syntax/php.vim b/runtime/syntax/php.vim
index 30d13581c3..7b0085cd6e 100644
--- a/runtime/syntax/php.vim
+++ b/runtime/syntax/php.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: php PHP 3/4/5/7/8
" Maintainer: Tyson Andre <tysonandre775@hotmail.com>
-" Last Change: Sep 07, 2020
-" URL: https://github.com/TysonAndre/vim-syntax
+" Last Change: Dec 22, 2020
+" URL: https://github.com/TysonAndre/php-vim-syntax
" Former Maintainers:
" Jason Woofenden <jason@jasonwoof.com>
" Peter Hodge <toomuchphp-vim@yahoo.com>
@@ -149,7 +149,7 @@ syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_
syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained
syn keyword phpFunctions dotnet_load contained
syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained
-syn keyword phpFunctions enchant_broker_describe enchant_broker_dict_exists enchant_broker_free enchant_broker_free_dict enchant_broker_get_dict_path enchant_broker_get_error enchant_broker_init enchant_broker_list_dicts enchant_broker_request_dict enchant_broker_request_pwl_dict enchant_broker_set_dict_path enchant_broker_set_ordering enchant_dict_add_to_personal enchant_dict_add_to_session enchant_dict_check enchant_dict_describe enchant_dict_get_error enchant_dict_is_in_session enchant_dict_quick_check enchant_dict_store_replacement enchant_dict_suggest contained
+syn keyword phpFunctions enchant_broker_describe enchant_broker_dict_exists enchant_broker_free enchant_broker_free_dict enchant_broker_get_dict_path enchant_broker_get_error enchant_broker_init enchant_broker_list_dicts enchant_broker_request_dict enchant_broker_request_pwl_dict enchant_broker_set_dict_path enchant_broker_set_ordering enchant_dict_add enchant_dict_add_to_personal enchant_dict_add_to_session enchant_dict_check enchant_dict_describe enchant_dict_get_error enchant_dict_is_added enchant_dict_is_in_session enchant_dict_quick_check enchant_dict_store_replacement enchant_dict_suggest contained
syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained
syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained
syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained
@@ -171,11 +171,11 @@ syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase
syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained
syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained
syn keyword phpFunctions igbinary_serialize igbinary_unserialize contained
-syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data exif_tagname imageaffine imageaffinematrixconcat imageaffinematrixget imagebmp imageconvolution imagecreatefrombmp imagecreatefromtga imagecrop imagecropauto imagefilter imageflip imagegetclip imagelayereffect imageopenpolygon imagepalettetotruecolor imageresolution imagescale imagesetclip imagesetinterpolation imagexbm contained
+syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data exif_tagname imageaffine imageaffinematrixconcat imageaffinematrixget imagebmp imageconvolution imagecreatefrombmp imagecreatefromtga imagecrop imagecropauto imagefilter imageflip imagegetclip imagegetinterpolation imagelayereffect imageopenpolygon imagepalettetotruecolor imageresolution imagescale imagesetclip imagesetinterpolation imagexbm contained
syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained
syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained
syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained
-syn keyword phpFunctions collator_asort collator_compare collator_create collator_get_attribute collator_get_error_code collator_get_error_message collator_get_locale collator_get_sort_key collator_get_strength collator_set_attribute collator_set_strength collator_sort collator_sort_with_sort_keys datefmt_create datefmt_format datefmt_format_object datefmt_get_calendar datefmt_get_calendar_object datefmt_get_datetype datefmt_get_error_code datefmt_get_error_message datefmt_get_locale datefmt_get_pattern datefmt_get_timetype datefmt_get_timezone datefmt_get_timezone_id datefmt_is_lenient datefmt_localtime datefmt_parse datefmt_set_calendar datefmt_set_lenient datefmt_set_pattern datefmt_set_timezone grapheme_extract grapheme_stripos grapheme_stristr grapheme_strlen grapheme_strpos grapheme_strripos grapheme_strrpos grapheme_strstr grapheme_substr idn_to_ascii idn_to_utf8 intl_error_name intl_get_error_code intl_get_error_message intl_is_failure intlcal_add intlcal_after intlcal_before intlcal_clear intlcal_create_instance intlcal_equals intlcal_field_difference intlcal_from_date_time intlcal_get intlcal_get_actual_maximum intlcal_get_actual_minimum intlcal_get_available_locales intlcal_get_day_of_week_type intlcal_get_error_code intlcal_get_error_message intlcal_get_first_day_of_week intlcal_get_greatest_minimum intlcal_get_keyword_values_for_locale intlcal_get_least_maximum intlcal_get_locale intlcal_get_maximum intlcal_get_minimal_days_in_first_week intlcal_get_minimum intlcal_get_now intlcal_get_repeated_wall_time_option intlcal_get_skipped_wall_time_option intlcal_get_time intlcal_get_time_zone intlcal_get_type intlcal_get_weekend_transition intlcal_in_daylight_time intlcal_is_equivalent_to intlcal_is_lenient intlcal_is_set intlcal_is_weekend intlcal_roll intlcal_set intlcal_set_first_day_of_week intlcal_set_lenient intlcal_set_minimal_days_in_first_week intlcal_set_repeated_wall_time_option intlcal_set_skipped_wall_time_option intlcal_set_time intlcal_set_time_zone intlcal_to_date_time intlgregcal_create_instance intlgregcal_get_gregorian_change intlgregcal_is_leap_year intlgregcal_set_gregorian_change intltz_count_equivalent_ids intltz_create_default intltz_create_enumeration intltz_create_time_zone intltz_create_time_zone_id_enumeration intltz_from_date_time_zone intltz_get_canonical_id intltz_get_display_name intltz_get_dst_savings intltz_get_equivalent_id intltz_get_error_code intltz_get_error_message intltz_get_gmt intltz_get_id intltz_get_offset intltz_get_raw_offset intltz_get_region intltz_get_tz_data_version intltz_get_unknown intltz_has_same_rules intltz_to_date_time_zone intltz_use_daylight_time locale_accept_from_http locale_canonicalize locale_compose locale_filter_matches locale_get_all_variants locale_get_default locale_get_display_language locale_get_display_name locale_get_display_region locale_get_display_script locale_get_display_variant locale_get_keywords locale_get_primary_language locale_get_region locale_get_script locale_lookup locale_parse locale_set_default msgfmt_create msgfmt_format msgfmt_format_message msgfmt_get_error_code msgfmt_get_error_message msgfmt_get_locale msgfmt_get_pattern msgfmt_parse msgfmt_parse_message msgfmt_set_pattern normalizer_is_normalized normalizer_normalize numfmt_create numfmt_format numfmt_format_currency numfmt_get_attribute numfmt_get_error_code numfmt_get_error_message numfmt_get_locale numfmt_get_pattern numfmt_get_symbol numfmt_get_text_attribute numfmt_parse numfmt_parse_currency numfmt_set_attribute numfmt_set_pattern numfmt_set_symbol numfmt_set_text_attribute resourcebundle_count resourcebundle_create resourcebundle_get resourcebundle_get_error_code resourcebundle_get_error_message resourcebundle_locales transliterator_create transliterator_create_from_rules transliterator_create_inverse transliterator_get_error_code transliterator_get_error_message transliterator_list_ids transliterator_transliterate contained
+syn keyword phpFunctions collator_asort collator_compare collator_create collator_get_attribute collator_get_error_code collator_get_error_message collator_get_locale collator_get_sort_key collator_get_strength collator_set_attribute collator_set_strength collator_sort collator_sort_with_sort_keys datefmt_create datefmt_format datefmt_format_object datefmt_get_calendar datefmt_get_calendar_object datefmt_get_datetype datefmt_get_error_code datefmt_get_error_message datefmt_get_locale datefmt_get_pattern datefmt_get_timetype datefmt_get_timezone datefmt_get_timezone_id datefmt_is_lenient datefmt_localtime datefmt_parse datefmt_set_calendar datefmt_set_lenient datefmt_set_pattern datefmt_set_timezone grapheme_extract grapheme_stripos grapheme_stristr grapheme_strlen grapheme_strpos grapheme_strripos grapheme_strrpos grapheme_strstr grapheme_substr idn_to_ascii idn_to_utf8 intl_error_name intl_get_error_code intl_get_error_message intl_is_failure intlcal_add intlcal_after intlcal_before intlcal_clear intlcal_create_instance intlcal_equals intlcal_field_difference intlcal_from_date_time intlcal_get intlcal_get_actual_maximum intlcal_get_actual_minimum intlcal_get_available_locales intlcal_get_day_of_week_type intlcal_get_error_code intlcal_get_error_message intlcal_get_first_day_of_week intlcal_get_greatest_minimum intlcal_get_keyword_values_for_locale intlcal_get_least_maximum intlcal_get_locale intlcal_get_maximum intlcal_get_minimal_days_in_first_week intlcal_get_minimum intlcal_get_now intlcal_get_repeated_wall_time_option intlcal_get_skipped_wall_time_option intlcal_get_time intlcal_get_time_zone intlcal_get_type intlcal_get_weekend_transition intlcal_in_daylight_time intlcal_is_equivalent_to intlcal_is_lenient intlcal_is_set intlcal_is_weekend intlcal_roll intlcal_set intlcal_set_first_day_of_week intlcal_set_lenient intlcal_set_minimal_days_in_first_week intlcal_set_repeated_wall_time_option intlcal_set_skipped_wall_time_option intlcal_set_time intlcal_set_time_zone intlcal_to_date_time intlgregcal_create_instance intlgregcal_get_gregorian_change intlgregcal_is_leap_year intlgregcal_set_gregorian_change intltz_count_equivalent_ids intltz_create_default intltz_create_enumeration intltz_create_time_zone intltz_create_time_zone_id_enumeration intltz_from_date_time_zone intltz_get_canonical_id intltz_get_display_name intltz_get_dst_savings intltz_get_equivalent_id intltz_get_error_code intltz_get_error_message intltz_get_id_for_windows_id intltz_get_windows_id intltz_get_gmt intltz_get_id intltz_get_offset intltz_get_raw_offset intltz_get_region intltz_get_tz_data_version intltz_get_unknown intltz_has_same_rules intltz_to_date_time_zone intltz_use_daylight_time locale_accept_from_http locale_canonicalize locale_compose locale_filter_matches locale_get_all_variants locale_get_default locale_get_display_language locale_get_display_name locale_get_display_region locale_get_display_script locale_get_display_variant locale_get_keywords locale_get_primary_language locale_get_region locale_get_script locale_lookup locale_parse locale_set_default msgfmt_create msgfmt_format msgfmt_format_message msgfmt_get_error_code msgfmt_get_error_message msgfmt_get_locale msgfmt_get_pattern msgfmt_parse msgfmt_parse_message msgfmt_set_pattern normalizer_get_raw_decomposition normalizer_is_normalized normalizer_normalize numfmt_create numfmt_format numfmt_format_currency numfmt_get_attribute numfmt_get_error_code numfmt_get_error_message numfmt_get_locale numfmt_get_pattern numfmt_get_symbol numfmt_get_text_attribute numfmt_parse numfmt_parse_currency numfmt_set_attribute numfmt_set_pattern numfmt_set_symbol numfmt_set_text_attribute resourcebundle_count resourcebundle_create resourcebundle_get resourcebundle_get_error_code resourcebundle_get_error_message resourcebundle_locales transliterator_create transliterator_create_from_rules transliterator_create_inverse transliterator_get_error_code transliterator_get_error_message transliterator_list_ids transliterator_transliterate contained
syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained
syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained
syn keyword phpFunctions json_decode json_encode json_last_error json_last_error_msg contained
@@ -212,13 +212,13 @@ syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_meth
syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained
syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained
syn keyword phpFunctions opcache_reset opcache_invalidate opcache_compile_file opcache_is_script_cached opcache_get_configuration opcache_get_status contained
-syn keyword phpFunctions openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read openssl_get_curve_names openssl_pkcs7_read openssl_pkey_derive openssl_x509_verify contained
+syn keyword phpFunctions openssl_cipher_iv_length openssl_cms_decrypt openssl_cms_encrypt openssl_cms_read openssl_cms_sign openssl_cms_verify openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read openssl_get_curve_names openssl_pkcs7_read openssl_pkey_derive openssl_x509_verify contained
syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained
syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained
syn keyword phpFunctions overload contained
syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained
syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig pcntl_alarm pcntl_async_signals pcntl_errno pcntl_get_last_error pcntl_getpriority pcntl_setpriority pcntl_signal_dispatch pcntl_signal_get_handler pcntl_sigprocmask pcntl_sigtimedwait pcntl_sigwaitinfo pcntl_strerror pcntl_unshare pcntl_wait pcntl_wifcontinued contained
-syn keyword phpFunctions preg_filter preg_grep preg_last_error preg_match_all preg_match preg_quote preg_replace_callback preg_replace_callback_array preg_replace preg_split contained
+syn keyword phpFunctions preg_filter preg_grep preg_last_error preg_last_error_msg preg_match_all preg_match preg_quote preg_replace_callback preg_replace_callback_array preg_replace preg_split contained
syn keyword phpFunctions pdo_drivers contained
syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained
syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained
@@ -242,13 +242,14 @@ syn keyword phpFunctions class_implements class_parents class_uses iterator_appl
syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained
syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained
syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained
+syn keyword phpFunctions fdiv get_debug_type getdir str_contains str_ends_with str_starts_with
syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained
syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained
syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count tidy_is_xml tidy_get_opt_doc contained
syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained
syn keyword phpFunctions token_get_all token_name contained
syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained
-syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
+syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_id get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
syn keyword phpFunctions get_called_class property_exists interface_exists trait_exists class_alias get_mangled_object_vars set_exception_handler restore_exception_handler get_declared_traits get_declared_interfaces get_resources gc_mem_caches gc_collect_cycles gc_enabled gc_enable gc_disable gc_status contained
syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained
syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained
@@ -282,7 +283,7 @@ syn keyword phpStatement return break continue exit goto yield contained
syn keyword phpKeyword var const contained
" Type
-syn keyword phpType void bool boolean int integer real double float string array object NULL callable iterable contained
+syn keyword phpType void bool boolean int integer real double float string array object NULL callable iterable mixed contained
" Structure
syn keyword phpStructure namespace extends implements instanceof parent self contained
@@ -296,6 +297,7 @@ syn match phpOperator "&&\|\<and\>" contained display
syn match phpOperator "||\|\<x\=or\>" contained display
syn match phpRelation "[!=<>]=" contained display
syn match phpRelation "[<>]" contained display
+syn match phpRelation "<=>" contained display
" PHP 8.0 adds the nullsafe operator ?-> for property access and method calls.
syn match phpMemberSelector "?\?->" contained display
syn match phpVarSelector "\$" contained display
@@ -313,10 +315,14 @@ syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contain
syn match phpInterpSimpleError "?\?->[^a-zA-Z_]" contained display
" make sure these stay above the correct DollarCurlies so they don't take priority
syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches)
- syn match phpinterpSimpleBracketsInner "\w\+" contained
- syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
- syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
- syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ syn match phpInterpSimpleBracketsInner "\w\+" contained
+ syn match phpInterpSimpleBracketsInner "\$\h\w*" contained
+ syn match phpInterpSimpleBrackets "\[\$\?\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ " -0x1 and -123 refer to the string offsets '-0x1' and '-123' of array keys
+ " TODO: Support [1_2], [-0b1_10_1], etc (also literal strings).
+ syn match phpInterpSimpleBrackets "\[-\?\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ syn match phpInterpSimpleBrackets "\[-\?0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ syn match phpInterpSimpleBrackets "\[-\?0[bB][01]\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|?\?->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display
syn match phpInterpVarname "\h\w*" contained
syn match phpInterpMethodName "\h\w*" contained " default color
@@ -515,7 +521,10 @@ syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,
hi def link phpSpecialFunction phpOperator
" Highlighting for PHP5's built-in classes
-" - built-in classes harvested from get_declared_classes() in 5.1.4
+" Note: Some of the names have inconsistent cases.
+" Those are probably the actual name in reflection and should not be changed in
+" this file.
+" (CURLFile and CurlShareHandle, XMLReader and XmlParser, etc)
syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
\ stdClass __PHP_Incomplete_Class php_user_filter AssertionError Directory ArrayObject
\ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException
@@ -527,22 +536,34 @@ syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStrin
\ RecursiveRegexIterator RecursiveTreeIterator RegexIterator SplDoublyLinkedList
\ SplFixedArray SplHeap SplMaxHeap SplMinHeap SplPriorityQueue SplQueue SplStack
\ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException
+ \ Attribute InternalIterator Stringable UnhandledMatchError ValueError WeakMap
\ OverflowException RangeException UnderflowException UnexpectedValueException
\ PDO PDOException PDOStatement PDORow
\ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass
\ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException
\ ReflectionClassConstant ReflectionFunctionAbstract ReflectionGenerator ReflectionNamedType
\ ReflectionReference ReflectionType ReflectionZendExtension
+ \ ReflectionAttribute ReflectionUnionType
\ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage
\ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator
+ \ XmlParser
+ \ DeflateContext InflateContext
\ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler
\ DOMImplementation DOMImplementationList DOMImplementationSource
\ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap
\ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler
\ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity
\ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath
+ \ DOMChildNode DOMParentNode
+ \ EnchantBroker EnchantDictionary
+ \ GdImage
+ \ OpenSSLAsymmetricKey OpenSSLCertificate OpenSSLCertificateSigningRequest
+ \ Shmop
+ \ AddressInfo Socket
+ \ SysvMessageQueue SysvSemaphore SysvSharedMemory
+ \ PhpToken
\ APCIterator APCuIterator
- \ CURLFile
+ \ CURLFile CurlHandle CurlMultiHandle CurlShareHandle
\ DateInterval DatePeriod DateTime DateTimeImmutable DateTimeZone
\ finfo
\ GMP
@@ -566,7 +587,6 @@ syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpSt
\ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator
\ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector
\ Throwable DateTimeInterface JsonSerializable SessionHandlerInterface SessionIdInterface SessionUpdateTimestampHandlerInterface
- \
hi def link phpInterfaces phpConstant
@@ -604,6 +624,7 @@ if php_alt_comparisons
" highlight comparison operators differently
syntax match phpComparison "\v[=!]\=\=?" contained containedin=phpRegion
syntax match phpComparison "\v[=<>-]@<![<>]\=?[<>]@!" contained containedin=phpRegion
+ syntax match phpComparison "<=>" contained containedin=phpRegion
" highlight the 'instanceof' operator as a comparison operator rather than a structure
syntax case ignore
diff --git a/runtime/syntax/poke.vim b/runtime/syntax/poke.vim
new file mode 100644
index 0000000000..4a07a77d6c
--- /dev/null
+++ b/runtime/syntax/poke.vim
@@ -0,0 +1,151 @@
+" Copyright (C) 2021 Matthew T. Ihlenfield.
+"
+" This program is free software: you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation, either version 3 of the License, or
+" (at your option) any later version.
+"
+" This program is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with this program. If not, see <http://www.gnu.org/licenses/>.
+"
+" Vim syntax file
+" Language: Poke
+" Maintainer: Matt Ihlenfield <mtihlenfield@protonmail.com>
+" Filenames: *.pk
+" Latest Revision: 10 March 2021
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Poke statement
+syn keyword pokeStatement assert break continue return
+syn keyword pokeStatement type unit fun method nextgroup=pokeFunction skipwhite
+syn keyword pokeStatement var nextgroup=pokeVar skipWhite
+
+" Identifiers
+syn match pokeVar '\h\w*' display contained
+
+" User defined functions
+syn match pokeFunction '\h\w*' display contained
+
+" Poke operators
+syn keyword pokeOperator in sizeof as isa unmap
+
+" Conditionals
+syn keyword pokeConditional if else where
+
+" Structures, unions, etc...
+syn keyword pokeStructure struct union pinned
+
+" Loops
+syn keyword pokeRepeat while for
+
+" Imports
+syn keyword pokeLoad load
+
+" Exceptions
+syn keyword pokeException try catch until raise
+
+" Exception types
+syn keyword pokeExceptionType Exception E_generic E_out_of_bounds
+syn keyword pokeExceptionType E_eof E_elem E_constraint
+syn keyword pokeExceptionType E_conv E_map_bounds E_map
+syn keyword pokeExceptionType E_div_by_zero E_no_ios E_no_return
+syn keyword pokeExceptionType E_io E_io_flags E_assert E_overflow
+
+" Exception codes
+syn keyword pokeExceptionCode EC_generic EC_out_of_bounds
+syn keyword pokeExceptionCode EC_eof EC_elem EC_constraint
+syn keyword pokeExceptionCode EC_conv EC_map_bounds EC_map
+syn keyword pokeExceptionCode EC_div_by_zero EC_no_ios EC_no_return
+syn keyword pokeExceptionCode EC_io EC_io_flags EC_assert EC_overflow
+
+" Poke builtin types
+syn keyword pokeBuiltinType string void int uint bit nibble
+syn keyword pokeBuiltinType byte char ushort short ulong long
+syn keyword pokeBuiltinType uint8 uint16 uint32 uint64
+syn keyword pokeBuiltinType off64 uoff64 offset
+syn keyword pokeBuiltinType Comparator POSIX_Time32 POSIX_Time64
+syn keyword pokeBuiltinType big little any
+
+" Poke constants
+syn keyword pokeConstant ENDIAN_LITTLE ENDIAN_BIG
+syn keyword pokeConstant IOS_F_READ IOS_F_WRITE IOS_F_TRUNCATE IOS_F_CREATE
+syn keyword pokeConstant IOS_M_RDONLY IOS_M_WRONLY IOS_M_RDWR
+syn keyword pokeConstant load_path NULL OFFSET
+
+" Poke std lib
+syn keyword pokeBuiltinFunction print printf catos stoca atoi ltos reverse
+syn keyword pokeBuiltinFunction ltrim rtrim strchr qsort crc32 alignto
+syn keyword pokeBuiltinFunction open close flush get_ios set_ios iosize
+syn keyword pokeBuiltinFunction rand get_endian set_endian strace exit
+syn keyword pokeBuiltinFunction getenv
+
+" Formats
+
+" Special chars
+syn match pokeSpecial "\\\([nt\\]\|\o\{1,3}\)" display contained
+
+" Chars
+syn match pokeChar "'[^']*'" contains=pokeSpecial
+
+" Attributes
+syn match pokeAttribute "\h\w*'\h\w"
+
+" Strings
+syn region pokeString skip=+\\\\\|\\"+ start=+"+ end=+"+ contains=pokeSpecial
+
+" Integer literals
+syn match pokeInteger "\<\d\+_*\d*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+syn match pokeInteger "\<0[Xx]\x\+_*\x*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+syn match pokeInteger "\<0[Oo]\o\+_*\o*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+syn match pokeInteger "\<0[Bb][01]\+_*[01]*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+
+" Units
+syn keyword pokeBuiltinUnit b M B
+syn keyword pokeBuiltinUnit Kb KB Mb MB Gb GB
+syn keyword pokeBuiltinUnit Kib KiB Mib MiB Gib GiB
+
+" Offsets
+syn match pokeOffset "#\h\w*" contains=pokeBuiltinUnit
+
+" Comments
+syn keyword pokeCommentTodo TODO FIXME XXX TBD contained
+syn match pokeLineComment "\/\/.*" contains=pokeCommentTodo,@Spell extend
+syn region pokeComment start="/\*" end="\*/" contains=pokeCommentTodo,@Spell fold extend
+
+" Allow folding of blocks
+syn region pokeBlock start="{" end="}" transparent fold
+
+" Highlight groups
+hi def link pokeBuiltinFunction Function
+hi def link pokeBuiltinType Type
+hi def link pokeBuiltinUnit Keyword
+hi def link pokeChar Character
+hi def link pokeComment Comment
+hi def link pokeCommentTodo Todo
+hi def link pokeConditional Conditional
+hi def link pokeConstant Constant
+hi def link pokeException Exception
+hi def link pokeExceptionCode Constant
+hi def link pokeExceptionType Type
+hi def link pokeFunction Function
+hi def link pokeInteger Number
+hi def link pokeLineComment Comment
+hi def link pokeLoad Include
+hi def link pokeOffset StorageClass
+hi def link pokeOperator Operator
+hi def link pokeSpecial SpecialChar
+hi def link pokeStatement Statement
+hi def link pokeString String
+hi def link pokeStructure Structure
+hi def link pokeRepeat Repeat
+hi def link pokeVar Identifier
+
+let b:current_syntax = 'poke'
diff --git a/runtime/syntax/prolog.vim b/runtime/syntax/prolog.vim
index 58b279b029..93aba4dc19 100644
--- a/runtime/syntax/prolog.vim
+++ b/runtime/syntax/prolog.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: PROLOG
" Maintainer: Anton Kochkov <anton.kochkov@gmail.com>
-" Last Change: 2019 Aug 29
+" Last Change: 2021 Jan 05
" There are two sets of highlighting in here:
" If the "prolog_highlighting_clean" variable exists, it is rather sparse.
@@ -21,16 +21,16 @@ syn case match
" Very simple highlighting for comments, clause heads and
" character codes. It respects prolog strings and atoms.
-syn region prologCComment start=+/\*+ end=+\*/+
-syn match prologComment +%.*+
+syn region prologCComment start=+/\*+ end=+\*/+ contains=@Spell
+syn match prologComment +%.*+ contains=@Spell
if !exists("prolog_highlighting_no_keyword")
syn keyword prologKeyword module meta_predicate multifile dynamic
endif
syn match prologCharCode +0'\\\=.+
-syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
-syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause
+syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause contains=@NoSpell
if !exists("prolog_highlighting_clean")
diff --git a/runtime/syntax/proto.vim b/runtime/syntax/proto.vim
index 4615e0ca0e..0d2d2f259e 100644
--- a/runtime/syntax/proto.vim
+++ b/runtime/syntax/proto.vim
@@ -1,26 +1,36 @@
-" syntax file for Protocol Buffers - Google's data interchange format
-"
+" Protocol Buffers - Google's data interchange format
" Copyright 2008 Google Inc. All rights reserved.
+" https://developers.google.com/protocol-buffers/
"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to deal
-" in the Software without restriction, including without limitation the rights
-" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-" copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are
+" met:
"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-" THE SOFTWARE.
+" * Redistributions of source code must retain the above copyright
+" notice, this list of conditions and the following disclaimer.
+" * Redistributions in binary form must reproduce the above
+" copyright notice, this list of conditions and the following disclaimer
+" in the documentation and/or other materials provided with the
+" distribution.
+" * Neither the name of Google Inc. nor the names of its
+" contributors may be used to endorse or promote products derived from
+" this software without specific prior written permission.
"
-" http://code.google.com/p/protobuf/
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+" This is the Vim syntax file for Google Protocol Buffers as found at
+" https://github.com/protocolbuffers/protobuf
+" Last update: 2020 Oct 29
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -33,10 +43,10 @@ syn keyword protoTodo contained TODO FIXME XXX
syn cluster protoCommentGrp contains=protoTodo
syn keyword protoSyntax syntax import option
-syn keyword protoStructure package message group
+syn keyword protoStructure package message group oneof
syn keyword protoRepeat optional required repeated
syn keyword protoDefault default
-syn keyword protoExtend extend extensions to max
+syn keyword protoExtend extend extensions to max reserved
syn keyword protoRPC service rpc returns
syn keyword protoType int32 int64 uint32 uint64 sint32 sint64
@@ -48,10 +58,10 @@ syn keyword protoBool true false
syn match protoInt /-\?\<\d\+\>/
syn match protoInt /\<0[xX]\x+\>/
syn match protoFloat /\<-\?\d*\(\.\d*\)\?/
-syn region protoComment start="\/\*" end="\*\/" contains=@protoCommentGrp
-syn region protoComment start="//" skip="\\$" end="$" keepend contains=@protoCommentGrp
-syn region protoString start=/"/ skip=/\\./ end=/"/
-syn region protoString start=/'/ skip=/\\./ end=/'/
+syn region protoComment start="\/\*" end="\*\/" contains=@pbCommentGrp,@Spell
+syn region protoComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp,@Spell
+syn region protoString start=/"/ skip=/\\./ end=/"/ contains=@Spell
+syn region protoString start=/'/ skip=/\\./ end=/'/ contains=@Spell
hi def link protoTodo Todo
diff --git a/runtime/syntax/ps1.vim b/runtime/syntax/ps1.vim
new file mode 100644
index 0000000000..e8f6b2f8ed
--- /dev/null
+++ b/runtime/syntax/ps1.vim
@@ -0,0 +1,182 @@
+" Vim syntax file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2020 Nov 24
+"
+" The following settings are available for tuning syntax highlighting:
+" let ps1_nofold_blocks = 1
+" let ps1_nofold_sig = 1
+" let ps1_nofold_region = 1
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Operators contain dashes
+setlocal iskeyword+=-
+
+" PowerShell doesn't care about case
+syn case ignore
+
+" Sync-ing method
+syn sync minlines=100
+
+" Certain tokens can't appear at the top level of the document
+syn cluster ps1NotTop contains=@ps1Comment,ps1CDocParam,ps1FunctionDeclaration
+
+" Comments and special comment words
+syn keyword ps1CommentTodo TODO FIXME XXX TBD HACK NOTE contained
+syn match ps1CDocParam /.*/ contained
+syn match ps1CommentDoc /^\s*\zs\.\w\+\>/ nextgroup=ps1CDocParam contained
+syn match ps1CommentDoc /#\s*\zs\.\w\+\>/ nextgroup=ps1CDocParam contained
+syn match ps1Comment /#.*/ contains=ps1CommentTodo,ps1CommentDoc,@Spell
+syn region ps1Comment start="<#" end="#>" contains=ps1CommentTodo,ps1CommentDoc,@Spell
+
+" Language keywords and elements
+syn keyword ps1Conditional if else elseif switch default
+syn keyword ps1Repeat while for do until break continue foreach in
+syn match ps1Repeat /\<foreach\>/ nextgroup=ps1Block skipwhite
+syn match ps1Keyword /\<while\>/ nextgroup=ps1Block skipwhite
+syn match ps1Keyword /\<where\>/ nextgroup=ps1Block skipwhite
+
+syn keyword ps1Exception begin process end exit inlinescript parallel sequence
+syn keyword ps1Keyword try catch finally throw
+syn keyword ps1Keyword return filter in trap param data dynamicparam
+syn keyword ps1Constant $true $false $null
+syn match ps1Constant +\$?+
+syn match ps1Constant +\$_+
+syn match ps1Constant +\$\$+
+syn match ps1Constant +\$^+
+
+" Keywords reserved for future use
+syn keyword ps1Keyword class define from using var
+
+" Function declarations
+syn keyword ps1Keyword function nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword filter nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword workflow nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword configuration nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword class nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword enum nextgroup=ps1Function skipwhite
+
+" Function declarations and invocations
+syn match ps1Cmdlet /\v(add|clear|close|copy|enter|exit|find|format|get|hide|join|lock|move|new|open|optimize|pop|push|redo|remove|rename|reset|search|select|Set|show|skip|split|step|switch|undo|unlock|watch)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(connect|disconnect|read|receive|send|write)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(backup|checkpoint|compare|compress|convert|convertfrom|convertto|dismount|edit|expand|export|group|import|initialize|limit|merge|mount|out|publish|restore|save|sync|unpublish|update)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(debug|measure|ping|repair|resolve|test|trace)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(approve|assert|build|complete|confirm|deny|deploy|disable|enable|install|invoke|register|request|restart|resume|start|stop|submit|suspend|uninstall|unregister|wait)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(block|grant|protect|revoke|unblock|unprotect)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(use)(-\w+)+/ contained
+
+" Other functions
+syn match ps1Function /\w\+\(-\w\+\)\+/ contains=ps1Cmdlet
+
+" Type declarations
+syn match ps1Type /\[[a-z_][a-z0-9_.,\[\]]\+\]/
+
+" Variable references
+syn match ps1ScopeModifier /\(global:\|local:\|private:\|script:\)/ contained
+syn match ps1Variable /\$\w\+\(:\w\+\)\?/ contains=ps1ScopeModifier
+syn match ps1Variable /\${\w\+\(:\?[[:alnum:]_()]\+\)\?}/ contains=ps1ScopeModifier
+
+" Operators
+syn keyword ps1Operator -eq -ne -ge -gt -lt -le -like -notlike -match -notmatch -replace -split -contains -notcontains
+syn keyword ps1Operator -ieq -ine -ige -igt -ile -ilt -ilike -inotlike -imatch -inotmatch -ireplace -isplit -icontains -inotcontains
+syn keyword ps1Operator -ceq -cne -cge -cgt -clt -cle -clike -cnotlike -cmatch -cnotmatch -creplace -csplit -ccontains -cnotcontains
+syn keyword ps1Operator -in -notin
+syn keyword ps1Operator -is -isnot -as -join
+syn keyword ps1Operator -and -or -not -xor -band -bor -bnot -bxor
+syn keyword ps1Operator -f
+syn match ps1Operator /!/
+syn match ps1Operator /=/
+syn match ps1Operator /+=/
+syn match ps1Operator /-=/
+syn match ps1Operator /\*=/
+syn match ps1Operator /\/=/
+syn match ps1Operator /%=/
+syn match ps1Operator /+/
+syn match ps1Operator /-\(\s\|\d\|\.\|\$\|(\)\@=/
+syn match ps1Operator /\*/
+syn match ps1Operator /\//
+syn match ps1Operator /|/
+syn match ps1Operator /%/
+syn match ps1Operator /&/
+syn match ps1Operator /::/
+syn match ps1Operator /,/
+syn match ps1Operator /\(^\|\s\)\@<=\. \@=/
+
+" Regular Strings
+" These aren't precisely correct and could use some work
+syn region ps1String start=/"/ skip=/`"/ end=/"/ contains=@ps1StringSpecial,@Spell
+syn region ps1String start=/'/ skip=/''/ end=/'/
+
+" Here-Strings
+syn region ps1String start=/@"$/ end=/^"@/ contains=@ps1StringSpecial,@Spell
+syn region ps1String start=/@'$/ end=/^'@/
+
+" Interpolation
+syn match ps1Escape /`./
+syn region ps1Interpolation matchgroup=ps1InterpolationDelimiter start="$(" end=")" contained contains=ALLBUT,@ps1NotTop
+syn region ps1NestedParentheses start="(" skip="\\\\\|\\)" matchgroup=ps1Interpolation end=")" transparent contained
+syn cluster ps1StringSpecial contains=ps1Escape,ps1Interpolation,ps1Variable,ps1Boolean,ps1Constant,ps1BuiltIn,@Spell
+
+" Numbers
+syn match ps1Number "\(\<\|-\)\@<=\(0[xX]\x\+\|\d\+\)\([KMGTP][B]\)\=\(\>\|-\)\@="
+syn match ps1Number "\(\(\<\|-\)\@<=\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[dD]\="
+syn match ps1Number "\<\d\+[eE][-+]\=\d\+[dD]\=\>"
+syn match ps1Number "\<\d\+\([eE][-+]\=\d\+\)\=[dD]\>"
+
+" Constants
+syn match ps1Boolean "$\%(true\|false\)\>"
+syn match ps1Constant /\$null\>/
+syn match ps1BuiltIn "$^\|$?\|$_\|$\$"
+syn match ps1BuiltIn "$\%(args\|error\|foreach\|home\|input\)\>"
+syn match ps1BuiltIn "$\%(match\(es\)\?\|myinvocation\|host\|lastexitcode\)\>"
+syn match ps1BuiltIn "$\%(ofs\|shellid\|stacktrace\)\>"
+
+" Named Switch
+syn match ps1Label /\s-\w\+/
+
+" Folding blocks
+if !exists('g:ps1_nofold_blocks')
+ syn region ps1Block start=/{/ end=/}/ transparent fold
+endif
+
+if !exists('g:ps1_nofold_region')
+ syn region ps1Region start=/#region/ end=/#endregion/ transparent fold keepend extend
+endif
+
+if !exists('g:ps1_nofold_sig')
+ syn region ps1Signature start=/# SIG # Begin signature block/ end=/# SIG # End signature block/ transparent fold
+endif
+
+" Setup default color highlighting
+hi def link ps1Number Number
+hi def link ps1Block Block
+hi def link ps1Region Region
+hi def link ps1Exception Exception
+hi def link ps1Constant Constant
+hi def link ps1String String
+hi def link ps1Escape SpecialChar
+hi def link ps1InterpolationDelimiter Delimiter
+hi def link ps1Conditional Conditional
+hi def link ps1Cmdlet Function
+hi def link ps1Function Identifier
+hi def link ps1Variable Identifier
+hi def link ps1Boolean Boolean
+hi def link ps1Constant Constant
+hi def link ps1BuiltIn StorageClass
+hi def link ps1Type Type
+hi def link ps1ScopeModifier StorageClass
+hi def link ps1Comment Comment
+hi def link ps1CommentTodo Todo
+hi def link ps1CommentDoc Tag
+hi def link ps1CDocParam Identifier
+hi def link ps1Operator Operator
+hi def link ps1Repeat Repeat
+hi def link ps1RepeatAndCmdlet Repeat
+hi def link ps1Keyword Keyword
+hi def link ps1KeywordAndCmdlet Keyword
+hi def link ps1Label Label
+
+let b:current_syntax = "ps1"
diff --git a/runtime/syntax/ps1xml.vim b/runtime/syntax/ps1xml.vim
new file mode 100644
index 0000000000..6ca9ed0d1b
--- /dev/null
+++ b/runtime/syntax/ps1xml.vim
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2013 Jun 24
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:ps1xml_cpo_save = &cpo
+set cpo&vim
+
+doau syntax xml
+unlet b:current_syntax
+
+syn case ignore
+syn include @ps1xmlScriptBlock <sfile>:p:h/ps1.vim
+unlet b:current_syntax
+
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<Script>"
+ \ matchgroup=xmlEndTag end="</Script>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<ScriptBlock>"
+ \ matchgroup=xmlEndTag end="</ScriptBlock>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<GetScriptBlock>"
+ \ matchgroup=xmlEndTag end="</GetScriptBlock>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<SetScriptBlock>"
+ \ matchgroup=xmlEndTag end="</SetScriptBlock>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+
+syn cluster xmlRegionHook add=ps1xmlScriptBlock
+
+let b:current_syntax = "ps1xml"
+
+let &cpo = s:ps1xml_cpo_save
+unlet s:ps1xml_cpo_save
+
diff --git a/runtime/syntax/psl.vim b/runtime/syntax/psl.vim
new file mode 100644
index 0000000000..ff6e833bc2
--- /dev/null
+++ b/runtime/syntax/psl.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: Property Specification Language (PSL)
+" Maintainer: Daniel Kho <daniel.kho@logik.haus>
+" Last Changed: 2021 Apr 17 by Daniel Kho
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read in VHDL syntax files
+runtime! syntax/vhdl.vim
+unlet b:current_syntax
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" case is not significant
+syn case ignore
+
+" Add ! character to keyword recognition.
+setlocal iskeyword+=33
+
+" PSL keywords
+syn keyword pslOperator A AF AG AX
+syn keyword pslOperator E EF EG EX
+syn keyword pslOperator F G U W X X!
+syn keyword pslOperator abort always assert assume async_abort
+syn keyword pslOperator before before! before!_ before_ bit bitvector boolean
+syn keyword pslOperator clock const countones cover
+syn keyword pslOperator default
+syn keyword pslOperator ended eventually!
+syn keyword pslOperator fairness fell for forall
+syn keyword pslOperator hdltype
+syn keyword pslOperator in inf inherit isunknown
+syn keyword pslOperator mutable
+syn keyword pslOperator never next next! next_a next_a! next_e next_e! next_event next_event! next_event_a next_event_a! next_event_e next_event_e! nondet nondet_vector numeric
+syn keyword pslOperator onehot onehot0
+syn keyword pslOperator property prev
+syn keyword pslOperator report restrict restrict! rose
+syn keyword pslOperator sequence stable string strong sync_abort
+syn keyword pslOperator union until until! until!_ until_
+syn keyword pslOperator vmode vpkg vprop vunit
+syn keyword pslOperator within
+"" Common keywords with VHDL
+"syn keyword pslOperator and is not or to
+
+" PSL operators
+syn match pslOperator "=>\||=>"
+syn match pslOperator "<-\|->"
+syn match pslOperator "@"
+
+
+"Modify the following as needed. The trade-off is performance versus functionality.
+syn sync minlines=600
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link pslSpecial Special
+hi def link pslStatement Statement
+hi def link pslCharacter Character
+hi def link pslString String
+hi def link pslVector Number
+hi def link pslBoolean Number
+hi def link pslTodo Todo
+hi def link pslFixme Fixme
+hi def link pslComment Comment
+hi def link pslNumber Number
+hi def link pslTime Number
+hi def link pslType Type
+hi def link pslOperator Operator
+hi def link pslError Error
+hi def link pslAttribute Special
+hi def link pslPreProc PreProc
+
+
+let b:current_syntax = "psl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
index 5aec2fe3d2..3427aa06c8 100644
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Python
" Maintainer: Zvezdan Petkovic <zpetkovic@acm.org>
-" Last Change: 2016 Oct 29
+" Last Change: 2021 Feb 15
" Credits: Neil Schemenauer <nas@python.ca>
" Dmitry Vasiliev
"
@@ -71,30 +71,17 @@ endif
" Keep Python keywords in alphabetical order inside groups for easy
" comparison with the table in the 'Python Language Reference'
-" https://docs.python.org/2/reference/lexical_analysis.html#keywords,
-" https://docs.python.org/3/reference/lexical_analysis.html#keywords.
+" https://docs.python.org/reference/lexical_analysis.html#keywords.
" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
" Exceptions come last at the end of each group (class and def below).
"
-" Keywords 'with' and 'as' are new in Python 2.6
-" (use 'from __future__ import with_statement' in Python 2.5).
+" The list can be checked using:
"
-" Some compromises had to be made to support both Python 3 and 2.
-" We include Python 3 features, but when a definition is duplicated,
-" the last definition takes precedence.
-"
-" - 'False', 'None', and 'True' are keywords in Python 3 but they are
-" built-ins in 2 and will be highlighted as built-ins below.
-" - 'exec' is a built-in in Python 3 and will be highlighted as
-" built-in below.
-" - 'nonlocal' is a keyword in Python 3 and will be highlighted.
-" - 'print' is a built-in in Python 3 and will be highlighted as
-" built-in below (use 'from __future__ import print_function' in 2)
-" - async and await were added in Python 3.5 and are soft keywords.
+" python3 -c 'import keyword, pprint; pprint.pprint(keyword.kwlist, compact=True)'
"
syn keyword pythonStatement False None True
-syn keyword pythonStatement as assert break continue del exec global
-syn keyword pythonStatement lambda nonlocal pass print return with yield
+syn keyword pythonStatement as assert break continue del global
+syn keyword pythonStatement lambda nonlocal pass return with yield
syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite
syn keyword pythonConditional elif else if
syn keyword pythonRepeat for while
@@ -103,7 +90,7 @@ syn keyword pythonException except finally raise try
syn keyword pythonInclude from import
syn keyword pythonAsync async await
-" Decorators (new in Python 2.4)
+" Decorators
" A dot must be allowed because of @MyClass.myfunc decorators.
syn match pythonDecorator "@" display contained
syn match pythonDecoratorName "@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
@@ -168,8 +155,7 @@ syn match pythonEscape "\\$"
" - 08e0 or 08j are highlighted,
"
" and so on, as specified in the 'Python Language Reference'.
-" https://docs.python.org/2/reference/lexical_analysis.html#numeric-literals
-" https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
+" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
if !exists("python_no_number_highlight")
" numbers (including longs and complex)
syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>"
@@ -186,37 +172,37 @@ endif
" Group the built-ins in the order in the 'Python Library Reference' for
" easier comparison.
-" https://docs.python.org/2/library/constants.html
-" https://docs.python.org/3/library/constants.html
-" http://docs.python.org/2/library/functions.html
-" http://docs.python.org/3/library/functions.html
-" http://docs.python.org/2/library/functions.html#non-essential-built-in-functions
-" http://docs.python.org/3/library/functions.html#non-essential-built-in-functions
+" https://docs.python.org/library/constants.html
+" http://docs.python.org/library/functions.html
" Python built-in functions are in alphabetical order.
+"
+" The list can be checked using:
+"
+" python3 -c 'import builtins, pprint; pprint.pprint(dir(builtins), compact=True)'
+"
+" The constants added by the `site` module are not listed below because they
+" should not be used in programs, only in interactive interpreter.
+" Similarly for some other attributes and functions `__`-enclosed from the
+" output of the above command.
+"
if !exists("python_no_builtin_highlight")
" built-in constants
" 'False', 'True', and 'None' are also reserved words in Python 3
syn keyword pythonBuiltin False True None
syn keyword pythonBuiltin NotImplemented Ellipsis __debug__
+ " constants added by the `site` module
+ syn keyword pythonBuiltin quit exit copyright credits license
" built-in functions
- syn keyword pythonBuiltin abs all any bin bool bytearray callable chr
- syn keyword pythonBuiltin classmethod compile complex delattr dict dir
- syn keyword pythonBuiltin divmod enumerate eval filter float format
- syn keyword pythonBuiltin frozenset getattr globals hasattr hash
- syn keyword pythonBuiltin help hex id input int isinstance
+ syn keyword pythonBuiltin abs all any ascii bin bool breakpoint bytearray
+ syn keyword pythonBuiltin bytes callable chr classmethod compile complex
+ syn keyword pythonBuiltin delattr dict dir divmod enumerate eval exec
+ syn keyword pythonBuiltin filter float format frozenset getattr globals
+ syn keyword pythonBuiltin hasattr hash help hex id input int isinstance
syn keyword pythonBuiltin issubclass iter len list locals map max
syn keyword pythonBuiltin memoryview min next object oct open ord pow
syn keyword pythonBuiltin print property range repr reversed round set
- syn keyword pythonBuiltin setattr slice sorted staticmethod str
- syn keyword pythonBuiltin sum super tuple type vars zip __import__
- " Python 2 only
- syn keyword pythonBuiltin basestring cmp execfile file
- syn keyword pythonBuiltin long raw_input reduce reload unichr
- syn keyword pythonBuiltin unicode xrange
- " Python 3 only
- syn keyword pythonBuiltin ascii bytes exec
- " non-essential built-in functions; Python 2 only
- syn keyword pythonBuiltin apply buffer coerce intern
+ syn keyword pythonBuiltin setattr slice sorted staticmethod str sum super
+ syn keyword pythonBuiltin tuple type vars zip __import__
" avoid highlighting attributes as builtins
syn match pythonAttribute /\.\h\w*/hs=s+1
\ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync
@@ -224,28 +210,27 @@ if !exists("python_no_builtin_highlight")
endif
" From the 'Python Library Reference' class hierarchy at the bottom.
-" http://docs.python.org/2/library/exceptions.html
-" http://docs.python.org/3/library/exceptions.html
+" http://docs.python.org/library/exceptions.html
if !exists("python_no_exception_highlight")
" builtin base exceptions (used mostly as base classes for other exceptions)
syn keyword pythonExceptions BaseException Exception
- syn keyword pythonExceptions ArithmeticError BufferError
- syn keyword pythonExceptions LookupError
- " builtin base exceptions removed in Python 3
- syn keyword pythonExceptions EnvironmentError StandardError
+ syn keyword pythonExceptions ArithmeticError BufferError LookupError
" builtin exceptions (actually raised)
- syn keyword pythonExceptions AssertionError AttributeError
- syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit
- syn keyword pythonExceptions ImportError IndentationError
- syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt
- syn keyword pythonExceptions MemoryError NameError NotImplementedError
- syn keyword pythonExceptions OSError OverflowError ReferenceError
- syn keyword pythonExceptions RuntimeError StopIteration SyntaxError
+ syn keyword pythonExceptions AssertionError AttributeError EOFError
+ syn keyword pythonExceptions FloatingPointError GeneratorExit ImportError
+ syn keyword pythonExceptions IndentationError IndexError KeyError
+ syn keyword pythonExceptions KeyboardInterrupt MemoryError
+ syn keyword pythonExceptions ModuleNotFoundError NameError
+ syn keyword pythonExceptions NotImplementedError OSError OverflowError
+ syn keyword pythonExceptions RecursionError ReferenceError RuntimeError
+ syn keyword pythonExceptions StopAsyncIteration StopIteration SyntaxError
syn keyword pythonExceptions SystemError SystemExit TabError TypeError
- syn keyword pythonExceptions UnboundLocalError UnicodeError
- syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError
+ syn keyword pythonExceptions UnboundLocalError UnicodeDecodeError
+ syn keyword pythonExceptions UnicodeEncodeError UnicodeError
syn keyword pythonExceptions UnicodeTranslateError ValueError
syn keyword pythonExceptions ZeroDivisionError
+ " builtin exception aliases for OSError
+ syn keyword pythonExceptions EnvironmentError IOError WindowsError
" builtin OS exceptions in Python 3
syn keyword pythonExceptions BlockingIOError BrokenPipeError
syn keyword pythonExceptions ChildProcessError ConnectionAbortedError
@@ -253,18 +238,13 @@ if !exists("python_no_exception_highlight")
syn keyword pythonExceptions ConnectionResetError FileExistsError
syn keyword pythonExceptions FileNotFoundError InterruptedError
syn keyword pythonExceptions IsADirectoryError NotADirectoryError
- syn keyword pythonExceptions PermissionError ProcessLookupError
- syn keyword pythonExceptions RecursionError StopAsyncIteration
- syn keyword pythonExceptions TimeoutError
- " builtin exceptions deprecated/removed in Python 3
- syn keyword pythonExceptions IOError VMSError WindowsError
+ syn keyword pythonExceptions PermissionError ProcessLookupError TimeoutError
" builtin warnings
syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning
syn keyword pythonExceptions ImportWarning PendingDeprecationWarning
- syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning
+ syn keyword pythonExceptions ResourceWarning RuntimeWarning
+ syn keyword pythonExceptions SyntaxWarning UnicodeWarning
syn keyword pythonExceptions UserWarning Warning
- " builtin warnings in Python 3
- syn keyword pythonExceptions ResourceWarning
endif
if exists("python_space_error_highlight")
diff --git a/runtime/syntax/r.vim b/runtime/syntax/r.vim
index 9e25dae363..a8100cfded 100644
--- a/runtime/syntax/r.vim
+++ b/runtime/syntax/r.vim
@@ -5,7 +5,7 @@
" Tom Payne <tom@tompayne.org>
" Contributor: Johannes Ranke <jranke@uni-bremen.de>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Wed Aug 01, 2018 10:10PM
+" Last Change: Sun Mar 28, 2021 01:47PM
" Filenames: *.R *.r *.Rhistory *.Rt
"
" NOTE: The highlighting of R functions might be defined in
@@ -53,12 +53,12 @@ syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):"
syn match rTodoParen contained "\(BUG\|FIXME\|NOTE\|TODO\)\s*(.\{-})\s*:" contains=rTodoKeyw,rTodoInfo transparent
syn keyword rTodoKeyw BUG FIXME NOTE TODO contained
syn match rTodoInfo "(\zs.\{-}\ze)" contained
-syn match rComment contains=@Spell,rCommentTodo,rTodoParen,rOBlock "#.*"
+syn match rComment contains=@Spell,rCommentTodo,rTodoParen "#.*"
" Roxygen
if g:r_syntax_hl_roxygen
" A roxygen block can start at the beginning of a file (first version) and
- " after a blank line (second version). It ends when a line that does not
+ " after a blank line (second version). It ends when a line appears that does not
" contain a roxygen comment. In the following comments, any line containing
" a roxygen comment marker (one or two hash signs # followed by a single
" quote ' and preceded only by whitespace) is called a roxygen line. A
@@ -71,6 +71,12 @@ if g:r_syntax_hl_roxygen
syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
+ " A title as part of a block is always at the beginning of the block, i.e.
+ " either at the start of a file or after a completely empty line.
+ syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
+ syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
+ syn match rOTitleTag contained "@title"
+
" When a roxygen block has a title and additional content, the title
" consists of one or more roxygen lines (as little as possible are matched),
" followed either by an empty roxygen line
@@ -87,16 +93,15 @@ if g:r_syntax_hl_roxygen
syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
- " A title as part of a block is always at the beginning of the block, i.e.
- " either at the start of a file or after a completely empty line.
- syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
- syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
- syn match rOTitleTag contained "@title"
-
syn match rOCommentKey "^\s*#\{1,2}'" contained
- syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold
+ syn region rOExamples start="^\s*#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold
+
+ " R6 classes may contain roxygen lines independent of roxygen blocks
+ syn region rOR6Class start=/R6Class(/ end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold
+ syn match rOR6Block "#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained
+ syn match rOR6Block "^\s*#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained
- " rOTag list generated from the lists in
+ " rOTag list originally generated from the lists that were available in
" https://github.com/klutometis/roxygen/R/rd.R and
" https://github.com/klutometis/roxygen/R/namespace.R
" using s/^ \([A-Za-z0-9]*\) = .*/ syn match rOTag contained "@\1"/
@@ -155,7 +160,10 @@ if g:r_syntax_hl_roxygen
syn match rOTag contained "@S3method"
syn match rOTag contained "@useDynLib"
" other
+ syn match rOTag contained "@eval"
syn match rOTag contained "@include"
+ syn match rOTag contained "@includeRmd"
+ syn match rOTag contained "@order"
endif
@@ -186,6 +194,11 @@ syn match rSpecial display contained "\\U\x\{1,8}"
syn match rSpecial display contained "\\u{\x\{1,4}}"
syn match rSpecial display contained "\\U{\x\{1,8}}"
+" Raw string
+syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)(/ end=/)\z2\z1/ keepend
+syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\){/ end=/}\z2\z1/ keepend
+syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)\[/ end=/\]\z2\z1/ keepend
+
" Statement
syn keyword rStatement break next return
syn keyword rConditional if else
@@ -354,6 +367,8 @@ hi def link rOperator Operator
hi def link rOpError Error
hi def link rParenError Error
hi def link rPreProc PreProc
+hi def link rRawString String
+hi def link rRawStrDelim Delimiter
hi def link rRepeat Repeat
hi def link rSpecial SpecialChar
hi def link rStatement Statement
@@ -366,6 +381,7 @@ if g:r_syntax_hl_roxygen
hi def link rOTitleBlock Title
hi def link rOBlock Comment
hi def link rOBlockNoTitle Comment
+ hi def link rOR6Block Comment
hi def link rOTitle Title
hi def link rOCommentKey Comment
hi def link rOExamples SpecialComment
diff --git a/runtime/syntax/raku.vim b/runtime/syntax/raku.vim
new file mode 100644
index 0000000000..1bf9b4994c
--- /dev/null
+++ b/runtime/syntax/raku.vim
@@ -0,0 +1,1971 @@
+" Vim syntax file
+" Language: Raku
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Homepage: https://github.com/Raku/vim-raku
+" Bugs/requests: https://github.com/Raku/vim-raku/issues
+" Last Change: 2021-04-16
+
+" Contributors: Luke Palmer <fibonaci@babylonia.flatirons.org>
+" Moritz Lenz <moritz@faui2k3.org>
+" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+"
+" This is a big undertaking.
+"
+" The ftdetect/raku.vim file in this repository takes care of setting the
+" right filetype for Raku files. To set it explicitly you can also add this
+" line near the bottom of your source file:
+" # vim: filetype=raku
+
+" TODO:
+" * Go over the list of keywords/types to see what's deprecated/missing
+" * Add more support for folding (:help syn-fold)
+"
+" If you want to have Pir code inside Q:PIR// strings highlighted, do:
+" let raku_embedded_pir=1
+"
+" The above requires pir.vim, which you can find in Parrot's repository:
+" https://github.com/parrot/parrot/tree/master/editor
+"
+" To highlight Perl 5 regexes (m:P5//):
+" let raku_perl5_regexes=1
+"
+" To enable folding:
+" let raku_fold=1
+
+if version < 704 | throw "raku.vim uses regex syntax which Vim <7.4 doesn't support. Try 'make fix_old_vim' in the vim-perl repository." | endif
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Patterns which will be interpolated by the preprocessor (tools/preproc.pl):
+"
+" @@IDENT_NONDIGIT@@ "[A-Za-z_\xC0-\xFF]"
+" @@IDENT_CHAR@@ "[A-Za-z_\xC0-\xFF0-9]"
+" @@IDENTIFIER@@ "\%(@@IDENT_NONDIGIT@@\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\@=\)*\)"
+" @@IDENTIFIER_START@@ "@@IDENT_CHAR@@\@1<!\%(@@IDENT_NONDIGIT@@[-']\)\@2<!"
+" @@IDENTIFIER_END@@ "\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\)\@!"
+" @@METAOP@@ #\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+#
+" @@ADVERBS@@ "\%(\_s*:!\?@@IDENTIFIER@@\%(([^)]*)\)\?\)*"
+"
+" Same but escaped, for use in string eval
+" @@IDENT_NONDIGIT_Q@@ "[A-Za-z_\\xC0-\\xFF]"
+" @@IDENT_CHAR_Q@@ "[A-Za-z_\\xC0-\\xFF0-9]"
+" @@IDENTIFIER_Q@@ "\\%(@@IDENT_NONDIGIT_Q@@\\%(@@IDENT_CHAR_Q@@\\|[-']@@IDENT_NONDIGIT_Q@@\\@=\\)*\\)"
+" @@IDENTIFIER_START_Q@@ "@@IDENT_CHAR_Q@@\\@1<!\\%(@@IDENT_NONDIGIT_Q@@[-']\\)\\@2<!"
+" @@IDENTIFIER_END_Q@@ "\\%(@@IDENT_CHAR_Q@@\\|[-']@@IDENT_NONDIGIT_Q@@\\)\\@!"
+
+" Identifiers (subroutines, methods, constants, classes, roles, etc)
+syn match rakuIdentifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+
+let s:keywords = {
+ \ "rakuInclude": [
+ \ "use require import unit",
+ \ ],
+ \ "rakuConditional": [
+ \ "if else elsif unless with orwith without once",
+ \ ],
+ \ "rakuVarStorage": [
+ \ "let my our state temp has constant",
+ \ ],
+ \ "rakuRepeat": [
+ \ "for loop repeat while until gather given",
+ \ "supply react race hyper lazy quietly",
+ \ ],
+ \ "rakuFlowControl": [
+ \ "take take-rw do when next last redo return return-rw",
+ \ "start default exit make continue break goto leave",
+ \ "proceed succeed whenever emit done",
+ \ ],
+ \ "rakuClosureTrait": [
+ \ "BEGIN CHECK INIT FIRST ENTER LEAVE KEEP",
+ \ "UNDO NEXT LAST PRE POST END CATCH CONTROL",
+ \ "DOC QUIT CLOSE COMPOSE",
+ \ ],
+ \ "rakuException": [
+ \ "die fail try warn",
+ \ ],
+ \ "rakuPragma": [
+ \ "MONKEY-GUTS MONKEY-SEE-NO-EVAL MONKEY-TYPING MONKEY",
+ \ "experimental fatal isms lib newline nqp precompilation",
+ \ "soft strict trace variables worries",
+ \ ],
+ \ "rakuOperator": [
+ \ "div xx x mod also leg cmp before after eq ne le lt not",
+ \ "gt ge eqv ff fff and andthen or xor orelse lcm gcd o",
+ \ "unicmp notandthen minmax",
+ \ ],
+ \ "rakuType": [
+ \ "int int1 int2 int4 int8 int16 int32 int64",
+ \ "rat rat1 rat2 rat4 rat8 rat16 rat32 rat64",
+ \ "buf buf1 buf2 buf4 buf8 buf16 buf32 buf64",
+ \ "blob blob1 blob2 blob4 blob8 blob16 blob32 blob64",
+ \ "uint uint1 uint2 uint4 uint8 uint16 uint32 bit bool",
+ \ "uint64 utf8 utf16 utf32 bag set mix complex",
+ \ "num num32 num64 long longlong Pointer size_t str void",
+ \ "ulong ulonglong ssize_t atomicint",
+ \ ],
+\ }
+
+" These can be immediately followed by parentheses
+let s:types = [
+ \ "Object Any Cool Junction Whatever Capture Match",
+ \ "Signature Proxy Matcher Package Module Class",
+ \ "Grammar Scalar Array Hash KeyHash KeySet KeyBag",
+ \ "Pair List Seq Range Set Bag Map Mapping Void Undef",
+ \ "Failure Exception Code Block Routine Sub Macro",
+ \ "Method Submethod Regex Str Blob Char Byte Parcel",
+ \ "Codepoint Grapheme StrPos StrLen Version Num",
+ \ "Complex Bit True False Order Same Less More",
+ \ "Increasing Decreasing Ordered Callable AnyChar",
+ \ "Positional Associative Ordering KeyExtractor",
+ \ "Comparator OrderingPair IO KitchenSink Role",
+ \ "Int Rat Buf UInt Abstraction Numeric Real",
+ \ "Nil Mu SeekFromBeginning SeekFromEnd SeekFromCurrent",
+\ ]
+
+" We explicitly enumerate the alphanumeric infix operators allowed after [RSXZ]
+" to avoid matching package names that start with those letters.
+let s:alpha_metaops = [
+ \ "div mod gcd lcm xx x does but cmp leg eq ne gt ge lt le before after eqv",
+ \ "min max not so andthen and or orelse unicmp coll minmax",
+\ ]
+let s:words_space = join(s:alpha_metaops, " ")
+let s:temp = split(s:words_space)
+let s:alpha_metaops_or = join(s:temp, "\\|")
+
+" We don't use "syn keyword" here because that always has higher priority
+" than matches/regions, which would prevent these words from matching as
+" autoquoted strings before "=>".
+syn match rakuKeywordStart display "\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!\)\@=[A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!"
+ \ nextgroup=rakuAttention,rakuVariable,rakuInclude,rakuConditional,rakuVarStorage,rakuRepeat,rakuFlowControl,rakuClosureTrait,rakuException,rakuNumber,rakuPragma,rakuType,rakuOperator,rakuIdentifier
+
+for [s:group, s:words_list] in items(s:keywords)
+ let s:words_space = join(s:words_list, " ")
+ let s:temp = split(s:words_space)
+ let s:words = join(s:temp, "\\|")
+ exec "syn match ". s:group ." display \"[.^]\\@1<!\\%(". s:words . "\\)(\\@!\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
+endfor
+
+let s:words_space = join(s:types, " ")
+let s:temp = split(s:words_space)
+let s:words = join(s:temp, "\\|")
+exec "syn match rakuType display \"\\%(". s:words . "\\)\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
+unlet s:group s:words_list s:keywords s:types s:words_space s:temp s:words
+
+syn match rakuPreDeclare display "[.^]\@1<!\<\%(multi\|proto\|only\)\>" nextgroup=rakuDeclare,rakuIdentifier skipwhite skipempty
+syn match rakuDeclare display "[.^]\@1<!\<\%(macro\|sub\|submethod\|method\|module\|class\|role\|package\|enum\|grammar\|slang\|subset\)\>" nextgroup=rakuIdentifier skipwhite skipempty
+syn match rakuDeclareRegex display "[.^]\@1<!\<\%(regex\|rule\|token\)\>" nextgroup=rakuRegexName skipwhite skipempty
+
+syn match rakuTypeConstraint display "\%([.^]\|^\s*\)\@<!\a\@=\%(does\|as\|but\|trusts\|of\|returns\|handles\|where\|augment\|supersede\)\>"
+syn match rakuTypeConstraint display "\%([.^]\|^\s*\)\@<![A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!is\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuProperty
+syn match rakuProperty display "\a\@=\%(signature\|context\|also\|shape\|prec\|irs\|ofs\|ors\|export\|deep\|binary\|unary\|reparsed\|rw\|parsed\|cached\|readonly\|defequiv\|will\|ref\|copy\|inline\|tighter\|looser\|equiv\|assoc\|required\|DEPRECATED\|raw\|repr\|dynamic\|hidden-from-backtrace\|nodal\|pure\)" contained
+
+" packages, must come after all the keywords
+syn match rakuIdentifier display "\%(::\)\@2<=\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)*"
+syn match rakuIdentifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(::\)\@="
+
+" The sigil in ::*Package
+syn match rakuPackageTwigil display "\%(::\)\@2<=\*"
+
+" some standard packages
+syn match rakuType display "\%(::\)\@2<!\%(SeekType\%(::SeekFromBeginning\|::SeekFromCurrent\|::SeekFromEnd\)\|Order\%(::Same\|::More\|::Less\)\?\|Bool\%(::True\|::False\)\?\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!"
+
+" Don't put a "\+" at the end of the character class. That makes it so
+" greedy that the "%" " in "+%foo" won't be allowed to match as a sigil,
+" among other things
+syn match rakuOperator display "[-+/*~?|=^!%&,<>».;\\∈∉∋∌∩∪≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖∅∘]"
+syn match rakuOperator display "\%(:\@1<!::\@2!\|::=\|\.::\)"
+" these require whitespace on the left side
+syn match rakuOperator display "\%(\s\|^\)\@1<=\%(xx=\)"
+" index overloading
+syn match rakuOperator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)"
+
+" Reduce metaoperators like [+]
+syn match rakuReduceOp display "\%(^\|\s\|(\)\@1<=!*\%([RSXZ\[]\)*[&RSXZ]\?\[\+(\?\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+)\?]\+"
+syn match rakuSetOp display "R\?(\%([-^.+|&]\|[<>][=+]\?\|cont\|elem\))"
+
+" Reverse, cross, and zip metaoperators
+exec "syn match rakuRSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:alnum:][:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""
+
+syn match rakuBlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@="
+
+syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?Inf\|NaN\)"
+syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?\%(\%(\d\|__\@!\)*[._]\@1<!\.\)\?_\@!\%(\d\|_\)\+_\@1<!\%([eE]-\?_\@!\%(\d\|_\)\+\)\?i\?"
+syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?0[obxd]\@=" nextgroup=rakuOctBase,rakuBinBase,rakuHexBase,rakuDecBase
+syn match rakuOctBase display "o" contained nextgroup=rakuOctNumber
+syn match rakuBinBase display "b" contained nextgroup=rakuBinNumber
+syn match rakuHexBase display "x" contained nextgroup=rakuHexNumber
+syn match rakuDecBase display "d" contained nextgroup=rakuDecNumber
+syn match rakuOctNumber display "[0-7][0-7_]*" contained
+syn match rakuBinNumber display "[01][01_]*" contained
+syn match rakuHexNumber display "\x[[:xdigit:]_]*" contained
+syn match rakuDecNumber display "\d[[:digit:]_]*" contained
+
+syn match rakuVersion display "\<v\d\+\%(\.\%(\*\|\d\+\)\)*+\?"
+
+" Contextualizers
+syn match rakuContext display "\<\%(item\|list\|slice\|hash\)\>"
+syn match rakuContext display "\%(\$\|@\|%\|&\)(\@="
+
+" Quoting
+
+" one cluster for every quote adverb
+syn cluster rakuInterp_scalar
+ \ add=rakuInterpScalar
+
+syn cluster rakuInterp_array
+ \ add=rakuInterpArray
+
+syn cluster rakuInterp_hash
+ \ add=rakuInterpHash
+
+syn cluster rakuInterp_function
+ \ add=rakuInterpFunction
+
+syn cluster rakuInterp_closure
+ \ add=rakuInterpClosure
+
+syn cluster rakuInterp_q
+ \ add=rakuEscQQ
+ \ add=rakuEscBackSlash
+
+syn cluster rakuInterp_backslash
+ \ add=@rakuInterp_q
+ \ add=rakuEscape
+ \ add=rakuEscOpenCurly
+ \ add=rakuEscCodePoint
+ \ add=rakuEscHex
+ \ add=rakuEscOct
+ \ add=rakuEscOctOld
+ \ add=rakuEscNull
+
+syn cluster rakuInterp_qq
+ \ add=@rakuInterp_scalar
+ \ add=@rakuInterp_array
+ \ add=@rakuInterp_hash
+ \ add=@rakuInterp_function
+ \ add=@rakuInterp_closure
+ \ add=@rakuInterp_backslash
+ \ add=rakuMatchVarSigil
+
+syn region rakuInterpScalar
+ \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\|\%(\d\+\|!\|/\|¢\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpScalar
+ \ matchgroup=rakuContext
+ \ start="\$\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpArray
+ \ start="\ze\z(@\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpArray
+ \ matchgroup=rakuContext
+ \ start="@\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpHash
+ \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpHash
+ \ matchgroup=rakuContext
+ \ start="%\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpFunction
+ \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpFunction
+ \ matchgroup=rakuContext
+ \ start="&\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpClosure
+ \ start="\\\@1<!{}\@!"
+ \ skip="{[^}]*}"
+ \ end="}"
+ \ contained keepend
+ \ contains=TOP
+
+" generic escape
+syn match rakuEscape display "\\\S" contained
+
+" escaped closing delimiters
+syn match rakuEscQuote display "\\'" contained
+syn match rakuEscDoubleQuote display "\\\"" contained
+syn match rakuEscCloseAngle display "\\>" contained
+syn match rakuEscCloseFrench display "\\»" contained
+syn match rakuEscBackTick display "\\`" contained
+syn match rakuEscForwardSlash display "\\/" contained
+syn match rakuEscVerticalBar display "\\|" contained
+syn match rakuEscExclamation display "\\!" contained
+syn match rakuEscComma display "\\," contained
+syn match rakuEscDollar display "\\\$" contained
+syn match rakuEscCloseCurly display "\\}" contained
+syn match rakuEscCloseBracket display "\\\]" contained
+
+" matches :key, :!key, :$var, :key<var>, etc
+" Since we don't know in advance how the adverb ends, we use a trick.
+" Consume nothing with the start pattern (\ze at the beginning),
+" while capturing the whole adverb into \z1 and then putting it before
+" the match start (\zs) of the end pattern.
+syn region rakuAdverb
+ \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)"
+ \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@1<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\)\|\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+" <words>
+" Distinguishing this from the "less than" operator is tricky. For now,
+" it matches if any of the following is true:
+"
+" * There is whitespace missing on either side of the "<", since
+" people tend to put spaces around "less than". We make an exception
+" for " = < ... >" assignments though.
+" * It comes after "enum", "for", "any", "all", or "none"
+" * It's the first or last thing on a line (ignoring whitespace)
+" * It's preceded by "(\s*" or "=\s\+"
+" * It's empty and terminated on the same line (e.g. <> and < >)
+"
+" It never matches when:
+"
+" * Preceded by [<+~=!] (e.g. <<foo>>, =<$foo>, * !< 3)
+" * Followed by [-=] (e.g. <--, <=, <==, <->)
+syn region rakuStringAngle
+ \ matchgroup=rakuQuote
+ \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="\%(\s\|[<+~=!]\)\@<!<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="[<+~=!]\@1<!<\%(\s\|<\|=>\|\%([=-]\{1,2}>\|[=-]\{1,2}\)\)\@!"
+ \ start="\%(^\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="[<+~=!]\@1<!<\%(\s*$\)\@="
+ \ start="\%((\s*\|=\s\+\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="<\%(\s*>\)\@="
+ \ skip="\\\@1<!\\>"
+ \ end=">"
+ \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle
+
+syn region rakuStringAngleFixed
+ \ matchgroup=rakuQuote
+ \ start="<"
+ \ skip="\\\@1<!\\>"
+ \ end=">"
+ \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle
+ \ contained
+
+syn region rakuInnerAnglesOne
+ \ matchgroup=rakuStringAngle
+ \ start="\\\@1<!<"
+ \ skip="\\\@1<!\\>"
+ \ end=">"
+ \ transparent contained
+ \ contains=rakuInnerAnglesOne
+
+" <<words>>
+syn region rakuStringAngles
+ \ matchgroup=rakuQuote
+ \ start="<<=\@!"
+ \ skip="\\\@1<!\\>"
+ \ end=">>"
+ \ contains=rakuInnerAnglesTwo,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseAngle,rakuAdverb,rakuStringSQ,rakuStringDQ
+
+syn region rakuInnerAnglesTwo
+ \ matchgroup=rakuStringAngles
+ \ start="<<"
+ \ skip="\\\@1<!\\>"
+ \ end=">>"
+ \ transparent contained
+ \ contains=rakuInnerAnglesTwo
+
+" «words»
+syn region rakuStringFrench
+ \ matchgroup=rakuQuote
+ \ start="«"
+ \ skip="\\\@1<!\\»"
+ \ end="»"
+ \ contains=rakuInnerFrench,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseFrench,rakuAdverb,rakuStringSQ,rakuStringDQ
+
+syn region rakuInnerFrench
+ \ matchgroup=rakuStringFrench
+ \ start="\\\@1<!«"
+ \ skip="\\\@1<!\\»"
+ \ end="»"
+ \ transparent contained
+ \ contains=rakuInnerFrench
+
+" Hyperops. They need to come after "<>" and "«»" strings in order to override
+" them, but before other types of strings, to avoid matching those delimiters
+" as parts of hyperops.
+syn match rakuHyperOp display #[^[:digit:][{('",:[:space:]][^[{('",:[:space:]]*\%(«\|<<\)#
+syn match rakuHyperOp display "«\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+[«»]"
+syn match rakuHyperOp display "»\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(«\|»\?\)"
+syn match rakuHyperOp display "<<\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|>>\)"
+syn match rakuHyperOp display ">>\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|\%(>>\)\?\)"
+
+" 'string'
+syn region rakuStringSQ
+ \ matchgroup=rakuQuote
+ \ start="'"
+ \ skip="\\\@1<!\\'"
+ \ end="'"
+ \ contains=@rakuInterp_q,rakuEscQuote
+ \ keepend extend
+
+" "string"
+syn region rakuStringDQ
+ \ matchgroup=rakuQuote
+ \ start=+"+
+ \ skip=+\\\@1<!\\"+
+ \ end=+"+
+ \ contains=@rakuInterp_qq,rakuEscDoubleQuote
+ \ keepend extend
+
+" Q// and friends
+
+syn match rakuQuoteQStart display "\%(:\|\%(sub\|role\)\s\)\@5<![Qq]\@=" nextgroup=rakuQuoteQ,rakuQuoteQ_q,rakuQuoteQ_qww,rakuQuoteQ_qq,rakuQuoteQ_to,rakuQuoteQ_qto,rakuQuoteQ_qqto,rakuIdentifier
+syn match rakuQuoteQ display "Q\%(qq\|ww\|[abcfhpsqvwx]\)\?[A-Za-z(]\@!" nextgroup=rakuPairsQ skipwhite skipempty contained
+syn match rakuQuoteQ_q display "q[abcfhpsvwx]\?[A-Za-z(]\@!" nextgroup=rakuPairsQ_q skipwhite skipempty contained
+syn match rakuQuoteQ_qww display "qww[A-Za-z(]\@!" nextgroup=rakuPairsQ_qww skipwhite skipempty contained
+syn match rakuQuoteQ_qq display "qq\%([pwx]\|ww\)\?[A-Za-z(]\@!" nextgroup=rakuPairsQ_qq skipwhite skipempty contained
+syn match rakuQuoteQ_to display "Qto[A-Za-z(]\@!" nextgroup=rakuStringQ_to skipwhite skipempty contained
+syn match rakuQuoteQ_qto display "qto[A-Za-z(]\@!" nextgroup=rakuStringQ_qto skipwhite skipempty contained
+syn match rakuQuoteQ_qqto display "qqto[A-Za-z(]\@!" nextgroup=rakuStringQ_qqto skipwhite skipempty contained
+syn match rakuQuoteQ_qto display "q\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=rakuPairsQ_qto skipwhite skipempty contained
+syn match rakuQuoteQ_qqto display "qq\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=rakuPairsQ_qqto skipwhite skipempty contained
+syn match rakuPairsQ "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ
+syn match rakuPairsQ_q "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_q
+syn match rakuPairsQ_qww "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qww
+syn match rakuPairsQ_qq "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qq
+syn match rakuPairsQ_qto "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qto
+syn match rakuPairsQ_qqto "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qqto
+
+
+if exists("raku_embedded_pir") || exists("raku_extended_all")
+ syn include @rakuPIR syntax/pir.vim
+ syn match rakuQuote_QPIR display "Q[A-Za-z(]\@!\%(\_s*:PIR\)\@=" nextgroup=rakuPairsQ_PIR skipwhite skipempty
+ syn match rakuPairs_QPIR contained "\_s*:PIR" transparent skipwhite skipempty nextgroup=rakuStringQ_PIR
+endif
+
+" hardcoded set of delimiters
+let s:plain_delims = [
+ \ ["DQ", "\\\"", "\\\"", "rakuEscDoubleQuote", "\\\\\\@1<!\\\\\\\""],
+ \ ["SQ", "'", "'", "rakuEscQuote", "\\\\\\@1<!\\\\'"],
+ \ ["Slash", "/", "/", "rakuEscForwardSlash", "\\\\\\@1<!\\\\/"],
+ \ ["BackTick", "`", "`", "rakuEscBackTick", "\\\\\\@1<!\\\\`"],
+ \ ["Bar", "|", "|", "rakuEscVerticalBar", "\\\\\\@1<!\\\\|"],
+ \ ["Exclamation", "!", "!", "rakuEscExclamation", "\\\\\\@1<!\\\\!"],
+ \ ["Comma", ",", ",", "rakuEscComma", "\\\\\\@1<!\\\\,"],
+ \ ["Dollar", "\\$", "\\$", "rakuEscDollar", "\\\\\\@1<!\\\\\\$"],
+\ ]
+let s:bracketing_delims = [
+ \ ["Curly", "{", "}", "rakuEscCloseCurly", "\\%(\\\\\\@1<!\\\\}\\|{[^}]*}\\)"],
+ \ ["Angle", "<", ">", "rakuEscCloseAngle", "\\%(\\\\\\@1<!\\\\>\\|<[^>]*>\\)"],
+ \ ["French", "«", "»", "rakuEscCloseFrench", "\\%(\\\\\\@1<!\\\\»\\|«[^»]*»\\)"],
+ \ ["Bracket", "\\\[", "]", "rakuEscCloseBracket", "\\%(\\\\\\@1<!\\\\]\\|\\[^\\]]*]\\)"],
+ \ ["Paren", "\\s\\@1<=(", ")", "rakuEscCloseParen", "\\%(\\\\\\@1<!\\\\)\\|([^)]*)\\)"],
+\ ]
+let s:all_delims = s:plain_delims + s:bracketing_delims
+
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:all_delims
+ exec "syn region rakuStringQ matchgroup=rakuQuote start=\"".s:start_delim."\" end=\"".s:end_delim."\" contained"
+ exec "syn region rakuStringQ_q matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_q,".s:end_group." contained"
+ exec "syn region rakuStringQ_qww matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_q,rakuStringSQ,rakuStringDQ".s:end_group." contained"
+ exec "syn region rakuStringQ_qq matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_qq,".s:end_group." contained"
+ exec "syn region rakuStringQ_to matchgroup=rakuQuote start=\"".s:start_delim."\\z([^".s:end_delim."]\\+\\)".s:end_delim."\" end=\"^\\s*\\z1$\" contained"
+ exec "syn region rakuStringQ_qto matchgroup=rakuQuote start=\"".s:start_delim."\\z([^".s:end_delim."]\\+\\)".s:end_delim."\" skip=\"".s:skip."\" end=\"^\\s*\\z1$\" contains=@rakuInterp_q,".s:end_group." contained"
+ exec "syn region rakuStringQ_qqto matchgroup=rakuQuote start=\"".s:start_delim."\\z(\[^".s:end_delim."]\\+\\)".s:end_delim."\" skip=\"".s:skip."\" end=\"^\\s*\\z1$\" contains=@rakuInterp_qq,".s:end_group." contained"
+
+ if exists("raku_embedded_pir") || exists("raku_extended_all")
+ exec "syn region rakuStringQ_PIR matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuPIR,".s:end_group." contained"
+ endif
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip s:plain_delims s:all_delims
+
+" :key
+syn match rakuOperator display ":\@1<!::\@!!\?" nextgroup=rakuKey,rakuStringAngleFixed,rakuStringAngles,rakuStringFrench
+syn match rakuKey display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" contained nextgroup=rakuStringAngleFixed,rakuStringAngles,rakuStringFrench
+
+" Regexes and grammars
+
+syn match rakuRegexName display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?" nextgroup=rakuRegexBlockCrap skipwhite skipempty contained
+syn match rakuRegexBlockCrap "[^{]*" nextgroup=rakuRegexBlock skipwhite skipempty transparent contained
+
+syn region rakuRegexBlock
+ \ matchgroup=rakuNormal
+ \ start="{"
+ \ end="}"
+ \ contained
+ \ contains=@rakuRegexen,@rakuVariables
+
+" Perl 6 regex bits
+
+syn cluster rakuRegexen
+ \ add=rakuRxMeta
+ \ add=rakuRxEscape
+ \ add=rakuEscCodePoint
+ \ add=rakuEscHex
+ \ add=rakuEscOct
+ \ add=rakuEscNull
+ \ add=rakuRxAnchor
+ \ add=rakuRxCapture
+ \ add=rakuRxGroup
+ \ add=rakuRxAlternation
+ \ add=rakuRxBoundary
+ \ add=rakuRxAdverb
+ \ add=rakuRxAdverbArg
+ \ add=rakuRxStorage
+ \ add=rakuRxAssertion
+ \ add=rakuRxAssertGroup
+ \ add=rakuRxQuoteWords
+ \ add=rakuRxClosure
+ \ add=rakuRxStringSQ
+ \ add=rakuRxStringDQ
+ \ add=rakuComment
+ \ add=rakuBracketComment
+ \ add=rakuMatchVarSigil
+
+syn match rakuRxMeta display contained ".\%([A-Za-z_\xC0-\xFF0-9]\|\s\)\@1<!"
+syn match rakuRxAnchor display contained "[$^]"
+syn match rakuRxEscape display contained "\\\S"
+syn match rakuRxCapture display contained "[()]"
+syn match rakuRxAlternation display contained "|"
+syn match rakuRxRange display contained "\.\."
+
+" misc escapes
+syn match rakuEscOctOld display "\\[1-9]\d\{1,2}" contained
+syn match rakuEscNull display "\\0\d\@!" contained
+syn match rakuEscCodePoint display "\\[cC]" contained nextgroup=rakuCodePoint
+syn match rakuEscHex display "\\[xX]" contained nextgroup=rakuHexSequence
+syn match rakuEscOct display "\\o" contained nextgroup=rakuOctSequence
+syn match rakuEscQQ display "\\qq" contained nextgroup=rakuQQSequence
+syn match rakuEscOpenCurly display "\\{" contained
+syn match rakuEscHash display "\\#" contained
+syn match rakuEscBackSlash display "\\\\" contained
+
+syn region rakuQQSequence
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ skip="\[[^\]]*]"
+ \ end="]"
+ \ contained transparent
+ \ contains=@rakuInterp_qq
+
+syn match rakuCodePoint display "\%(\d\+\|\S\)" contained
+syn region rakuCodePoint
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+syn match rakuHexSequence display "\x\+" contained
+syn region rakuHexSequence
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+syn match rakuOctSequence display "\o\+" contained
+syn region rakuOctSequence
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+" $<match>, @<match>
+syn region rakuMatchVarSigil
+ \ matchgroup=rakuVariable
+ \ start="[$@]\%(<<\@!\)\@="
+ \ end=">\@1<="
+ \ contains=rakuMatchVar
+
+syn region rakuMatchVar
+ \ matchgroup=rakuTwigil
+ \ start="<"
+ \ end=">"
+ \ contained
+
+syn region rakuRxClosure
+ \ matchgroup=rakuNormal
+ \ start="{"
+ \ end="}"
+ \ contained
+ \ containedin=rakuRxClosure
+ \ contains=TOP
+syn region rakuRxGroup
+ \ matchgroup=rakuStringSpecial2
+ \ start="\["
+ \ end="]"
+ \ contained
+ \ contains=@rakuRegexen,@rakuVariables,rakuMatchVarSigil
+syn region rakuRxAssertion
+ \ matchgroup=rakuStringSpecial2
+ \ start="<\%(?\?\%(before\|after\)\|\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\)\|[+?*]\)\?"
+ \ end=">"
+ \ contained
+ \ contains=@rakuRegexen,rakuIdentifier,@rakuVariables,rakuRxCharClass,rakuRxAssertCall
+syn region rakuRxAssertGroup
+ \ matchgroup=rakuStringSpecial2
+ \ start="<\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\["
+ \ skip="\\\@1<!\\]"
+ \ end="]"
+ \ contained
+syn match rakuRxAssertCall display "\%(::\|\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)" contained nextgroup=rakuRxAssertArgs
+syn region rakuRxAssertArgs
+ \ start="("
+ \ end=")"
+ \ contained keepend
+ \ contains=TOP
+syn region rakuRxAssertArgs
+ \ start=":"
+ \ end="\ze>"
+ \ contained keepend
+ \ contains=TOP
+syn match rakuRxBoundary display contained "\%([«»]\|<<\|>>\)"
+syn region rakuRxCharClass
+ \ matchgroup=rakuStringSpecial2
+ \ start="\%(<[-!+?]\?\)\@2<=\["
+ \ skip="\\]"
+ \ end="]"
+ \ contained
+ \ contains=rakuRxRange,rakuRxEscape,rakuEscHex,rakuEscOct,rakuEscCodePoint,rakuEscNull
+syn region rakuRxQuoteWords
+ \ matchgroup=rakuStringSpecial2
+ \ start="<\s"
+ \ end="\s\?>"
+ \ contained
+syn region rakuRxAdverb
+ \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+syn region rakuRxAdverbArg
+ \ start="\%(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\@<=("
+ \ skip="([^)]\{-})"
+ \ end=")"
+ \ contained
+ \ keepend
+ \ contains=TOP
+syn region rakuRxStorage
+ \ matchgroup=rakuOperator
+ \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@="
+ \ end="$"
+ \ contains=TOP
+ \ contained
+ \ keepend
+
+" 'string' inside a regex
+syn region rakuRxStringSQ
+ \ matchgroup=rakuQuote
+ \ start="'"
+ \ skip="\\\@1<!\\'"
+ \ end="'"
+ \ contained
+ \ contains=rakuEscQuote,rakuEscBackSlash
+
+" "string" inside a regex
+syn region rakuRxStringDQ
+ \ matchgroup=rakuQuote
+ \ start=+"+
+ \ skip=+\\\@1<!\\"+
+ \ end=+"+
+ \ contained
+ \ contains=rakuEscDoubleQuote,rakuEscBackSlash,@rakuInterp_qq
+
+" $!, $var, $!var, $::var, $package::var $*::package::var, etc
+" Thus must come after the matches for the "$" regex anchor, but before
+" the match for the $ regex delimiter
+syn cluster rakuVariables
+ \ add=rakuVarSlash
+ \ add=rakuVarExclam
+ \ add=rakuVarMatch
+ \ add=rakuVarNum
+ \ add=rakuVariable
+
+syn match rakuBareSigil display "[@$%&]\%(\s*\%([,)}=]\|where\>\)\)\@="
+syn match rakuVarSlash display "\$/"
+syn match rakuVarExclam display "\$!"
+syn match rakuVarMatch display "\$¢"
+syn match rakuVarNum display "\$\d\+"
+syn match rakuVariable display "self"
+syn match rakuVariable display "[@$%&]\?[@&$%]\$*\%(::\|\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\)\|[A-Za-z_\xC0-\xFF]\)\@=" nextgroup=rakuTwigil,rakuVarName,rakuPackageScope
+syn match rakuVarName display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" nextgroup=rakuPostHyperOp contained
+syn match rakuClose display "[\])]" transparent nextgroup=rakuPostHyperOp
+syn match rakuPostHyperOp display "\%(»\|>>\)" contained
+syn match rakuTwigil display "\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=" nextgroup=rakuPackageScope,rakuVarName contained
+syn match rakuPackageScope display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?::" nextgroup=rakuPackageScope,rakuVarName contained
+
+" Perl 6 regex regions
+
+syn match rakuMatchStart_m display "\.\@1<!\<\%(mm\?\|rx\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_m
+syn match rakuMatchStart_s display "\.\@1<!\<[sS]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_s
+syn match rakuMatchStart_tr display "\.\@1<!\<tr\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_tr
+syn match rakuMatchAdverbs_m "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuMatch
+syn match rakuMatchAdverbs_s "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuSubstitution
+syn match rakuMatchAdverbs_tr "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuTransliteration
+
+" /foo/
+syn region rakuMatchBare
+ \ matchgroup=rakuQuote
+ \ start="/\@1<!\%(\%(\_^\|[!\[,=~|&/:({]\|\^\?fff\?\^\?\|=>\|\<\%(if\|unless\|while\|when\|where\|so\)\)\s*\)\@<=/[/=]\@!"
+ \ skip="\\/"
+ \ end="/"
+ \ contains=@rakuRegexen,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum
+
+" m/foo/, m$foo$, m!foo!, etc
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start=+\z([/!$,|`"]\)+
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@rakuRegexen,rakuVariable,rakuVarNum
+
+" m<foo>, m«foo», m{foo}, etc
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
+ exec "syn region rakuMatch matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables"
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip
+
+" Substitutions
+
+" s/foo//, s$foo$$, s!foo!!, etc
+syn region rakuSubstitution
+ \ matchgroup=rakuQuote
+ \ start=+\z([/!$,|`"]\)+
+ \ skip="\\\z1"
+ \ end="\z1"me=e-1
+ \ contained
+ \ contains=@rakuRegexen,rakuVariable,rakuVarNum
+ \ nextgroup=rakuReplacement
+
+syn region rakuReplacement
+ \ matchgroup=rakuQuote
+ \ start="\z(.\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@rakuInterp_qq
+
+" s<foo><bar>, s«foo»«bar», s{foo}{bar}, etc
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
+ exec "syn region rakuSubstitution matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables nextgroup=rakuRepl".s:name
+ exec "syn region rakuRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq"
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip
+
+" Transliteration
+
+" tr/foo/bar/, tr|foo|bar, etc
+syn region rakuTransliteration
+ \ matchgroup=rakuQuote
+ \ start=+\z([/!$,|`"]\)+
+ \ skip="\\\z1"
+ \ end="\z1"me=e-1
+ \ contained
+ \ contains=rakuRxRange
+ \ nextgroup=rakuTransRepl
+
+syn region rakuTransRepl
+ \ matchgroup=rakuQuote
+ \ start="\z(.\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@rakuInterp_qq,rakuRxRange
+
+" tr<foo><bar>, tr«foo»«bar», tr{foo}{bar}, etc
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
+ exec "syn region rakuTransliteration matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=rakuRxRange nextgroup=rakuTransRepl".s:name
+ exec "syn region rakuTransRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq,rakuRxRange"
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip s:bracketing_delims
+
+if exists("raku_perl5_regexes") || exists("raku_extended_all")
+
+" Perl 5 regex regions
+
+syn cluster rakuRegexP5Base
+ \ add=rakuRxP5Escape
+ \ add=rakuRxP5Oct
+ \ add=rakuRxP5Hex
+ \ add=rakuRxP5EscMeta
+ \ add=rakuRxP5CodePoint
+ \ add=rakuRxP5Prop
+
+" normal regex stuff
+syn cluster rakuRegexP5
+ \ add=@rakuRegexP5Base
+ \ add=rakuRxP5Quantifier
+ \ add=rakuRxP5Meta
+ \ add=rakuRxP5QuoteMeta
+ \ add=rakuRxP5ParenMod
+ \ add=rakuRxP5Verb
+ \ add=rakuRxP5Count
+ \ add=rakuRxP5Named
+ \ add=rakuRxP5ReadRef
+ \ add=rakuRxP5WriteRef
+ \ add=rakuRxP5CharClass
+ \ add=rakuRxP5Anchor
+
+" inside character classes
+syn cluster rakuRegexP5Class
+ \ add=@rakuRegexP5Base
+ \ add=rakuRxP5Posix
+ \ add=rakuRxP5Range
+
+syn match rakuRxP5Escape display contained "\\\S"
+syn match rakuRxP5CodePoint display contained "\\c\S\@=" nextgroup=rakuRxP5CPId
+syn match rakuRxP5CPId display contained "\S"
+syn match rakuRxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=rakuRxP5OctSeq
+syn match rakuRxP5OctSeq display contained "\o\{1,3}"
+syn match rakuRxP5Anchor display contained "[\^$]"
+syn match rakuRxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=rakuRxP5HexSeq
+syn match rakuRxP5HexSeq display contained "\x\{1,2}"
+syn region rakuRxP5HexSeq
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn region rakuRxP5Named
+ \ matchgroup=rakuRxP5Escape
+ \ start="\%(\\N\)\@2<={"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Quantifier display contained "\%([+*]\|(\@1<!?\)"
+syn match rakuRxP5ReadRef display contained "\\[1-9]\d\@!"
+syn match rakuRxP5ReadRef display contained "\[A-Za-z_\xC0-\xFF0-9]<\@=" nextgroup=rakuRxP5ReadRefId
+syn region rakuRxP5ReadRefId
+ \ matchgroup=rakuRxP5Escape
+ \ start="<"
+ \ end=">"
+ \ contained
+syn match rakuRxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=rakuRxP5WriteRefId
+syn match rakuRxP5WriteRefId display contained "\d\+"
+syn region rakuRxP5WriteRefId
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=rakuRxP5PropId
+syn match rakuRxP5PropId display contained "\a"
+syn region rakuRxP5PropId
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Meta display contained "[(|).]"
+syn match rakuRxP5ParenMod display contained "(\@1<=?\@=" nextgroup=rakuRxP5Mod,rakuRxP5ModName,rakuRxP5Code
+syn match rakuRxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)"
+syn match rakuRxP5Mod display contained "?-\?[impsx]\+"
+syn match rakuRxP5Mod display contained "?\%([-+]\?\d\+\|R\)"
+syn match rakuRxP5Mod display contained "?(DEFINE)"
+syn match rakuRxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=rakuRxP5ModDef
+syn match rakuRxP5ModDef display contained "\h\w*"
+syn region rakuRxP5ModName
+ \ matchgroup=rakuStringSpecial
+ \ start="?'"
+ \ end="'"
+ \ contained
+syn region rakuRxP5ModName
+ \ matchgroup=rakuStringSpecial
+ \ start="?P\?<"
+ \ end=">"
+ \ contained
+syn region rakuRxP5Code
+ \ matchgroup=rakuStringSpecial
+ \ start="??\?{"
+ \ end="})\@="
+ \ contained
+ \ contains=TOP
+syn match rakuRxP5EscMeta display contained "\\[?*.{}()[\]|\^$]"
+syn match rakuRxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=rakuRxP5CountId
+syn region rakuRxP5CountId
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Verb display contained "(\@1<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)"
+syn region rakuRxP5QuoteMeta
+ \ matchgroup=rakuRxP5Escape
+ \ start="\\Q"
+ \ end="\\E"
+ \ contained
+ \ contains=@rakuVariables,rakuEscBackSlash
+syn region rakuRxP5CharClass
+ \ matchgroup=rakuStringSpecial
+ \ start="\[\^\?"
+ \ skip="\\]"
+ \ end="]"
+ \ contained
+ \ contains=@rakuRegexP5Class
+syn region rakuRxP5Posix
+ \ matchgroup=rakuRxP5Escape
+ \ start="\[:"
+ \ end=":]"
+ \ contained
+syn match rakuRxP5Range display contained "-"
+
+" m:P5//
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=/"
+ \ skip="\\/"
+ \ end="/"
+ \ contains=@rakuRegexP5,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum
+
+" m:P5!!
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=!"
+ \ skip="\\!"
+ \ end="!"
+ \ contains=@rakuRegexP5,rakuVariable,rakuVarSlash,rakuVarMatch,rakuVarNum
+
+" m:P5$$, m:P5||, etc
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=\z([\"'`|,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contains=@rakuRegexP5,@rakuVariables
+
+" m:P5 ()
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s\+\)\@<=()\@!"
+ \ skip="\\)"
+ \ end=")"
+ \ contains=@rakuRegexP5,@rakuVariables
+
+" m:P5[]
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=[]\@!"
+ \ skip="\\]"
+ \ end="]"
+ \ contains=@rakuRegexP5,@rakuVariables
+
+" m:P5{}
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<={}\@!"
+ \ skip="\\}"
+ \ end="}"
+ \ contains=@rakuRegexP5,rakuVariables
+
+" m:P5<>
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=<>\@!"
+ \ skip="\\>"
+ \ end=">"
+ \ contains=@rakuRegexP5,rakuVariables
+
+" m:P5«»
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=«»\@!"
+ \ skip="\\»"
+ \ end="»"
+ \ contains=@rakuRegexP5,rakuVariables
+
+endif
+
+" Comments
+
+syn match rakuAttention display "\<\%(ACHTUNG\|ATTN\|ATTENTION\|FIXME\|NB\|TODO\|TBD\|WTF\|XXX\|NOTE\)" contained
+
+" normal end-of-line comment
+syn match rakuComment display "#.*" contains=rakuAttention
+
+" Multiline comments. Arbitrary numbers of opening brackets are allowed,
+" but we only define regions for 1 to 3
+syn region rakuBracketComment
+ \ start="#[`|=]("
+ \ skip="([^)]*)"
+ \ end=")"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]\["
+ \ skip="\[[^\]]*]"
+ \ end="]"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]{"
+ \ skip="{[^}]*}"
+ \ end="}"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contains=rakuAttention,rakuBracketComment
+
+" Comments with double and triple delimiters
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=](("
+ \ skip="((\%([^)\|))\@!]\)*))"
+ \ end="))"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]((("
+ \ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
+ \ end=")))"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]\[\["
+ \ skip="\[\[\%([^\]]\|]]\@!\)*]]"
+ \ end="]]"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]\[\[\["
+ \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
+ \ end="]]]"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]{{"
+ \ skip="{{\%([^}]\|}}\@!\)*}}"
+ \ end="}}"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]{{{"
+ \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
+ \ end="}}}"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]<<"
+ \ skip="<<\%([^>]\|>>\@!\)*>>"
+ \ end=">>"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]<<<"
+ \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
+ \ end=">>>"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]««"
+ \ skip="««\%([^»]\|»»\@!\)*»»"
+ \ end="»»"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]«««"
+ \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
+ \ end="»»»"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn match rakuShebang display "\%^#!.*"
+
+" => autoquoting
+syn match rakuStringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
+syn match rakuStringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
+syn match rakuStringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"
+
+" Pod
+
+" Abbreviated blocks (implicit code forbidden)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=\ze\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrNoCodeType
+ \ keepend
+
+syn region rakuPodAbbrNoCodeType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbrNoCode
+
+syn match rakuPodName contained ".\+" contains=@rakuPodFormat
+syn match rakuPodComment contained ".\+"
+
+syn region rakuPodAbbrNoCode
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat
+
+" Abbreviated blocks (everything is code)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=\zecode\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrCodeType
+ \ keepend
+
+syn region rakuPodAbbrCodeType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbrCode
+
+syn region rakuPodAbbrCode
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+
+" Abbreviated blocks (everything is a comment)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\zecomment\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrCommentType
+ \ keepend
+
+syn region rakuPodAbbrCommentType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodComment,rakuPodAbbrNoCode
+
+" Abbreviated blocks (implicit code allowed)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrType
+ \ keepend
+
+syn region rakuPodAbbrType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbr
+
+syn region rakuPodAbbr
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat,rakuPodImplicitCode
+
+" Abbreviated block to end-of-file
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\zeEND\>"
+ \ end="\%$"
+ \ contains=rakuPodAbbrEOFType
+ \ keepend
+
+syn region rakuPodAbbrEOFType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="\%$"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbrEOF
+
+syn region rakuPodAbbrEOF
+ \ start="^"
+ \ end="\%$"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+" Directives
+syn region rakuPodDirectRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\%(config\|use\)\>"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contains=rakuPodDirectArgRegion
+ \ keepend
+
+syn region rakuPodDirectArgRegion
+ \ matchgroup=rakuPodType
+ \ start="\S\+"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+ \ contains=rakuPodDirectConfigRegion
+
+syn region rakuPodDirectConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+ \ contains=@rakuPodConfig
+
+" =encoding is a special directive
+syn region rakuPodDirectRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=encoding\>"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contains=rakuPodEncodingArgRegion
+ \ keepend
+
+syn region rakuPodEncodingArgRegion
+ \ matchgroup=rakuPodName
+ \ start="\S\+"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+
+" Paragraph blocks (implicit code forbidden)
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=for\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodParaNoCodeTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaNoCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodParaNoCode,rakuPodParaConfigRegion
+
+syn region rakuPodParaConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\@1<!\)"
+ \ contained
+ \ contains=@rakuPodConfig
+
+syn region rakuPodParaNoCode
+ \ start="^[^=]"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat
+
+" Paragraph blocks (everything is code)
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=for\>\ze\s*code\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodParaCodeTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodParaCode,rakuPodParaConfigRegion
+
+syn region rakuPodParaCode
+ \ start="^[^=]"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+
+" Paragraph blocks (implicit code allowed)
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodParaTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodPara,rakuPodParaConfigRegion
+
+syn region rakuPodPara
+ \ start="^[^=]"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat,rakuPodImplicitCode
+
+" Paragraph block to end-of-file
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=for\>\ze\s\+END\>"
+ \ end="\%$"
+ \ contains=rakuPodParaEOFTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaEOFTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="\%$"
+ \ contained
+ \ contains=rakuPodParaEOF,rakuPodParaConfigRegion
+
+syn region rakuPodParaEOF
+ \ start="^[^=]"
+ \ end="\%$"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+" Delimited blocks (implicit code forbidden)
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\z(\s*\)\zs=begin\>"
+ \ end="^\z1\zs=end\>"
+ \ contains=rakuPodDelimNoCodeTypeRegion
+ \ keepend extend skipwhite
+ \ nextgroup=rakuPodType
+
+syn region rakuPodDelimNoCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=rakuPodDelimNoCode,rakuPodDelimConfigRegion
+
+syn region rakuPodDelimConfigRegion
+ \ start=""
+ \ end="^\s*\zs\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+ \ contains=@rakuPodConfig
+
+syn region rakuPodDelimNoCode
+ \ start="^"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat
+
+" Delimited blocks (everything is code)
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\z(\s*\)\zs=begin\>\ze\s*code\>"
+ \ end="^\z1\zs=end\>"
+ \ contains=rakuPodDelimCodeTypeRegion
+ \ keepend extend skipwhite
+ \ nextgroup=rakuPodType
+
+syn region rakuPodDelimCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=rakuPodDelimCode,rakuPodDelimConfigRegion
+
+syn region rakuPodDelimCode
+ \ start="^"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=@rakuPodNestedBlocks
+
+" Delimited blocks (implicit code allowed)
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\z(\s*\)\zs=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\z1\zs=end\>"
+ \ contains=rakuPodDelimTypeRegion
+ \ keepend extend skipwhite
+ \ nextgroup=rakuPodType
+
+syn region rakuPodDelimTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=rakuPodDelim,rakuPodDelimConfigRegion
+
+syn region rakuPodDelim
+ \ start="^"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+" Delimited block to end-of-file
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=begin\>\ze\s\+END\>"
+ \ end="\%$"
+ \ extend
+ \ contains=rakuPodDelimEOFTypeRegion
+
+syn region rakuPodDelimEOFTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="\%$"
+ \ contained
+ \ contains=rakuPodDelimEOF,rakuPodDelimConfigRegion
+
+syn region rakuPodDelimEOF
+ \ start="^"
+ \ end="\%$"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+syn cluster rakuPodConfig
+ \ add=rakuPodConfigOperator
+ \ add=rakuPodExtraConfig
+ \ add=rakuStringAuto
+ \ add=rakuPodAutoQuote
+ \ add=rakuStringSQ
+
+syn region rakuPodParens
+ \ start="("
+ \ end=")"
+ \ contained
+ \ contains=rakuNumber,rakuStringSQ
+
+syn match rakuPodAutoQuote display contained "=>"
+syn match rakuPodConfigOperator display contained ":!\?" nextgroup=rakuPodConfigOption
+syn match rakuPodConfigOption display contained "[^[:space:](<]\+" nextgroup=rakuPodParens,rakuStringAngle
+syn match rakuPodExtraConfig display contained "^="
+syn match rakuPodVerticalBar display contained "|"
+syn match rakuPodColon display contained ":"
+syn match rakuPodSemicolon display contained ";"
+syn match rakuPodComma display contained ","
+syn match rakuPodImplicitCode display contained "^\s.*"
+syn match rakuPodType display contained "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+
+" These may appear inside delimited blocks
+syn cluster rakuPodNestedBlocks
+ \ add=rakuPodAbbrRegion
+ \ add=rakuPodDirectRegion
+ \ add=rakuPodParaRegion
+ \ add=rakuPodDelimRegion
+
+" Pod formatting codes
+
+syn cluster rakuPodFormat
+ \ add=rakuPodFormatOne
+ \ add=rakuPodFormatTwo
+ \ add=rakuPodFormatThree
+ \ add=rakuPodFormatFrench
+
+" Balanced angles found inside formatting codes. Ensures proper nesting.
+
+syn region rakuPodFormatAnglesOne
+ \ matchgroup=rakuPodFormat
+ \ start="<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne
+
+syn region rakuPodFormatAnglesTwo
+ \ matchgroup=rakuPodFormat
+ \ start="<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo
+
+syn region rakuPodFormatAnglesThree
+ \ matchgroup=rakuPodFormat
+ \ start="<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree
+
+syn region rakuPodFormatAnglesFrench
+ \ matchgroup=rakuPodFormat
+ \ start="«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree
+
+" All formatting codes
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree
+
+" C<> and V<> don't allow nested formatting formatting codes
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench
+
+" L<> can have a "|" separator
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="L<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="L<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="L<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="L«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar
+
+" E<> can have a ";" separator
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="E<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodSemiColon
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="E<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodSemiColon
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="E<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="E«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon
+
+" M<> can have a ":" separator
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="M<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodColon
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="M<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodColon
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="M<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="M«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon
+
+" D<> can have "|" and ";" separators
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="D<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="D<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAngleTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="D<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="D«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon
+
+" X<> can have "|", "," and ";" separators
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="X<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="X<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="X<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="X«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_raku_syntax_inits")
+ if version < 508
+ let did_raku_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink rakuEscOctOld rakuError
+ HiLink rakuPackageTwigil rakuTwigil
+ HiLink rakuStringAngle rakuString
+ HiLink rakuStringAngleFixed rakuString
+ HiLink rakuStringFrench rakuString
+ HiLink rakuStringAngles rakuString
+ HiLink rakuStringSQ rakuString
+ HiLink rakuStringDQ rakuString
+ HiLink rakuStringQ rakuString
+ HiLink rakuStringQ_q rakuString
+ HiLink rakuStringQ_qww rakuString
+ HiLink rakuStringQ_qq rakuString
+ HiLink rakuStringQ_to rakuString
+ HiLink rakuStringQ_qto rakuString
+ HiLink rakuStringQ_qqto rakuString
+ HiLink rakuRxStringSQ rakuString
+ HiLink rakuRxStringDQ rakuString
+ HiLink rakuReplacement rakuString
+ HiLink rakuReplCurly rakuString
+ HiLink rakuReplAngle rakuString
+ HiLink rakuReplFrench rakuString
+ HiLink rakuReplBracket rakuString
+ HiLink rakuReplParen rakuString
+ HiLink rakuTransliteration rakuString
+ HiLink rakuTransRepl rakuString
+ HiLink rakuTransReplCurly rakuString
+ HiLink rakuTransReplAngle rakuString
+ HiLink rakuTransReplFrench rakuString
+ HiLink rakuTransReplBracket rakuString
+ HiLink rakuTransReplParen rakuString
+ HiLink rakuStringAuto rakuString
+ HiLink rakuKey rakuString
+ HiLink rakuMatch rakuString
+ HiLink rakuSubstitution rakuString
+ HiLink rakuMatchBare rakuString
+ HiLink rakuRegexBlock rakuString
+ HiLink rakuRxP5CharClass rakuString
+ HiLink rakuRxP5QuoteMeta rakuString
+ HiLink rakuRxCharClass rakuString
+ HiLink rakuRxQuoteWords rakuString
+ HiLink rakuReduceOp rakuOperator
+ HiLink rakuSetOp rakuOperator
+ HiLink rakuRSXZOp rakuOperator
+ HiLink rakuHyperOp rakuOperator
+ HiLink rakuPostHyperOp rakuOperator
+ HiLink rakuQuoteQ rakuQuote
+ HiLink rakuQuoteQ_q rakuQuote
+ HiLink rakuQuoteQ_qww rakuQuote
+ HiLink rakuQuoteQ_qq rakuQuote
+ HiLink rakuQuoteQ_to rakuQuote
+ HiLink rakuQuoteQ_qto rakuQuote
+ HiLink rakuQuoteQ_qqto rakuQuote
+ HiLink rakuQuoteQ_PIR rakuQuote
+ HiLink rakuMatchStart_m rakuQuote
+ HiLink rakuMatchStart_s rakuQuote
+ HiLink rakuMatchStart_tr rakuQuote
+ HiLink rakuBareSigil rakuVariable
+ HiLink rakuRxRange rakuStringSpecial
+ HiLink rakuRxAnchor rakuStringSpecial
+ HiLink rakuRxBoundary rakuStringSpecial
+ HiLink rakuRxP5Anchor rakuStringSpecial
+ HiLink rakuCodePoint rakuStringSpecial
+ HiLink rakuRxMeta rakuStringSpecial
+ HiLink rakuRxP5Range rakuStringSpecial
+ HiLink rakuRxP5CPId rakuStringSpecial
+ HiLink rakuRxP5Posix rakuStringSpecial
+ HiLink rakuRxP5Mod rakuStringSpecial
+ HiLink rakuRxP5HexSeq rakuStringSpecial
+ HiLink rakuRxP5OctSeq rakuStringSpecial
+ HiLink rakuRxP5WriteRefId rakuStringSpecial
+ HiLink rakuHexSequence rakuStringSpecial
+ HiLink rakuOctSequence rakuStringSpecial
+ HiLink rakuRxP5Named rakuStringSpecial
+ HiLink rakuRxP5PropId rakuStringSpecial
+ HiLink rakuRxP5Quantifier rakuStringSpecial
+ HiLink rakuRxP5CountId rakuStringSpecial
+ HiLink rakuRxP5Verb rakuStringSpecial
+ HiLink rakuRxAssertGroup rakuStringSpecial2
+ HiLink rakuEscape rakuStringSpecial2
+ HiLink rakuEscNull rakuStringSpecial2
+ HiLink rakuEscHash rakuStringSpecial2
+ HiLink rakuEscQQ rakuStringSpecial2
+ HiLink rakuEscQuote rakuStringSpecial2
+ HiLink rakuEscDoubleQuote rakuStringSpecial2
+ HiLink rakuEscBackTick rakuStringSpecial2
+ HiLink rakuEscForwardSlash rakuStringSpecial2
+ HiLink rakuEscVerticalBar rakuStringSpecial2
+ HiLink rakuEscExclamation rakuStringSpecial2
+ HiLink rakuEscDollar rakuStringSpecial2
+ HiLink rakuEscOpenCurly rakuStringSpecial2
+ HiLink rakuEscCloseCurly rakuStringSpecial2
+ HiLink rakuEscCloseBracket rakuStringSpecial2
+ HiLink rakuEscCloseAngle rakuStringSpecial2
+ HiLink rakuEscCloseFrench rakuStringSpecial2
+ HiLink rakuEscBackSlash rakuStringSpecial2
+ HiLink rakuEscCodePoint rakuStringSpecial2
+ HiLink rakuEscOct rakuStringSpecial2
+ HiLink rakuEscHex rakuStringSpecial2
+ HiLink rakuRxEscape rakuStringSpecial2
+ HiLink rakuRxCapture rakuStringSpecial2
+ HiLink rakuRxAlternation rakuStringSpecial2
+ HiLink rakuRxP5 rakuStringSpecial2
+ HiLink rakuRxP5ReadRef rakuStringSpecial2
+ HiLink rakuRxP5Oct rakuStringSpecial2
+ HiLink rakuRxP5Hex rakuStringSpecial2
+ HiLink rakuRxP5EscMeta rakuStringSpecial2
+ HiLink rakuRxP5Meta rakuStringSpecial2
+ HiLink rakuRxP5Escape rakuStringSpecial2
+ HiLink rakuRxP5CodePoint rakuStringSpecial2
+ HiLink rakuRxP5WriteRef rakuStringSpecial2
+ HiLink rakuRxP5Prop rakuStringSpecial2
+
+ HiLink rakuProperty Tag
+ HiLink rakuAttention Todo
+ HiLink rakuType Type
+ HiLink rakuError Error
+ HiLink rakuBlockLabel Label
+ HiLink rakuNormal Normal
+ HiLink rakuIdentifier Normal
+ HiLink rakuPackage Normal
+ HiLink rakuPackageScope Normal
+ HiLink rakuNumber Number
+ HiLink rakuOctNumber Number
+ HiLink rakuBinNumber Number
+ HiLink rakuHexNumber Number
+ HiLink rakuDecNumber Number
+ HiLink rakuString String
+ HiLink rakuRepeat Repeat
+ HiLink rakuPragma Keyword
+ HiLink rakuPreDeclare Keyword
+ HiLink rakuDeclare Keyword
+ HiLink rakuDeclareRegex Keyword
+ HiLink rakuVarStorage Special
+ HiLink rakuFlowControl Special
+ HiLink rakuOctBase Special
+ HiLink rakuBinBase Special
+ HiLink rakuHexBase Special
+ HiLink rakuDecBase Special
+ HiLink rakuTwigil Special
+ HiLink rakuStringSpecial2 Special
+ HiLink rakuVersion Special
+ HiLink rakuComment Comment
+ HiLink rakuBracketComment Comment
+ HiLink rakuInclude Include
+ HiLink rakuShebang PreProc
+ HiLink rakuClosureTrait PreProc
+ HiLink rakuOperator Operator
+ HiLink rakuContext Operator
+ HiLink rakuQuote Delimiter
+ HiLink rakuTypeConstraint PreCondit
+ HiLink rakuException Exception
+ HiLink rakuVariable Identifier
+ HiLink rakuVarSlash Identifier
+ HiLink rakuVarNum Identifier
+ HiLink rakuVarExclam Identifier
+ HiLink rakuVarMatch Identifier
+ HiLink rakuVarName Identifier
+ HiLink rakuMatchVar Identifier
+ HiLink rakuRxP5ReadRefId Identifier
+ HiLink rakuRxP5ModDef Identifier
+ HiLink rakuRxP5ModName Identifier
+ HiLink rakuConditional Conditional
+ HiLink rakuStringSpecial SpecialChar
+
+ HiLink rakuPodAbbr rakuPod
+ HiLink rakuPodAbbrEOF rakuPod
+ HiLink rakuPodAbbrNoCode rakuPod
+ HiLink rakuPodAbbrCode rakuPodCode
+ HiLink rakuPodPara rakuPod
+ HiLink rakuPodParaEOF rakuPod
+ HiLink rakuPodParaNoCode rakuPod
+ HiLink rakuPodParaCode rakuPodCode
+ HiLink rakuPodDelim rakuPod
+ HiLink rakuPodDelimEOF rakuPod
+ HiLink rakuPodDelimNoCode rakuPod
+ HiLink rakuPodDelimCode rakuPodCode
+ HiLink rakuPodImplicitCode rakuPodCode
+ HiLink rakuPodExtraConfig rakuPodPrefix
+ HiLink rakuPodVerticalBar rakuPodFormatCode
+ HiLink rakuPodColon rakuPodFormatCode
+ HiLink rakuPodSemicolon rakuPodFormatCode
+ HiLink rakuPodComma rakuPodFormatCode
+ HiLink rakuPodFormatOne rakuPodFormat
+ HiLink rakuPodFormatTwo rakuPodFormat
+ HiLink rakuPodFormatThree rakuPodFormat
+ HiLink rakuPodFormatFrench rakuPodFormat
+
+ HiLink rakuPodType Type
+ HiLink rakuPodConfigOption String
+ HiLink rakuPodCode PreProc
+ HiLink rakuPod Comment
+ HiLink rakuPodComment Comment
+ HiLink rakuPodAutoQuote Operator
+ HiLink rakuPodConfigOperator Operator
+ HiLink rakuPodPrefix Statement
+ HiLink rakuPodName Identifier
+ HiLink rakuPodFormatCode SpecialChar
+ HiLink rakuPodFormat SpecialComment
+
+ delcommand HiLink
+endif
+
+if exists("raku_fold") || exists("raku_extended_all")
+ setl foldmethod=syntax
+ syn region rakuBlockFold
+ \ start="^\z(\s*\)\%(my\|our\|augment\|multi\|proto\|only\)\?\s*\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\s\+\)\?\<\%(CATCH\|try\|ENTER\|LEAVE\|CHECK\|INIT\|BEGIN\|END\|KEEP\|UNDO\|PRE\|POST\|module\|package\|enum\|subset\|class\|sub\%(method\)\?\|multi\|method\|slang\|grammar\|regex\|token\|rule\)\>[^{]\+\%({\s*\%(#.*\)\?\)\?$"
+ \ end="^\z1}"
+ \ transparent fold keepend extend
+endif
+
+let b:current_syntax = "raku"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/runtime/syntax/ratpoison.vim b/runtime/syntax/ratpoison.vim
index af8676c43d..2322e856a4 100644
--- a/runtime/syntax/ratpoison.vim
+++ b/runtime/syntax/ratpoison.vim
@@ -2,10 +2,9 @@
" Language: Ratpoison configuration/commands file ( /etc/ratpoisonrc ~/.ratpoisonrc )
" Maintainer: Magnus Woldrich <m@japh.se>
" URL: http://github.com/trapd00r/vim-syntax-ratpoison
-" Last Change: 2011 Apr 11
+" Last Change: 2021-04-12 13:46:04
" Previous Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
-" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
@@ -38,7 +37,7 @@ syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained
syn keyword ratpoisonCommandArg source sselect startup_message time title contained
syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained
syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained
-syn keyword ratpoisonCommandArg windows contained
+syn keyword ratpoisonCommandArg windows framefmt infofmt contained
syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained
syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained
@@ -92,19 +91,27 @@ syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg
syn keyword ratpoisonSetArg bgcolor
syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg
syn keyword ratpoisonSetArg fgcolor
+syn keyword ratpoisonSetArg framefmt contained nextgroup=ratpoisonWinFmtArg
syn keyword ratpoisonSetArg fwcolor
+syn keyword ratpoisonSetArg framemsgwait contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg
syn keyword ratpoisonSetArg bwcolor
+syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg
syn keyword ratpoisonSetArg historysize
syn keyword ratpoisonSetArg historycompaction
syn keyword ratpoisonSetArg historyexpansion
+syn keyword ratpoisonSetArg infofmt contained nextgroup=ratpoisonWinFmtArg
syn keyword ratpoisonSetArg topkmap
syn keyword ratpoisonSetArg barinpadding
syn keyword ratpoisonSetArg font
syn keyword ratpoisonSetArg framesels
+syn keyword ratpoisonSetArg maxundos
syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg
syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg msgwait contained nextgroup=ratpoisonNumberArg
syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg
syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg startup_message
syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg
syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg
syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg
@@ -113,6 +120,8 @@ syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg
syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg
syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
+syn match ratpoisonFrameFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
+syn match ratpoisonInfoFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained
@@ -126,6 +135,7 @@ syn match ratpoisonDefCommand "^\s*defbgcolor\s*"
syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg
syn match ratpoisonDefCommand "^\s*deffgcolor\s*"
syn match ratpoisonDefCommand "^\s*deffont\s*"
+syn match ratpoisonDefCommand "^\s*defframefmt\s*" nextgroup=ratpoisonWinFmtArg
syn match ratpoisonDefCommand "^\s*defframesels\s*"
syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg
syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg
@@ -243,14 +253,13 @@ syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$"
syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$"
syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$"
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
-
hi def link ratpoisonBooleanArg Boolean
hi def link ratpoisonCommandArg Keyword
hi def link ratpoisonComment Comment
hi def link ratpoisonDefCommand Identifier
+hi def link ratpoisonFrameFmtArg Special
hi def link ratpoisonGravityArg Constant
+hi def link ratpoisonInfoFmtArg Special
hi def link ratpoisonKeySeqArg Special
hi def link ratpoisonNumberArg Number
hi def link ratpoisonSetArg Keyword
@@ -261,7 +270,6 @@ hi def link ratpoisonWinFmtArg Special
hi def link ratpoisonWinNameArg Constant
hi def link ratpoisonWinListArg Constant
-
let b:current_syntax = "ratpoison"
" vim: ts=8
diff --git a/runtime/syntax/rego.vim b/runtime/syntax/rego.vim
new file mode 100644
index 0000000000..a04fc7007b
--- /dev/null
+++ b/runtime/syntax/rego.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: rego policy language
+" Maintainer: Matt Dunford (zenmatic@gmail.com)
+" URL: https://github.com/zenmatic/vim-syntax-rego
+" Last Change: 2019 Dec 12
+
+" https://www.openpolicyagent.org/docs/latest/policy-language/
+
+" quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+syn keyword regoDirective package import allow deny
+syn keyword regoKeywords as default else false not null true with some
+
+syn keyword regoFuncAggregates count sum product max min sort all any
+syn match regoFuncArrays "\<array\.\(concat\|slice\)\>"
+syn keyword regoFuncSets intersection union
+
+syn keyword regoFuncStrings concat /\<contains\>/ endswith format_int indexof lower replace split sprintf startswith substring trim trim_left trim_prefix trim_right trim_suffix trim_space upper
+syn match regoFuncStrings2 "\<strings\.replace_n\>"
+syn match regoFuncStrings3 "\<contains\>"
+
+syn keyword regoFuncRegex re_match
+syn match regoFuncRegex2 "\<regex\.\(split\|globs_match\|template_match\|find_n\|find_all_string_submatch_n\)\>"
+
+syn match regoFuncGlob "\<glob\.\(match\|quote_meta\)\>"
+syn match regoFuncUnits "\<units\.parse_bytes\>"
+syn keyword regoFuncTypes is_number is_string is_boolean is_array is_set is_object is_null type_name
+syn match regoFuncEncoding1 "\<\(base64\|base64url\)\.\(encode\|decode\)\>"
+syn match regoFuncEncoding2 "\<urlquery\.\(encode\|decode\|encode_object\)\>"
+syn match regoFuncEncoding3 "\<\(json\|yaml\)\.\(marshal\|unmarshal\)\>"
+syn match regoFuncTokenSigning "\<io\.jwt\.\(encode_sign_raw\|encode_sign\)\>"
+syn match regoFuncTokenVerification "\<io\.jwt\.\(verify_rs256\|verify_ps256\|verify_es256\|verify_hs256\|decode\|decode_verify\)\>"
+syn match regoFuncTime "\<time\.\(now_ns\|parse_ns\|parse_rfc3339_ns\|parse_duration_ns\|date\|clock\|weekday\)\>"
+syn match regoFuncCryptography "\<crypto\.x509\.parse_certificates\>"
+syn keyword regoFuncGraphs walk
+syn match regoFuncHttp "\<http\.send\>"
+syn match regoFuncNet "\<net\.\(cidr_contains\|cidr_intersects\)\>"
+syn match regoFuncRego "\<rego\.parse_module\>"
+syn match regoFuncOpa "\<opa\.runtime\>"
+syn keyword regoFuncDebugging trace
+
+hi def link regoDirective Statement
+hi def link regoKeywords Statement
+hi def link regoFuncAggregates Statement
+hi def link regoFuncArrays Statement
+hi def link regoFuncSets Statement
+hi def link regoFuncStrings Statement
+hi def link regoFuncStrings2 Statement
+hi def link regoFuncStrings3 Statement
+hi def link regoFuncRegex Statement
+hi def link regoFuncRegex2 Statement
+hi def link regoFuncGlob Statement
+hi def link regoFuncUnits Statement
+hi def link regoFuncTypes Statement
+hi def link regoFuncEncoding1 Statement
+hi def link regoFuncEncoding2 Statement
+hi def link regoFuncEncoding3 Statement
+hi def link regoFuncTokenSigning Statement
+hi def link regoFuncTokenVerification Statement
+hi def link regoFuncTime Statement
+hi def link regoFuncCryptography Statement
+hi def link regoFuncGraphs Statement
+hi def link regoFuncHttp Statement
+hi def link regoFuncNet Statement
+hi def link regoFuncRego Statement
+hi def link regoFuncOpa Statement
+hi def link regoFuncDebugging Statement
+
+" https://www.openpolicyagent.org/docs/latest/policy-language/#strings
+syn region regoString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region regoRawString start=+`+ end=+`+
+
+hi def link regoString String
+hi def link regoRawString String
+
+" Comments; their contents
+syn keyword regoTodo contained TODO FIXME XXX BUG
+syn cluster regoCommentGroup contains=regoTodo
+syn region regoComment start="#" end="$" contains=@regoCommentGroup,@Spell
+
+hi def link regoComment Comment
+hi def link regoTodo Todo
+
+let b:current_syntax = 'rego'
diff --git a/runtime/syntax/reva.vim b/runtime/syntax/reva.vim
index f605992190..39ad88dd85 100644
--- a/runtime/syntax/reva.vim
+++ b/runtime/syntax/reva.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Reva Forth
" Version: 2011.2
-" Last Change: 2012/02/13
+" Last Change: 2019 Sep 27
" Maintainer: Ron Aaron <ron@ronware.org>
" URL: http://ronware.org/reva/
" Filetypes: *.rf *.frt
@@ -150,7 +150,7 @@ syn match revaInclude '\<\(include\|needs\)\s\+\S\+'
" Define the default highlighting.
if !exists("did_reva_syntax_inits")
let did_reva_syntax_inits=1
- " The default methods for highlighting. Can be overriden later.
+ " The default methods for highlighting. Can be overridden later.
hi def link revaEOF cIf0
hi def link revaHelpStuff special
hi def link revaHelpDesc Comment
diff --git a/runtime/syntax/rmd.vim b/runtime/syntax/rmd.vim
index d852d225bc..cccd4110f5 100644
--- a/runtime/syntax/rmd.vim
+++ b/runtime/syntax/rmd.vim
@@ -1,7 +1,7 @@
" markdown Text with R statements
" Language: markdown with R code chunks
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Thu Apr 18, 2019 09:17PM
+" Last Change: Wed Apr 21, 2021 09:55AM
"
" For highlighting pandoc extensions to markdown like citations and TeX and
" many other advanced features like folding of markdown sections, it is
@@ -13,27 +13,45 @@ if exists("b:current_syntax")
finish
endif
-" Configuration if not using pandoc syntax:
-" Add syntax highlighting of YAML header
-let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1)
-" Add syntax highlighting of citation keys
-let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1)
-" Highlight the header of the chunk of R code
-let g:rmd_syn_hl_chunk = get(g:, 'g:rmd_syn_hl_chunk', 0)
+" Highlight the header of the chunks as R code
+let g:rmd_syn_hl_chunk = get(g:, 'rmd_syn_hl_chunk', 0)
" Pandoc-syntax has more features, but it is slower.
" https://github.com/vim-pandoc/vim-pandoc-syntax
let g:pandoc#syntax#codeblocks#embeds#langs = get(g:, 'pandoc#syntax#codeblocks#embeds#langs', ['r'])
runtime syntax/pandoc.vim
if exists("b:current_syntax")
- " Fix recognition of R code
- syn region pandocDelimitedCodeBlock_r start=/^```{r\>.*}$/ end=/^```$/ contained containedin=pandocDelimitedCodeBlock contains=@R
+ " Recognize inline R code
syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend
hi def link rmdInlineDelim Delimiter
+
+ " Fix recognition of language chunks (code adapted from pandoc, 2021-03-28)
+ " Knitr requires braces in the block's header
+ for s:lng in g:pandoc#syntax#codeblocks#embeds#langs
+ let s:nm = matchstr(s:lng, '^[^=]*')
+ exe 'syn clear pandocDelimitedCodeBlock_'.s:nm
+ exe 'syn clear pandocDelimitedCodeBlockinBlockQuote_'.s:nm
+ if g:rmd_syn_hl_chunk
+ exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@R'
+ exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@'.toupper(s:nm)
+ else
+ exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@'.toupper(s:nm)
+ endif
+ endfor
+ unlet s:lng
+ unlet s:nm
+ hi def link rmdInlineDelim Delimiter
+ hi def link rmdCodeDelim Delimiter
let b:current_syntax = "rmd"
finish
endif
+" Configuration if not using pandoc syntax:
+" Add syntax highlighting of YAML header
+let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1)
+" Add syntax highlighting of citation keys
+let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1)
+
let s:cpo_save = &cpo
set cpo&vim
@@ -63,15 +81,17 @@ for s:type in g:rmd_fenced_languages
unlet! b:current_syntax
exe 'syn include @Rmd'.s:nm.' syntax/'.s:ft.'.vim'
if g:rmd_syn_hl_chunk
- exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmd'.s:nm
+ exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmdr'
exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@Rmd'.s:nm
else
exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@Rmd'.s:nm
endif
- exe 'syn region rmd'.s:nm.'Inline matchgroup=rmdInlineDelim start="`'.s:nm.' " end="`" contains=@Rmd'.s:nm.' keepend'
endfor
unlet! s:type
+" Recognize inline R code
+syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr keepend
+
hi def link rmdInlineDelim Delimiter
hi def link rmdCodeDelim Delimiter
diff --git a/runtime/syntax/rnoweb.vim b/runtime/syntax/rnoweb.vim
index b2ba17d68d..749860a3fe 100644
--- a/runtime/syntax/rnoweb.vim
+++ b/runtime/syntax/rnoweb.vim
@@ -33,8 +33,8 @@ syn cluster texParaGroup add=@rnoweb
" Highlighting of R code using an existing r.vim syntax file if available {{{1
syn include @rnowebR syntax/r.vim
-syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
-syn match rnowebChunkReference "^<<.*>>$" contained
+syn region rnowebChunk matchgroup=rnowebDelimiter start="^\s*<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
+syn match rnowebChunkReference "^\s*<<.*>>$" contained
syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained
" Sweave options command {{{1
diff --git a/runtime/syntax/robots.vim b/runtime/syntax/robots.vim
index 396bf52b25..fcb9b0275d 100644
--- a/runtime/syntax/robots.vim
+++ b/runtime/syntax/robots.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: "Robots.txt" files
" Robots.txt files indicate to WWW robots which parts of a web site should not be accessed.
-" Maintainer: Dominique Stphan (dominique@mggen.com)
+" Maintainer: Dominique Stéphan (dominique@mggen.com)
" URL: http://www.mggen.com/vim/syntax/robots.zip
" Last change: 2001 May 09
diff --git a/runtime/syntax/rpcgen.vim b/runtime/syntax/rpcgen.vim
index 08183d43a4..60c9b8cdda 100644
--- a/runtime/syntax/rpcgen.vim
+++ b/runtime/syntax/rpcgen.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: rpcgen
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 12
+" Version: 13
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_RPCGEN
if exists("b:current_syntax")
diff --git a/runtime/syntax/rpl.vim b/runtime/syntax/rpl.vim
index f339f7ae6e..28c250b7c4 100644
--- a/runtime/syntax/rpl.vim
+++ b/runtime/syntax/rpl.vim
@@ -2,7 +2,7 @@
" Language: RPL/2
" Version: 0.15.15 against RPL/2 version 4.00pre7i
" Last Change: 2012 Feb 03 by Thilo Six
-" Maintainer: Jol BERTRAND <rpl2@free.fr>
+" Maintainer: Joël BERTRAND <rpl2@free.fr>
" URL: http://www.makalis.fr/~bertrand/rpl2/download/vim/indent/rpl.vim
" Credits: Nothing
diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim
index c865cf6905..a90c90be21 100644
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -1,9 +1,9 @@
-" Vim syntax file
+" Vim reST syntax file
" Language: reStructuredText documentation format
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Website: https://github.com/marshallward/vim-restructuredtext
-" Latest Revision: 2018-12-29
+" Latest Revision: 2020-03-31
if exists("b:current_syntax")
finish
@@ -21,7 +21,7 @@ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis,
\ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference
syn region rstLiteralBlock matchgroup=rstDelimiter
- \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!'
+ \ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!'
\ contains=@NoSpell
syn region rstQuotedLiteralBlock matchgroup=rstDelimiter
@@ -90,16 +90,28 @@ execute 'syn match rstSubstitutionDefinition contained' .
\ ' /|.*|\_s\+/ nextgroup=@rstDirectives'
function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right)
+ " Only escape the first char of a multichar delimiter (e.g. \* inside **)
+ if a:start[0] == '\'
+ let first = a:start[0:1]
+ else
+ let first = a:start[0]
+ endif
+
+ execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained'
+
execute 'syn region rst' . a:name .
\ ' start=+' . a:char_left . '\zs' . a:start .
\ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' .
\ a:middle .
- \ ' end=+\S' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+'
+ \ ' end=+' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' .
+ \ ' contains=rstEscape' . a:name
+
+ execute 'hi def link rstEscape'.a:name.' Special'
endfunction
function! s:DefineInlineMarkup(name, start, middle, end)
let middle = a:middle != "" ?
- \ (' skip=+\\\\\|\\' . a:middle . '+') :
+ \ (' skip=+\\\\\|\\' . a:middle . '\|\s' . a:middle . '+') :
\ ""
call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'")
@@ -161,7 +173,7 @@ syn match rstStandaloneHyperlink contains=@NoSpell
\ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]"
syn region rstCodeBlock contained matchgroup=rstDirective
- \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s\+.*\_s*\n\ze\z(\s\+\)+
+ \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\(\S*\)\?\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+
\ skip=+^$+
\ end=+^\z1\@!+
\ contains=@NoSpell
diff --git a/runtime/syntax/rtf.vim b/runtime/syntax/rtf.vim
index c856f9ffcf..f8e031ba21 100644
--- a/runtime/syntax/rtf.vim
+++ b/runtime/syntax/rtf.vim
@@ -7,7 +7,7 @@
" .hlp (windows help files) use compiled rtf files
" rtf documentation at http://night.primate.wisc.edu/software/RTF/
"
-" Maintainer: Dominique Stphan (dominique@mggen.com)
+" Maintainer: Dominique Stéphan (dominique@mggen.com)
" URL: http://www.mggen.com/vim/syntax/rtf.zip
" Last change: 2001 Mai 02
diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim
index 8b88378e60..0de63d0ef3 100644
--- a/runtime/syntax/ruby.vim
+++ b/runtime/syntax/ruby.vim
@@ -3,7 +3,7 @@
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2018 Jul 09
+" Last Change: 2019 Jul 13
" ----------------------------------------------------------------------------
"
" Previous Maintainer: Mirko Nasato
@@ -19,6 +19,11 @@ endif
let s:cpo_sav = &cpo
set cpo&vim
+" eRuby Config {{{1
+if exists('main_syntax') && main_syntax == 'eruby'
+ let b:ruby_no_expensive = 1
+endif
+
" Folding Config {{{1
if has("folding") && exists("ruby_fold")
setlocal foldmethod=syntax
@@ -33,6 +38,10 @@ let s:foldable_groups = split(
\ )
function! s:foldable(...) abort
+ if index(s:foldable_groups, 'NONE') > -1
+ return 0
+ endif
+
if index(s:foldable_groups, 'ALL') > -1
return 1
endif
@@ -44,9 +53,20 @@ function! s:foldable(...) abort
endfor
return 0
-endfunction " }}}
+endfunction
+
+function! s:run_syntax_fold(args) abort
+ let [_0, _1, groups, cmd; _] = matchlist(a:args, '\(["'']\)\(.\{-}\)\1\s\+\(.*\)')
+ if call('s:foldable', split(groups))
+ let cmd .= ' fold'
+ endif
+ exe cmd
+endfunction
+
+com! -nargs=* SynFold call s:run_syntax_fold(<q-args>)
-syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo,rubyModuleName,rubyClassName,rubySymbolDelimiter
+" Not-Top Cluster {{{1
+syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyParentheses
" Whitespace Errors {{{1
if exists("ruby_space_errors")
@@ -59,427 +79,400 @@ if exists("ruby_space_errors")
endif
" Operators {{{1
-if exists("ruby_operators")
- syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::"
- syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!="
- syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
-endif
-" Expression Substitution and Backslash Notation {{{1
-syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
-syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
-syn match rubyQuoteEscape "\\[\\']" contained display
+syn match rubyEnglishBooleanOperator "\<\%(and\|or\|not\)\>"
+
+if exists("ruby_operators") || exists("ruby_pseudo_operators")
+ syn match rubyDotOperator "\.\|&\."
+
+ syn match rubyTernaryOperator "\%(\w\|[^\x00-\x7F]\)\@1<!?\|:"
+ syn match rubyArithmeticOperator "\*\*\|[*/%+]\|->\@!"
+ syn match rubyComparisonOperator "<=>\|<=\|<\|>=\|[-=]\@1<!>"
+ syn match rubyBitwiseOperator "[~^|]\|&\.\@!\|<<\|>>"
+ syn match rubyBooleanOperator "\%(\w\|[^\x00-\x7F]\)\@1<!!\|&&\|||"
+ syn match rubyRangeOperator "\.\.\.\="
+ syn match rubyAssignmentOperator "=>\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^="
+ syn match rubyAssignmentOperator "=>\@!" containedin=rubyBlockParameterList " TODO: this is inelegant
+ syn match rubyEqualityOperator "===\|==\|!=\|!\~\|=\~"
+
+ syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\%(\w\|[^\x00-\x7F]\)[?!]\=\|[]})]\)\@2<=\[" end="]" contains=ALLBUT,@rubyNotTop
+
+ syn match rubyScopeOperator "::"
+ syn match rubySuperClassOperator "<" contained
+ syn match rubyEigenClassOperator "<<" contained
+ syn match rubyLambdaOperator "->"
+ syn match rubySplatOperator "\%([[{(|,=]\_s*\)\@<=\*"
+ syn match rubySplatOperator "\%(^\|\s\)\@1<=\*\%(\h\|[^\x00-\x7F]\|[:$@[]\)\@="
+ syn match rubyDoubleSplatOperator "\%([{(|,]\_s*\)\@<=\*\*"
+ syn match rubyDoubleSplatOperator "\s\@1<=\*\*\%(\h\|[^\x00-\x7F]\|[:$@{]\)\@="
+ syn match rubyProcOperator "\%([[(|,]\_s*\)\@<=&"
+ syn match rubyProcOperator "\s\@1<=&\%(\h\|[^\x00-\x7F]\|[:$@]\|->\)\@="
+
+ syn cluster rubyProperOperator contains=rubyTernaryOperator,rubyArithmeticOperator,rubyComparisonOperator,rubyBitwiseOperator,rubyBooleanOperator,rubyRangeOperator,rubyAssignmentOperator,rubyEqualityOperator,rubyDefinedOperator,rubyEnglishBooleanOperator
+ syn cluster rubyClassOperator contains=rubyEigenClassOperator,rubySuperClassOperator
+ syn cluster rubyPseudoOperator contains=rubyDotOperator,rubyScopeOperator,rubyEigenClassOperator,rubySuperClassOperator,rubyLambdaOperator,rubySplatOperator,rubyDoubleSplatOperator,rubyProcOperator
+ syn cluster rubyOperator contains=ruby.*Operator
+endif
+" String Interpolation and Backslash Notation {{{1
syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop
-syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable
-syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained
-syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable
-syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained
-syn region rubyNoInterpolation start="\\#{" end="}" contained
-syn match rubyNoInterpolation "\\#{" display contained
-syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained
-syn match rubyNoInterpolation "\\#\$\W" display contained
+syn match rubyInterpolation "#\$\%(-\w\|[!$&"'*+,./0:;<>?@\`~_]\|\w\+\)" display contained contains=rubyInterpolationDelimiter,@rubyGlobalVariable
+syn match rubyInterpolation "#@@\=\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable
+syn match rubyInterpolationDelimiter "#\ze[$@]" display contained
+
+syn match rubyStringEscape "\\\_." contained display
+syn match rubyStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display
+syn match rubyStringEscape "\\u\%(\x\{4}\|{\x\{1,6}\%(\s\+\x\{1,6}\)*}\)" contained display
+syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=.\)" contained display
+
+syn match rubyBackslashEscape "\\\\" contained display
+syn match rubyQuoteEscape "\\'" contained display
+syn match rubySpaceEscape "\\ " contained display
-syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
+syn match rubyParenthesisEscape "\\[()]" contained display
+syn match rubyCurlyBraceEscape "\\[{}]" contained display
+syn match rubyAngleBracketEscape "\\[<>]" contained display
+syn match rubySquareBracketEscape "\\[[\]]" contained display
syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained
syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained
syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained
syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained
+syn cluster rubySingleCharEscape contains=rubyBackslashEscape,rubyQuoteEscape,rubySpaceEscape,rubyParenthesisEscape,rubyCurlyBraceEscape,rubyAngleBracketEscape,rubySquareBracketEscape
+syn cluster rubyNestedBrackets contains=rubyNested.\+
+syn cluster rubyStringSpecial contains=rubyInterpolation,rubyStringEscape
+syn cluster rubyStringNotTop contains=@rubyStringSpecial,@rubyNestedBrackets,@rubySingleCharEscape
+
" Regular Expression Metacharacters {{{1
-" These are mostly Oniguruma ready
-syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained
-syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial
-syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline
-syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display
-syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained
-syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained
-syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display
-syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display
-syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display
-syn match rubyRegexpDot "\." contained display
-syn match rubyRegexpSpecial "|" contained display
-syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display
-syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
-syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
-syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
-syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
-
-syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape
-syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
-syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment
-
-" Numbers and ASCII Codes {{{1
-syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display
-syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
-syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display
+syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\\\\|\\)" end=")" contained
+syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)" end=")" contained transparent contains=@rubyRegexpSpecial
+syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
+syn match rubyRegexpCharClass "\\[DdHhRSsWw]" contained display
+syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|xdigit\):\]" contained
+syn match rubyRegexpCharClass "\\[pP]{^\=.\{-}}" contained display
+syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained " see commit e477f10
+syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display
+syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display
+syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display
+syn match rubyRegexpDot "\.\|\\X" contained display
+syn match rubyRegexpIntersection "&&" contained display
+syn match rubyRegexpSpecial "\\K" contained display
+syn match rubyRegexpSpecial "|" contained display
+syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display
+syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
+syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
+syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
+syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
+
+syn cluster rubyRegexpSpecial contains=@rubyStringSpecial,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment,rubyRegexpIntersection
+
+" Numbers {{{1
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display
+syn match rubyFloat "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
+syn match rubyFloat "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)i\=\>" display
" Identifiers {{{1
-syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
-syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent
-
-syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
-syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
-syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!"
-syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
-syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
-syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
-syn match rubySymbolDelimiter ":" contained
-syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter
-syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter
-syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter
-syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter
-
-if s:foldable(':')
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
-else
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
+syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<[[:upper:]]\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
+syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<[[:upper:]]\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
+syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<[[:upper:]]\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!"
+syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
+syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
+syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
+syn match rubySymbolDelimiter ":" contained
+syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter
+
+SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape,rubyBackslashEscape
+SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
+
+syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@="
+
+syn region rubyParentheses start="(" end=")" contains=ALLBUT,@rubyNotTop containedin=rubyBlockParameterList
+syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" contains=ALLBUT,@rubyNotTop,@rubyProperOperator
+
+if exists('ruby_global_variable_error')
+ syn match rubyGlobalVariableError "$[^A-Za-z_]" display
+ syn match rubyGlobalVariableError "$-[^0FIKWadilpvw]" display
endif
-syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@="
-
-syn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained
-syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter
-
-syn match rubyInvalidVariable "$[^ A-Za-z_-]"
-syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]#
-syn match rubyPredefinedVariable "$\d\+" display
-syn match rubyPredefinedVariable "$_\>" display
-syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display
-syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display
-syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
-syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
+syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<>?@\`~]#
+syn match rubyPredefinedVariable "$\d\+" display
+syn match rubyPredefinedVariable "$_\>" display
+syn match rubyPredefinedVariable "$-[0FIWadilpvw]\>" display
+syn match rubyPredefinedVariable "$\%(stderr\|stdin\|stdout\)\>" display
+syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
+syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
-" Normal Regular Expression {{{1
-if s:foldable('/')
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
-else
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
-endif
-
-" Generalized Regular Expression {{{1
-if s:foldable('%')
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
-else
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
-endif
-
-" Normal String {{{1
+" Deprecated/removed in 1.9
+syn match rubyPredefinedVariable "$="
+syn match rubyPredefinedVariable "$-K\>" display
+syn match rubyPredefinedVariable "$\%(deferr\|defout\)\>" display
+syn match rubyPredefinedVariable "$KCODE\>" display
+" Deprecated/removed in 2.4
+syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(FALSE\|NIL\|TRUE\)\>\%(\s*(\)\@!"
+
+syn cluster rubyGlobalVariable contains=rubyGlobalVariable,rubyPredefinedVariable,rubyGlobalVariableError
+
+" Normal Regular Expressions {{{1
+SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\s\+\)\@<=/\%(=\|\_s\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+
+" Generalized Regular Expressions {{{1
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
+
+" Characters {{{1
+syn match rubyCharacter "\%(\w\|[^\x00-\x7F]\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\[[:space:]]\|\\\=[^[:space:]]\)\)"
+syn match rubyCharacter "\%(\w\|[^\x00-\x7F]\|[]})\"'/]\)\@1<!?\\u\%(\x\{4}\|{\x\{1,6}}\)"
+
+" Normal Strings {{{1
let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : ''
-exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' .
- \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster
-exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' .
- \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster
+let s:fold_arg = s:foldable('string') ? ' fold' : ''
+exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial' . s:spell_cluster . s:fold_arg
+exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" contains=rubyQuoteEscape,rubyBackslashEscape' . s:spell_cluster . s:fold_arg
+unlet s:spell_cluster s:fold_arg
" Shell Command Output {{{1
-if s:foldable('%')
- syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold
-else
- syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
-endif
+SynFold 'string' syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
-" Generalized Single Quoted String, Symbol and Array of Strings {{{1
-if s:foldable('%')
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
-else
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1"
-endif
+" Generalized Single Quoted Strings, Symbols, Array of Strings and Array of Symbols {{{1
-" Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1
-" Note: %= is not matched here as the beginning of a double quoted string
-if s:foldable('%')
- syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
-else
- syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
-endif
+" Non-bracket punctuation delimiters {{{2
+let s:names = { '~': 'Tilde', '`': 'BackQuote', '!': 'Bang', '@': 'At', '#': 'Hash', '$': 'Dollar', '%': 'Percent', '^': 'Caret',
+ \ '&': 'Ampersand', '*': 'Asterix', '_': 'Underscore', '-': 'Dash', '+': 'Plus', '=': 'Equals', '|': 'Bar',
+ \ '\': 'Backslash', ':': 'Colon', ';': 'Semicolon', '"': 'DoubleQuote', "'": 'Quote', ',': 'Comma', '.': 'Period',
+ \ '?': 'QuestionMark', '/': 'ForwardSlash' }
-" Array of Symbols {{{1
-if s:foldable('%')
- " Array of Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
-
- " Array of interpolated Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold
-else
- " Array of Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
-
- " Array of interpolated Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
-endif
+for s:delimiter in keys(s:names)
+ let s:group = 'ruby' . s:names[s:delimiter] . 'Escape'
-" Here Document {{{1
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-
-if s:foldable('<<')
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
-
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
-else
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
-
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
-endif
+ if s:delimiter =~ '[\"]'
+ let s:delimiter = '\' . s:delimiter
+ endif
-" eRuby Config {{{1
-if exists('main_syntax') && main_syntax == 'eruby'
- let b:ruby_no_expensive = 1
-endif
+ exe 'syn match ' . s:group . ' "\V\\' . s:delimiter . '" contained display'
+ exe 'syn cluster rubySingleCharEscape add=' . s:group
+ exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%q' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%w' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%s' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%i' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'hi def link ' . s:group . ' rubyStringEscape'
+endfor
+
+unlet s:delimiter s:group s:names
+" }}}2
+
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesisEscape,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape
+
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesisEscape,rubyNestedParentheses
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesisEscape,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentSymbolDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesisEscape,rubyNestedParentheses
+
+" Generalized Double Quoted Strings, Array of Strings, Array of Symbols and Shell Command Output {{{1
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\%(\%(\w\|[^\x00-\x7F]\|]\)\s*\)\@<!%=" end="=" skip="\\\\\|\\=" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses
+
+" Here Documents {{{1
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
" Module, Class, Method and Alias Declarations {{{1
-syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
-syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
-syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
-syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyOperator
-syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyOperator
-syn match rubyMethodName "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
-syn match rubyMethodName "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
-syn match rubyMethodName "\%([[:space:].]\|^\)\@2<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
+syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable nextgroup=rubyAliasDeclaration2 skipwhite
+syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable
+syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
+syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyScopeOperator nextgroup=rubySuperClassOperator skipwhite skipnl
+syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyScopeOperator
+
+syn match rubyMethodName "\<\%([_[:alpha:]]\|[^\x00-\x7F]\)\%([_[:alnum:]]\|[^\x00-\x7F]\)*[?!=]\=\%([[:alnum:]_.:?!=]\|[^\x00-\x7F]\)\@!" contained containedin=rubyMethodDeclaration
+syn match rubyMethodName "\%(\s\|^\)\@1<=\%([_[:alpha:]]\|[^\x00-\x7F]\)\%([_[:alnum:]]\|[^\x00-\x7F]\)*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
+syn match rubyMethodName "\%([[:space:].]\|^\)\@1<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
-syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyMethodName,rubyBlockParameter
+syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyMethodName
" Keywords {{{1
-" Note: the following keywords have already been defined:
-" begin case class def do end for if module unless until while
-syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
-syn match rubyOperator "\<defined?" display
-syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!"
-syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
-syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
-syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
+" TODO: reorganise
+syn match rubyControl "\%#=1\<\%(break\|in\|next\|redo\|retry\|return\)\>"
+syn match rubyKeyword "\%#=1\<\%(super\|yield\)\>"
+syn match rubyBoolean "\%#=1\<\%(true\|false\)\>[?!]\@!"
+syn match rubyPseudoVariable "\%#=1\<\(self\|nil\)\>[?!]\@!"
+syn match rubyPseudoVariable "\%#=1\<__\%(ENCODING\|dir\|FILE\|LINE\|callee\|method\)__\>"
+syn match rubyBeginEnd "\%#=1\<\%(BEGIN\|END\)\>"
" Expensive Mode {{{1
" Match 'end' with the appropriate opening keyword for syntax based folding
" and special highlighting of module/class/method definitions
if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
- syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl
- syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
- syn match rubyDefine "\<undef\>" nextgroup=rubyMethodName skipwhite skipnl
- syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
- syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
-
- if s:foldable('def')
- syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
- endif
-
- if s:foldable('class')
- syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl
+ syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
+ syn match rubyDefine "\<undef\>" nextgroup=rubyMethodName skipwhite skipnl
+ syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration,rubyEigenClassOperator skipwhite skipnl
+ syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
- if s:foldable('module')
- syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'def' syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine skip="\<end:\|\%(\<def\_s\+\)\@<=end\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'class' syn region rubyClassBlock start="\<class\>" matchgroup=rubyClass skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'module' syn region rubyModuleBlock start="\<module\>" matchgroup=rubyModule skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
" modifiers
- syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl
+ syn match rubyLineContinuation "\\$" nextgroup=@rubyModifier skipwhite skipnl
syn match rubyConditionalModifier "\<\%(if\|unless\)\>"
syn match rubyRepeatModifier "\<\%(while\|until\)\>"
+ syn match rubyRescueModifier "\<rescue\>"
- if s:foldable('do')
- syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ syn cluster rubyModifier contains=rubyConditionalModifier,rubyRepeatModifier,rubyRescueModifier
- " curly bracket block or hash literal
- if s:foldable('{')
- syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'do' syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
- if s:foldable('[')
- syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold
- endif
+ " curly bracket block or hash literal
+ SynFold '{' syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
+ SynFold '[' syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\%(\w\|[^\x00-\x7F]\)[?!]\=\|[]})]\)\@2<!\[" end="]" contains=ALLBUT,@rubyNotTop
" statements without 'do'
- if s:foldable('begin')
- syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'begin' syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'case' syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
- if s:foldable('case')
- syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'if' syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\<then\s\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
- if s:foldable('if')
- syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ syn match rubyConditional "\<\%(then\|else\|when\)\>" contained containedin=rubyCaseExpression
+ syn match rubyConditional "\<\%(then\|else\|elsif\)\>" contained containedin=rubyConditionalExpression
- syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression
- syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression
-
- syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression
- syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock
+ syn match rubyExceptionHandler "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>" contained containedin=rubyBlockExpression,rubyDoBlock
+ syn match rubyExceptionHandler2 "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>" contained containedin=rubyModuleBlock,rubyClassBlock,rubyMethodBlock
+ syn cluster rubyExceptionHandler contains=rubyExceptionHandler,rubyExceptionHandler2
" statements with optional 'do'
- syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
+ syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\<do\>" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
- if s:foldable('for')
- syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold
- else
- syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
- endif
+ SynFold 'for' syn region rubyRepeatExpression start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
if !exists("ruby_minlines")
let ruby_minlines = 500
endif
- exec "syn sync minlines=" . ruby_minlines
+ exe "syn sync minlines=" . ruby_minlines
else
- syn match rubyControl "\<def\>[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl
- syn match rubyControl "\<class\>[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl
- syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl
- syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!"
- syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
+ syn match rubyControl "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
+ syn match rubyControl "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
+ syn match rubyControl "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
+ syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|rescue\|ensure\|then\|when\|end\)\>"
+ syn match rubyKeyword "\<\%(alias\|undef\)\>"
endif
" Special Methods {{{1
if !exists("ruby_no_special_methods")
- syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function
- " attr is a common variable name
- syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!"
- syn keyword rubyAttribute attr_accessor attr_reader attr_writer
- syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)"
- syn keyword rubyEval eval class_eval instance_eval module_eval
- syn keyword rubyException raise fail catch throw
- syn keyword rubyInclude autoload gem load require require_relative
- syn keyword rubyKeyword callcc caller lambda proc
- " false positive with 'include?'
- syn match rubyMacro "\<include\>[?!]\@!"
- syn keyword rubyMacro extend prepend refine using
- syn keyword rubyMacro alias_method define_method define_singleton_method remove_method undef_method
+ syn match rubyAccess "\<\%(public\|protected\|private\)\>" " use re=2
+ syn match rubyAccess "\%#=1\<\%(public\|private\)_class_method\>"
+ syn match rubyAccess "\%#=1\<\%(public\|private\)_constant\>"
+ syn match rubyAccess "\%#=1\<module_function\>"
+ syn match rubyAttribute "\%#=1\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" " attr is a common variable name
+ syn match rubyAttribute "\%#=1\<attr_\%(accessor\|reader\|writer\)\>"
+ syn match rubyControl "\%#=1\<\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>"
+ syn match rubyEval "\%#=1\<eval\>"
+ syn match rubyEval "\%#=1\<\%(class\|instance\|module\)_eval\>"
+ syn match rubyException "\%#=1\<\%(raise\|fail\|catch\|throw\)\>"
+ syn match rubyInclude "\%#=1\<\%(autoload\|gem\|load\|require\%(_relative\)\=\)\>"
+ syn match rubyKeyword "\%#=1\<\%(callcc\|caller\|lambda\|proc\)\>"
+ syn match rubyMacro "\%#=1\<\%(extend\|include\|prepend\|refine\|using\)\>"
+ syn match rubyMacro "\%#=1\<\%(alias\|define\|define_singleton\|remove\|undef\)_method\>"
endif
" Comments and Documentation {{{1
-syn match rubySharpBang "\%^#!.*" display
-syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
-syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
+syn match rubySharpBang "\%^#!.*" display
+syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
+syn match rubyEncoding "[[:alnum:]-]\+" contained display
+syn match rubyMagicComment "\c\%<3l#\s*\zs\%(coding\|encoding\):" contained nextgroup=rubyEncoding skipwhite
+syn match rubyMagicComment "\c\%<10l#\s*\zs\%(frozen_string_literal\|warn_indent\|warn_past_scope\):" contained nextgroup=rubyBoolean skipwhite
+syn match rubyComment "#.*" contains=@rubyCommentSpecial,rubySpaceError,@Spell
+
+syn cluster rubyCommentSpecial contains=rubySharpBang,rubyTodo,rubyMagicComment
+syn cluster rubyCommentNotTop contains=@rubyCommentSpecial,rubyEncoding
+
if !exists("ruby_no_comment_fold") && s:foldable('#')
syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
- syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
+ syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
else
- syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
+ syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
endif
+" {{{1 Useless Line Continuations
+syn match rubyUselessLineContinuation "\%([.:,;{([<>~\*%&^|+=-]\|%(\%(\w\|[^\x00-\x7F]\)\@1<![?!]\)\s*\zs\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty
+syn match rubyUselessLineContinuation "\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty contained
+
" Keyword Nobbling {{{1
-" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
-syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\<\%(BEGIN\|END\)\>\)" transparent contains=NONE
-syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE
+" prevent methods with keyword names being highlighted as keywords when called
+syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|&\.\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\%(BEGIN\|END\)\>\)" transparent contains=rubyDotOperator,rubyScopeOperator
-" More Symbols {{{1
-syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1
-syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
-syn match rubySymbol "\%([{(,]\_s*\)\zs[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
-syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
+" Bang and Predicate Methods and Operators {{{1
+syn match rubyBangPredicateMethod "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]"
-" __END__ Directive {{{1
-if s:foldable('__END__')
- syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
-else
- syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
+if !exists("ruby_no_special_methods")
+ syn match rubyControl "\%#=1\<exit!" display
endif
+syn match rubyDefinedOperator "\%#=1\<defined?" display
+
+" 1.9-style Hash Keys and Keyword Parameters {{{1
+syn match rubySymbol "\%([{(|,]\_s*\)\@<=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]\=::\@!"he=e-1
+syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="he=e-1
+syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="hs=s+1,he=e-1
+
+" __END__ Directive {{{1
+SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
" Default Highlighting {{{1
hi def link rubyClass rubyDefine
hi def link rubyModule rubyDefine
-hi def link rubyMethodExceptional rubyDefine
+hi def link rubyExceptionHandler2 rubyDefine
hi def link rubyDefine Define
hi def link rubyAccess rubyMacro
hi def link rubyAttribute rubyMacro
@@ -488,14 +481,15 @@ hi def link rubyMethodName rubyFunction
hi def link rubyFunction Function
hi def link rubyConditional Conditional
hi def link rubyConditionalModifier rubyConditional
-hi def link rubyExceptional rubyConditional
+hi def link rubyExceptionHandler rubyConditional
+hi def link rubyRescueModifier rubyExceptionHandler
hi def link rubyRepeat Repeat
hi def link rubyRepeatModifier rubyRepeat
hi def link rubyOptionalDo rubyRepeat
hi def link rubyControl Statement
hi def link rubyInclude Include
hi def link rubyInteger Number
-hi def link rubyASCIICode Character
+hi def link rubyCharacter Character
hi def link rubyFloat Float
hi def link rubyBoolean Boolean
hi def link rubyException Exception
@@ -515,39 +509,80 @@ hi def link rubyPredefinedConstant rubyPredefinedIdentifier
hi def link rubyPredefinedVariable rubyPredefinedIdentifier
hi def link rubySymbol Constant
hi def link rubyKeyword Keyword
+
hi def link rubyOperator Operator
+hi def link rubyDefinedOperator rubyOperator
+hi def link rubyEnglishBooleanOperator rubyOperator
+if exists("ruby_operators")
+ hi def link rubyTernaryOperator rubyOperator
+ hi def link rubyArithmeticOperator rubyOperator
+ hi def link rubyComparisonOperator rubyOperator
+ hi def link rubyBitwiseOperator rubyOperator
+ hi def link rubyBooleanOperator rubyOperator
+ hi def link rubyRangeOperator rubyOperator
+ hi def link rubyAssignmentOperator rubyOperator
+ hi def link rubyEqualityOperator rubyOperator
+endif
+
+if exists("ruby_pseudo_operators")
+ hi def link rubyPseudoOperator Special
+ hi def link rubyDotOperator rubyPseudoOperator
+ hi def link rubyScopeOperator rubyPseudoOperator
+ hi def link rubySuperClassOperator rubyPseudoOperator
+ hi def link rubyEigenClassOperator rubyPseudoOperator
+ hi def link rubyLambdaOperator rubyPseudoOperator
+ hi def link rubyDoubleSplatOperator rubyPseudoOperator
+ hi def link rubySplatOperator rubyPseudoOperator
+ hi def link rubyProcOperator rubyPseudoOperator
+endif
+
hi def link rubyBeginEnd Statement
hi def link rubyEval Statement
hi def link rubyPseudoVariable Constant
-hi def link rubyCapitalizedMethod rubyLocalVariableOrMethod
+hi def link rubyCapitalizedMethod NONE
hi def link rubyComment Comment
+hi def link rubyEncoding Constant
+hi def link rubyMagicComment SpecialComment
hi def link rubyData Comment
hi def link rubyDataDirective Delimiter
hi def link rubyDocumentation Comment
hi def link rubyTodo Todo
+hi def link rubyBackslashEscape rubyStringEscape
hi def link rubyQuoteEscape rubyStringEscape
+hi def link rubySpaceEscape rubyStringEscape
+hi def link rubyParenthesisEscape rubyStringEscape
+hi def link rubyCurlyBraceEscape rubyStringEscape
+hi def link rubyAngleBracketEscape rubyStringEscape
+hi def link rubySquareBracketEscape rubyStringEscape
hi def link rubyStringEscape Special
+
hi def link rubyInterpolationDelimiter Delimiter
-hi def link rubyNoInterpolation rubyString
hi def link rubySharpBang PreProc
+hi def link rubyStringDelimiter Delimiter
+hi def link rubyHeredocDelimiter rubyStringDelimiter
+hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter
+hi def link rubyPercentStringDelimiter rubyStringDelimiter
+hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter
hi def link rubyRegexpDelimiter rubyStringDelimiter
hi def link rubySymbolDelimiter rubySymbol
-hi def link rubyStringDelimiter Delimiter
-hi def link rubyHeredoc rubyString
hi def link rubyString String
hi def link rubyRegexpEscape rubyRegexpSpecial
hi def link rubyRegexpQuantifier rubyRegexpSpecial
hi def link rubyRegexpAnchor rubyRegexpSpecial
hi def link rubyRegexpDot rubyRegexpCharClass
hi def link rubyRegexpCharClass rubyRegexpSpecial
+hi def link rubyRegexpIntersection rubyRegexpSpecial
hi def link rubyRegexpSpecial Special
hi def link rubyRegexpComment Comment
hi def link rubyRegexp rubyString
-hi def link rubyInvalidVariable Error
hi def link rubyError Error
+if exists("ruby_line_continuation_error")
+ hi def link rubyUselessLineContinuation rubyError
+endif
+hi def link rubyGlobalVariableError rubyError
hi def link rubySpaceError rubyError
" Postscript {{{1
@@ -556,4 +591,6 @@ let b:current_syntax = "ruby"
let &cpo = s:cpo_sav
unlet! s:cpo_sav
+delc SynFold
+
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/sass.vim b/runtime/syntax/sass.vim
index d075c8736e..b51a0ae26b 100644
--- a/runtime/syntax/sass.vim
+++ b/runtime/syntax/sass.vim
@@ -2,7 +2,7 @@
" Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.sass
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -21,8 +21,7 @@ syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:"
syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation
-syn match sassDefault "!default\>" contained
-syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+"
+syn match sassFlag "!\%(default\|global\|optional\)\>" contained
syn match sassVariable "$[[:alnum:]_-]\+"
syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite
syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite
@@ -42,7 +41,6 @@ syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName s
syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName
syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite
syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"
-syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassMixinName skipwhite
syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite
@@ -52,6 +50,7 @@ syn match sassEscape "^\s*\zs\\"
syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId
syn match sassId "[[:alnum:]_-]\+" contained
syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass
+syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassClass
syn match sassClass "[[:alnum:]_-]\+" contained
syn match sassAmpersand "&"
@@ -75,12 +74,12 @@ syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell
hi def link sassEndOfLineComment sassComment
hi def link sassCssComment sassComment
hi def link sassComment Comment
-hi def link sassDefault cssImportant
+hi def link sassFlag cssImportant
hi def link sassVariable Identifier
hi def link sassFunction Function
hi def link sassMixing PreProc
hi def link sassMixin PreProc
-hi def link sassPlaceholder PreProc
+hi def link sassPlaceholder sassClassChar
hi def link sassExtend PreProc
hi def link sassFunctionDecl PreProc
hi def link sassReturn PreProc
diff --git a/runtime/syntax/scss.vim b/runtime/syntax/scss.vim
index 6fb9691527..9d79dc5cb6 100644
--- a/runtime/syntax/scss.vim
+++ b/runtime/syntax/scss.vim
@@ -2,7 +2,7 @@
" Language: SCSS
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.scss
-" Last Change: 2010 Jul 26
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -10,10 +10,15 @@ endif
runtime! syntax/sass.vim
+syn clear sassComment
+syn clear sassCssComment
+syn clear sassEndOfLineComment
+
syn match scssComment "//.*" contains=sassTodo,@Spell
-syn region scssComment start="/\*" end="\*/" contains=sassTodo,@Spell
+syn region scssCssComment start="/\*" end="\*/" contains=sassTodo,@Spell
-hi def link scssComment sassComment
+hi def link scssCssComment scssComment
+hi def link scssComment Comment
let b:current_syntax = "scss"
diff --git a/runtime/syntax/sexplib.vim b/runtime/syntax/sexplib.vim
new file mode 100644
index 0000000000..55dd3fb494
--- /dev/null
+++ b/runtime/syntax/sexplib.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: S-expressions as used in Sexplib
+" Filenames: *.sexp
+" Maintainers: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change: 2020 Dec 31 - Updated header for Vim contribution (MM)
+" 2017 Apr 11 - Improved matching of negative numbers (MM)
+" 2012 Jun 20 - Fixed a block comment highlighting bug (MM)
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax") && b:current_syntax == "sexplib"
+ finish
+endif
+
+" Sexplib is case sensitive.
+syn case match
+
+" Comments
+syn keyword sexplibTodo contained TODO FIXME XXX NOTE
+syn region sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl,sexplibComment
+syn match sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment
+syn region sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+syn match sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained
+syn region sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat
+syn match sexplibComment ";.*" contains=sexplibTodo
+
+" Atoms
+syn match sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/
+syn region sexplibQuotedAtom start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match sexplibNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match sexplibFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
+
+" Lists
+syn region sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr
+
+" Errors
+syn match sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/
+syn match sexplibParenErr ")"
+
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_sexplib_syntax_inits")
+ if version < 508
+ let did_sexplib_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink sexplibParenErr Error
+ HiLink sexplibUnquotedAtomErr Error
+
+ HiLink sexplibComment Comment
+ HiLink sexplibSexpComment Comment
+ HiLink sexplibQuotedAtomComment Include
+ HiLink sexplibUnquotedAtomComment Comment
+ HiLink sexplibBlockComment Comment
+ HiLink sexplibListComment Comment
+
+ HiLink sexplibBoolean Boolean
+ HiLink sexplibCharacter Character
+ HiLink sexplibNumber Number
+ HiLink sexplibFloat Float
+ HiLink sexplibUnquotedAtom Identifier
+ HiLink sexplibEncl Identifier
+ HiLink sexplibQuotedAtom Keyword
+
+ HiLink sexplibTodo Todo
+
+ HiLink sexplibEncl Keyword
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "sexplib"
+
+" vim: ts=8
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index ae62e195a4..48a0024b00 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -1,12 +1,12 @@
" Vim syntax file
" Language: shell (sh) Korn shell (ksh) bash (sh)
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change: Jun 16, 2019
-" Version: 188
+" Last Change: Nov 24, 2020
+" Version: 196
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
" For options and settings, please use: :help ft-sh-syntax
-" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr)
+" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras
" quit when a syntax file was already loaded {{{1
if exists("b:current_syntax")
@@ -20,8 +20,8 @@ if getline(1) =~ '\<ksh$'
elseif getline(1) =~ '\<bash$'
let b:is_bash = 1
elseif getline(1) =~ '\<dash$'
- let b:is_posix = 1
-elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh")
+ let b:is_dash = 1
+elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") && !exists("g:is_dash")
let s:shell = ""
if executable("/bin/sh")
let s:shell = resolve("/bin/sh")
@@ -33,7 +33,7 @@ elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix"
elseif s:shell =~ 'bash$'
let b:is_bash = 1
elseif s:shell =~ 'dash$'
- let b:is_posix = 1
+ let b:is_dash = 1
endif
unlet s:shell
endif
@@ -45,7 +45,7 @@ endif
" So, when the user sets "g:is_bash", "g:is_kornshell",
" or "g:is_posix", a b:is_sh is converted into b:is_bash/b:is_kornshell,
" respectively.
-if !exists("b:is_kornshell") && !exists("b:is_bash")
+if !exists("b:is_kornshell") && !exists("b:is_bash") && !exists("b:is_dash")
if exists("g:is_posix") && !exists("g:is_kornshell")
let g:is_kornshell= g:is_posix
endif
@@ -59,11 +59,21 @@ if !exists("b:is_kornshell") && !exists("b:is_bash")
if exists("b:is_sh")
unlet b:is_sh
endif
+ elseif exists("g:is_dash")
+ let b:is_dash= 1
+ if exists("b:is_sh")
+ unlet b:is_sh
+ endif
else
let b:is_sh= 1
endif
endif
+" if b:is_dash, set b:is_posix too
+if exists("b:is_dash")
+ let b:is_posix= 1
+endif
+
" set up default g:sh_fold_enabled {{{1
" ================================
if !exists("g:sh_fold_enabled")
@@ -124,29 +134,36 @@ syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsa
if exists("b:is_kornshell") || exists("b:is_bash")
syn cluster ErrorList add=shDTestError
endif
-syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
+syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo
syn cluster shArithList contains=@shArithParenList,shParenError
syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
-syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shForPP,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster shCaseList add=shForPP
+endif
syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
-syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ
+" COMBAK: removing shEscape fromshDblQuoteList fails ksh04:43
+syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ
syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS
-syn cluster shDerefVarList contains=shDerefOff,shDerefOp,shDerefVarArray,shDerefOpError
+syn cluster shDerefVarList contains=shDerefOffset,shDerefOp,shDerefVarArray,shDerefOpError
syn cluster shEchoList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
if exists("b:is_kornshell") || exists("b:is_bash")
- syn cluster shFunctionList add=shRepeat
- syn cluster shFunctionList add=shDblBrace,shDblParen
+ syn cluster shFunctionList add=shRepeat,shDblBrace,shDblParen,shForPP
endif
syn cluster shHereBeginList contains=@shCommandSubList
syn cluster shHereList contains=shBeginHere,shHerePayload
syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
syn cluster shIdList contains=shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
-syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch
+syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shIf,shOption,shSet,shTest,shTestOpr,shTouch
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster shLoopoList add=shForPP
+endif
+syn cluster shPPSLeftList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm
syn cluster shSubShList contains=@shCommandSubList,shCommandSubBQ,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
syn cluster shTestList contains=shArithmetic,shCharClass,shCommandSub,shCommandSubBQ,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shSpecialDQ,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
@@ -156,8 +173,8 @@ syn cluster shForList contains=shTestOpr,shNumber,shDerefSimple,shDeref,shComman
" Echo: {{{1
" ====
" This one is needed INSIDE a CommandSub, so that `echo bla` be correct
-syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
-syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
+syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]'
" This must be after the strings, so that ... \" will be correct
@@ -196,7 +213,7 @@ endif
" Options: {{{1
" ====================
syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+"
-syn match shOption "\s\zs--[^ \t$`'"|);]\+"
+syn match shOption "\s\zs--[^ \t$=`'"|);]\+"
" File Redirection Highlighted As Operators: {{{1
"===========================================
@@ -244,7 +261,9 @@ syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum
ShFoldIfDoFor syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList
ShFoldIfDoFor syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList
ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
-ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=@shForList
+if exists("b:is_kornshell") || exists("b:is_bash")
+ ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=@shForList
+endif
if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
syn cluster shCaseList add=shRepeat
@@ -292,9 +311,12 @@ endif
"======
syn match shWrapLineOperator "\\$"
syn region shCommandSubBQ start="`" skip="\\\\\|\\." end="`" contains=shBQComment,@shCommandSubList
-"see ksh13
+"COMBAK: see ksh13:50
"syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shSingleQuote,shDoubleQuote,shComment
+"COMBAK: see sh11:27
syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment
+"COMBAK: see ksh13:53
+"syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.'
" $() and $(()): {{{1
" $(..) is not supported by sh (Bourne shell). However, apparently
@@ -352,8 +374,8 @@ elseif !exists("g:sh_no_error")
syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial
endif
syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart,shSpecialSQ
-syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
-syn region shDoubleQuote matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contained contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
+syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
+syn region shDoubleQuote matchgroup=shQuote start=+"+ matchgroup=shSpecial skip=+\\"+ matchgroup=shQuote end=+"+ contained contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
syn match shStringSpecial "[^[:print:] \t]" contained
syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shComment
syn match shSpecialSQ "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,@shNoZSList
@@ -362,8 +384,8 @@ syn match shSpecialStart "\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBks
syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]"
syn match shSpecialNoZS contained "\%(\\\\\)*\\[\\"'`$()#]"
syn match shSpecialNxt contained "\\[\\"'`$()#]"
-syn region shBkslshSnglQuote contained matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart
-syn region shBkslshDblQuote contained matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
+"syn region shBkslshSnglQuote contained matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart
+"syn region shBkslshDblQuote contained matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
" Comments: {{{1
"==========
@@ -381,23 +403,23 @@ syn match shBQComment contained "#.\{-}\ze`" contains=@shCommentGroup
" Here Documents: {{{1
" =========================================
-" Note : shHereDoc0[137] only had shDblQuoteList contained
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc02 end="^\s*\z1\s*$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc04 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t'"|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^\t|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^\t|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$" contains=@shDblQuoteList
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$"
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$" contains=@shDblQuoteList
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" contains=@shDblQuoteList
-ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc06 end="^\s*\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc07 end="^\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc08 end="^\s*\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc09 end="^\z1\s*$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc12 end="^\s*\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc13 end="^\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc14 end="^\s*\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc15 end="^\z1\s*$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc16 end="^\s*\z1\s*$"
+
" Here Strings: {{{1
" =============
@@ -409,7 +431,7 @@ endif
" Identifiers: {{{1
"=============
syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained
-syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign
+syn match shVariable "\<\h\w*\ze=" nextgroup=shVarAssign
syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote,shVar
syn match shVar contained "\h\w*"
syn region shAtExpr contained start="@(" end=")" contains=@shIdList
@@ -419,6 +441,9 @@ if exists("b:is_bash")
syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\)\>[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList nextgroup=shComment
elseif exists("b:is_kornshell") || exists("b:is_posix")
syn match shSet "^\s*set\ze\s\+$"
+ if exists("b:is_dash")
+ syn region shSetList oneline matchgroup=shSet start="\<\%(local\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ endif
syn region shSetList oneline matchgroup=shSet start="\<\(export\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\>\)\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList nextgroup=shComment
else
@@ -448,13 +473,13 @@ if !exists("g:sh_no_error")
syn match shDerefWordError "[^}$[~]" contained
endif
syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList
-syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray
+syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray nextgroup=shSpecialStart
syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList
syn match shDerefSimple "\$\$" nextgroup=@shNoZSList
-syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList
+syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList nextgroup=shSpecialStart
if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
- syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS
- syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS
+ syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart
+ syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart
endif
" ksh: ${!var[*]} array index list syntax: {{{1
@@ -466,14 +491,14 @@ endif
" bash: ${!prefix*} and ${#parameter}: {{{1
" ====================================
if exists("b:is_bash")
- syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOff
+ syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOffset
syn match shDerefVar contained "{\@<=!\h\w*" nextgroup=@shDerefVarList
endif
if exists("b:is_kornshell")
syn match shDerefVar contained "{\@<=!\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList
endif
-syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError
+syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOffset,shDerefOpError
syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp
syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList
syn match shDerefVar contained '\d' nextgroup=@shDerefVarList
@@ -497,6 +522,7 @@ syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" co
" bash : ${parameter^^pattern} Case modification
" bash : ${parameter,pattern} Case modification
" bash : ${parameter,,pattern} Case modification
+" bash : ${@:start:qty} display command line arguments from start to start+qty-1 (inferred)
syn cluster shDerefPatternList contains=shDerefPattern,shDerefString
if !exists("g:sh_no_error")
syn match shDerefOpError contained ":[[:punct:]]"
@@ -517,17 +543,19 @@ syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!'+
syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial
syn match shDerefString contained "\\["']" nextgroup=shDerefPattern
-if exists("b:is_bash")
- " bash : ${parameter:offset}
- " bash : ${parameter:offset:length}
- syn region shDerefOff contained start=':[^-=?+]' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple
- syn region shDerefOff contained start=':\s-' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple
+if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
+ " bash ksh posix : ${parameter:offset}
+ " bash ksh posix : ${parameter:offset:length}
+ syn region shDerefOffset contained start=':[^-=?+]' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple
+ syn region shDerefOffset contained start=':\s-' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple
syn match shDerefLen contained ":[^}]\+" contains=shDeref,shDerefSimple,shArithmetic
+endif
+if exists("b:is_bash")
" bash : ${parameter//pattern/string}
" bash : ${parameter//pattern}
syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft
- syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList
+ syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' end='"' nextgroup=shDerefPPSright contains=@shPPSLeftList
syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shPPSRightList
" bash : ${parameter/#substring/replacement}
@@ -670,8 +698,8 @@ if !exists("skip_sh_syntax_inits")
hi def link bashSpecialVariables shShellVariables
hi def link bashStatement shStatement
hi def link shCharClass shSpecial
- hi def link shDerefOff shDerefOp
- hi def link shDerefLen shDerefOff
+ hi def link shDerefOffset shDerefOp
+ hi def link shDerefLen shDerefOffset
endif
if exists("b:is_kornshell") || exists("b:is_posix")
hi def link kshSpecialVariables shShellVariables
@@ -735,6 +763,7 @@ if !exists("skip_sh_syntax_inits")
hi def link shHereDoc13 shRedir
hi def link shHereDoc14 shRedir
hi def link shHereDoc15 shRedir
+ hi def link shHereDoc16 shRedir
endif
" Delete shell folding commands {{{1
diff --git a/runtime/syntax/sil.vim b/runtime/syntax/sil.vim
new file mode 100644
index 0000000000..43158da4a8
--- /dev/null
+++ b/runtime/syntax/sil.vim
@@ -0,0 +1,179 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim syntax file
+" Language: sil
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+syn keyword silStage skipwhite nextgroup=silStages
+ \ sil_stage
+syn keyword silStages
+ \ canonical
+ \ raw
+
+syn match silIdentifier skipwhite
+ \ /@\<[A-Za-z_0-9]\+\>/
+
+syn match silConvention skipwhite
+ \ /$\?@convention/
+syn region silConvention contained contains=silConventions
+ \ start="@convention(" end=")"
+syn keyword silConventions
+ \ block
+ \ c
+ \ method
+ \ objc_method
+ \ sil_differentiability_witness
+ \ thick
+ \ thin
+ \ witness_method
+
+syn match silFunctionType skipwhite
+ \ /@\(\<autoreleased\>\|\<callee_guaranteed\>\|\<callee_owned\>\|\<error\>\|\<guaranteed\>\|\<in\>\|\<in_constant\>\|\<in_guaranteed\>\|\<inout\>\|\<inout_aliasable\>\|\<noescape\>\|\<out\>\|\<owned\>\)/
+syn match silMetatypeType skipwhite
+ \ /@\(\<thick\>\|\<thin\>\|\<objc\>\)/
+
+" TODO: handle [tail_elems sil-type * sil-operand]
+syn region silAttribute contains=silAttributes
+ \ start="\[" end="\]"
+syn keyword silAttributes contained containedin=silAttribute
+ \ abort
+ \ deinit
+ \ delegatingself
+ \ derivedself
+ \ derivedselfonly
+ \ dynamic
+ \ exact
+ \ init
+ \ modify
+ \ mutating
+ \ objc
+ \ open
+ \ read
+ \ rootself
+ \ stack
+ \ static
+ \ strict
+ \ unknown
+ \ unsafe
+ \ var
+
+syn keyword swiftImport import skipwhite nextgroup=swiftImportModule
+syn match swiftImportModule /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained nextgroup=swiftImportComponent
+syn match swiftImportComponent /\.\<[A-Za-z_][A-Za-z_0-9]*\>/ contained nextgroup=swiftImportComponent
+
+syn region swiftComment start="/\*" end="\*/" contains=swiftComment,swiftTodo
+syn region swiftLineComment start="//" end="$" contains=swiftTodo
+
+syn match swiftLineComment /^#!.*/
+syn match swiftTypeName /\<[A-Z][a-zA-Z_0-9]*\>/
+syn match swiftDecimal /\<[-]\?[0-9]\+\>/
+syn match swiftDecimal /\<[-+]\?[0-9]\+\>/
+
+syn match swiftTypeName /\$\*\<\?[A-Z][a-zA-Z0-9_]*\>/
+syn match swiftVarName /%\<[A-z[a-z_0-9]\+\(#[0-9]\+\)\?\>/
+
+syn keyword swiftKeyword break case continue default do else for if in static switch repeat return where while skipwhite
+
+syn keyword swiftKeyword sil internal thunk skipwhite
+syn keyword swiftKeyword public hidden private shared public_external hidden_external skipwhite
+syn keyword swiftKeyword getter setter allocator initializer enumelt destroyer globalaccessor objc skipwhite
+syn keyword swiftKeyword alloc_global alloc_stack alloc_ref alloc_ref_dynamic alloc_box alloc_existential_box alloc_value_buffer dealloc_stack dealloc_box dealloc_existential_box dealloc_ref dealloc_partial_ref dealloc_value_buffer skipwhite
+syn keyword swiftKeyword debug_value debug_value_addr skipwhite
+syn keyword swiftKeyword load load_unowned store assign mark_uninitialized mark_function_escape copy_addr destroy_addr index_addr index_raw_pointer bind_memory to skipwhite
+syn keyword swiftKeyword strong_retain strong_release strong_retain_unowned ref_to_unowned unowned_to_ref unowned_retain unowned_release load_weak store_unowned store_weak fix_lifetime autorelease_value set_deallocating is_unique is_escaping_closure skipwhite
+syn keyword swiftKeyword function_ref integer_literal float_literal string_literal global_addr skipwhite
+syn keyword swiftKeyword class_method super_method witness_method objc_method objc_super_method skipwhite
+syn keyword swiftKeyword partial_apply builtin skipwhite
+syn keyword swiftApplyKeyword apply try_apply skipwhite
+syn keyword swiftKeyword metatype value_metatype existential_metatype skipwhite
+syn keyword swiftKeyword retain_value release_value retain_value_addr release_value_addr tuple tuple_extract tuple_element_addr struct struct_extract struct_element_addr ref_element_addr skipwhite
+syn keyword swiftKeyword init_enum_data_addr unchecked_enum_data unchecked_take_enum_data_addr inject_enum_addr skipwhite
+syn keyword swiftKeyword init_existential_addr init_existential_value init_existential_metatype deinit_existential_addr deinit_existential_value open_existential_addr open_existential_box open_existential_box_value open_existential_metatype init_existential_ref open_existential_ref open_existential_value skipwhite
+syn keyword swiftKeyword upcast address_to_pointer pointer_to_address pointer_to_thin_function unchecked_addr_cast unchecked_ref_cast unchecked_ref_cast_addr ref_to_raw_pointer ref_to_bridge_object ref_to_unmanaged unmanaged_to_ref raw_pointer_to_ref skipwhite
+syn keyword swiftKeyword convert_function thick_to_objc_metatype thin_function_to_pointer objc_to_thick_metatype thin_to_thick_function unchecked_ref_bit_cast unchecked_trivial_bit_cast bridge_object_to_ref bridge_object_to_word unchecked_bitwise_cast skipwhite
+syn keyword swiftKeyword objc_existential_metatype_to_object objc_metatype_to_object objc_protocol skipwhite
+syn keyword swiftKeyword unconditional_checked_cast unconditional_checked_cast_addr unconditional_checked_cast_value skipwhite
+syn keyword swiftKeyword cond_fail skipwhite
+syn keyword swiftKeyword unreachable return throw br cond_br switch_value select_enum select_enum_addr select_value switch_enum switch_enum_addr dynamic_method_br checked_cast_br checked_cast_value_br checked_cast_addr_br skipwhite
+syn keyword swiftKeyword project_box project_existential_box project_value_buffer project_block_storage init_block_storage_header copy_block mark_dependence skipwhite
+
+syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName
+syn region swiftTypeAttributes start="\[" end="\]" skipwhite contained nextgroup=swiftTypeName
+syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters
+
+syn region swiftTypeParameters start="<" end=">" skipwhite contained
+
+syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncAttributes,swiftFuncName,swiftOperator
+syn region swiftFuncAttributes start="\[" end="\]" skipwhite contained nextgroup=swiftFuncName,swiftOperator
+syn match swiftFuncName /\<[A-Za-z_][A-Za-z_0-9]*\>/ skipwhite contained nextgroup=swiftTypeParameters
+syn keyword swiftFuncKeyword subscript init destructor nextgroup=swiftTypeParameters
+
+syn keyword swiftVarDefinition var skipwhite nextgroup=swiftVarName
+syn keyword swiftVarDefinition let skipwhite nextgroup=swiftVarName
+syn match swiftVarName /\<[A-Za-z_][A-Za-z_0-9]*\>/ skipwhite contained
+
+syn keyword swiftDefinitionModifier static
+
+syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/
+
+hi def link swiftImport Include
+hi def link swiftImportModule Title
+hi def link swiftImportComponent Identifier
+hi def link swiftApplyKeyword Statement
+hi def link swiftKeyword Statement
+hi def link swiftTypeDefinition Define
+hi def link swiftTypeName Type
+hi def link swiftTypeParameters Special
+hi def link swiftTypeAttributes PreProc
+hi def link swiftFuncDefinition Define
+hi def link swiftDefinitionModifier Define
+hi def link swiftFuncName Function
+hi def link swiftFuncAttributes PreProc
+hi def link swiftFuncKeyword Function
+hi def link swiftVarDefinition Define
+hi def link swiftVarName Identifier
+hi def link swiftImplicitVarName Identifier
+hi def link swiftIdentifierKeyword Identifier
+hi def link swiftTypeDeclaration Delimiter
+hi def link swiftBoolean Boolean
+hi def link swiftString String
+hi def link swiftInterpolation Special
+hi def link swiftComment Comment
+hi def link swiftLineComment Comment
+hi def link swiftDecimal Number
+hi def link swiftHex Number
+hi def link swiftOct Number
+hi def link swiftBin Number
+hi def link swiftOperator Function
+hi def link swiftChar Character
+hi def link swiftLabel Label
+hi def link swiftNew Operator
+
+hi def link silStage Special
+hi def link silStages Type
+hi def link silConvention Special
+hi def link silConventionParameter Special
+hi def link silConventions Type
+hi def link silIdentifier Identifier
+hi def link silFunctionType Special
+hi def link silMetatypeType Special
+hi def link silAttribute PreProc
+
+let b:current_syntax = "sil"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/sm.vim b/runtime/syntax/sm.vim
index 0ecc96875f..a16575c519 100644
--- a/runtime/syntax/sm.vim
+++ b/runtime/syntax/sm.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: sendmail
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Oct 25, 2016
-" Version: 8
+" Version: 9
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
if exists("b:current_syntax")
finish
diff --git a/runtime/syntax/sml.vim b/runtime/syntax/sml.vim
index fa4524f93d..afff5304e6 100644
--- a/runtime/syntax/sml.vim
+++ b/runtime/syntax/sml.vim
@@ -3,13 +3,16 @@
" Filenames: *.sml *.sig
" Maintainers: Markus Mottl <markus.mottl@gmail.com>
" Fabrizio Zeno Cornelli <zeno@filibusta.crema.unimi.it>
-" URL: http://www.ocaml.info/vim/syntax/sml.vim
-" Last Change: 2006 Oct 23 - Fixed character highlighting bug (MM)
-" 2002 Jun 02 - Fixed small typo (MM)
-" 2001 Nov 20 - Fixed small highlighting bug with modules (MM)
+" Last Change: 2019 Oct 01 - Only spell check strings & comments (Chuan Wei Foo)
+" 2015 Aug 31 - Fixed opening of modules (Ramana Kumar)
+" 2006 Oct 23 - Fixed character highlighting bug (MM)
" quit when a syntax file was already loaded
if exists("b:current_syntax")
+
+" Disable spell checking of syntax.
+syn spell notoplevel
+
finish
endif
@@ -52,7 +55,7 @@ syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=sm
" Comments
-syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo
+syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo,@Spell
syn keyword smlTodo contained TODO FIXME XXX
@@ -82,7 +85,7 @@ syn region smlSig matchgroup=smlModule start="\<sig\>" matchgroup=smlModule en
syn region smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr
" "open"
-syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
+syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
" "structure" - somewhat complicated stuff ;-)
syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef
@@ -136,7 +139,7 @@ syn match smlModPath "\u\(\w\|'\)*\."he=e-1
syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+
syn match smlCharErr +#"\\\d\d"\|#"\\\d"+
-syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
syn match smlFunDef "=>"
syn match smlRefAssign ":="
@@ -149,9 +152,9 @@ syn match smlKeyChar ";"
syn match smlKeyChar "\*"
syn match smlKeyChar "="
-syn match smlNumber "\<-\=\d\+\>"
-syn match smlNumber "\<-\=0[x|X]\x\+\>"
-syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
+syn match smlNumber "\<-\=\d\+\>"
+syn match smlNumber "\<-\=0[x|X]\x\+\>"
+syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
" Synchronization
syn sync minlines=20
@@ -167,49 +170,49 @@ syn sync match smlSigSync groupthere smlSig "\<end\>"
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
-hi def link smlBraceErr Error
-hi def link smlBrackErr Error
-hi def link smlParenErr Error
+hi def link smlBraceErr Error
+hi def link smlBrackErr Error
+hi def link smlParenErr Error
-hi def link smlCommentErr Error
+hi def link smlCommentErr Error
-hi def link smlEndErr Error
-hi def link smlThenErr Error
+hi def link smlEndErr Error
+hi def link smlThenErr Error
-hi def link smlCharErr Error
+hi def link smlCharErr Error
-hi def link smlComment Comment
+hi def link smlComment Comment
-hi def link smlModPath Include
-hi def link smlModule Include
-hi def link smlModParam1 Include
-hi def link smlModType Include
-hi def link smlMPRestr3 Include
-hi def link smlFullMod Include
+hi def link smlModPath Include
+hi def link smlModule Include
+hi def link smlModParam1 Include
+hi def link smlModType Include
+hi def link smlMPRestr3 Include
+hi def link smlFullMod Include
hi def link smlModTypeRestr Include
-hi def link smlWith Include
-hi def link smlMTDef Include
+hi def link smlWith Include
+hi def link smlMTDef Include
hi def link smlConstructor Constant
-hi def link smlModPreRHS Keyword
-hi def link smlMPRestr2 Keyword
-hi def link smlKeyword Keyword
-hi def link smlFunDef Keyword
-hi def link smlRefAssign Keyword
-hi def link smlKeyChar Keyword
-hi def link smlAnyVar Keyword
-hi def link smlTopStop Keyword
-hi def link smlOperator Keyword
-
-hi def link smlBoolean Boolean
-hi def link smlCharacter Character
-hi def link smlNumber Number
-hi def link smlReal Float
-hi def link smlString String
-hi def link smlType Type
-hi def link smlTodo Todo
-hi def link smlEncl Keyword
+hi def link smlModPreRHS Keyword
+hi def link smlMPRestr2 Keyword
+hi def link smlKeyword Keyword
+hi def link smlFunDef Keyword
+hi def link smlRefAssign Keyword
+hi def link smlKeyChar Keyword
+hi def link smlAnyVar Keyword
+hi def link smlTopStop Keyword
+hi def link smlOperator Keyword
+
+hi def link smlBoolean Boolean
+hi def link smlCharacter Character
+hi def link smlNumber Number
+hi def link smlReal Float
+hi def link smlString String
+hi def link smlType Type
+hi def link smlTodo Todo
+hi def link smlEncl Keyword
let b:current_syntax = "sml"
diff --git a/runtime/syntax/spec.vim b/runtime/syntax/spec.vim
index 2d2550559b..d7d5877943 100644
--- a/runtime/syntax/spec.vim
+++ b/runtime/syntax/spec.vim
@@ -3,7 +3,7 @@
" Language: SPEC: Build/install scripts for Linux RPM packages
" Maintainer: Igor Gnatenko i.gnatenko.brain@gmail.com
" Former Maintainer: Donovan Rebbechi elflord@panix.com (until March 2014)
-" Last Change: 2019 May 07
+" Last Change: 2020 May 25
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -71,7 +71,7 @@ syn keyword specMacroNameOther contained buildroot buildsubdir distribution dist
syn match specMacroNameOther contained '\<\(PATCH\|SOURCE\)\d*\>'
"valid _macro names from /usr/lib/rpm/macros
-syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor
+syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _unitdir _usrsrc _var _vendor
"------------------------------------------------------------------------------
@@ -111,7 +111,7 @@ syn region specDescriptionArea matchgroup=specSection start='^%description' end=
syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment
"%% Scripts Section %%
-syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|posttrans\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|autosetup\|autopatch\|find_lang\|make_build\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
+syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|check\|pre\|postun\|preun\|post\|posttrans\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|autosetup\|autopatch\|find_lang\|make_build\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
"%% Changelog Section %%
syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense
@@ -128,6 +128,8 @@ syn case match
"sh-like comment stile, only valid in script part
syn match shComment contained '#.*$'
+syn region dnlComment matchgroup=specComment start=+%dnl+ end=+$+
+
syn region shQuote1 contained matchgroup=shQuoteDelim start=+'+ skip=+\\'+ end=+'+ contains=specMacroIdentifier
syn region shQuote2 contained matchgroup=shQuoteDelim start=+"+ skip=+\\"+ end=+"+ contains=specVariables,specMacroIdentifier
@@ -173,6 +175,7 @@ endif
"sh colors
hi def link shComment Comment
+hi def link dnlComment Comment
hi def link shIf Statement
hi def link shOperator Special
hi def link shQuote1 String
diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim
index 755d08e768..ae3c7dd8cc 100644
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -1,12 +1,15 @@
" Vim syntax file
" Language: OpenSSH client configuration file (ssh_config)
" Author: David Necas (Yeti)
-" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
+" Maintainer: Jakub Jelen <jakuje at gmail dot com>
+" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
" Contributor: Karsten Hopp <karsten@redhat.com>
" Contributor: Dean, Adam Kenneth <adam.ken.dean@hpe.com>
-" Last Change: 2016 Dec 28
-" SSH Version: 7.4p1
+" Last Change: 2021 Mar 29
+" Added RemoteCommand from pull request #4809
+" Included additional keywords from Martin.
+" SSH Version: 8.5p1
"
" Setup
@@ -130,24 +133,25 @@ syn case ignore
" Keywords
syn keyword sshconfigHostSect Host
-syn keyword sshconfigMatch canonical exec host originalhost user localuser all
+syn keyword sshconfigMatch canonical final exec host originalhost user localuser all
syn keyword sshconfigKeyword AddressFamily
syn keyword sshconfigKeyword AddKeysToAgent
syn keyword sshconfigKeyword BatchMode
syn keyword sshconfigKeyword BindAddress
+syn keyword sshconfigKeyword BindInterface
syn keyword sshconfigKeyword CanonicalDomains
syn keyword sshconfigKeyword CanonicalizeFallbackLocal
syn keyword sshconfigKeyword CanonicalizeHostname
syn keyword sshconfigKeyword CanonicalizeMaxDots
+syn keyword sshconfigKeyword CanonicalizePermittedCNAMEs
+syn keyword sshconfigKeyword CASignatureAlgorithms
syn keyword sshconfigKeyword CertificateFile
syn keyword sshconfigKeyword ChallengeResponseAuthentication
syn keyword sshconfigKeyword CheckHostIP
-syn keyword sshconfigKeyword Cipher
syn keyword sshconfigKeyword Ciphers
syn keyword sshconfigKeyword ClearAllForwardings
syn keyword sshconfigKeyword Compression
-syn keyword sshconfigKeyword CompressionLevel
syn keyword sshconfigKeyword ConnectTimeout
syn keyword sshconfigKeyword ConnectionAttempts
syn keyword sshconfigKeyword ControlMaster
@@ -157,18 +161,13 @@ syn keyword sshconfigKeyword DynamicForward
syn keyword sshconfigKeyword EnableSSHKeysign
syn keyword sshconfigKeyword EscapeChar
syn keyword sshconfigKeyword ExitOnForwardFailure
+syn keyword sshconfigKeyword FingerprintHash
syn keyword sshconfigKeyword ForwardAgent
syn keyword sshconfigKeyword ForwardX11
syn keyword sshconfigKeyword ForwardX11Timeout
syn keyword sshconfigKeyword ForwardX11Trusted
syn keyword sshconfigKeyword GSSAPIAuthentication
-syn keyword sshconfigKeyword GSSAPIClientIdentity
syn keyword sshconfigKeyword GSSAPIDelegateCredentials
-syn keyword sshconfigKeyword GSSAPIKeyExchange
-syn keyword sshconfigKeyword GSSAPIRenewalForcesRekey
-syn keyword sshconfigKeyword GSSAPIServerIdentity
-syn keyword sshconfigKeyword GSSAPITrustDNS
-syn keyword sshconfigKeyword GSSAPITrustDns
syn keyword sshconfigKeyword GatewayPorts
syn keyword sshconfigKeyword GlobalKnownHostsFile
syn keyword sshconfigKeyword HashKnownHosts
@@ -176,9 +175,11 @@ syn keyword sshconfigKeyword HostKeyAlgorithms
syn keyword sshconfigKeyword HostKeyAlias
syn keyword sshconfigKeyword HostName
syn keyword sshconfigKeyword HostbasedAuthentication
+syn keyword sshconfigKeyword HostbasedAcceptedAlgorithms
syn keyword sshconfigKeyword HostbasedKeyTypes
syn keyword sshconfigKeyword IPQoS
syn keyword sshconfigKeyword IdentitiesOnly
+syn keyword sshconfigKeyword IdentityAgent
syn keyword sshconfigKeyword IdentityFile
syn keyword sshconfigKeyword IgnoreUnknown
syn keyword sshconfigKeyword Include
@@ -186,9 +187,11 @@ syn keyword sshconfigKeyword IPQoS
syn keyword sshconfigKeyword KbdInteractiveAuthentication
syn keyword sshconfigKeyword KbdInteractiveDevices
syn keyword sshconfigKeyword KexAlgorithms
+syn keyword sshconfigKeyword KnownHostsCommand
syn keyword sshconfigKeyword LocalCommand
syn keyword sshconfigKeyword LocalForward
syn keyword sshconfigKeyword LogLevel
+syn keyword sshconfigKeyword LogVerbose
syn keyword sshconfigKeyword MACs
syn keyword sshconfigKeyword Match
syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
@@ -196,36 +199,57 @@ syn keyword sshconfigKeyword NumberOfPasswordPrompts
syn keyword sshconfigKeyword PKCS11Provider
syn keyword sshconfigKeyword PasswordAuthentication
syn keyword sshconfigKeyword PermitLocalCommand
+syn keyword sshconfigKeyword PermitRemoteOpen
syn keyword sshconfigKeyword Port
syn keyword sshconfigKeyword PreferredAuthentications
-syn keyword sshconfigKeyword Protocol
syn keyword sshconfigKeyword ProxyCommand
syn keyword sshconfigKeyword ProxyJump
syn keyword sshconfigKeyword ProxyUseFDPass
+syn keyword sshconfigKeyword PubkeyAcceptedAlgorithms
syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes
syn keyword sshconfigKeyword PubkeyAuthentication
-syn keyword sshconfigKeyword RSAAuthentication
syn keyword sshconfigKeyword RekeyLimit
+syn keyword sshconfigKeyword RemoteCommand
syn keyword sshconfigKeyword RemoteForward
syn keyword sshconfigKeyword RequestTTY
-syn keyword sshconfigKeyword RhostsRSAAuthentication
+syn keyword sshconfigKeyword RevokedHostKeys
+syn keyword sshconfigKeyword SecurityKeyProvider
syn keyword sshconfigKeyword SendEnv
syn keyword sshconfigKeyword ServerAliveCountMax
syn keyword sshconfigKeyword ServerAliveInterval
syn keyword sshconfigKeyword SmartcardDevice
+syn keyword sshconfigKeyword SetEnv
+syn keyword sshconfigKeyword StreamLocalBindMask
+syn keyword sshconfigKeyword StreamLocalBindUnlink
syn keyword sshconfigKeyword StrictHostKeyChecking
+syn keyword sshconfigKeyword SyslogFacility
syn keyword sshconfigKeyword TCPKeepAlive
syn keyword sshconfigKeyword Tunnel
syn keyword sshconfigKeyword TunnelDevice
syn keyword sshconfigKeyword UseBlacklistedKeys
-syn keyword sshconfigKeyword UsePrivilegedPort
+syn keyword sshconfigKeyword UpdateHostKeys
syn keyword sshconfigKeyword User
syn keyword sshconfigKeyword UserKnownHostsFile
-syn keyword sshconfigKeyword UseRoaming
syn keyword sshconfigKeyword VerifyHostKeyDNS
syn keyword sshconfigKeyword VisualHostKey
syn keyword sshconfigKeyword XAuthLocation
+" Deprecated/ignored/remove/unsupported keywords
+
+syn keyword sshConfigDeprecated Cipher
+syn keyword sshconfigDeprecated GSSAPIClientIdentity
+syn keyword sshconfigDeprecated GSSAPIKeyExchange
+syn keyword sshconfigDeprecated GSSAPIRenewalForcesRekey
+syn keyword sshconfigDeprecated GSSAPIServerIdentity
+syn keyword sshconfigDeprecated GSSAPITrustDNS
+syn keyword sshconfigDeprecated GSSAPITrustDns
+syn keyword sshconfigDeprecated Protocol
+syn keyword sshconfigDeprecated RSAAuthentication
+syn keyword sshconfigDeprecated RhostsRSAAuthentication
+syn keyword sshconfigDeprecated CompressionLevel
+syn keyword sshconfigDeprecated UseRoaming
+syn keyword sshconfigDeprecated UsePrivilegedPort
+
" Define the default highlighting
hi def link sshconfigComment Comment
@@ -234,17 +258,17 @@ hi def link sshconfigHostPort sshconfigConstant
hi def link sshconfigNumber sshconfigConstant
hi def link sshconfigConstant Constant
hi def link sshconfigYesNo sshconfigEnum
-hi def link sshconfigCipher sshconfigEnum
-hi def link sshconfigCiphers sshconfigEnum
+hi def link sshconfigCipher sshconfigDeprecated
+hi def link sshconfigCiphers sshconfigEnum
hi def link sshconfigMAC sshconfigEnum
hi def link sshconfigHostKeyAlgo sshconfigEnum
hi def link sshconfigLogLevel sshconfigEnum
hi def link sshconfigSysLogFacility sshconfigEnum
hi def link sshconfigAddressFamily sshconfigEnum
-hi def link sshconfigIPQoS sshconfigEnum
+hi def link sshconfigIPQoS sshconfigEnum
hi def link sshconfigKbdInteractive sshconfigEnum
-hi def link sshconfigKexAlgo sshconfigEnum
-hi def link sshconfigTunnel sshconfigEnum
+hi def link sshconfigKexAlgo sshconfigEnum
+hi def link sshconfigTunnel sshconfigEnum
hi def link sshconfigPreferredAuth sshconfigEnum
hi def link sshconfigVar sshconfigEnum
hi def link sshconfigEnum Identifier
@@ -252,6 +276,7 @@ hi def link sshconfigSpecial Special
hi def link sshconfigKeyword Keyword
hi def link sshconfigHostSect Type
hi def link sshconfigMatch Type
+hi def link sshconfigDeprecated Error
let b:current_syntax = "sshconfig"
diff --git a/runtime/syntax/sshdconfig.vim b/runtime/syntax/sshdconfig.vim
index f381668d16..6b0d2af4d1 100644
--- a/runtime/syntax/sshdconfig.vim
+++ b/runtime/syntax/sshdconfig.vim
@@ -1,13 +1,14 @@
" Vim syntax file
" Language: OpenSSH server configuration file (sshd_config)
" Author: David Necas (Yeti)
-" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
+" Maintainer: Jakub Jelen <jakuje at gmail dot com>
+" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
" Contributor: Thilo Six
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
" Contributor: Karsten Hopp <karsten@redhat.com>
" Originally: 2009-07-09
-" Last Change: 2019-05-31
-" SSH Version: 7.9p1
+" Last Change: 2021-03-29
+" SSH Version: 8.5p1
"
" Setup
@@ -79,16 +80,24 @@ syn match sshdconfigMAC "\<umac-128-etm@openssh\.com\>"
syn keyword sshdconfigHostKeyAlgo ssh-ed25519
syn match sshdconfigHostKeyAlgo "\<ssh-ed25519-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ssh-ed25519@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ssh-ed25519-cert-v01@openssh\.com\>"
syn keyword sshdconfigHostKeyAlgo ssh-rsa
+syn keyword sshdconfigHostKeyAlgo rsa-sha2-256
+syn keyword sshdconfigHostKeyAlgo rsa-sha2-512
syn keyword sshdconfigHostKeyAlgo ssh-dss
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp256
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp384
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp521
syn match sshdconfigHostKeyAlgo "\<ssh-rsa-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<rsa-sha2-256-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<rsa-sha2-512-cert-v01@openssh\.com\>"
syn match sshdconfigHostKeyAlgo "\<ssh-dss-cert-v01@openssh\.com\>"
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only
@@ -108,12 +117,17 @@ syn keyword sshdconfigIPQoS ef lowdelay throughput reliability
syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1
syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1
+syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha256
+syn keyword sshdconfigKexAlgo diffie-hellman-group16-sha512
+syn keyword sshdconfigKexAlgo diffie-hellman-group18-sha512
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp384
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp521
+syn keyword sshdconfigKexAlgo curve25519-sha256
syn match sshdconfigKexAlgo "\<curve25519-sha256@libssh\.org\>"
+syn match sshdconfigKexAlgo "\<sntrup4591761x25519-sha512@tinyssh\.org\>"
syn keyword sshdconfigTunnel point-to-point ethernet
@@ -181,12 +195,14 @@ syn keyword sshdconfigKeyword HostCertificate
syn keyword sshdconfigKeyword HostKey
syn keyword sshdconfigKeyword HostKeyAgent
syn keyword sshdconfigKeyword HostKeyAlgorithms
+syn keyword sshdconfigKeyword HostbasedAcceptedAlgorithms
syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes
syn keyword sshdconfigKeyword HostbasedAuthentication
syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly
syn keyword sshdconfigKeyword IPQoS
syn keyword sshdconfigKeyword IgnoreRhosts
syn keyword sshdconfigKeyword IgnoreUserKnownHosts
+syn keyword sshdconfigKeyword Include
syn keyword sshdconfigKeyword KbdInteractiveAuthentication
syn keyword sshdconfigKeyword KerberosAuthentication
syn keyword sshdconfigKeyword KerberosGetAFSToken
@@ -198,6 +214,7 @@ syn keyword sshdconfigKeyword KexAlgorithms
syn keyword sshdconfigKeyword KeyRegenerationInterval
syn keyword sshdconfigKeyword ListenAddress
syn keyword sshdconfigKeyword LogLevel
+syn keyword sshdconfigKeyword LogVerbose
syn keyword sshdconfigKeyword LoginGraceTime
syn keyword sshdconfigKeyword MACs
syn keyword sshdconfigKeyword Match
@@ -205,6 +222,8 @@ syn keyword sshdconfigKeyword MaxAuthTries
syn keyword sshdconfigKeyword MaxSessions
syn keyword sshdconfigKeyword MaxStartups
syn keyword sshdconfigKeyword PasswordAuthentication
+syn keyword sshdconfigKeyword PerSourceMaxStartups
+syn keyword sshdconfigKeyword PerSourceNetBlockSize
syn keyword sshdconfigKeyword PermitBlacklistedKeys
syn keyword sshdconfigKeyword PermitEmptyPasswords
syn keyword sshdconfigKeyword PermitListen
@@ -219,13 +238,16 @@ syn keyword sshdconfigKeyword Port
syn keyword sshdconfigKeyword PrintLastLog
syn keyword sshdconfigKeyword PrintMotd
syn keyword sshdconfigKeyword Protocol
+syn keyword sshdconfigKeyword PubkeyAcceptedAlgorithms
syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes
syn keyword sshdconfigKeyword PubkeyAuthentication
+syn keyword sshdconfigKeyword PubkeyAuthOptions
syn keyword sshdconfigKeyword RSAAuthentication
syn keyword sshdconfigKeyword RekeyLimit
syn keyword sshdconfigKeyword RevokedKeys
syn keyword sshdconfigKeyword RDomain
syn keyword sshdconfigKeyword RhostsRSAAuthentication
+syn keyword sshdconfigKeyword SecurityKeyProvider
syn keyword sshdconfigKeyword ServerKeyBits
syn keyword sshdconfigKeyword SetEnv
syn keyword sshdconfigKeyword ShowPatchLevel
diff --git a/runtime/syntax/sudoers.vim b/runtime/syntax/sudoers.vim
index 019b0ada32..bf2d337d9e 100644
--- a/runtime/syntax/sudoers.vim
+++ b/runtime/syntax/sudoers.vim
@@ -1,7 +1,8 @@
" Vim syntax file
" Language: sudoers(5) configuration files
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2018-08-18
+" Latest Revision: 2021 Mar 15
" Recent Changes: Support for #include and #includedir.
" Added many new options (Samuel D. Leslie)
@@ -26,7 +27,7 @@ syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASS
syn keyword sudoersTodo contained TODO FIXME XXX NOTE
syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo
-syn region sudoersInclude display oneline start='#\(include\|includedir\)' end='$'
+syn region sudoersInclude display oneline start='[#@]\%(include\|includedir\)\>' end='$'
syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
@@ -201,7 +202,7 @@ syn keyword sudoersBooleanParameter contained skipwhite skipnl
\ shell_noargs
\ stay_setuid
\ sudoedit_checkdir
- \ sudoedit_fellow
+ \ sudoedit_follow
\ syslog_pid
\ targetpw
\ tty_tickets
diff --git a/runtime/syntax/swift.vim b/runtime/syntax/swift.vim
new file mode 100644
index 0000000000..ff07be29fa
--- /dev/null
+++ b/runtime/syntax/swift.vim
@@ -0,0 +1,286 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim syntax file
+" Language: swift
+" Maintainer: Joe Groff <jgroff@apple.com>
+" Last Change: 2018 Jan 21
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+syn keyword swiftKeyword
+ \ break
+ \ case
+ \ catch
+ \ continue
+ \ default
+ \ defer
+ \ do
+ \ else
+ \ fallthrough
+ \ for
+ \ guard
+ \ if
+ \ in
+ \ repeat
+ \ return
+ \ switch
+ \ throw
+ \ try
+ \ where
+ \ while
+syn match swiftMultiwordKeyword
+ \ "indirect case"
+
+syn keyword swiftCoreTypes
+ \ Any
+ \ AnyObject
+
+syn keyword swiftImport skipwhite skipempty nextgroup=swiftImportModule
+ \ import
+
+syn keyword swiftDefinitionModifier
+ \ convenience
+ \ dynamic
+ \ fileprivate
+ \ final
+ \ internal
+ \ lazy
+ \ nonmutating
+ \ open
+ \ override
+ \ prefix
+ \ private
+ \ public
+ \ required
+ \ rethrows
+ \ static
+ \ throws
+ \ weak
+
+syn keyword swiftInOutKeyword skipwhite skipempty nextgroup=swiftTypeName
+ \ inout
+
+syn keyword swiftIdentifierKeyword
+ \ Self
+ \ metatype
+ \ self
+ \ super
+
+syn keyword swiftFuncKeywordGeneral skipwhite skipempty nextgroup=swiftTypeParameters
+ \ init
+
+syn keyword swiftFuncKeyword
+ \ deinit
+ \ subscript
+
+syn keyword swiftScope
+ \ autoreleasepool
+
+syn keyword swiftMutating skipwhite skipempty nextgroup=swiftFuncDefinition
+ \ mutating
+syn keyword swiftFuncDefinition skipwhite skipempty nextgroup=swiftTypeName,swiftOperator
+ \ func
+
+syn keyword swiftTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
+ \ class
+ \ enum
+ \ extension
+ \ operator
+ \ precedencegroup
+ \ protocol
+ \ struct
+
+syn keyword swiftTypeAliasDefinition skipwhite skipempty nextgroup=swiftTypeAliasName
+ \ associatedtype
+ \ typealias
+
+syn match swiftMultiwordTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
+ \ "indirect enum"
+
+syn keyword swiftVarDefinition skipwhite skipempty nextgroup=swiftVarName
+ \ let
+ \ var
+
+syn keyword swiftLabel
+ \ get
+ \ set
+ \ didSet
+ \ willSet
+
+syn keyword swiftBoolean
+ \ false
+ \ true
+
+syn keyword swiftNil
+ \ nil
+
+syn match swiftImportModule contained nextgroup=swiftImportComponent
+ \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
+syn match swiftImportComponent contained nextgroup=swiftImportComponent
+ \ /\.\<[A-Za-z_][A-Za-z_0-9]*\>/
+
+syn match swiftTypeAliasName contained skipwhite skipempty nextgroup=swiftTypeAliasValue
+ \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
+syn match swiftTypeName contained skipwhite skipempty nextgroup=swiftTypeParameters
+ \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>/
+syn match swiftVarName contained skipwhite skipempty nextgroup=swiftTypeDeclaration
+ \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
+syn match swiftImplicitVarName
+ \ /\$\<[A-Za-z_0-9]\+\>/
+
+" TypeName[Optionality]?
+syn match swiftType contained skipwhite skipempty nextgroup=swiftTypeParameters
+ \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
+" [Type:Type] (dictionary) or [Type] (array)
+syn region swiftType contained contains=swiftTypePair,swiftType
+ \ matchgroup=Delimiter start=/\[/ end=/\]/
+syn match swiftTypePair contained skipwhite skipempty nextgroup=swiftTypeParameters,swiftTypeDeclaration
+ \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
+" (Type[, Type]) (tuple)
+" FIXME: we should be able to use skip="," and drop swiftParamDelim
+syn region swiftType contained contains=swiftType,swiftParamDelim
+ \ matchgroup=Delimiter start="[^@]\?(" end=")" matchgroup=NONE skip=","
+syn match swiftParamDelim contained
+ \ /,/
+" <Generic Clause> (generics)
+syn region swiftTypeParameters contained contains=swiftVarName,swiftConstraint
+ \ matchgroup=Delimiter start="<" end=">" matchgroup=NONE skip=","
+syn keyword swiftConstraint contained
+ \ where
+
+syn match swiftTypeAliasValue skipwhite skipempty nextgroup=swiftType
+ \ /=/
+syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType,swiftInOutKeyword
+ \ /:/
+syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType
+ \ /->/
+
+syn match swiftKeyword
+ \ /\<case\>/
+syn region swiftCaseLabelRegion
+ \ matchgroup=swiftKeyword start=/\<case\>/ matchgroup=Delimiter end=/:/ oneline contains=TOP
+syn region swiftDefaultLabelRegion
+ \ matchgroup=swiftKeyword start=/\<default\>/ matchgroup=Delimiter end=/:/ oneline
+
+syn region swiftParenthesisRegion contains=TOP
+ \ matchgroup=NONE start=/(/ end=/)/
+
+syn region swiftString contains=swiftInterpolationRegion
+ \ start=/"/ skip=/\\\\\|\\"/ end=/"/
+syn region swiftInterpolationRegion contained contains=TOP
+ \ matchgroup=swiftInterpolation start=/\\(/ end=/)/
+syn region swiftComment contains=swiftComment,swiftLineComment,swiftTodo
+ \ start="/\*" end="\*/"
+syn region swiftLineComment contains=swiftComment,swiftTodo
+ \ start="//" end="$"
+
+syn match swiftDecimal
+ \ /[+\-]\?\<\([0-9][0-9_]*\)\([.][0-9_]*\)\?\([eE][+\-]\?[0-9][0-9_]*\)\?\>/
+syn match swiftHex
+ \ /[+\-]\?\<0x[0-9A-Fa-f][0-9A-Fa-f_]*\(\([.][0-9A-Fa-f_]*\)\?[pP][+\-]\?[0-9][0-9_]*\)\?\>/
+syn match swiftOct
+ \ /[+\-]\?\<0o[0-7][0-7_]*\>/
+syn match swiftBin
+ \ /[+\-]\?\<0b[01][01_]*\>/
+
+syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
+ \ "\.\@<!\.\.\.\@!\|[/=\-+*%<>!&|^~]\@<!\(/[/*]\@![/=\-+*%<>!&|^~]*\|*/\@![/=\-+*%<>!&|^~]*\|->\@![/=\-+*%<>!&|^~]*\|[=+%<>!&|^~][/=\-+*%<>!&|^~]*\)"
+syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
+ \ "\.\.[<.]"
+
+syn match swiftChar
+ \ /'\([^'\\]\|\\\(["'tnr0\\]\|x[0-9a-fA-F]\{2}\|u[0-9a-fA-F]\{4}\|U[0-9a-fA-F]\{8}\)\)'/
+
+syn match swiftTupleIndexNumber contains=swiftDecimal
+ \ /\.[0-9]\+/
+syn match swiftDecimal contained
+ \ /[0-9]\+/
+
+syn match swiftPreproc
+ \ /#\(\<column\>\|\<dsohandle\>\|\<file\>\|\<line\>\|\<function\>\)/
+syn match swiftPreproc
+ \ /^\s*#\(\<if\>\|\<else\>\|\<elseif\>\|\<endif\>\|\<error\>\|\<warning\>\)/
+syn region swiftPreprocFalse
+ \ start="^\s*#\<if\>\s\+\<false\>" end="^\s*#\(\<else\>\|\<elseif\>\|\<endif\>\)"
+
+syn match swiftAttribute
+ \ /@\<\w\+\>/ skipwhite skipempty nextgroup=swiftType,swiftTypeDefinition
+
+syn keyword swiftTodo MARK TODO FIXME contained
+
+syn match swiftCastOp skipwhite skipempty nextgroup=swiftType,swiftCoreTypes
+ \ "\<is\>"
+syn match swiftCastOp skipwhite skipempty nextgroup=swiftType,swiftCoreTypes
+ \ "\<as\>[!?]\?"
+
+syn match swiftNilOps
+ \ "??"
+
+syn region swiftReservedIdentifier oneline
+ \ start=/`/ end=/`/
+
+hi def link swiftImport Include
+hi def link swiftImportModule Title
+hi def link swiftImportComponent Identifier
+hi def link swiftKeyword Statement
+hi def link swiftCoreTypes Type
+hi def link swiftMultiwordKeyword Statement
+hi def link swiftTypeDefinition Define
+hi def link swiftMultiwordTypeDefinition Define
+hi def link swiftType Type
+hi def link swiftTypePair Type
+hi def link swiftTypeAliasName Identifier
+hi def link swiftTypeName Function
+hi def link swiftConstraint Special
+hi def link swiftFuncDefinition Define
+hi def link swiftDefinitionModifier Operator
+hi def link swiftInOutKeyword Define
+hi def link swiftFuncKeyword Function
+hi def link swiftFuncKeywordGeneral Function
+hi def link swiftTypeAliasDefinition Define
+hi def link swiftVarDefinition Define
+hi def link swiftVarName Identifier
+hi def link swiftImplicitVarName Identifier
+hi def link swiftIdentifierKeyword Identifier
+hi def link swiftTypeAliasValue Delimiter
+hi def link swiftTypeDeclaration Delimiter
+hi def link swiftTypeParameters Delimiter
+hi def link swiftBoolean Boolean
+hi def link swiftString String
+hi def link swiftInterpolation Special
+hi def link swiftComment Comment
+hi def link swiftLineComment Comment
+hi def link swiftDecimal Number
+hi def link swiftHex Number
+hi def link swiftOct Number
+hi def link swiftBin Number
+hi def link swiftOperator Function
+hi def link swiftChar Character
+hi def link swiftLabel Operator
+hi def link swiftMutating Statement
+hi def link swiftPreproc PreCondit
+hi def link swiftPreprocFalse Comment
+hi def link swiftAttribute Type
+hi def link swiftTodo Todo
+hi def link swiftNil Constant
+hi def link swiftCastOp Operator
+hi def link swiftNilOps Operator
+hi def link swiftScope PreProc
+
+let b:current_syntax = "swift"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/swiftgyb.vim b/runtime/syntax/swiftgyb.vim
new file mode 100644
index 0000000000..566b75b2ed
--- /dev/null
+++ b/runtime/syntax/swiftgyb.vim
@@ -0,0 +1,24 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim syntax file
+" Language: gyb on swift
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+runtime! syntax/swift.vim
+unlet b:current_syntax
+
+syn include @Python syntax/python.vim
+syn region pythonCode matchgroup=gybPythonCode start=+^ *%+ end=+$+ contains=@Python keepend
+syn region pythonCode matchgroup=gybPythonCode start=+%{+ end=+}%+ contains=@Python keepend
+syn match gybPythonCode /\${[^}]*}/
+hi def link gybPythonCode CursorLineNr
+
+let b:current_syntax = "swiftgyb"
+
diff --git a/runtime/syntax/syncolor.vim b/runtime/syntax/syncolor.vim
index 8d0064db15..5b907a3b83 100644
--- a/runtime/syntax/syncolor.vim
+++ b/runtime/syntax/syncolor.vim
@@ -1,6 +1,6 @@
" Vim syntax support file
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2001 Sep 12
+" Last Change: 2020 Feb 13
" This file sets up the default methods for highlighting.
" It is loaded from "synload.vim" and from Vim for ":syntax reset".
@@ -43,10 +43,12 @@ if &background == "dark"
else
SynColor Comment term=bold cterm=NONE ctermfg=DarkBlue ctermbg=NONE gui=NONE guifg=Blue guibg=NONE
SynColor Constant term=underline cterm=NONE ctermfg=DarkRed ctermbg=NONE gui=NONE guifg=Magenta guibg=NONE
- SynColor Special term=bold cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=SlateBlue guibg=NONE
+ " #6a5acd is SlateBlue
+ SynColor Special term=bold cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a5acd guibg=NONE
SynColor Identifier term=underline cterm=NONE ctermfg=DarkCyan ctermbg=NONE gui=NONE guifg=DarkCyan guibg=NONE
SynColor Statement term=bold cterm=NONE ctermfg=Brown ctermbg=NONE gui=bold guifg=Brown guibg=NONE
- SynColor PreProc term=underline cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=Purple guibg=NONE
+ " #6a0dad is Purple
+ SynColor PreProc term=underline cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a0dad guibg=NONE
SynColor Type term=underline cterm=NONE ctermfg=DarkGreen ctermbg=NONE gui=bold guifg=SeaGreen guibg=NONE
SynColor Underlined term=underline cterm=underline ctermfg=DarkMagenta gui=underline guifg=SlateBlue
SynColor Ignore term=NONE cterm=NONE ctermfg=white ctermbg=NONE gui=NONE guifg=bg guibg=NONE
diff --git a/runtime/syntax/synload.vim b/runtime/syntax/synload.vim
index ab918c645b..f373161c7c 100644
--- a/runtime/syntax/synload.vim
+++ b/runtime/syntax/synload.vim
@@ -1,6 +1,6 @@
" Vim syntax support file
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2016 Nov 04
+" Last Change: 2020 Apr 13
" This file sets up for syntax highlighting.
" It is loaded from "syntax.vim" and "manual.vim".
@@ -52,9 +52,11 @@ fun! s:SynSet()
if s != ""
" Load the syntax file(s). When there are several, separated by dots,
- " load each in sequence.
+ " load each in sequence. Skip empty entries.
for name in split(s, '\.')
- exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim"
+ if !empty(name)
+ exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim"
+ endif
endfor
endif
endfun
diff --git a/runtime/syntax/tags.vim b/runtime/syntax/tags.vim
index f34696d4b0..4c06dc1df8 100644
--- a/runtime/syntax/tags.vim
+++ b/runtime/syntax/tags.vim
@@ -1,7 +1,7 @@
" Language: tags
-" Maintainer: Charles E. Campbell <NdrOchip@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Oct 26, 2016
-" Version: 7
+" Version: 8
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TAGS
" quit when a syntax file was already loaded
diff --git a/runtime/syntax/tidy.vim b/runtime/syntax/tidy.vim
index 6371cb5a86..7ffda90e55 100644
--- a/runtime/syntax/tidy.vim
+++ b/runtime/syntax/tidy.vim
@@ -1,8 +1,9 @@
" Vim syntax file
-" Language: HMTL Tidy configuration file (/etc/tidyrc ~/.tidyrc)
+" Language: HMTL Tidy Configuration
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2016 Apr 24
+" Last Change: 2020 Sep 4
+" Preamble {{{1
if exists("b:current_syntax")
finish
endif
@@ -12,10 +13,15 @@ set cpo&vim
syn iskeyword @,48-57,-,_
+" Values {{{1
+syn match tidyWordSeparator contained ",\|\s" nextgroup=tidyWord skipwhite skipnl
+syn match tidyMuteIDSeparator contained ",\|\s" nextgroup=tidyMuteID skipwhite skipnl
+
syn case ignore
syn keyword tidyBoolean contained t[rue] f[alse] y[es] n[o] 1 0
syn keyword tidyAutoBoolean contained t[rue] f[alse] y[es] n[o] 1 0 auto
syn case match
+syn keyword tidyCustomTags contained no blocklevel empty inline pre
syn keyword tidyDoctype contained html5 omit auto strict loose transitional user
syn keyword tidyEncoding contained raw ascii latin0 latin1 utf8 iso2022 mac win1252 ibm858 utf16le utf16be utf16 big5 shiftjis
syn keyword tidyNewline contained LF CRLF CR
@@ -24,36 +30,148 @@ syn keyword tidyRepeat contained keep-first keep-last
syn keyword tidySorter contained alpha none
syn region tidyString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
syn region tidyString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline
-syn match tidyTags contained "\<\w\+\(\s*,\s*\w\+\)*\>"
-
-syn keyword tidyBooleanOption add-xml-decl add-xml-pi add-xml-space
- \ anchor-as-name ascii-chars assume-xml-procins bare break-before-br
- \ clean coerce-endtags decorate-inferred-ul drop-empty-paras
- \ drop-empty-elements drop-font-tags drop-proprietary-attributes
- \ enclose-block-text enclose-text escape-cdata escape-scripts
- \ fix-backslash fix-bad-comments fix-uri force-output gdoc gnu-emacs
- \ hide-comments hide-endtags indent-attributes indent-cdata
- \ indent-with-tabs input-xml join-classes join-styles keep-time
- \ language literal-attributes logical-emphasis lower-literals markup
- \ merge-emphasis ncr numeric-entities omit-optional-tags output-html
- \ output-xhtml output-xml preserve-entities punctuation-wrap quiet
- \ quote-ampersand quote-marks quote-nbsp raw replace-color show-info
- \ show-warnings skip-nested split strict-tags-attributes tidy-mark
- \ uppercase-attributes uppercase-tags word-2000 wrap-asp
- \ wrap-attributes wrap-jste wrap-php wrap-script-literals
- \ wrap-sections write-back
+" Tag and attribute lists
+syn match tidyWord contained "\<\k\+\>:\@!" nextgroup=tidyWordSeparator skipwhite skipnl
+
+" Mute Message IDs {{{2
+syn keyword tidyMuteID ADDED_MISSING_CHARSET ANCHOR_DUPLICATED
+ \ ANCHOR_NOT_UNIQUE APOS_UNDEFINED APPLET_MISSING_ALT AREA_MISSING_ALT
+ \ ASCII_REQUIRES_DESCRIPTION ASSOCIATE_LABELS_EXPLICITLY
+ \ ASSOCIATE_LABELS_EXPLICITLY_FOR ASSOCIATE_LABELS_EXPLICITLY_ID
+ \ ATTRIBUTE_IS_NOT_ALLOWED ATTRIBUTE_VALUE_REPLACED
+ \ ATTR_VALUE_NOT_LCASE AUDIO_MISSING_TEXT_AIFF AUDIO_MISSING_TEXT_AU
+ \ AUDIO_MISSING_TEXT_RA AUDIO_MISSING_TEXT_RM AUDIO_MISSING_TEXT_SND
+ \ AUDIO_MISSING_TEXT_WAV BACKSLASH_IN_URI BAD_ATTRIBUTE_VALUE
+ \ BAD_ATTRIBUTE_VALUE_REPLACED BAD_CDATA_CONTENT BAD_SUMMARY_HTML5
+ \ BAD_SURROGATE_LEAD BAD_SURROGATE_PAIR BAD_SURROGATE_TAIL
+ \ CANT_BE_NESTED COERCE_TO_ENDTAG COLOR_CONTRAST_ACTIVE_LINK
+ \ COLOR_CONTRAST_LINK COLOR_CONTRAST_TEXT COLOR_CONTRAST_VISITED_LINK
+ \ CONTENT_AFTER_BODY CUSTOM_TAG_DETECTED DATA_TABLE_MISSING_HEADERS
+ \ DATA_TABLE_MISSING_HEADERS_COLUMN DATA_TABLE_MISSING_HEADERS_ROW
+ \ DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS
+ \ DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS DISCARDING_UNEXPECTED
+ \ DOCTYPE_AFTER_TAGS DOCTYPE_MISSING DUPLICATE_FRAMESET
+ \ ELEMENT_NOT_EMPTY ELEMENT_VERS_MISMATCH_ERROR
+ \ ELEMENT_VERS_MISMATCH_WARN ENCODING_MISMATCH
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT ESCAPED_ILLEGAL_URI
+ \ FILE_CANT_OPEN FILE_CANT_OPEN_CFG FILE_NOT_FILE FIXED_BACKSLASH
+ \ FOUND_STYLE_IN_BODY FRAME_MISSING_LONGDESC FRAME_MISSING_NOFRAMES
+ \ FRAME_MISSING_TITLE FRAME_SRC_INVALID FRAME_TITLE_INVALID_NULL
+ \ FRAME_TITLE_INVALID_SPACES HEADERS_IMPROPERLY_NESTED
+ \ HEADER_USED_FORMAT_TEXT ID_NAME_MISMATCH ILLEGAL_NESTING
+ \ ILLEGAL_URI_CODEPOINT ILLEGAL_URI_REFERENCE
+ \ IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION
+ \ IMG_ALT_SUSPICIOUS_FILENAME IMG_ALT_SUSPICIOUS_FILE_SIZE
+ \ IMG_ALT_SUSPICIOUS_PLACEHOLDER IMG_ALT_SUSPICIOUS_TOO_LONG
+ \ IMG_BUTTON_MISSING_ALT IMG_MAP_CLIENT_MISSING_TEXT_LINKS
+ \ IMG_MAP_SERVER_REQUIRES_TEXT_LINKS IMG_MISSING_ALT IMG_MISSING_DLINK
+ \ IMG_MISSING_LONGDESC IMG_MISSING_LONGDESC_DLINK
+ \ INFORMATION_NOT_CONVEYED_APPLET INFORMATION_NOT_CONVEYED_IMAGE
+ \ INFORMATION_NOT_CONVEYED_INPUT INFORMATION_NOT_CONVEYED_OBJECT
+ \ INFORMATION_NOT_CONVEYED_SCRIPT INSERTING_AUTO_ATTRIBUTE
+ \ INSERTING_TAG INVALID_ATTRIBUTE INVALID_NCR INVALID_SGML_CHARS
+ \ INVALID_UTF16 INVALID_UTF8 INVALID_XML_ID JOINING_ATTRIBUTE
+ \ LANGUAGE_INVALID LANGUAGE_NOT_IDENTIFIED
+ \ LAYOUT_TABLES_LINEARIZE_PROPERLY LAYOUT_TABLE_INVALID_MARKUP
+ \ LINK_TEXT_MISSING LINK_TEXT_NOT_MEANINGFUL
+ \ LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE LINK_TEXT_TOO_LONG
+ \ LIST_USAGE_INVALID_LI LIST_USAGE_INVALID_OL LIST_USAGE_INVALID_UL
+ \ MALFORMED_COMMENT MALFORMED_COMMENT_DROPPING MALFORMED_COMMENT_EOS
+ \ MALFORMED_COMMENT_WARN MALFORMED_DOCTYPE METADATA_MISSING
+ \ METADATA_MISSING_REDIRECT_AUTOREFRESH MISMATCHED_ATTRIBUTE_ERROR
+ \ MISMATCHED_ATTRIBUTE_WARN MISSING_ATTRIBUTE MISSING_ATTR_VALUE
+ \ MISSING_DOCTYPE MISSING_ENDTAG_BEFORE MISSING_ENDTAG_FOR
+ \ MISSING_ENDTAG_OPTIONAL MISSING_IMAGEMAP MISSING_QUOTEMARK
+ \ MISSING_QUOTEMARK_OPEN MISSING_SEMICOLON MISSING_SEMICOLON_NCR
+ \ MISSING_STARTTAG MISSING_TITLE_ELEMENT MOVED_STYLE_TO_HEAD
+ \ MULTIMEDIA_REQUIRES_TEXT NESTED_EMPHASIS NESTED_QUOTATION
+ \ NEWLINE_IN_URI NEW_WINDOWS_REQUIRE_WARNING_BLANK
+ \ NEW_WINDOWS_REQUIRE_WARNING_NEW NOFRAMES_CONTENT
+ \ NOFRAMES_INVALID_CONTENT NOFRAMES_INVALID_LINK
+ \ NOFRAMES_INVALID_NO_VALUE NON_MATCHING_ENDTAG OBJECT_MISSING_ALT
+ \ OBSOLETE_ELEMENT OPTION_REMOVED OPTION_REMOVED_APPLIED
+ \ OPTION_REMOVED_UNAPPLIED POTENTIAL_HEADER_BOLD
+ \ POTENTIAL_HEADER_ITALICS POTENTIAL_HEADER_UNDERLINE
+ \ PREVIOUS_LOCATION PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT PROPRIETARY_ATTRIBUTE
+ \ PROPRIETARY_ATTR_VALUE PROPRIETARY_ELEMENT REMOVED_HTML5
+ \ REMOVE_AUTO_REDIRECT REMOVE_AUTO_REFRESH REMOVE_BLINK_MARQUEE
+ \ REMOVE_FLICKER_ANIMATED_GIF REMOVE_FLICKER_APPLET
+ \ REMOVE_FLICKER_EMBED REMOVE_FLICKER_OBJECT REMOVE_FLICKER_SCRIPT
+ \ REPEATED_ATTRIBUTE REPLACE_DEPRECATED_HTML_APPLET
+ \ REPLACE_DEPRECATED_HTML_BASEFONT REPLACE_DEPRECATED_HTML_CENTER
+ \ REPLACE_DEPRECATED_HTML_DIR REPLACE_DEPRECATED_HTML_FONT
+ \ REPLACE_DEPRECATED_HTML_ISINDEX REPLACE_DEPRECATED_HTML_MENU
+ \ REPLACE_DEPRECATED_HTML_S REPLACE_DEPRECATED_HTML_STRIKE
+ \ REPLACE_DEPRECATED_HTML_U REPLACING_ELEMENT REPLACING_UNEX_ELEMENT
+ \ SCRIPT_MISSING_NOSCRIPT SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP SKIPOVER_ASCII_ART
+ \ SPACE_PRECEDING_XMLDECL STRING_ARGUMENT_BAD STRING_CONTENT_LOOKS
+ \ STRING_DOCTYPE_GIVEN STRING_MISSING_MALFORMED STRING_MUTING_TYPE
+ \ STRING_NO_SYSID STRING_UNKNOWN_OPTION
+ \ STYLESHEETS_REQUIRE_TESTING_LINK
+ \ STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR
+ \ STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT
+ \ STYLE_SHEET_CONTROL_PRESENTATION SUSPECTED_MISSING_QUOTE
+ \ TABLE_MAY_REQUIRE_HEADER_ABBR TABLE_MAY_REQUIRE_HEADER_ABBR_NULL
+ \ TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES TABLE_MISSING_CAPTION
+ \ TABLE_MISSING_SUMMARY TABLE_SUMMARY_INVALID_NULL
+ \ TABLE_SUMMARY_INVALID_PLACEHOLDER TABLE_SUMMARY_INVALID_SPACES
+ \ TAG_NOT_ALLOWED_IN TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET
+ \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT
+ \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT TOO_MANY_ELEMENTS
+ \ TOO_MANY_ELEMENTS_IN TRIM_EMPTY_ELEMENT UNESCAPED_AMPERSAND
+ \ UNEXPECTED_ENDTAG UNEXPECTED_ENDTAG_ERR UNEXPECTED_ENDTAG_IN
+ \ UNEXPECTED_END_OF_FILE UNEXPECTED_END_OF_FILE_ATTR
+ \ UNEXPECTED_EQUALSIGN UNEXPECTED_GT UNEXPECTED_QUOTEMARK
+ \ UNKNOWN_ELEMENT UNKNOWN_ELEMENT_LOOKS_CUSTOM UNKNOWN_ENTITY
+ \ USING_BR_INPLACE_OF VENDOR_SPECIFIC_CHARS WHITE_IN_URI
+ \ XML_DECLARATION_DETECTED XML_ID_SYNTAX
+ \ contained nextgroup=tidyMuteIDSeparator skipwhite skipnl
+
+" Options {{{1
+syn keyword tidyCustomTagsOption custom-tags contained nextgroup=tidyCustomTagsDelimiter
+syn match tidyCustomTagsDelimiter ":" nextgroup=tidyCustomTags contained skipwhite
+
+syn keyword tidyBooleanOption add-meta-charset add-xml-decl
+ \ add-xml-pi add-xml-space anchor-as-name ascii-chars
+ \ assume-xml-procins bare break-before-br clean coerce-endtags
+ \ decorate-inferred-ul drop-empty-paras drop-empty-elements
+ \ drop-font-tags drop-proprietary-attributes enclose-block-text
+ \ enclose-text escape-cdata escape-scripts fix-backslash
+ \ fix-style-tags fix-uri force-output gdoc gnu-emacs hide-comments
+ \ hide-endtags indent-attributes indent-cdata indent-with-tabs
+ \ input-xml join-classes join-styles keep-tabs keep-time language
+ \ literal-attributes logical-emphasis lower-literals markup
+ \ merge-emphasis mute-id ncr numeric-entities omit-optional-tags
+ \ output-html output-xhtml output-xml preserve-entities
+ \ punctuation-wrap quiet quote-ampersand quote-marks quote-nbsp raw
+ \ replace-color show-filename show-info show-meta-change show-warnings
+ \ skip-nested split strict-tags-attributes tidy-mark
+ \ uppercase-attributes uppercase-tags warn-proprietary-attributes
+ \ word-2000 wrap-asp wrap-attributes wrap-jste wrap-php
+ \ wrap-script-literals wrap-sections write-back
\ contained nextgroup=tidyBooleanDelimiter
syn match tidyBooleanDelimiter ":" nextgroup=tidyBoolean contained skipwhite
-syn keyword tidyAutoBooleanOption indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter
+syn keyword tidyAutoBooleanOption fix-bad-comments indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter
syn match tidyAutoBooleanDelimiter ":" nextgroup=tidyAutoBoolean contained skipwhite
syn keyword tidyCSSSelectorOption css-prefix contained nextgroup=tidyCSSSelectorDelimiter
syn match tidyCSSSelectorDelimiter ":" nextgroup=tidyCSSSelector contained skipwhite
syn keyword tidyDoctypeOption doctype contained nextgroup=tidyDoctypeDelimiter
-syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype contained skipwhite
+syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype,tidyString contained skipwhite
syn keyword tidyEncodingOption char-encoding input-encoding output-encoding contained nextgroup=tidyEncodingDelimiter
syn match tidyEncodingDelimiter ":" nextgroup=tidyEncoding contained skipwhite
@@ -67,8 +185,11 @@ syn match tidyNameDelimiter ":" nextgroup=tidyName contained skipwhite
syn keyword tidyNewlineOption newline contained nextgroup=tidyNewlineDelimiter
syn match tidyNewlineDelimiter ":" nextgroup=tidyNewline contained skipwhite
+syn keyword tidyAttributesOption priority-attributes contained nextgroup=tidyAttributesDelimiter
+syn match tidyAttributesDelimiter ":" nextgroup=tidyWord contained skipwhite
+
syn keyword tidyTagsOption new-blocklevel-tags new-empty-tags new-inline-tags new-pre-tags contained nextgroup=tidyTagsDelimiter
-syn match tidyTagsDelimiter ":" nextgroup=tidyTags contained skipwhite
+syn match tidyTagsDelimiter ":" nextgroup=tidyWord contained skipwhite
syn keyword tidyRepeatOption repeated-attributes contained nextgroup=tidyRepeatDelimiter
syn match tidyRepeatDelimiter ":" nextgroup=tidyRepeat contained skipwhite
@@ -79,57 +200,77 @@ syn match tidySorterDelimiter ":" nextgroup=tidySorter contained skipwhite
syn keyword tidyStringOption alt-text error-file gnu-emacs-file output-file contained nextgroup=tidyStringDelimiter
syn match tidyStringDelimiter ":" nextgroup=tidyString contained skipwhite
+syn keyword tidyMuteOption mute contained nextgroup=tidyMuteDelimiter
+syn match tidyMuteDelimiter ":" nextgroup=tidyMuteID contained skipwhite
+
syn cluster tidyOptions contains=tidy.*Option
+" Option line anchor {{{1
syn match tidyStart "^" nextgroup=@tidyOptions
+" Long standing bug - option lines (except the first) with leading whitespace
+" are silently ignored.
+syn match tidyErrorStart '^\s\+\ze\S'
+" Comments {{{1
syn match tidyComment "^\s*//.*$" contains=tidyTodo
syn match tidyComment "^\s*#.*$" contains=tidyTodo
syn keyword tidyTodo TODO NOTE FIXME XXX contained
+" Default highlighting {{{1
+hi def link tidyAttributesOption Identifier
hi def link tidyAutoBooleanOption Identifier
hi def link tidyBooleanOption Identifier
hi def link tidyCSSSelectorOption Identifier
+hi def link tidyCustomTagsOption Identifier
hi def link tidyDoctypeOption Identifier
hi def link tidyEncodingOption Identifier
hi def link tidyIntegerOption Identifier
+hi def link tidyMuteOption Identifier
hi def link tidyNameOption Identifier
hi def link tidyNewlineOption Identifier
-hi def link tidyTagsOption Identifier
hi def link tidyRepeatOption Identifier
hi def link tidySorterOption Identifier
hi def link tidyStringOption Identifier
+hi def link tidyTagsOption Identifier
+hi def link tidyAttributesDelimiter Special
hi def link tidyAutoBooleanDelimiter Special
hi def link tidyBooleanDelimiter Special
hi def link tidyCSSSelectorDelimiter Special
+hi def link tidyCustomTagsDelimiter Special
hi def link tidyDoctypeDelimiter Special
hi def link tidyEncodingDelimiter Special
hi def link tidyIntegerDelimiter Special
+hi def link tidyMuteDelimiter Special
hi def link tidyNameDelimiter Special
hi def link tidyNewlineDelimiter Special
-hi def link tidyTagsDelimiter Special
hi def link tidyRepeatDelimiter Special
hi def link tidySorterDelimiter Special
hi def link tidyStringDelimiter Special
+hi def link tidyTagsDelimiter Special
hi def link tidyAutoBoolean Boolean
hi def link tidyBoolean Boolean
+hi def link tidyCustomTags Constant
hi def link tidyDoctype Constant
hi def link tidyEncoding Constant
+hi def link tidyMuteID Constant
hi def link tidyNewline Constant
-hi def link tidyTags Constant
hi def link tidyNumber Number
hi def link tidyRepeat Constant
hi def link tidySorter Constant
hi def link tidyString String
+hi def link tidyWord Constant
hi def link tidyComment Comment
hi def link tidyTodo Todo
+hi def link tidyErrorStart Error
+
+" Postscript {{{1
let b:current_syntax = "tidy"
let &cpo = s:cpo_save
unlet s:cpo_save
-" vim: ts=8
+" vim: ts=8 fdm=marker
diff --git a/runtime/syntax/tilde.vim b/runtime/syntax/tilde.vim
index 3fdebf1e2e..d2a3360d24 100644
--- a/runtime/syntax/tilde.vim
+++ b/runtime/syntax/tilde.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" This file works only for Vim6.x
" Language: Tilde
-" Maintainer: Tobias Rundstrm <tobi@tildesoftware.net>
+" Maintainer: Tobias Rundström <tobi@tildesoftware.net>
" URL: http://www.tildesoftware.net
" CVS: $Id: tilde.vim,v 1.1 2004/06/13 19:31:51 vimboss Exp $
diff --git a/runtime/syntax/tmux.vim b/runtime/syntax/tmux.vim
index d32016e566..d5419982ad 100644
--- a/runtime/syntax/tmux.vim
+++ b/runtime/syntax/tmux.vim
@@ -1,5 +1,5 @@
" Language: tmux(1) configuration file
-" Version: 2.9a (git-0d64531f)
+" Version: 3.0 (git-48cbbb87)
" 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,6 +28,7 @@ syn match tmuxNumber /\<\d\+\>/ display
syn match tmuxFlags /\s-\a\+/ display
syn match tmuxVariable /\w\+=/ display
syn match tmuxVariableExpansion /\${\=\w\+}\=/ display
+syn match tmuxControl /%\(if\|elif\|else\|endif\)/
syn region tmuxComment start=/#/ skip=/\\\@<!\\$/ end=/$/ contains=tmuxTodo
@@ -43,6 +44,7 @@ hi def link tmuxFormatString Identifier
hi def link tmuxAction Boolean
hi def link tmuxBoolean Boolean
hi def link tmuxCommands Keyword
+hi def link tmuxControl Keyword
hi def link tmuxComment Comment
hi def link tmuxKey Special
hi def link tmuxNumber Number
@@ -62,29 +64,29 @@ for s:i in range(0, 255)
endfor
syn keyword tmuxOptions
-\ buffer-limit command-alias default-terminal escape-time exit-empty
-\ activity-action assume-paste-time base-index bell-action default-command
-\ default-shell default-size destroy-unattached detach-on-destroy
-\ display-panes-active-colour display-panes-colour display-panes-time
-\ display-time exit-unattached focus-events history-file history-limit
-\ key-table lock-after-time lock-command message-command-style message-limit
-\ message-style mouse aggressive-resize allow-rename alternate-screen
-\ automatic-rename automatic-rename-format clock-mode-colour
-\ clock-mode-style main-pane-height main-pane-width mode-keys mode-style
-\ monitor-activity monitor-bell monitor-silence other-pane-height
-\ other-pane-width pane-active-border-style pane-base-index
-\ pane-border-format pane-border-status pane-border-style prefix prefix2
-\ remain-on-exit renumber-windows repeat-time set-clipboard set-titles
-\ set-titles-string silence-action status status-bg status-fg status-format
-\ status-interval status-justify status-keys status-left status-left-length
-\ status-left-style status-position status-right status-right-length
-\ status-right-style status-style synchronize-panes terminal-overrides
-\ update-environment user-keys visual-activity visual-bell visual-silence
-\ window-active-style window-size window-status-activity-style
-\ window-status-bell-style window-status-current-format
-\ window-status-current-style window-status-format window-status-last-style
-\ window-status-separator window-status-style window-style word-separators
-\ wrap-search xterm-keys
+\ backspace buffer-limit command-alias default-terminal escape-time
+\ exit-empty activity-action assume-paste-time base-index bell-action
+\ default-command default-shell default-size destroy-unattached
+\ detach-on-destroy display-panes-active-colour display-panes-colour
+\ display-panes-time display-time exit-unattached focus-events history-file
+\ history-limit key-table lock-after-time lock-command message-command-style
+\ message-limit message-style aggressive-resize allow-rename
+\ alternate-screen automatic-rename automatic-rename-format
+\ clock-mode-colour clock-mode-style main-pane-height main-pane-width
+\ mode-keys mode-style monitor-activity monitor-bell monitor-silence mouse
+\ other-pane-height other-pane-width pane-active-border-style
+\ pane-base-index pane-border-format pane-border-status pane-border-style
+\ prefix prefix2 remain-on-exit renumber-windows repeat-time set-clipboard
+\ set-titles set-titles-string silence-action status status-bg status-fg
+\ status-format status-interval status-justify status-keys status-left
+\ status-left-length status-left-style status-position status-right
+\ status-right-length status-right-style status-style synchronize-panes
+\ terminal-overrides update-environment user-keys visual-activity
+\ visual-bell visual-silence window-active-style window-size
+\ window-status-activity-style window-status-bell-style
+\ window-status-current-format window-status-current-style
+\ window-status-format window-status-last-style window-status-separator
+\ window-status-style window-style word-separators wrap-search xterm-keys
syn keyword tmuxCommands
\ attach attach-session bind bind-key break-pane breakp capture-pane
diff --git a/runtime/syntax/typescriptcommon.vim b/runtime/syntax/typescriptcommon.vim
index ff53168329..4074f04a35 100644
--- a/runtime/syntax/typescriptcommon.vim
+++ b/runtime/syntax/typescriptcommon.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: TypeScript and TypeScriptReact
" Maintainer: Bram Moolenaar, Herrington Darkholme
-" Last Change: 2019 Nov 30
+" Last Change: 2020 Oct 27
" Based On: Herrington Darkholme's yats.vim
" Changes: See https:github.com/HerringtonDarkholme/yats.vim
" Credits: See yats.vim on github
@@ -21,15 +21,14 @@ if main_syntax == 'typescript' || main_syntax == 'typescriptreact'
setlocal iskeyword+=$
" syntax cluster htmlJavaScript contains=TOP
endif
+" For private field added from TypeScript 3.8
+setlocal iskeyword+=#
" lowest priority on least used feature
syntax match typescriptLabel /[a-zA-Z_$]\k*:/he=e-1 contains=typescriptReserved nextgroup=@typescriptStatement skipwhite skipempty
" other keywords like return,case,yield uses containedin
syntax region typescriptBlock matchgroup=typescriptBraces start=/{/ end=/}/ contains=@typescriptStatement,@typescriptComments fold
-
-
-"runtime syntax/basic/identifiers.vim
syntax cluster afterIdentifier contains=
\ typescriptDotNotation,
\ typescriptFuncCallArg,
@@ -60,7 +59,56 @@ syntax region typescriptFuncCallArg contained matchgroup=typescriptPa
syntax region typescriptEventFuncCallArg contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptEventExpression
syntax region typescriptEventString contained start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/ contains=typescriptASCII,@events
-"runtime syntax/basic/literal.vim
+syntax region typescriptDestructureString
+ \ start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/
+ \ contains=typescriptASCII
+ \ nextgroup=typescriptDestructureAs
+ \ contained skipwhite skipempty
+
+syntax cluster typescriptVariableDeclarations
+ \ contains=typescriptVariableDeclaration,@typescriptDestructures
+
+syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
+ \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+ \ contained skipwhite skipempty
+
+syntax cluster typescriptDestructureVariables contains=
+ \ typescriptRestOrSpread,
+ \ typescriptDestructureComma,
+ \ typescriptDestructureLabel,
+ \ typescriptDestructureVariable,
+ \ @typescriptDestructures
+
+syntax match typescriptDestructureVariable /[A-Za-z_$]\k*/ contained
+ \ nextgroup=typescriptDefaultParam
+ \ contained skipwhite skipempty
+
+syntax match typescriptDestructureLabel /[A-Za-z_$]\k*\ze\_s*:/
+ \ nextgroup=typescriptDestructureAs
+ \ contained skipwhite skipempty
+
+syntax match typescriptDestructureAs /:/
+ \ nextgroup=typescriptDestructureVariable,@typescriptDestructures
+ \ contained skipwhite skipempty
+
+syntax match typescriptDestructureComma /,/ contained
+
+syntax cluster typescriptDestructures contains=
+ \ typescriptArrayDestructure,
+ \ typescriptObjectDestructure
+
+syntax region typescriptArrayDestructure matchgroup=typescriptBraces
+ \ start=/\[/ end=/]/
+ \ contains=@typescriptDestructureVariables,@typescriptComments
+ \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+ \ transparent contained skipwhite skipempty fold
+
+syntax region typescriptObjectDestructure matchgroup=typescriptBraces
+ \ start=/{/ end=/}/
+ \ contains=typescriptDestructureString,@typescriptDestructureVariables,@typescriptComments
+ \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+ \ transparent contained skipwhite skipempty fold
+
"Syntax in the JavaScript code
" String
@@ -77,15 +125,15 @@ syntax region typescriptString
\ contains=typescriptSpecial,@Spell
\ extend
-syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)"
+syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{1,6}})|c\u|.)"
" From vim runtime
" <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48>
-syntax region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}]+me=e-1 nextgroup=typescriptDotNotation oneline
+syntax region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}:]+me=e-1 nextgroup=typescriptDotNotation oneline
syntax region typescriptTemplate
\ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
- \ contains=typescriptTemplateSubstitution
+ \ contains=typescriptTemplateSubstitution,typescriptSpecial,@Spell
\ nextgroup=@typescriptSymbols
\ skipwhite skipempty
@@ -100,18 +148,16 @@ syntax region typescriptArray matchgroup=typescriptBraces
syntax match typescriptNumber /\<0[bB][01][01_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
-syntax match typescriptNumber /\d[0-9_]*\.\d[0-9_]*\|\d[0-9_]*\|\.\d[0-9]*/
- \ nextgroup=typescriptExponent,@typescriptSymbols skipwhite skipempty
-syntax match typescriptExponent /[eE][+-]\=\d[0-9]*\>/
- \ nextgroup=@typescriptSymbols skipwhite skipempty contained
+syntax match typescriptNumber /\<\%(\d[0-9_]*\%(\.\d[0-9_]*\)\=\|\.\d[0-9_]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
+ \ nextgroup=typescriptSymbols skipwhite skipempty
-
-" runtime syntax/basic/object.vim
syntax region typescriptObjectLiteral matchgroup=typescriptBraces
\ start=/{/ end=/}/
- \ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName
+ \ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName,typescriptObjectAsyncKeyword
\ fold contained
+syntax keyword typescriptObjectAsyncKeyword async contained
+
syntax match typescriptObjectLabel contained /\k\+\_s*/
\ nextgroup=typescriptObjectColon,@typescriptCallImpl
\ skipwhite skipempty
@@ -136,7 +182,6 @@ syntax match typescriptObjectSpread /\.\.\./ contained containedin=typescriptObj
syntax match typescriptObjectColon contained /:/ nextgroup=@typescriptValue skipwhite skipempty
-"runtime syntax/basic/symbols.vim
" + - ^ ~
syntax match typescriptUnaryOp /[+\-~!]/
\ nextgroup=@typescriptValue
@@ -153,10 +198,12 @@ syntax match typescriptBinaryOp contained /===\?/ nextgroup=@typescriptValue s
syntax match typescriptBinaryOp contained />\(>>=\|>>\|>=\|>\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
" 4: <<=, <<, <=, <
syntax match typescriptBinaryOp contained /<\(<=\|<\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 3: ||, |=, |
-syntax match typescriptBinaryOp contained /|\(|\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 3: &&, &=, &
-syntax match typescriptBinaryOp contained /&\(&\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: ||, |=, |, ||=
+syntax match typescriptBinaryOp contained /||\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 4: &&, &=, &, &&=
+syntax match typescriptBinaryOp contained /&&\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: ??, ??=
+syntax match typescriptBinaryOp contained /??=\?/ nextgroup=@typescriptValue skipwhite skipempty
" 2: *=, *
syntax match typescriptBinaryOp contained /\*=\?/ nextgroup=@typescriptValue skipwhite skipempty
" 2: %=, %
@@ -177,11 +224,18 @@ syntax match typescriptBinaryOp contained /\*\*=\?/ nextgroup=@typescriptValue
syntax cluster typescriptSymbols contains=typescriptBinaryOp,typescriptKeywordOp,typescriptTernary,typescriptAssign,typescriptCastKeyword
" runtime syntax/basic/reserved.vim
-
-"runtime syntax/basic/keyword.vim
"Import
-syntax keyword typescriptImport from as import
+syntax keyword typescriptImport from as
+syntax keyword typescriptImport import
+ \ nextgroup=typescriptImportType
+ \ skipwhite
+syntax keyword typescriptImportType type
+ \ contained
syntax keyword typescriptExport export
+ \ nextgroup=typescriptExportType
+ \ skipwhite
+syntax match typescriptExportType /\<type\s*{\@=/
+ \ contained skipwhite skipempty skipnl
syntax keyword typescriptModule namespace module
"this
@@ -199,16 +253,12 @@ syntax keyword typescriptIdentifier arguments this super
\ nextgroup=@afterIdentifier
syntax keyword typescriptVariable let var
- \ nextgroup=typescriptVariableDeclaration
- \ skipwhite skipempty skipnl
+ \ nextgroup=@typescriptVariableDeclarations
+ \ skipwhite skipempty
syntax keyword typescriptVariable const
- \ nextgroup=typescriptEnum,typescriptVariableDeclaration
- \ skipwhite
-
-syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
- \ nextgroup=typescriptTypeAnnotation,typescriptAssign
- \ contained skipwhite skipempty skipnl
+ \ nextgroup=typescriptEnum,@typescriptVariableDeclarations
+ \ skipwhite skipempty
syntax region typescriptEnum matchgroup=typescriptEnumKeyword start=/enum / end=/\ze{/
\ nextgroup=typescriptBlock
@@ -271,7 +321,6 @@ syntax cluster typescriptAmbients contains=
\ typescriptEnumKeyword,typescriptEnum,
\ typescriptModule
-"runtime syntax/basic/doc.vim
"Syntax coloring for Node.js shebang line
syntax match shellbang "^#!.*node\>"
syntax match shellbang "^#!.*iojs\>"
@@ -279,8 +328,9 @@ syntax match shellbang "^#!.*iojs\>"
"JavaScript comments
syntax keyword typescriptCommentTodo TODO FIXME XXX TBD
+syntax match typescriptMagicComment "@ts-\%(ignore\|expect-error\)\>"
syntax match typescriptLineComment "//.*"
- \ contains=@Spell,typescriptCommentTodo,typescriptRef
+ \ contains=@Spell,typescriptCommentTodo,typescriptRef,typescriptMagicComment
syntax region typescriptComment
\ start="/\*" end="\*/"
\ contains=@Spell,typescriptCommentTodo extend
@@ -349,24 +399,27 @@ syntax region typescriptDocLinkTag contained matchgroup=typescriptDo
syntax cluster typescriptDocs contains=typescriptDocParamType,typescriptDocNamedParamType,typescriptDocParam
-if main_syntax == "typescript"
+if exists("main_syntax") && main_syntax == "typescript"
syntax sync clear
syntax sync ccomment typescriptComment minlines=200
endif
syntax case match
-"runtime syntax/basic/type.vim
" Types
syntax match typescriptOptionalMark /?/ contained
+syntax cluster typescriptTypeParameterCluster contains=
+ \ typescriptTypeParameter,
+ \ typescriptGenericDefault
+
syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets
\ start=/</ end=/>/
- \ contains=typescriptTypeParameter
+ \ contains=@typescriptTypeParameterCluster
\ contained
syntax match typescriptTypeParameter /\K\k*/
- \ nextgroup=typescriptConstraint,typescriptGenericDefault
+ \ nextgroup=typescriptConstraint
\ contained skipwhite skipnl
syntax keyword typescriptConstraint extends
@@ -409,6 +462,7 @@ syntax cluster typescriptPrimaryType contains=
\ typescriptTupleType,
\ typescriptTypeQuery,
\ typescriptStringLiteralType,
+ \ typescriptTemplateLiteralType,
\ typescriptReadonlyArrayKeyword,
\ typescriptAssertType
@@ -417,6 +471,17 @@ syntax region typescriptStringLiteralType contained
\ nextgroup=typescriptUnion
\ skipwhite skipempty
+syntax region typescriptTemplateLiteralType contained
+ \ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
+ \ contains=typescriptTemplateSubstitutionType
+ \ nextgroup=typescriptTypeOperator
+ \ skipwhite skipempty
+
+syntax region typescriptTemplateSubstitutionType matchgroup=typescriptTemplateSB
+ \ start=/\${/ end=/}/
+ \ contains=@typescriptType
+ \ contained
+
syntax region typescriptParenthesizedType matchgroup=typescriptParens
\ start=/(/ end=/)/
\ contains=@typescriptType
@@ -439,7 +504,7 @@ syntax region typescriptObjectType matchgroup=typescriptBraces
\ start=/{/ end=/}/
\ contains=@typescriptTypeMember,typescriptEndColons,@typescriptComments,typescriptAccessibilityModifier,typescriptReadonlyModifier
\ nextgroup=@typescriptTypeOperator
- \ contained skipwhite fold
+ \ contained skipwhite skipnl fold
syntax cluster typescriptTypeMember contains=
\ @typescriptCallSignature,
@@ -447,16 +512,21 @@ syntax cluster typescriptTypeMember contains=
\ typescriptIndexSignature,
\ @typescriptMembers
+syntax match typescriptTupleLable /\K\k*?\?:/
+ \ contained
+
syntax region typescriptTupleType matchgroup=typescriptBraces
\ start=/\[/ end=/\]/
- \ contains=@typescriptType,@typescriptComments
+ \ contains=@typescriptType,@typescriptComments,typescriptRestOrSpread,typescriptTupleLable
\ contained skipwhite
syntax cluster typescriptTypeOperator
- \ contains=typescriptUnion,typescriptTypeBracket
+ \ contains=typescriptUnion,typescriptTypeBracket,typescriptConstraint,typescriptConditionalType
syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
+syntax match typescriptConditionalType /?\|:/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
+
syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
\ start=/</ end=/>/
@@ -511,6 +581,7 @@ syntax match typescriptTypeAnnotation /:/
syntax cluster typescriptParameterList contains=
\ typescriptTypeAnnotation,
\ typescriptAccessibilityModifier,
+ \ typescriptReadonlyModifier,
\ typescriptOptionalMark,
\ typescriptRestOrSpread,
\ typescriptFuncComma,
@@ -550,10 +621,9 @@ syntax keyword typescriptReadonlyArrayKeyword readonly
\ nextgroup=@typescriptPrimaryType
\ skipwhite
+
" extension
if get(g:, 'yats_host_keyword', 1)
- "runtime syntax/yats.vim
- "runtime syntax/yats/typescript.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function Boolean
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Error EvalError
syntax keyword typescriptGlobal containedin=typescriptIdentifierName InternalError
@@ -584,7 +654,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptGlobalMethod
hi def link typescriptGlobalMethod Structure
- "runtime syntax/yats/es6-number.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Number nextgroup=typescriptGlobalNumberDot,typescriptFuncCallArg
syntax match typescriptGlobalNumberDot /\./ contained nextgroup=typescriptNumberStaticProp,typescriptNumberStaticMethod,typescriptProp
syntax keyword typescriptNumberStaticProp contained EPSILON MAX_SAFE_INTEGER MAX_VALUE
@@ -599,7 +668,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptNumberMethod
hi def link typescriptNumberMethod Keyword
- "runtime syntax/yats/es6-string.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName String nextgroup=typescriptGlobalStringDot,typescriptFuncCallArg
syntax match typescriptGlobalStringDot /\./ contained nextgroup=typescriptStringStaticMethod,typescriptProp
syntax keyword typescriptStringStaticMethod contained fromCharCode fromCodePoint raw nextgroup=typescriptFuncCallArg
@@ -615,7 +683,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptStringMethod
hi def link typescriptStringMethod Keyword
- "runtime syntax/yats/es6-array.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Array nextgroup=typescriptGlobalArrayDot,typescriptFuncCallArg
syntax match typescriptGlobalArrayDot /\./ contained nextgroup=typescriptArrayStaticMethod,typescriptProp
syntax keyword typescriptArrayStaticMethod contained from isArray of nextgroup=typescriptFuncCallArg
@@ -629,7 +696,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptArrayMethod
hi def link typescriptArrayMethod Keyword
- "runtime syntax/yats/es6-object.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Object nextgroup=typescriptGlobalObjectDot,typescriptFuncCallArg
syntax match typescriptGlobalObjectDot /\./ contained nextgroup=typescriptObjectStaticMethod,typescriptProp
syntax keyword typescriptObjectStaticMethod contained create defineProperties defineProperty nextgroup=typescriptFuncCallArg
@@ -646,7 +712,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptObjectMethod
hi def link typescriptObjectMethod Keyword
- "runtime syntax/yats/es6-symbol.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Symbol nextgroup=typescriptGlobalSymbolDot,typescriptFuncCallArg
syntax match typescriptGlobalSymbolDot /\./ contained nextgroup=typescriptSymbolStaticProp,typescriptSymbolStaticMethod,typescriptProp
syntax keyword typescriptSymbolStaticProp contained length iterator match replace
@@ -657,13 +722,11 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptSymbolStaticMethod contained for keyFor nextgroup=typescriptFuncCallArg
hi def link typescriptSymbolStaticMethod Keyword
- "runtime syntax/yats/es6-function.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function
syntax keyword typescriptFunctionMethod contained apply bind call nextgroup=typescriptFuncCallArg
syntax cluster props add=typescriptFunctionMethod
hi def link typescriptFunctionMethod Keyword
- "runtime syntax/yats/es6-math.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Math nextgroup=typescriptGlobalMathDot,typescriptFuncCallArg
syntax match typescriptGlobalMathDot /\./ contained nextgroup=typescriptMathStaticProp,typescriptMathStaticMethod,typescriptProp
syntax keyword typescriptMathStaticProp contained E LN10 LN2 LOG10E LOG2E PI SQRT1_2
@@ -677,7 +740,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptMathStaticMethod contained sinh sqrt tan tanh trunc nextgroup=typescriptFuncCallArg
hi def link typescriptMathStaticMethod Keyword
- "runtime syntax/yats/es6-date.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Date nextgroup=typescriptGlobalDateDot,typescriptFuncCallArg
syntax match typescriptGlobalDateDot /\./ contained nextgroup=typescriptDateStaticMethod,typescriptProp
syntax keyword typescriptDateStaticMethod contained UTC now parse nextgroup=typescriptFuncCallArg
@@ -699,13 +761,11 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptDateMethod
hi def link typescriptDateMethod Keyword
- "runtime syntax/yats/es6-json.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName JSON nextgroup=typescriptGlobalJSONDot,typescriptFuncCallArg
syntax match typescriptGlobalJSONDot /\./ contained nextgroup=typescriptJSONStaticMethod,typescriptProp
syntax keyword typescriptJSONStaticMethod contained parse stringify nextgroup=typescriptFuncCallArg
hi def link typescriptJSONStaticMethod Keyword
- "runtime syntax/yats/es6-regexp.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName RegExp nextgroup=typescriptGlobalRegExpDot,typescriptFuncCallArg
syntax match typescriptGlobalRegExpDot /\./ contained nextgroup=typescriptRegExpStaticProp,typescriptProp
syntax keyword typescriptRegExpStaticProp contained lastIndex
@@ -717,7 +777,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptRegExpMethod
hi def link typescriptRegExpMethod Keyword
- "runtime syntax/yats/es6-map.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Map WeakMap
syntax keyword typescriptES6MapProp contained size
syntax cluster props add=typescriptES6MapProp
@@ -727,7 +786,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptES6MapMethod
hi def link typescriptES6MapMethod Keyword
- "runtime syntax/yats/es6-set.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Set WeakSet
syntax keyword typescriptES6SetProp contained size
syntax cluster props add=typescriptES6SetProp
@@ -737,7 +795,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptES6SetMethod
hi def link typescriptES6SetMethod Keyword
- "runtime syntax/yats/es6-proxy.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Proxy
syntax keyword typescriptProxyAPI contained getOwnPropertyDescriptor getOwnPropertyNames
syntax keyword typescriptProxyAPI contained defineProperty deleteProperty freeze seal
@@ -745,7 +802,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptProxyAPI contained iterate ownKeys apply construct
hi def link typescriptProxyAPI Keyword
- "runtime syntax/yats/es6-promise.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Promise nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg
syntax match typescriptGlobalPromiseDot /\./ contained nextgroup=typescriptPromiseStaticMethod,typescriptProp
syntax keyword typescriptPromiseStaticMethod contained resolve reject all race nextgroup=typescriptFuncCallArg
@@ -754,7 +810,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptPromiseMethod
hi def link typescriptPromiseMethod Keyword
- "runtime syntax/yats/es6-reflect.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect
syntax keyword typescriptReflectMethod contained apply construct defineProperty deleteProperty nextgroup=typescriptFuncCallArg
syntax keyword typescriptReflectMethod contained enumerate get getOwnPropertyDescriptor nextgroup=typescriptFuncCallArg
@@ -763,14 +818,12 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptReflectMethod
hi def link typescriptReflectMethod Keyword
- "runtime syntax/yats/ecma-402.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Intl
syntax keyword typescriptIntlMethod contained Collator DateTimeFormat NumberFormat nextgroup=typescriptFuncCallArg
syntax keyword typescriptIntlMethod contained PluralRules nextgroup=typescriptFuncCallArg
syntax cluster props add=typescriptIntlMethod
hi def link typescriptIntlMethod Keyword
- "runtime syntax/yats/node.vim
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName global process
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName console Buffer
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName module exports
@@ -788,7 +841,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName afterAll
syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName expect assert
- "runtime syntax/yats/web.vim
syntax keyword typescriptBOM containedin=typescriptIdentifierName AbortController
syntax keyword typescriptBOM containedin=typescriptIdentifierName AbstractWorker AnalyserNode
syntax keyword typescriptBOM containedin=typescriptIdentifierName App Apps ArrayBuffer
@@ -1038,7 +1090,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptBOM containedin=typescriptIdentifierName XMLHttpRequestEventTarget
hi def link typescriptBOM Structure
- "runtime syntax/yats/web-window.vim
syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName applicationCache
syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName closed
syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName Components
@@ -1145,7 +1196,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName XMLSerializer
hi def link typescriptBOMWindowCons Structure
- "runtime syntax/yats/web-navigator.vim
syntax keyword typescriptBOMNavigatorProp contained battery buildID connection cookieEnabled
syntax keyword typescriptBOMNavigatorProp contained doNotTrack maxTouchPoints oscpu
syntax keyword typescriptBOMNavigatorProp contained productSub push serviceWorker
@@ -1164,7 +1214,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptServiceWorkerMethod
hi def link typescriptServiceWorkerMethod Keyword
- "runtime syntax/yats/web-location.vim
syntax keyword typescriptBOMLocationProp contained href protocol host hostname port
syntax keyword typescriptBOMLocationProp contained pathname search hash username password
syntax keyword typescriptBOMLocationProp contained origin
@@ -1174,7 +1223,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptBOMLocationMethod
hi def link typescriptBOMLocationMethod Keyword
- "runtime syntax/yats/web-history.vim
syntax keyword typescriptBOMHistoryProp contained length current next previous state
syntax keyword typescriptBOMHistoryProp contained scrollRestoration
syntax cluster props add=typescriptBOMHistoryProp
@@ -1183,7 +1231,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptBOMHistoryMethod
hi def link typescriptBOMHistoryMethod Keyword
- "runtime syntax/yats/web-console.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName console
syntax keyword typescriptConsoleMethod contained count dir error group groupCollapsed nextgroup=typescriptFuncCallArg
syntax keyword typescriptConsoleMethod contained groupEnd info log time timeEnd trace nextgroup=typescriptFuncCallArg
@@ -1191,7 +1238,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptConsoleMethod
hi def link typescriptConsoleMethod Keyword
- "runtime syntax/yats/web-xhr.vim
syntax keyword typescriptXHRGlobal containedin=typescriptIdentifierName XMLHttpRequest
hi def link typescriptXHRGlobal Structure
syntax keyword typescriptXHRProp contained onreadystatechange readyState response
@@ -1204,7 +1250,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptXHRMethod
hi def link typescriptXHRMethod Keyword
- "runtime syntax/yats/web-blob.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Blob BlobBuilder
syntax keyword typescriptGlobal containedin=typescriptIdentifierName File FileReader
syntax keyword typescriptGlobal containedin=typescriptIdentifierName FileReaderSync
@@ -1236,7 +1281,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptURLStaticMethod contained createObjectURL revokeObjectURL nextgroup=typescriptFuncCallArg
hi def link typescriptURLStaticMethod Keyword
- "runtime syntax/yats/web-crypto.vim
syntax keyword typescriptCryptoGlobal containedin=typescriptIdentifierName crypto
hi def link typescriptCryptoGlobal Structure
syntax keyword typescriptSubtleCryptoMethod contained encrypt decrypt sign verify nextgroup=typescriptFuncCallArg
@@ -1250,7 +1294,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptCryptoMethod
hi def link typescriptCryptoMethod Keyword
- "runtime syntax/yats/web-fetch.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Headers Request
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Response
syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName fetch nextgroup=typescriptFuncCallArg
@@ -1274,7 +1317,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptResponseMethod
hi def link typescriptResponseMethod Keyword
- "runtime syntax/yats/web-service-worker.vim
syntax keyword typescriptServiceWorkerProp contained controller ready
syntax cluster props add=typescriptServiceWorkerProp
hi def link typescriptServiceWorkerProp Keyword
@@ -1287,7 +1329,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptCacheMethod
hi def link typescriptCacheMethod Keyword
- "runtime syntax/yats/web-encoding.vim
syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextEncoder
syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextDecoder
hi def link typescriptEncodingGlobal Structure
@@ -1298,21 +1339,18 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptEncodingMethod
hi def link typescriptEncodingMethod Keyword
- "runtime syntax/yats/web-geo.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Geolocation
syntax keyword typescriptGeolocationMethod contained getCurrentPosition watchPosition nextgroup=typescriptFuncCallArg
syntax keyword typescriptGeolocationMethod contained clearWatch nextgroup=typescriptFuncCallArg
syntax cluster props add=typescriptGeolocationMethod
hi def link typescriptGeolocationMethod Keyword
- "runtime syntax/yats/web-network.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName NetworkInformation
syntax keyword typescriptBOMNetworkProp contained downlink downlinkMax effectiveType
syntax keyword typescriptBOMNetworkProp contained rtt type
syntax cluster props add=typescriptBOMNetworkProp
hi def link typescriptBOMNetworkProp Keyword
- "runtime syntax/yats/web-payment.vim
syntax keyword typescriptGlobal containedin=typescriptIdentifierName PaymentRequest
syntax keyword typescriptPaymentMethod contained show abort canMakePayment nextgroup=typescriptFuncCallArg
syntax cluster props add=typescriptPaymentMethod
@@ -1340,7 +1378,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptPaymentShippingOptionProp
hi def link typescriptPaymentShippingOptionProp Keyword
- "runtime syntax/yats/dom-node.vim
syntax keyword typescriptDOMNodeProp contained attributes baseURI baseURIObject childNodes
syntax keyword typescriptDOMNodeProp contained firstChild lastChild localName namespaceURI
syntax keyword typescriptDOMNodeProp contained nextSibling nodeName nodePrincipal
@@ -1364,7 +1401,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptDOMNodeType contained DOCUMENT_FRAGMENT_NODE NOTATION_NODE
hi def link typescriptDOMNodeType Keyword
- "runtime syntax/yats/dom-elem.vim
syntax keyword typescriptDOMElemAttrs contained accessKey clientHeight clientLeft
syntax keyword typescriptDOMElemAttrs contained clientTop clientWidth id innerHTML
syntax keyword typescriptDOMElemAttrs contained length onafterscriptexecute onbeforescriptexecute
@@ -1387,7 +1423,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptDOMElemFuncs contained getAttribute
hi def link typescriptDOMElemFuncs Keyword
- "runtime syntax/yats/dom-document.vim
syntax keyword typescriptDOMDocProp contained activeElement body cookie defaultView
syntax keyword typescriptDOMDocProp contained designMode dir domain embeds forms head
syntax keyword typescriptDOMDocProp contained images lastModified links location plugins
@@ -1419,7 +1454,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptDOMDocMethod
hi def link typescriptDOMDocMethod Keyword
- "runtime syntax/yats/dom-event.vim
syntax keyword typescriptDOMEventTargetMethod contained addEventListener removeEventListener nextgroup=typescriptEventFuncCallArg
syntax keyword typescriptDOMEventTargetMethod contained dispatchEvent waitUntil nextgroup=typescriptEventFuncCallArg
syntax cluster props add=typescriptDOMEventTargetMethod
@@ -1480,7 +1514,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptDOMEventMethod
hi def link typescriptDOMEventMethod Keyword
- "runtime syntax/yats/dom-storage.vim
syntax keyword typescriptDOMStorage contained sessionStorage localStorage
hi def link typescriptDOMStorage Keyword
syntax keyword typescriptDOMStorageProp contained length
@@ -1491,7 +1524,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptDOMStorageMethod
hi def link typescriptDOMStorageMethod Keyword
- "runtime syntax/yats/dom-form.vim
syntax keyword typescriptDOMFormProp contained acceptCharset action elements encoding
syntax keyword typescriptDOMFormProp contained enctype length method name target
syntax cluster props add=typescriptDOMFormProp
@@ -1500,7 +1532,6 @@ if get(g:, 'yats_host_keyword', 1)
syntax cluster props add=typescriptDOMFormMethod
hi def link typescriptDOMFormMethod Keyword
- "runtime syntax/yats/css.vim
syntax keyword typescriptDOMStyle contained alignContent alignItems alignSelf animation
syntax keyword typescriptDOMStyle contained animationDelay animationDirection animationDuration
syntax keyword typescriptDOMStyle contained animationFillMode animationIterationCount
@@ -1575,8 +1606,6 @@ if get(g:, 'yats_host_keyword', 1)
let typescript_props = 1
-
- "runtime syntax/yats/event.vim
syntax keyword typescriptAnimationEvent contained animationend animationiteration
syntax keyword typescriptAnimationEvent contained animationstart beginEvent endEvent
syntax keyword typescriptAnimationEvent contained repeatEvent
@@ -1710,14 +1739,12 @@ if get(g:, 'yats_host_keyword', 1)
endif
" patch
-"runtime syntax/basic/patch.vim
" patch for generated code
syntax keyword typescriptGlobal Promise
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
syntax keyword typescriptGlobal Map WeakMap
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
-"runtime syntax/basic/members.vim
syntax keyword typescriptConstructor contained constructor
\ nextgroup=@typescriptCallSignature
\ skipwhite skipempty
@@ -1725,7 +1752,7 @@ syntax keyword typescriptConstructor contained constructor
syntax cluster memberNextGroup contains=typescriptMemberOptionality,typescriptTypeAnnotation,@typescriptCallSignature
-syntax match typescriptMember /\K\k*/
+syntax match typescriptMember /#\?\K\k*/
\ nextgroup=@memberNextGroup
\ contained skipwhite
@@ -1765,7 +1792,6 @@ syntax region typescriptComputedMember contained matchgroup=typescriptPropert
\ nextgroup=@memberNextGroup
\ skipwhite skipempty
-"runtime syntax/basic/class.vim
"don't add typescriptMembers to nextgroup, let outer scope match it
" so we won't match abstract method outside abstract class
syntax keyword typescriptAbstract abstract
@@ -1781,7 +1807,7 @@ syntax match typescriptClassName contained /\K\k*/
syntax region typescriptClassTypeParameter
\ start=/</ end=/>/
- \ contains=typescriptTypeParameter
+ \ contains=@typescriptTypeParameterCluster
\ nextgroup=typescriptClassBlock,typescriptClassExtends
\ contained skipwhite skipnl
@@ -1813,7 +1839,7 @@ syntax match typescriptInterfaceName contained /\k\+/
\ skipwhite skipnl
syntax region typescriptInterfaceTypeParameter
\ start=/</ end=/>/
- \ contains=typescriptTypeParameter
+ \ contains=@typescriptTypeParameterCluster
\ nextgroup=typescriptObjectType,typescriptInterfaceExtends
\ contained
\ skipwhite skipnl
@@ -1832,7 +1858,6 @@ syntax region typescriptInterfaceTypeArguments matchgroup=typescriptTypeBrackets
syntax match typescriptInterfaceComma /,/ contained nextgroup=typescriptInterfaceHeritage skipwhite skipnl
-"runtime syntax/basic/cluster.vim
"Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement
syntax cluster typescriptStatement
\ contains=typescriptBlock,typescriptVariable,
@@ -1872,7 +1897,6 @@ syntax cluster typescriptValue
syntax cluster typescriptEventExpression contains=typescriptArrowFuncDef,typescriptParenExp,@typescriptValue,typescriptRegexpString,@typescriptEventTypes,typescriptOperator,typescriptGlobal,jsxRegion
-"runtime syntax/basic/function.vim
syntax keyword typescriptAsyncFuncKeyword async
\ nextgroup=typescriptFuncKeyword,typescriptArrowFuncDef
\ skipwhite
@@ -1894,7 +1918,7 @@ syntax match typescriptFuncName contained /\K\k*/
\ skipwhite
" destructuring ({ a: ee }) =>
-syntax match typescriptArrowFuncDef contained /({\_[^}]*}\(:\_[^)]\)\?)\s*=>/
+syntax match typescriptArrowFuncDef contained /(\(\s*\({\_[^}]*}\|\k\+\)\(:\_[^)]\)\?,\?\)\+)\s*=>/
\ contains=typescriptArrowFuncArg,typescriptArrowFunc
\ nextgroup=@typescriptExpression,typescriptBlock
\ skipwhite skipempty
@@ -1913,7 +1937,7 @@ syntax match typescriptArrowFuncDef contained /\K\k*\s*=>/
\ skipwhite skipempty
" TODO: optimize this pattern
-syntax region typescriptArrowFuncDef contained start=/(\_[^)]*):/ end=/=>/
+syntax region typescriptArrowFuncDef contained start=/(\_[^(^)]*):/ end=/=>/
\ contains=typescriptArrowFuncArg,typescriptArrowFunc,typescriptTypeAnnotation
\ nextgroup=@typescriptExpression,typescriptBlock
\ skipwhite skipempty keepend
@@ -1925,7 +1949,7 @@ syntax region typescriptArrowFuncArg contained start=/<\|(/ end=/\ze=>
syntax region typescriptReturnAnnotation contained start=/:/ end=/{/me=e-1 contains=@typescriptType nextgroup=typescriptBlock
-syntax region typescriptFuncImpl contained start=/function/ end=/{/me=e-1
+syntax region typescriptFuncImpl contained start=/function\>/ end=/{/me=e-1
\ contains=typescriptFuncKeyword
\ nextgroup=typescriptBlock
@@ -1941,9 +1965,8 @@ syntax region typescriptParamImpl matchgroup=typescriptParens
\ nextgroup=typescriptReturnAnnotation,typescriptBlock
\ contained skipwhite skipnl
-"runtime syntax/basic/decorator.vim
syntax match typescriptDecorator /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/
- \ nextgroup=typescriptArgumentList,typescriptTypeArguments
+ \ nextgroup=typescriptFuncCallArg,typescriptTypeArguments
\ contains=@_semantic,typescriptDotNotation
" Define the default highlighting.
@@ -1957,6 +1980,7 @@ hi def link typescriptComment Comment
hi def link typescriptLineComment Comment
hi def link typescriptDocComment Comment
hi def link typescriptCommentTodo Todo
+hi def link typescriptMagicComment SpecialComment
hi def link typescriptRef Include
hi def link typescriptDocNotation SpecialComment
hi def link typescriptDocTags SpecialComment
@@ -1970,9 +1994,11 @@ hi def link typescriptDocParamType Type
hi def link typescriptString String
hi def link typescriptSpecial Special
hi def link typescriptStringLiteralType String
+hi def link typescriptTemplateLiteralType String
hi def link typescriptStringMember String
hi def link typescriptTemplate String
hi def link typescriptEventString String
+hi def link typescriptDestructureString String
hi def link typescriptASCII Special
hi def link typescriptTemplateSB Label
hi def link typescriptRegexpString String
@@ -1986,6 +2012,7 @@ hi def link typescriptDefault typescriptCase
hi def link typescriptBranch Conditional
hi def link typescriptIdentifier Structure
hi def link typescriptVariable Identifier
+hi def link typescriptDestructureVariable PreProc
hi def link typescriptEnumKeyword Identifier
hi def link typescriptRepeat Repeat
hi def link typescriptForOperator Repeat
@@ -1997,14 +2024,17 @@ hi def link typescriptCastKeyword Special
hi def link typescriptType Type
hi def link typescriptNull Boolean
hi def link typescriptNumber Number
-hi def link typescriptExponent Number
hi def link typescriptBoolean Boolean
hi def link typescriptObjectLabel typescriptLabel
+hi def link typescriptDestructureLabel Function
hi def link typescriptLabel Label
+hi def link typescriptTupleLable Label
hi def link typescriptStringProperty String
hi def link typescriptImport Special
+hi def link typescriptImportType Special
hi def link typescriptAmbientDeclaration Special
hi def link typescriptExport Special
+hi def link typescriptExportType Special
hi def link typescriptModule Special
hi def link typescriptTry Special
hi def link typescriptExceptions Special
@@ -2013,6 +2043,7 @@ hi def link typescriptMember Function
hi def link typescriptMethodAccessor Operator
hi def link typescriptAsyncFuncKeyword Keyword
+hi def link typescriptObjectAsyncKeyword Keyword
hi def link typescriptAsyncFor Keyword
hi def link typescriptFuncKeyword Keyword
hi def link typescriptAsyncFunc Keyword
diff --git a/runtime/syntax/vhdl.vim b/runtime/syntax/vhdl.vim
index efcb840284..06fc2e795e 100644
--- a/runtime/syntax/vhdl.vim
+++ b/runtime/syntax/vhdl.vim
@@ -1,9 +1,9 @@
" Vim syntax file
" Language: VHDL [VHSIC (Very High Speed Integrated Circuit) Hardware Description Language]
-" Maintainer: Daniel Kho <daniel.kho@tauhop.com>
+" Maintainer: Daniel Kho <daniel.kho@logik.haus>
" Previous Maintainer: Czo <Olivier.Sirol@lip6.fr>
" Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
-" Last Changed: 2018 May 06 by Daniel Kho
+" Last Changed: 2020 Apr 04 by Daniel Kho
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -16,10 +16,10 @@ set cpo&vim
" case is not significant
syn case ignore
-" VHDL keywords
-syn keyword vhdlStatement access after alias all assert
+" VHDL 1076-2019 keywords
+syn keyword vhdlStatement access after alias all
syn keyword vhdlStatement architecture array attribute
-syn keyword vhdlStatement assume assume_guarantee
+syn keyword vhdlStatement assert assume
syn keyword vhdlStatement begin block body buffer bus
syn keyword vhdlStatement case component configuration constant
syn keyword vhdlStatement context cover
@@ -34,20 +34,19 @@ syn keyword vhdlStatement map
syn keyword vhdlStatement new next null
syn keyword vhdlStatement of on open others out
syn keyword vhdlStatement package port postponed procedure process pure
-syn keyword vhdlStatement parameter property protected
+syn keyword vhdlStatement parameter property protected private
syn keyword vhdlStatement range record register reject report return
-syn keyword vhdlStatement release restrict restrict_guarantee
-syn keyword vhdlStatement select severity signal shared
-syn keyword vhdlStatement subtype
+syn keyword vhdlStatement release restrict
+syn keyword vhdlStatement select severity signal shared subtype
syn keyword vhdlStatement sequence strong
syn keyword vhdlStatement then to transport type
syn keyword vhdlStatement unaffected units until use
-syn keyword vhdlStatement variable
-" VHDL-2017 interface
-syn keyword vhdlStatement view
-syn keyword vhdlStatement vmode vprop vunit
+syn keyword vhdlStatement variable view
+syn keyword vhdlStatement vpkg vmode vprop vunit
syn keyword vhdlStatement wait when while with
-syn keyword vhdlStatement note warning error failure
+
+" VHDL predefined severity levels
+syn keyword vhdlAttribute note warning error failure
" Linting of conditionals.
syn match vhdlStatement "\<\(if\|else\)\>"
@@ -124,7 +123,7 @@ syn match vhdlAttribute "\'succ"
syn match vhdlAttribute "\'val"
syn match vhdlAttribute "\'image"
syn match vhdlAttribute "\'value"
-" VHDL-2017 interface attribute
+" VHDL-2019 interface attribute
syn match vhdlAttribute "\'converse"
syn keyword vhdlBoolean true false
@@ -167,7 +166,7 @@ syn match vhdlOperator "=\|\/=\|>\|<\|>="
syn match vhdlOperator "<=\|:="
syn match vhdlOperator "=>"
-" VHDL-2017 concurrent signal association (spaceship) operator
+" VHDL-202x concurrent signal association (spaceship) operator
syn match vhdlOperator "<=>"
" VHDL-2008 conversion, matching equality/non-equality operators
@@ -188,7 +187,7 @@ syn match vhdlError "\(<\)[&+\-\/\\]\+"
syn match vhdlError "[>=&+\-\/\\]\+\(<\)"
" Covers most operators
" support negative sign after operators. E.g. q<=-b;
-" Supports VHDL-2017 spaceship (concurrent simple signal association).
+" Supports VHDL-202x spaceship (concurrent simple signal association).
syn match vhdlError "\(<=\)[<=&+\*\\?:]\+"
syn match vhdlError "[>=&+\-\*\\:]\+\(=>\)"
syn match vhdlError "\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|:=\|=>\)[<>=&+\*\\?:]\+"
@@ -265,4 +264,5 @@ let b:current_syntax = "vhdl"
let &cpo = s:cpo_save
unlet s:cpo_save
+
" vim: ts=8
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 92348d57ec..d395c6b1c3 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -53,16 +53,16 @@ syn case ignore
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
" Default highlighting groups {{{2
-syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual WarningMsg WildMenu
+syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual WarningMsg WildMenu
syn match vimHLGroup contained "Conceal"
-syn keyword vimOnlyHLGroup contained VisualNOS
-syn keyword nvimHLGroup contained Substitute TermCursor TermCursorNC QuickFixLine
+syn keyword vimOnlyHLGroup contained LineNrAbove LineNrBelow StatusLineTerm Terminal VisualNOS
+syn keyword nvimHLGroup contained Substitute TermCursor TermCursorNC
"}}}2
syn case match
" Special Vim Highlighting (not automatic) {{{1
-" Set up folding commands
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
+" Set up folding commands {{{2
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
if g:vimsyn_folding =~# 'a'
com! -nargs=* VimFolda <args> fold
else
@@ -73,6 +73,11 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
else
com! -nargs=* VimFoldf <args>
endif
+ if g:vimsyn_folding =~# 'h'
+ com! -nargs=* VimFoldh <args> fold
+ else
+ com! -nargs=* VimFoldh <args>
+ endif
if g:vimsyn_folding =~# 'l'
com! -nargs=* VimFoldl <args> fold
else
@@ -106,6 +111,7 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
else
com! -nargs=* VimFolda <args>
com! -nargs=* VimFoldf <args>
+ com! -nargs=* VimFoldh <args>
com! -nargs=* VimFoldl <args>
com! -nargs=* VimFoldm <args>
com! -nargs=* VimFoldp <args>
@@ -114,7 +120,7 @@ else
com! -nargs=* VimFoldt <args>
endif
-" commands not picked up by the generator (due to non-standard format)
+" commands not picked up by the generator (due to non-standard format) {{{2
syn keyword vimCommand contained py3
" Deprecated variable options {{{2
@@ -137,10 +143,13 @@ endif
" Numbers {{{2
" =======
-syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment
-syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment
-syn match vimNumber "\<0[xX]\x\+" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment
-syn match vimNumber "\%(^\|\A\)\zs#\x\{6}" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment
+syn match vimNumber '\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '\<0[xX]\x\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '\<0[zZ][a-zA-Z0-9.]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '0[0-7]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
" All vimCommands are contained by vimIsCommand. {{{2
syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimEcho,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
@@ -177,7 +186,7 @@ syn keyword vimFTOption contained detect indent off on plugin
" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
-syn cluster vimAugroupList contains=vimAugroup,vimIsCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimNotFunc,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue,vimSetEqual,vimOption
+syn cluster vimAugroupList contains=vimAugroup,vimIsCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimNotFunc,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vim9Comment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vim9Comment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue,vimSetEqual,vimOption
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
syn region vimAugroup fold matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList
else
@@ -191,12 +200,12 @@ syn keyword vimAugroupKey contained aug[roup]
" Operators: {{{2
" =========
-syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
+syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue,vim9Comment
syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "||\|&&\|[-+.!]" skipwhite nextgroup=vimString,vimSpecFile
-syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
-syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=vimoperStar,@vimOperGroup
+syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
syn match vimOperError ")"
endif
@@ -204,13 +213,13 @@ endif
" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
" =========
syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
-syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
+syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimEnvvar,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLetHereDoc,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
syn match vimFunction "\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
- syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
+ syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
else
- syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
+ syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
endif
syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)"
syn match vimFuncSID contained "\c<sid>\|\<s:"
@@ -231,9 +240,9 @@ syn match vimSpecFileMod "\(:[phtre]\)\+" contained
" User-Specified Commands: {{{2
" =======================
-syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
+syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimCtrlChar,vimEscapeBrace,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
syn keyword vimUserCommand contained com[mand]
-syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList
+syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter
syn match vimUserAttrbError contained "-\a\+\ze\s"
syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
@@ -261,6 +270,14 @@ syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup
syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
+" 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
" Environment Variables: {{{2
" =====================
@@ -281,7 +298,7 @@ syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"
syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup
syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup
-syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup
+"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
@@ -291,7 +308,8 @@ syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTw
syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
syn cluster vimSubstList add=vimCollection
syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(\<s\%[ubstitute]\>\|\<sm\%[agic]\>\|\<sno\%[magic]\>\)[:#[:alpha:]]\@!" nextgroup=vimSubstPat
-syn match vimSubst "\%(^\|[^\\]\)\<s\%[ubstitute]\>[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
+"syn match vimSubst "\%(^\|[^\\]\)\<s\%[ubstitute]\>[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
+syn match vimSubst "\%(^\|[^\\\"']\)\<s\%[ubstitute]\>[:#[:alpha:]\"']\@!" nextgroup=vimSubstPat contained
syn match vimSubst "/\zs\<s\%[ubstitute]\>\ze/" nextgroup=vimSubstPat
syn match vimSubst "\(:\+\s*\|^\s*\)s\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
syn match vimSubst1 contained "\<s\%[ubstitute]\>" nextgroup=vimSubstPat
@@ -304,7 +322,7 @@ syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|
syn match vimSubstSubstr contained "\\z\=\d"
syn match vimSubstTwoBS contained "\\\\"
syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
-syn match vimSubstFlags contained "[&cegiIpr]\+"
+syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
" 'String': {{{2
syn match vimString "[^(,]'[^']\{-}\zs'"
@@ -329,35 +347,38 @@ syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
-syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
+syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
+syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
-" Complex repeats (:h complex-repeat) {{{2
+" Complex Repeats: (:h complex-repeat) {{{2
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="\%(\\\\\)*\\." end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
+syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vim9Comment,vimSetString,vimSetMod
syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline
syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
-syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand
+syn match vimSetSep contained "[,:]"
syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
-" Let {{{2
+" Let: {{{2
" ===
-syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar
+syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s\+\%(trim\>\)\=\s*\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' contains=vimComment,vim9Comment
-" Abbreviations {{{2
+" Abbreviations: {{{2
" =============
syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
-" Autocmd {{{2
+" Autocmd: {{{2
" =======
syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent,nvimAutoEvent nextgroup=vimAutoCmdSpace
syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
-syn match vimAutoCmdSfxList contained "\S*"
+syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod
syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
+syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)"
-" Echo and Execute -- prefer strings! {{{2
+" Echo and Execute: -- prefer strings! {{{2
" ================
syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
@@ -366,7 +387,7 @@ syn case ignore
syn keyword vimEchoHLNone none
syn case match
-" Maps {{{2
+" Maps: {{{2
" ====
syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=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] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
@@ -383,7 +404,7 @@ syn case ignore
syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
syn case match
-" Menus {{{2
+" Menus: {{{2
" =====
syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
@@ -392,10 +413,10 @@ syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMen
syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
-syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand
+syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vim9Comment,vimIsCommand
syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
-" Angle-Bracket Notation (tnx to Michael Geddes) {{{2
+" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
" ======================
syn case ignore
syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cmd\|cr\|lf\|linefeed\|return\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
@@ -407,12 +428,15 @@ syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWO
syn match vimBracket contained "[\\<>]"
syn case match
-" User Function Highlighting {{{2
+" User Function Highlighting: {{{2
" (following Gautam Iyer's suggestion)
" ==========================
syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
+" User Command Highlighting: {{{2
+syn match vimUsrCmd '^\s*\zs\u\w*.*$'
+
" Errors And Warnings: {{{2
" ====================
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
@@ -424,12 +448,12 @@ endif
syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
-" Norm {{{2
+" Norm: {{{2
" ====
syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
syn match vimNormCmds contained ".*$"
-" Syntax {{{2
+" Syntax: {{{2
"=======
syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
@@ -442,8 +466,8 @@ syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupLis
syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList
syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList
-syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
-syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
+syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
syn cluster vimFuncBodyList add=vimSyntax
" Syntax: case {{{2
@@ -480,7 +504,7 @@ syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skip
syn cluster vimFuncBodyList add=vimSynType
" Syntax: match {{{2
-syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
+syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vim9Comment
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
@@ -528,13 +552,13 @@ syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=v
syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
syn keyword vimSyncNone contained NONE
-" Additional IsCommand, here by reasons of precedence {{{2
+" Additional IsCommand: here by reasons of precedence {{{2
" ====================
syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
-" Highlighting {{{2
+" Highlighting: {{{2
" ============
-syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
+syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment,vim9Comment
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
syn match vimHiCtermError contained "\D\i*"
endif
@@ -558,7 +582,7 @@ syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
syn match vimHiGuiRgb contained "#\x\{6}"
" Highlighting: hi group key=arg ... {{{2
-syn cluster vimHiCluster contains=vimGroup,vimHiBlend,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
+syn cluster vimHiCluster contains=vimGroup,vimHiBlend,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
syn match vimHiKeyError contained "\i\+="he=e-1
@@ -567,6 +591,7 @@ syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
+syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
@@ -583,13 +608,14 @@ syn keyword vimHiClear contained clear nextgroup=vimHiGroup
syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=@vimHiCluster
syn cluster vimFuncBodyList add=vimHiLink
-" Control Characters {{{2
+" Control Characters: {{{2
" ==================
syn match vimCtrlChar "[- -]"
" Beginners - Patterns that involve ^ {{{2
" =========
syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+syn match vim9LineComment +^[ \t:]\+#.*$+ 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 vimContinue "^\s*\\"
syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
@@ -602,9 +628,11 @@ syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst
syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst
-" Scripts : perl,ruby : Benoit Cerrina {{{2
-" ======= python,tcl: Johannes Zellner
-" lua
+" Embedded Scripts: {{{2
+" ================
+" perl,ruby : Benoit Cerrina
+" python,tcl : Johannes Zellner
+" mzscheme, lua : Charles Campbell
" Allows users to specify the type of embedded script highlighting
" they want: (perl/python/ruby/tcl support)
@@ -706,10 +734,10 @@ if g:vimsyn_embed =~# 'P' && 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]3\=\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ 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*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
- VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
syn cluster vimFuncBodyList add=vimPythonRegion
else
syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
@@ -818,6 +846,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimAutoCmdOpt vimOption
hi def link vimAutoCmd vimCommand
hi def link vimAutoEvent Type
+ hi def link vimAutoCmdMod Special
hi def link vimAutoSet vimCommand
hi def link vimBehaveModel vimBehave
hi def link vimBehave vimCommand
@@ -825,6 +854,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimCmplxRepeat SpecialChar
hi def link vimCommand Statement
hi def link vimComment Comment
+ hi def link vim9Comment Comment
hi def link vimCommentString vimString
hi def link vimCommentTitle PreProc
hi def link vimCondHL vimCommand
@@ -838,6 +868,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimError Error
hi def link vimFBVar vimVar
hi def link vimFgBgAttrib vimHiAttrib
+ hi def link vimHiCtermul vimHiTerm
hi def link vimFold Folded
hi def link vimFTCmd vimCommand
hi def link vimFTOption vimSynType
@@ -871,7 +902,11 @@ if !exists("skip_vim_syntax_inits")
hi def link vimKeyCode vimSpecFile
hi def link vimKeyword Statement
hi def link vimLet vimCommand
+ hi def link vimLetHereDoc vimString
+ hi def link vimLetHereDocStart Special
+ hi def link vimLetHereDocStop Special
hi def link vimLineComment vimComment
+ hi def link vim9LineComment vimComment
hi def link vimMapBang vimCommand
hi def link vimMapModKey vimFuncSID
hi def link vimMapMod vimBracket
@@ -889,6 +924,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimNumber Number
hi def link vimOperError Error
hi def link vimOper Operator
+ hi def link vimOperStar vimOper
hi def link vimOption PreProc
hi def link vimParenSep Delimiter
hi def link vimPatSepErr vimError
diff --git a/runtime/syntax/xkb.vim b/runtime/syntax/xkb.vim
index 59fc497e62..22be56d725 100644
--- a/runtime/syntax/xkb.vim
+++ b/runtime/syntax/xkb.vim
@@ -2,7 +2,7 @@
" This is a GENERATED FILE. Please always refer to source file at the URI below.
" Language: XKB (X Keyboard Extension) components
" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2003-04-13
+" Last Change: 2020 Oct 18
" URL: http://trific.ath.cx/Ftp/vim/syntax/xkb.vim
" Setup
@@ -41,7 +41,7 @@ syn match xkbPhysicalKey "<\w\+>"
syn keyword xkbPreproc augment include replace
syn keyword xkbConstant False True
syn keyword xkbModif override replace
-syn keyword xkbIdentifier action affect alias allowExplicit approx baseColor button clearLocks color controls cornerRadius count ctrls description driveskbd font fontSize gap group groups height indicator indicatorDrivesKeyboard interpret key keys labelColor latchToLock latchMods left level_name map maximum minimum modifier_map modifiers name offColor onColor outline preserve priority repeat row section section setMods shape slant solid symbols text top type useModMapMods virtualModifier virtualMods virtual_modifiers weight whichModState width
+syn keyword xkbIdentifier action affect alias allowExplicit approx baseColor button clearLocks color controls cornerRadius count ctrls description driveskbd font fontSize gap group groups height indicator indicatorDrivesKeyboard interpret key keys labelColor latchToLock latchMods left level_name map maximum minimum modifier_map modifiers name offColor onColor outline preserve priority repeat row section setMods shape slant solid symbols text top type useModMapMods virtualModifier virtualMods virtual_modifiers weight whichModState width
syn keyword xkbFunction AnyOf ISOLock LatchGroup LatchMods LockControls LockGroup LockMods LockPointerButton MovePtr NoAction PointerButton SetControls SetGroup SetMods SetPtrDflt Terminate
syn keyword xkbTModif default hidden partial virtual
syn keyword xkbSect alphanumeric_keys alternate_group function_keys keypad_keys modifier_keys xkb_compatibility xkb_geometry xkb_keycodes xkb_keymap xkb_semantics xkb_symbols xkb_types
diff --git a/runtime/syntax/xmath.vim b/runtime/syntax/xmath.vim
index 22b3e85dae..37ae951112 100644
--- a/runtime/syntax/xmath.vim
+++ b/runtime/syntax/xmath.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: xmath (a simulation tool)
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 9
+" Version: 10
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XMATH
" For version 5.x: Clear all syntax items
diff --git a/runtime/syntax/xslt.vim b/runtime/syntax/xslt.vim
index 3e0df6acff..900b8ca049 100644
--- a/runtime/syntax/xslt.vim
+++ b/runtime/syntax/xslt.vim
@@ -1,13 +1,14 @@
" Vim syntax file
" Language: XSLT
-" Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: Sun, 28 Oct 2001 21:22:24 +0100
+" Maintainer: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Fri, 17 Jan 2020 07:15:37 +0200
" Filenames: *.xsl
" $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $
" REFERENCES:
" [1] http://www.w3.org/TR/xslt
-"
+" [2] http://www.w3.org/TR/xslt20
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -19,11 +20,13 @@ runtime syntax/xml.vim
syn cluster xmlTagHook add=xslElement
syn case match
+syn match xslElement '\%(xsl:\)\@<=analyze-string'
syn match xslElement '\%(xsl:\)\@<=apply-imports'
syn match xslElement '\%(xsl:\)\@<=apply-templates'
syn match xslElement '\%(xsl:\)\@<=attribute'
syn match xslElement '\%(xsl:\)\@<=attribute-set'
syn match xslElement '\%(xsl:\)\@<=call-template'
+syn match xslElement '\%(xsl:\)\@<=character-map'
syn match xslElement '\%(xsl:\)\@<=choose'
syn match xslElement '\%(xsl:\)\@<=comment'
syn match xslElement '\%(xsl:\)\@<=copy'
@@ -33,19 +36,25 @@ syn match xslElement '\%(xsl:\)\@<=document'
syn match xslElement '\%(xsl:\)\@<=element'
syn match xslElement '\%(xsl:\)\@<=fallback'
syn match xslElement '\%(xsl:\)\@<=for-each'
+syn match xslElement '\%(xsl:\)\@<=for-each-group'
+syn match xslElement '\%(xsl:\)\@<=function'
syn match xslElement '\%(xsl:\)\@<=if'
syn match xslElement '\%(xsl:\)\@<=include'
syn match xslElement '\%(xsl:\)\@<=import'
+syn match xslElement '\%(xsl:\)\@<=import-schema'
syn match xslElement '\%(xsl:\)\@<=key'
syn match xslElement '\%(xsl:\)\@<=message'
+syn match xslElement '\%(xsl:\)\@<=namespace'
syn match xslElement '\%(xsl:\)\@<=namespace-alias'
syn match xslElement '\%(xsl:\)\@<=number'
syn match xslElement '\%(xsl:\)\@<=otherwise'
syn match xslElement '\%(xsl:\)\@<=output'
syn match xslElement '\%(xsl:\)\@<=param'
+syn match xslElement '\%(xsl:\)\@<=perform-sort'
syn match xslElement '\%(xsl:\)\@<=processing-instruction'
syn match xslElement '\%(xsl:\)\@<=preserve-space'
syn match xslElement '\%(xsl:\)\@<=script'
+syn match xslElement '\%(xsl:\)\@<=sequence'
syn match xslElement '\%(xsl:\)\@<=sort'
syn match xslElement '\%(xsl:\)\@<=strip-space'
syn match xslElement '\%(xsl:\)\@<=stylesheet'
diff --git a/runtime/syntax/xxd.vim b/runtime/syntax/xxd.vim
index f3c43e816c..2f90b6b0bd 100644
--- a/runtime/syntax/xxd.vim
+++ b/runtime/syntax/xxd.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: bin using xxd
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Aug 31, 2016
-" Version: 10
+" Version: 11
" Notes: use :help xxd to see how to invoke it
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XXD
diff --git a/runtime/syntax/yacc.vim b/runtime/syntax/yacc.vim
index 3f27bce443..459873e3dc 100644
--- a/runtime/syntax/yacc.vim
+++ b/runtime/syntax/yacc.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Yacc
-" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Mar 25, 2019
-" Version: 16
+" Version: 17
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_YACC
"
" Options: {{{1
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
index 626dc8a77f..49f7d049a7 100644
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -3,6 +3,7 @@
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
" First author: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2015-03-28
+" removed duplicate yamlKeyValueDelimiter (pull #4799)
if exists('b:current_syntax')
finish
@@ -150,7 +151,6 @@ syn match yamlBlockMappingMerge /^\s*\zs<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValue
syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained
syn match yamlKeyValueDelimiter /\s*:/ contained
-syn match yamlKeyValueDelimiter /\s*:/ contained
syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey
diff --git a/runtime/tools/check_colors.vim b/runtime/tools/check_colors.vim
index e4acbc33ec..966072c706 100644
--- a/runtime/tools/check_colors.vim
+++ b/runtime/tools/check_colors.vim
@@ -185,7 +185,7 @@ func! Test_check_colors()
" 9) Normal should be defined first, not use reverse, fg or bg
call cursor(1,1)
- let pat = 'hi\%[light] \+\%(link\|clear\)\@!\w\+\>'
+ let pat = 'hi\%[ghlight] \+\%(link\|clear\)\@!\w\+\>'
call search(pat, 'cW') " Look for the first hi def, skipping `hi link` and `hi clear`
if getline('.') !~# '\m\<Normal\>'
let err['highlight']['Normal'] = 'Should be defined first'
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 05d429c7d5..079c0dc3c0 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -213,6 +213,9 @@ static struct vimvar {
VV(VV_FALSE, "false", VAR_BOOL, VV_RO),
VV(VV_TRUE, "true", VAR_BOOL, VV_RO),
VV(VV_NULL, "null", VAR_SPECIAL, VV_RO),
+ VV(VV_NUMBERMAX, "numbermax", VAR_NUMBER, VV_RO),
+ VV(VV_NUMBERMIN, "numbermin", VAR_NUMBER, VV_RO),
+ VV(VV_NUMBERSIZE, "numbersize", VAR_NUMBER, VV_RO),
VV(VV_VIM_DID_ENTER, "vim_did_enter", VAR_NUMBER, VV_RO),
VV(VV_TESTING, "testing", VAR_NUMBER, 0),
VV(VV_TYPE_NUMBER, "t_number", VAR_NUMBER, VV_RO),
@@ -394,6 +397,9 @@ void eval_init(void)
set_vim_var_bool(VV_FALSE, kBoolVarFalse);
set_vim_var_bool(VV_TRUE, kBoolVarTrue);
set_vim_var_special(VV_NULL, kSpecialVarNull);
+ set_vim_var_nr(VV_NUMBERMAX, VARNUMBER_MAX);
+ set_vim_var_nr(VV_NUMBERMIN, VARNUMBER_MIN);
+ set_vim_var_nr(VV_NUMBERSIZE, sizeof(varnumber_T) * 8);
set_vim_var_special(VV_EXITING, kSpecialVarNull);
set_vim_var_nr(VV_ECHOSPACE, sc_col - 1);
@@ -1569,7 +1575,7 @@ static const char_u *skip_var_list(const char_u *arg, int *var_count,
break;
else if (*p == ';') {
if (*semicolon == 1) {
- EMSG(_("Double ; in list of variables"));
+ EMSG(_("E452: Double ; in list of variables"));
return NULL;
}
*semicolon = 1;
diff --git a/src/nvim/eval.h b/src/nvim/eval.h
index 3da4bb8655..8188502987 100644
--- a/src/nvim/eval.h
+++ b/src/nvim/eval.h
@@ -142,6 +142,9 @@ typedef enum {
VV_FALSE,
VV_TRUE,
VV_NULL,
+ VV_NUMBERMAX,
+ VV_NUMBERMIN,
+ VV_NUMBERSIZE,
VV_VIM_DID_ENTER,
VV_TESTING,
VV_TYPE_NUMBER,
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 190ca2e93b..54d73b6ae7 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -4731,12 +4731,7 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
char_u *ptr;
int c;
int todel;
- bool dohex;
- bool dooct;
- bool dobin;
- bool doalp;
int firstdigit;
- bool subtract;
bool negative = false;
bool was_positive = true;
bool visual = VIsual_active;
@@ -4747,10 +4742,12 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
pos_T endpos;
colnr_T save_coladd = 0;
- dohex = (vim_strchr(curbuf->b_p_nf, 'x') != NULL); // "heX"
- dooct = (vim_strchr(curbuf->b_p_nf, 'o') != NULL); // "Octal"
- dobin = (vim_strchr(curbuf->b_p_nf, 'b') != NULL); // "Bin"
- doalp = (vim_strchr(curbuf->b_p_nf, 'p') != NULL); // "alPha"
+ const bool do_hex = vim_strchr(curbuf->b_p_nf, 'x') != NULL; // "heX"
+ const bool do_oct = vim_strchr(curbuf->b_p_nf, 'o') != NULL; // "Octal"
+ const bool do_bin = vim_strchr(curbuf->b_p_nf, 'b') != NULL; // "Bin"
+ const bool do_alpha = vim_strchr(curbuf->b_p_nf, 'p') != NULL; // "alPha"
+ // "Unsigned"
+ const bool do_unsigned = vim_strchr(curbuf->b_p_nf, 'u') != NULL;
if (virtual_active()) {
save_coladd = pos->coladd;
@@ -4767,21 +4764,21 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
// First check if we are on a hexadecimal number, after the "0x".
if (!VIsual_active) {
- if (dobin) {
+ if (do_bin) {
while (col > 0 && ascii_isbdigit(ptr[col])) {
col--;
col -= utf_head_off(ptr, ptr + col);
}
}
- if (dohex) {
+ if (do_hex) {
while (col > 0 && ascii_isxdigit(ptr[col])) {
col--;
col -= utf_head_off(ptr, ptr + col);
}
}
- if (dobin
- && dohex
+ if (do_bin
+ && do_hex
&& !((col > 0
&& (ptr[col] == 'X' || ptr[col] == 'x')
&& ptr[col - 1] == '0'
@@ -4797,13 +4794,13 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
}
}
- if ((dohex
+ if ((do_hex
&& col > 0
&& (ptr[col] == 'X' || ptr[col] == 'x')
&& ptr[col - 1] == '0'
&& !utf_head_off(ptr, ptr + col - 1)
&& ascii_isxdigit(ptr[col + 1]))
- || (dobin
+ || (do_bin
&& col > 0
&& (ptr[col] == 'B' || ptr[col] == 'b')
&& ptr[col - 1] == '0'
@@ -4818,13 +4815,13 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
while (ptr[col] != NUL
&& !ascii_isdigit(ptr[col])
- && !(doalp && ASCII_ISALPHA(ptr[col]))) {
+ && !(do_alpha && ASCII_ISALPHA(ptr[col]))) {
col++;
}
while (col > 0
&& ascii_isdigit(ptr[col - 1])
- && !(doalp && ASCII_ISALPHA(ptr[col]))) {
+ && !(do_alpha && ASCII_ISALPHA(ptr[col]))) {
col--;
}
}
@@ -4832,7 +4829,7 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
if (visual) {
while (ptr[col] != NUL && length > 0 && !ascii_isdigit(ptr[col])
- && !(doalp && ASCII_ISALPHA(ptr[col]))) {
+ && !(do_alpha && ASCII_ISALPHA(ptr[col]))) {
int mb_len = utfc_ptr2len(ptr + col);
col += mb_len;
@@ -4844,7 +4841,8 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
}
if (col > pos->col && ptr[col - 1] == '-'
- && !utf_head_off(ptr, ptr + col - 1)) {
+ && !utf_head_off(ptr, ptr + col - 1)
+ && !do_unsigned) {
negative = true;
was_positive = false;
}
@@ -4852,12 +4850,12 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
// If a number was found, and saving for undo works, replace the number.
firstdigit = ptr[col];
- if (!ascii_isdigit(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit))) {
+ if (!ascii_isdigit(firstdigit) && !(do_alpha && ASCII_ISALPHA(firstdigit))) {
beep_flush();
goto theend;
}
- if (doalp && ASCII_ISALPHA(firstdigit)) {
+ if (do_alpha && ASCII_ISALPHA(firstdigit)) {
// decrement or increment alphabetic character
if (op_type == OP_NR_SUB) {
if (CharOrd(firstdigit) < Prenum1) {
@@ -4889,7 +4887,9 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
curwin->w_cursor.col = col;
} else {
if (col > 0 && ptr[col - 1] == '-'
- && !utf_head_off(ptr, ptr + col - 1) && !visual) {
+ && !utf_head_off(ptr, ptr + col - 1)
+ && !visual
+ && !do_unsigned) {
// negative number
col--;
negative = true;
@@ -4903,9 +4903,9 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
}
vim_str2nr(ptr + col, &pre, &length,
- 0 + (dobin ? STR2NR_BIN : 0)
- + (dooct ? STR2NR_OCT : 0)
- + (dohex ? STR2NR_HEX : 0),
+ 0 + (do_bin ? STR2NR_BIN : 0)
+ + (do_oct ? STR2NR_OCT : 0)
+ + (do_hex ? STR2NR_HEX : 0),
NULL, &n, maxlen);
// ignore leading '-' for hex, octal and bin numbers
@@ -4916,7 +4916,7 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
}
// add or subtract
- subtract = false;
+ bool subtract = false;
if (op_type == OP_NR_SUB) {
subtract ^= true;
}
@@ -4948,6 +4948,17 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
}
}
+ if (do_unsigned && negative) {
+ if (subtract) {
+ // sticking at zero.
+ n = (uvarnumber_T)0;
+ } else {
+ // sticking at 2^64 - 1.
+ n = (uvarnumber_T)(-1);
+ }
+ negative = false;
+ }
+
if (visual && !was_positive && !negative && col > 0) {
// need to remove the '-'
col--;
@@ -5029,7 +5040,7 @@ int do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1)
// total length of the number remains the same.
// Don't do this when
// the result may look like an octal number.
- if (firstdigit == '0' && !(dooct && pre == 0)) {
+ if (firstdigit == '0' && !(do_oct && pre == 0)) {
while (length-- > 0) {
*ptr++ = '0';
}
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 666c526a18..a811d749b9 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -292,7 +292,8 @@ typedef struct vimoption {
static char *(p_ambw_values[]) = { "single", "double", NULL };
static char *(p_bg_values[]) = { "light", "dark", NULL };
-static char *(p_nf_values[]) = { "bin", "octal", "hex", "alpha", NULL };
+static char *(p_nf_values[]) = { "bin", "octal", "hex", "alpha",
+ "unsigned", NULL };
static char *(p_ff_values[]) = { FF_UNIX, FF_DOS, FF_MAC, NULL };
static char *(p_wak_values[]) = { "yes", "menu", "no", NULL };
static char *(p_mousem_values[]) = { "extend", "popup", "popup_setpos",
diff --git a/src/nvim/po/CMakeLists.txt b/src/nvim/po/CMakeLists.txt
index 3a70264dd1..28f5723046 100644
--- a/src/nvim/po/CMakeLists.txt
+++ b/src/nvim/po/CMakeLists.txt
@@ -26,6 +26,7 @@ if(NOT LANGUAGES)
ru
sk
sv
+ tr
uk
vi
zh_CN.UTF-8
diff --git a/src/nvim/po/af.po b/src/nvim/po/af.po
index db44f50a46..a76dd8eeea 100644
--- a/src/nvim/po/af.po
+++ b/src/nvim/po/af.po
@@ -4129,8 +4129,6 @@ msgstr "E537: 'commentstring' moet leeg wees of %s bevat"
msgid "E540: Unclosed expression sequence"
msgstr "E540: Onvoltooide uitdrukkingreeks"
-msgid "E541: too many items"
-msgstr "E541: te veel items"
msgid "E542: unbalanced groups"
msgstr "E542: ongebalanseerde groepe"
diff --git a/src/nvim/po/da.po b/src/nvim/po/da.po
index 7a75425019..23d60087f2 100644
--- a/src/nvim/po/da.po
+++ b/src/nvim/po/da.po
@@ -2799,9 +2799,6 @@ msgstr "ukendt vimOption"
msgid "keyboard interrupt"
msgstr "tastaturafbryd"
-msgid "vim error"
-msgstr "fejl ved vim"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr "kan ikke oprette buffer-/vindue-kommando: objekt slettes"
@@ -3123,8 +3120,8 @@ msgstr "-W <scriptud>\tSkriv alle indtastede kommandoer til filen <scriptud>"
msgid "-x\t\t\tEdit encrypted files"
msgstr "-x\t\t\tRediger krypterede filer"
-msgid "-display <display>\tConnect vim to this particular X-server"
-msgstr "-display <display>\tForbind vim til denne X-server"
+msgid "-display <display>\tConnect Vim to this particular X-server"
+msgstr "-display <display>\tForbind Vim til denne X-server"
msgid "-X\t\t\tDo not connect to X server"
msgstr "-X\t\t\tOpret ikke forbindelse til X-server"
@@ -3203,11 +3200,11 @@ msgstr ""
"\n"
"Argumenter som genkendes af gvim (Athena-version):\n"
-msgid "-display <display>\tRun vim on <display>"
-msgstr "-display <display>\tKør vim på <display>"
+msgid "-display <display>\tRun Vim on <display>"
+msgstr "-display <display>\tKør Vim på <display>"
-msgid "-iconic\t\tStart vim iconified"
-msgstr "-iconic\t\tStart vim som ikon"
+msgid "-iconic\t\tStart Vim iconified"
+msgstr "-iconic\t\tStart Vim som ikon"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
msgstr "-background <farve>\tBrug <farve> til baggrunden (også: -bg)"
@@ -3253,8 +3250,8 @@ msgstr ""
"\n"
"Argumenter genkendt af gvim (GTK+-version):\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
-msgstr "-display <display>\tKør vim på <display> (også: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
+msgstr "-display <display>\tKør Vim på <display> (også: --display)"
msgid "--role <role>\tSet a unique role to identify the main window"
msgstr "--role <rolle>\tSæt en unik rolle til at identificere hovedvinduet"
@@ -4332,8 +4329,6 @@ msgstr "E538: Ingen understøttelse af mus"
msgid "E540: Unclosed expression sequence"
msgstr "E540: Ulukket udtryk-sekvens"
-msgid "E541: too many items"
-msgstr "E541: for mange punkter"
msgid "E542: unbalanced groups"
msgstr "E542: ubalancerede grupper"
@@ -6338,8 +6333,8 @@ msgstr "E799: Ugyldigt ID: %ld (skal være større end eller lig med 1)"
msgid "E801: ID already taken: %ld"
msgstr "E801: ID allerede taget: %ld"
-msgid "List or number required"
-msgstr "Liste eller nummer kræves"
+msgid "E290: List or number required"
+msgstr "E290: Liste eller nummer kræves"
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
@@ -6876,7 +6871,7 @@ msgid "list index out of range"
msgstr "listeindeks udenfor område"
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "intern fejl: kunne ikke hente vim-listepunkt %d"
msgid "slice step cannot be zero"
@@ -6887,7 +6882,7 @@ msgid "attempt to assign sequence of size greater than %d to extended slice"
msgstr "forsøg på at tildele sekvens som er større end %d til udvidet slice"
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "intern fejl: intet vim-listepunkt %d"
msgid "internal error: not enough list items"
@@ -6998,19 +6993,19 @@ msgstr "kunne ikke køre koden"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: Eval returnerede ikke et gyldigt python-objekt"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: Kunne ikke konvertere returnerede python-objekt til vim-værdi"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "kan ikke konvertere %s til vim-ordbog"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "kan ikke konvertere %s til vim-liste"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "kan ikke konvertere %s til vim-struktur"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/eo.po b/src/nvim/po/eo.po
index 5480e6a4d8..9b374e91ae 100644
--- a/src/nvim/po/eo.po
+++ b/src/nvim/po/eo.po
@@ -151,9 +151,6 @@ msgstr "[Modifita]"
msgid "[Not edited]"
msgstr "[Ne redaktita]"
-msgid "[New file]"
-msgstr "[Nova dosiero]"
-
msgid "[Read errors]"
msgstr "[Eraroj de legado]"
@@ -229,12 +226,16 @@ msgstr " linio=%ld id=%d nomo=%s"
msgid "E902: Cannot connect to port"
msgstr "E902: Ne eblas konekti al pordo"
+msgid "E898: socket() in channel_connect()"
+msgstr "E898: socket() en channel_connect()"
+
+#, c-format
+msgid "E901: getaddrinfo() in channel_open(): %s"
+msgstr "E901: getaddrinfo() en channel_open(): %s"
+
msgid "E901: gethostbyname() in channel_open()"
msgstr "E901: gethostbyname() en channel_open()"
-msgid "E898: socket() in channel_open()"
-msgstr "E898: gethostbyname() en channel_open()"
-
msgid "E903: received command with non-string argument"
msgstr "E903: ricevis komandon kun argumento, kiu ne estas ĉeno"
@@ -475,24 +476,12 @@ msgstr "kongruo %d"
msgid "E18: Unexpected characters in :let"
msgstr "E18: Neatenditaj signoj en \":let\""
-#, c-format
-msgid "E121: Undefined variable: %s"
-msgstr "E121: Nedifinita variablo: %s"
-
msgid "E111: Missing ']'"
msgstr "E111: Mankas ']'"
msgid "E719: Cannot use [:] with a Dictionary"
msgstr "E719: Uzo de [:] ne eblas kun Vortaro"
-#, c-format
-msgid "E734: Wrong variable type for %s="
-msgstr "E734: Nevalida datumtipo de variablo de %s="
-
-#, c-format
-msgid "E461: Illegal variable name: %s"
-msgstr "E461: Nevalida nomo de variablo: %s"
-
msgid "E806: using Float as a String"
msgstr "E806: uzo de Glitpunktnombro kiel Ĉeno"
@@ -502,8 +491,8 @@ msgstr "E687: Malpli da celoj ol Listeroj"
msgid "E688: More targets than List items"
msgstr "E688: Pli da celoj ol Listeroj"
-msgid "Double ; in list of variables"
-msgstr "Duobla ; en listo de variabloj"
+msgid "E452: Double ; in list of variables"
+msgstr "E452: Du ; en listo de variabloj"
#, c-format
msgid "E738: Can't list variables for %s"
@@ -691,9 +680,6 @@ msgstr "argumento de filter()"
msgid "E686: Argument of %s must be a List"
msgstr "E686: Argumento de %s devas esti Listo"
-msgid "E928: String required"
-msgstr "E928: Ĉeno bezonata"
-
msgid "E808: Number or Float required"
msgstr "E808: Nombro aŭ Glitpunktnombro bezonata"
@@ -751,9 +737,6 @@ msgstr "E726: Paŝo estas nul"
msgid "E727: Start past end"
msgstr "E727: Komenco preter fino"
-msgid "<empty>"
-msgstr "<malplena>"
-
msgid "E240: No connection to the X server"
msgstr "E240: Neniu konekto al X-servilo"
@@ -782,10 +765,6 @@ msgstr "argumento de reverse()"
msgid "E258: Unable to send to client"
msgstr "E258: Ne eblas sendi al kliento"
-#, c-format
-msgid "E927: Invalid action: '%s'"
-msgstr "E927: Nevalida ago: '%s'"
-
msgid "sort() argument"
msgstr "argumento de sort()"
@@ -805,9 +784,6 @@ msgstr "(Nevalida)"
msgid "E935: invalid submatch number: %d"
msgstr "E935: nevalida indekso de \"submatch\": %d"
-msgid "E677: Error writing temp file"
-msgstr "E677: Eraro dum skribo de provizora dosiero"
-
msgid "E921: Invalid callback argument"
msgstr "E921: Nevalida argumento de reagfunctio"
@@ -1180,18 +1156,6 @@ msgid "E666: compiler not supported: %s"
msgstr "E666: kompililo nesubtenata: %s"
#, c-format
-msgid "Searching for \"%s\" in \"%s\""
-msgstr "Serĉado de \"%s\" en \"%s\""
-
-#, c-format
-msgid "Searching for \"%s\""
-msgstr "Serĉado de \"%s\""
-
-#, c-format
-msgid "not found in '%s': \"%s\""
-msgstr "ne trovita en '%s: \"%s\""
-
-#, c-format
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
msgstr "W20: Pitono versio 2.x bezonata sed nesubtenata, ignoro de dosiero: %s"
@@ -1199,61 +1163,6 @@ msgstr "W20: Pitono versio 2.x bezonata sed nesubtenata, ignoro de dosiero: %s"
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
msgstr "W21: pitono versio 3.x bezonata sed nesubtenata, ignoro de dosiero: %s"
-msgid "Source Vim script"
-msgstr "Ruli Vim-skripton"
-
-#, c-format
-msgid "Cannot source a directory: \"%s\""
-msgstr "Ne eblas ruli dosierujon: \"%s\""
-
-#, c-format
-msgid "could not source \"%s\""
-msgstr "ne eblis ruli \"%s\""
-
-#, c-format
-msgid "line %ld: could not source \"%s\""
-msgstr "linio %ld: ne eblis ruli \"%s\""
-
-#, c-format
-msgid "sourcing \"%s\""
-msgstr "rulas \"%s\""
-
-#, c-format
-msgid "line %ld: sourcing \"%s\""
-msgstr "linio %ld: rulas \"%s\""
-
-#, c-format
-msgid "finished sourcing %s"
-msgstr "finis ruli %s"
-
-#, c-format
-msgid "continuing in %s"
-msgstr "daŭrigas en %s"
-
-msgid "modeline"
-msgstr "reĝimlinio"
-
-msgid "--cmd argument"
-msgstr "--cmd argumento"
-
-msgid "-c argument"
-msgstr "-c argumento"
-
-msgid "environment variable"
-msgstr "medivariablo"
-
-msgid "error handler"
-msgstr "erartraktilo"
-
-msgid "W15: Warning: Wrong line separator, ^M may be missing"
-msgstr "W15: Averto: Neĝusta disigilo de linio, ^M eble mankas"
-
-msgid "E167: :scriptencoding used outside of a sourced file"
-msgstr "E167: \":scriptencoding\" uzita ekster rulita dosiero"
-
-msgid "E168: :finish used outside of a sourced file"
-msgstr "E168: \":finish\" uzita ekster rulita dosiero"
-
#, c-format
msgid "Current %slanguage: \"%s\""
msgstr "Aktuala %slingvo: \"%s\""
@@ -1268,6 +1177,10 @@ msgstr "Eniras reĝimon Ex. Tajpu \"visual\" por iri al reĝimo Normala."
msgid "E501: At end-of-file"
msgstr "E501: Ĉe fino-de-dosiero"
+#, c-format
+msgid "Executing: %s"
+msgstr "Plenumado de %s"
+
msgid "E169: Command too recursive"
msgstr "E169: Komando tro rekursia"
@@ -1595,21 +1508,9 @@ msgstr "E733: Uzo de \":endwhile\" kun \":for\""
msgid "E601: :try nesting too deep"
msgstr "E601: \":try\" ingita tro profunde"
-msgid "E603: :catch without :try"
-msgstr "E603: \":catch\" sen \":try\""
-
msgid "E604: :catch after :finally"
msgstr "E604: \":catch\" malantaŭ \":finally\""
-msgid "E606: :finally without :try"
-msgstr "E606: \":finally\" sen \":try\""
-
-msgid "E607: multiple :finally"
-msgstr "E607: pluraj \":finally\""
-
-msgid "E602: :endtry without :try"
-msgstr "E602: \":endtry\" sen \":try\""
-
msgid "E193: :endfunction not inside a function"
msgstr "E193: \":endfunction\" ekster funkcio"
@@ -1714,12 +1615,6 @@ msgstr "[CR mankas]"
msgid "[long lines split]"
msgstr "[divido de longaj linioj]"
-msgid "[NOT converted]"
-msgstr "[NE konvertita]"
-
-msgid "[converted]"
-msgstr "[konvertita]"
-
#, c-format
msgid "[CONVERSION ERROR in line %ld]"
msgstr "[ERARO DE KONVERTO en linio %ld]"
@@ -1885,10 +1780,10 @@ msgstr[0] "%ld linio, "
msgstr[1] "%ld linioj, "
#, c-format
-msgid "%lld character"
-msgid_plural "%lld characters"
-msgstr[0] "%lld signo"
-msgstr[1] "%lld signoj"
+msgid "%lld byte"
+msgid_plural "%lld bytes"
+msgstr[0] "%lld bajto"
+msgstr[1] "%lld bajtoj"
msgid "[noeol]"
msgstr "[sen EOL]"
@@ -1896,12 +1791,6 @@ msgstr "[sen EOL]"
msgid "[Incomplete last line]"
msgstr "[Nekompleta lasta linio]"
-msgid "WARNING: The file has been changed since reading it!!!"
-msgstr "AVERTO: La dosiero estas ŝanĝita de post kiam ĝi estis legita!!!"
-
-msgid "Do you really want to write to it"
-msgstr "Ĉu vi vere volas skribi al ĝi"
-
#, c-format
msgid "E208: Error writing to \"%s\""
msgstr "E208: Eraro dum skribo de \"%s\""
@@ -1986,7 +1875,7 @@ msgstr "W19: Forviŝo de augroup kiu estas ankoraŭ uzata"
#, c-format
msgid "E215: Illegal character after *: %s"
-msgstr "E215: Nevalida signo malantaŭ *: %s"
+msgstr "E215: Nevalida signo post *: %s"
#, c-format
msgid "E216: No such event: %s"
@@ -2097,10 +1986,6 @@ msgstr "E231: 'guifontwide' nevalida"
msgid "E599: Value of 'imactivatekey' is invalid"
msgstr "E599: Valoro de 'imactivatekey' estas nevalida"
-#, c-format
-msgid "E254: Cannot allocate color %s"
-msgstr "E254: Ne eblas disponigi koloron %s"
-
msgid "No match at cursor, finding next"
msgstr "Neniu kongruo ĉe kursorpozicio, trovas sekvan"
@@ -2354,9 +2239,6 @@ msgstr "Stilo:"
msgid "Size:"
msgstr "Grando:"
-msgid "E256: Hangul automata ERROR"
-msgstr "E256: ERARO en aŭtomato de korea alfabeto"
-
msgid "E550: Missing colon"
msgstr "E550: Mankas dupunkto"
@@ -2774,9 +2656,6 @@ msgstr "nekonata vimOption"
msgid "keyboard interrupt"
msgstr "klavara interrompo"
-msgid "vim error"
-msgstr "eraro de Vim"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr "ne eblas krei komandon de bufro/fenestro: objekto estas forviŝiĝanta"
@@ -2843,10 +2722,10 @@ msgid "Too many edit arguments"
msgstr "Tro da argumentoj de redakto"
msgid "Argument missing after"
-msgstr "Argumento mankas malantaŭ"
+msgstr "Argumento mankas post"
msgid "Garbage after option argument"
-msgstr "Forĵetindaĵo malantaŭ argumento de opcio"
+msgstr "Forĵetindaĵo post argumento de opcio"
msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"
msgstr "Tro da argumentoj \"+komando\", \"-c komando\" aŭ \"--cmd komando\""
@@ -2951,7 +2830,7 @@ msgstr ""
"Argumentoj:\n"
msgid "--\t\t\tOnly file names after this"
-msgstr "--\t\t\tNur dosiernomoj malantaŭ tio"
+msgstr "--\t\t\tNur dosiernomoj post tio"
msgid "--literal\t\tDon't expand wildcards"
msgstr "--literal\t\tNe malvolvi ĵokerojn"
@@ -3101,7 +2980,7 @@ msgstr ""
msgid "-x\t\t\tEdit encrypted files"
msgstr "-x\t\t\tRedakti ĉifradan dosieron"
-msgid "-display <display>\tConnect vim to this particular X-server"
+msgid "-display <display>\tConnect Vim to this particular X-server"
msgstr "-display <ekrano>\tKonekti Vim al tiu X-servilo"
msgid "-X\t\t\tDo not connect to X server"
@@ -3180,11 +3059,11 @@ msgstr ""
"\n"
"Argumentoj agnoskitaj de gvim (versio Athena):\n"
-msgid "-display <display>\tRun vim on <display>"
-msgstr "-display <ekrano>\tLanĉi vim sur <ekrano>"
+msgid "-display <display>\tRun Vim on <display>"
+msgstr "-display <ekrano>\tLanĉi Vim sur <ekrano>"
-msgid "-iconic\t\tStart vim iconified"
-msgstr "-iconic\t\tLanĉi vim piktograme"
+msgid "-iconic\t\tStart Vim iconified"
+msgstr "-iconic\t\tLanĉi Vim piktograme"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
msgstr "-background <koloro>\tUzi <koloro>-n por la fona koloro (ankaŭ: -bg)"
@@ -3232,7 +3111,7 @@ msgstr ""
"\n"
"Argumentoj agnoskitaj de gvim (versio GTK+):\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
msgstr "-display <ekrano>\tLanĉi Vim sur tiu <ekrano> (ankaŭ: --display)"
msgid "--role <role>\tSet a unique role to identify the main window"
@@ -3663,8 +3542,8 @@ msgid "E315: ml_get: invalid lnum: %ld"
msgstr "E315: ml_get: nevalida lnum: %ld"
#, c-format
-msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get: ne eblas trovi linion %ld"
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get: ne eblas trovi linion %ld en bufro %d %s"
msgid "E317: pointer block id wrong 3"
msgstr "E317: nevalida referenco de bloko id 3"
@@ -3909,18 +3788,6 @@ msgstr ""
"&Forlasi Ĉion\n"
"&Rezigni"
-msgid "Select Directory dialog"
-msgstr "Dialogujo de dosiera elekto"
-
-msgid "Save File dialog"
-msgstr "Dialogujo de dosiera konservo"
-
-msgid "Open File dialog"
-msgstr "Dialogujo de dosiera malfermo"
-
-msgid "E338: Sorry, no file browser in console mode"
-msgstr "E338: Bedaŭrinde ne estas dosierfoliumilo en konzola reĝimo"
-
msgid "E766: Insufficient arguments for printf()"
msgstr "E766: Ne sufiĉaj argumentoj por printf()"
@@ -3958,6 +3825,12 @@ msgstr " (Interrompita)"
msgid "Beep!"
msgstr "Bip!"
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "antaŭ %ld sekundo"
+msgstr[1] "antaŭ %ld sekundoj"
+
msgid "ERROR: "
msgstr "ERARO: "
@@ -4057,13 +3930,6 @@ msgstr "E505: %s estas nurlegebla (aldonu ! por transpasi)"
msgid "E349: No identifier under cursor"
msgstr "E349: Neniu identigilo sub la kursoro"
-msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: 'operatorfunc' estas malplena"
-
-# DP: ĉu Eval devas esti tradukita?
-msgid "E775: Eval feature not available"
-msgstr "E775: Eval eblo ne disponeblas"
-
msgid "Warning: terminal cannot highlight"
msgstr "Averto: terminalo ne povas emfazi"
@@ -4109,9 +3975,6 @@ msgid_plural "%ld lines indented "
msgstr[0] "%ld linio krommarĝenita "
msgstr[1] "%ld linioj krommarĝenitaj "
-msgid "E748: No previously used register"
-msgstr "E748: Neniu reĝistro antaŭe uzata"
-
msgid "cannot yank; delete anyway"
msgstr "ne eblas kopii; tamen forviŝi"
@@ -4121,30 +3984,6 @@ msgid_plural "%ld lines changed"
msgstr[0] "%ld linio ŝanĝita"
msgstr[1] "%ld linioj ŝanĝitaj"
-#, c-format
-msgid "freeing %ld lines"
-msgstr "malokupas %ld liniojn"
-
-#, c-format
-msgid " into \"%c"
-msgstr " en \"%c"
-
-#, c-format
-msgid "block of %ld line yanked%s"
-msgid_plural "block of %ld lines yanked%s"
-msgstr[0] "bloko de %ld linio kopiita%s"
-msgstr[1] "bloko de %ld linioj kopiitaj%s"
-
-#, c-format
-msgid "%ld line yanked%s"
-msgid_plural "%ld lines yanked%s"
-msgstr[0] "%ld linio kopiita%s"
-msgstr[1] "%ld linioj kopiitaj%s"
-
-#, c-format
-msgid "E353: Nothing in register %s"
-msgstr "E353: Nenio en reĝistro %s"
-
msgid ""
"\n"
"--- Registers ---"
@@ -4166,12 +4005,6 @@ msgstr ""
msgid "E574: Unknown register type %d"
msgstr "E574: Nekonata tipo de reĝistro %d"
-msgid ""
-"E883: search pattern and expression register may not contain two or more "
-"lines"
-msgstr ""
-"E883: serĉa ŝablono kaj esprima reĝistro ne povas enhavi du aŭ pliajn liniojn"
-
#, c-format
msgid "%ld Cols; "
msgstr "%ld Kolumnoj; "
@@ -4221,11 +4054,14 @@ msgid "E846: Key code not set"
msgstr "E846: Klavkodo ne agordita"
msgid "E521: Number required after ="
-msgstr "E521: Nombro bezonata malantaŭ ="
+msgstr "E521: Nombro bezonata post ="
msgid "E522: Not found in termcap"
msgstr "E522: Netrovita en termcap"
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: 24-bitaj koloroj ne estas subtenataj en tiu sistemo"
+
#, c-format
msgid "E539: Illegal character <%s>"
msgstr "E539: Nevalida signo <%s>"
@@ -4263,7 +4099,7 @@ msgstr "E525: Ĉeno de nula longo"
#, c-format
msgid "E526: Missing number after <%s>"
-msgstr "E526: Mankas nombro malantaŭ <%s>"
+msgstr "E526: Mankas nombro post <%s>"
msgid "E527: Missing comma"
msgstr "E527: Mankas komo"
@@ -4271,8 +4107,8 @@ msgstr "E527: Mankas komo"
msgid "E528: Must specify a ' value"
msgstr "E528: Devas specifi ' valoron"
-msgid "E595: contains unprintable or wide character"
-msgstr "E595: enhavas nepreseblan aŭ plurĉellarĝan signon"
+msgid "E595: 'showbreak' contains unprintable or wide character"
+msgstr "E595: 'showbreak' enhavas nepreseblan aŭ plurĉellarĝan signon"
msgid "E596: Invalid font(s)"
msgstr "E596: Nevalida(j) tiparo(j)"
@@ -4291,7 +4127,7 @@ msgstr "E534: Nevalida larĝa tiparo"
#, c-format
msgid "E535: Illegal character after <%c>"
-msgstr "E535: Nevalida signo malantaŭ <%c>"
+msgstr "E535: Nevalida signo post <%c>"
msgid "E536: comma required"
msgstr "E536: komo bezonata"
@@ -4303,71 +4139,6 @@ msgstr "E537: 'commentstring' devas esti malplena aŭ enhavi %s"
msgid "E538: No mouse support"
msgstr "E538: Neniu muso subtenata"
-msgid "E540: Unclosed expression sequence"
-msgstr "E540: '}' mankas"
-
-msgid "E541: too many items"
-msgstr "E541: tro da elementoj"
-
-msgid "E542: unbalanced groups"
-msgstr "E542: misekvilibraj grupoj"
-
-msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr "E946: Ne eblas igi modifebla terminalon kun aktiva tasko"
-
-msgid "E590: A preview window already exists"
-msgstr "E590: Antaŭvida fenestro jam ekzistas"
-
-msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr "W17: La araba bezonas UTF-8, tajpu \":set encoding=utf-8\""
-
-#, c-format
-msgid "E593: Need at least %d lines"
-msgstr "E593: Bezonas almenaŭ %d liniojn"
-
-#, c-format
-msgid "E594: Need at least %d columns"
-msgstr "E594: Bezonas almenaŭ %d kolumnojn"
-
-#, c-format
-msgid "E355: Unknown option: %s"
-msgstr "E355: Nekonata opcio: %s"
-
-#, c-format
-msgid "E521: Number required: &%s = '%s'"
-msgstr "E521: Nombro bezonata: &%s = '%s'"
-
-msgid ""
-"\n"
-"--- Terminal codes ---"
-msgstr ""
-"\n"
-"--- Kodoj de terminalo ---"
-
-msgid ""
-"\n"
-"--- Global option values ---"
-msgstr ""
-"\n"
-"--- Mallokaj opcioj ---"
-
-msgid ""
-"\n"
-"--- Local option values ---"
-msgstr ""
-"\n"
-"--- Valoroj de lokaj opcioj ---"
-
-msgid ""
-"\n"
-"--- Options ---"
-msgstr ""
-"\n"
-"--- Opcioj ---"
-
-msgid "E356: get_varp ERROR"
-msgstr "E356: ERARO get_varp"
-
#, c-format
msgid "E357: 'langmap': Matching character missing for %s"
msgstr "E357: 'langmap': Kongrua signo mankas por %s"
@@ -4387,7 +4158,7 @@ msgstr "Bezonas version 2.04 de Amigados aŭ pli novan\n"
#, c-format
msgid "Need %s version %ld\n"
-msgstr "Bezonas %s-on versio %ld\n"
+msgstr "Bezonas %s-on de versio %ld\n"
msgid "Cannot open NIL:\n"
msgstr "Ne eblas malfermi NIL:\n"
@@ -4690,7 +4461,7 @@ msgstr "E369: nevalida ano en %s%%[]"
#, c-format
msgid "E769: Missing ] after %s["
-msgstr "E769: Mankas ] malantaŭ %s["
+msgstr "E769: Mankas ] post %s["
msgid "E944: Reverse range in character class"
msgstr "E944: Inversa amplekso en klaso de signoj"
@@ -4719,7 +4490,7 @@ msgstr "E67: \\z1 kaj aliaj estas nepermeseblaj tie"
#, c-format
msgid "E69: Missing ] after %s%%["
-msgstr "E69: Mankas ] malantaŭ %s%%["
+msgstr "E69: Mankas ] post %s%%["
#, c-format
msgid "E70: Empty %s%%[]"
@@ -4728,25 +4499,48 @@ msgstr "E70: Malplena %s%%[]"
msgid "E956: Cannot use pattern recursively"
msgstr "E956: Ne eblas uzi ŝablonon rekursie"
+#, c-format
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: Sintaksa eraro en %s{...}"
+
+#, c-format
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA-regulesprimo) ne eblas ripeti %s"
+
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: \\%#= povas nur esti sekvita de 0, 1, aŭ 2. La aŭtomata motoro de "
+"regulesprimo estos uzata "
+
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Ŝanĝas al malavanca motoro de regulesprimo por ŝablono: "
+
msgid "E65: Illegal back reference"
msgstr "E65: Nevalida retro-referenco"
-msgid "E339: Pattern too long"
-msgstr "E339: Ŝablono tro longa"
+msgid "E63: invalid use of \\_"
+msgstr "E63: nevalida uzo de \\_"
-msgid "E50: Too many \\z("
-msgstr "E50: Tro da \\z("
+#, c-format
+msgid "E64: %s%c follows nothing"
+msgstr "E64: %s%c sekvas nenion"
+
+msgid "E68: Invalid character after \\z"
+msgstr "E68: Nevalida signo post \\z"
#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: Tro da %s("
+msgid "E678: Invalid character after %s%%[dxouU]"
+msgstr "E678: Nevalida signo post %s%%[dxouU]"
-msgid "E52: Unmatched \\z("
-msgstr "E52: Neekvilibra \\z("
+#, c-format
+msgid "E71: Invalid character after %s%%"
+msgstr "E71: Nevalida signo post %s%%"
#, c-format
msgid "E59: invalid character after %s@"
-msgstr "E59: nevalida signo malantaŭ %s@"
+msgstr "E59: nevalida signo post %s@"
#, c-format
msgid "E60: Too many complex %s{...}s"
@@ -4760,45 +4554,22 @@ msgstr "E61: Ingita %s*"
msgid "E62: Nested %s%c"
msgstr "E62: Ingita %s%c"
-msgid "E63: invalid use of \\_"
-msgstr "E63: nevalida uzo de \\_"
-
-#, c-format
-msgid "E64: %s%c follows nothing"
-msgstr "E64: %s%c sekvas nenion"
-
-msgid "E68: Invalid character after \\z"
-msgstr "E68: Nevalida signo malantaŭ \\z"
+msgid "E50: Too many \\z("
+msgstr "E50: Tro da \\z("
#, c-format
-msgid "E678: Invalid character after %s%%[dxouU]"
-msgstr "E678: Nevalida signo malantaŭ %s%%[dxouU]"
+msgid "E51: Too many %s("
+msgstr "E51: Tro da %s("
-#, c-format
-msgid "E71: Invalid character after %s%%"
-msgstr "E71: Nevalida signo malantaŭ %s%%"
+msgid "E52: Unmatched \\z("
+msgstr "E52: Neekvilibra \\z("
-#, c-format
-msgid "E554: Syntax error in %s{...}"
-msgstr "E554: Sintaksa eraro en %s{...}"
+msgid "E339: Pattern too long"
+msgstr "E339: Ŝablono tro longa"
msgid "External submatches:\n"
msgstr "Eksteraj subkongruoj:\n"
-#, c-format
-msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA-regulesprimo) ne eblas ripeti %s"
-
-msgid ""
-"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
-"used "
-msgstr ""
-"E864: \\%#= povas nur esti sekvita de 0, 1, aŭ 2. La aŭtomata motoro de "
-"regulesprimo estos uzata "
-
-msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Ŝanĝas al malavanca motoro de regulesprimo por ŝablono: "
-
msgid "E865: (NFA) Regexp end encountered prematurely"
msgstr "E865: (NFA) Trovis finon de regulesprimo tro frue"
@@ -4863,6 +4634,13 @@ msgstr "E876: (NFA-regulesprimo) ne sufiĉa spaco por enmemorigi la tutan NFA "
msgid "E878: (NFA) Could not allocate memory for branch traversal!"
msgstr "E878: (NFA) Ne povis asigni memoron por traigi branĉojn!"
+msgid ""
+"\n"
+"Type Name Content"
+msgstr ""
+"\n"
+"Tipo Nomo Enhavo"
+
msgid " VREPLACE"
msgstr " V-ANSTATAŬIGO"
@@ -4914,6 +4692,16 @@ msgstr " APARTIGITA BLOKO"
msgid "recording"
msgstr "registrado"
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion uzita ekster rulita dosiero"
+
+msgid "E1040: Cannot use :scriptversion after :vim9script"
+msgstr "E1040: Ne eblas uzi :scriptversion post :vim9script"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: scriptversion ne subtenata: %d"
+
#, c-format
msgid "E383: Invalid search string: %s"
msgstr "E383: Nevalida serĉenda ĉeno: %s"
@@ -4927,7 +4715,7 @@ msgid "E385: search hit BOTTOM without match for: %s"
msgstr "E385: serĉo atingis SUBON sen trovi: %s"
msgid "E386: Expected '?' or '/' after ';'"
-msgstr "E386: Atendis '?' aŭ '/' malantaŭ ';'"
+msgstr "E386: Atendis '?' aŭ '/' post ';'"
msgid " (includes previously listed match)"
msgstr " (enhavas antaŭe listigitajn kongruojn)"
@@ -5001,21 +4789,6 @@ msgstr "E797: Aŭtokomando SpellFileMissing forviŝis bufron"
msgid "Warning: region %s not supported"
msgstr "Averto: regiono %s ne subtenata"
-msgid "Sorry, no suggestions"
-msgstr "Bedaŭrinde ne estas sugestoj"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "Bedaŭrinde estas nur %ld sugestoj"
-
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "Anstataŭigi \"%.*s\" per:"
-
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < \"%.*s\""
-
msgid "E752: No previous spell replacement"
msgstr "E752: Neniu antaŭa literuma anstataŭigo"
@@ -5346,6 +5119,21 @@ msgstr "E763: Signoj de vorto malsamas tra literumaj dosieroj"
msgid "E783: duplicate char in MAP entry"
msgstr "E783: ripetita signo en rikordo MAP"
+msgid "Sorry, no suggestions"
+msgstr "Bedaŭrinde ne estas sugestoj"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "Bedaŭrinde estas nur %ld sugestoj"
+
+#, c-format
+msgid "Change \"%.*s\" to:"
+msgstr "Anstataŭigi \"%.*s\" per:"
+
+#, c-format
+msgid " < \"%.*s\""
+msgstr " < \"%.*s\""
+
msgid "No Syntax items defined for this buffer"
msgstr "Neniu sintaksa elemento difinita por tiu bufro"
@@ -5462,7 +5250,7 @@ msgstr "E789: Mankas ']': %s"
#, c-format
msgid "E890: trailing char after ']': %s]%s"
-msgstr "E890: vosta signo malantaŭ ']': %s]%s"
+msgstr "E890: vosta signo post ']': %s]%s"
#, c-format
msgid "E398: Missing '=': %s"
@@ -5484,7 +5272,7 @@ msgstr "E401: Disigilo de ŝablono netrovita: %s"
#, c-format
msgid "E402: Garbage after pattern: %s"
-msgstr "E402: Forĵetindaĵo malantaŭ ŝablono: %s"
+msgstr "E402: Forĵetindaĵo post ŝablono: %s"
msgid "E403: syntax sync: line continuations pattern specified twice"
msgstr "E403: sintaksa sinkronigo: ŝablono de linia daŭrigo specifita dufoje"
@@ -5562,6 +5350,9 @@ msgstr "E419: Nekonata malfona koloro"
msgid "E420: BG color unknown"
msgstr "E420: Nekonata fona koloro"
+msgid "E453: UL color unknown"
+msgstr "E453: Nekonata koloro de UL"
+
#, c-format
msgid "E421: Color name or number not recognized: %s"
msgstr "E421: Kolora nomo aŭ nombro nerekonita: %s"
@@ -5645,9 +5436,6 @@ msgstr "Serĉado de dosiero de etikedoj %s"
msgid "E430: Tag file path truncated for %s\n"
msgstr "E430: Vojo de etikeda dosiero trunkita por %s\n"
-msgid "Ignoring long line in tags file"
-msgstr "Ignoro de longa linio en etikeda dosiero"
-
#, c-format
msgid "E431: Format error in tags file \"%s\""
msgstr "E431: Eraro de formato en etikeda dosiero \"%s\""
@@ -5663,6 +5451,9 @@ msgstr "E432: Etikeda dosiero ne estas ordigita: %s"
msgid "E433: No tags file"
msgstr "E433: Neniu etikeda dosiero"
+msgid "Ignoring long line in tags file"
+msgstr "Ignoro de longa linio en etikeda dosiero"
+
msgid "E434: Can't find tag pattern"
msgstr "E434: Ne eblas trovi ŝablonon de etikedo"
@@ -5851,12 +5642,6 @@ msgstr "Nenio por malfari"
msgid "number changes when saved"
msgstr "numero ŝanĝoj tempo konservita"
-#, c-format
-msgid "%ld second ago"
-msgid_plural "%ld seconds ago"
-msgstr[0] "antaŭ %ld sekundo"
-msgstr[1] "antaŭ %ld sekundoj"
-
msgid "E790: undojoin is not allowed after undo"
msgstr "E790: undojoin estas nepermesebla post malfaro"
@@ -5919,16 +5704,8 @@ msgid "E699: Too many arguments"
msgstr "E699: Tro da argumentoj"
#, c-format
-msgid "E117: Unknown function: %s"
-msgstr "E117: Nekonata funkcio: %s"
-
-#, c-format
-msgid "E933: Function was deleted: %s"
-msgstr "E933: funkcio estis forviŝita: %s"
-
-#, c-format
-msgid "E119: Not enough arguments for function: %s"
-msgstr "E119: Ne sufiĉe da argumentoj por funkcio: %s"
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: Ne eblas uzi funkcion kiel metodo: %s"
#, c-format
msgid "E120: Using <SID> not in a script context: %s"
@@ -5949,6 +5726,9 @@ msgstr "E128: Nomo de funkcio devas eki per majusklo aŭ per \"s:\": %s"
msgid "E884: Function name cannot contain a colon: %s"
msgstr "E884: Nomo de funkcio ne povas enhavi dupunkton: %s"
+msgid "E454: function list was modified"
+msgstr "E454: listo de funkcioj ŝanĝiĝis"
+
#, c-format
msgid "E123: Undefined function: %s"
msgstr "E123: Nedifinita funkcio: %s"
@@ -5961,15 +5741,29 @@ msgid "E862: Cannot use g: here"
msgstr "E862: Ne eblas uzi g: ĉi tie"
#, c-format
+msgid "E1056: expected a type: %s"
+msgstr "E1056: atendis tipon: %s"
+
+#, c-format
msgid "E932: Closure function should not be at top level: %s"
msgstr "E932: Fermo-funkcio devus esti je la plej alta nivelo: %s"
+msgid "E1057: Missing :enddef"
+msgstr "E1057: Mankas :enddef"
+
msgid "E126: Missing :endfunction"
msgstr "E126: Mankas \":endfunction\""
#, c-format
+msgid "W1001: Text found after :enddef: %s"
+msgstr "W1001: Teksto trovita post :enddef: %s"
+
+#, c-format
msgid "W22: Text found after :endfunction: %s"
-msgstr "W22: Teksto trovita malantaŭ :endfunction: %s"
+msgstr "W22: Teksto trovita post :endfunction: %s"
+
+msgid "E1058: function nesting too deep"
+msgstr "E1058: ingado de funkcio tro profunda"
#, c-format
msgid "E707: Function name conflicts with variable: %s"
@@ -5987,6 +5781,10 @@ msgstr "E746: Nomo de funkcio ne kongruas kun dosiernomo de skripto: %s"
msgid "E131: Cannot delete function %s: It is in use"
msgstr "E131: Ne eblas forviŝi funkcion %s: Estas nuntempe uzata"
+#, c-format
+msgid "E1084: Cannot delete Vim9 script function %s"
+msgstr "E1084: Ne eblas forviŝi funkcion de Vim9-skripto: %s"
+
msgid "E133: :return not inside a function"
msgstr "E133: \":return\" ekster funkcio"
@@ -6140,6 +5938,9 @@ msgstr "kun grafika interfaco X11-neXtaw."
msgid "with X11-Athena GUI."
msgstr "kun grafika interfaco X11-Athena."
+msgid "with Haiku GUI."
+msgstr "kun grafika interfaco Haiku."
+
msgid "with Photon GUI."
msgstr "kun grafika interfaco Photon."
@@ -6452,9 +6253,6 @@ msgstr "E685: Interna eraro: %s"
msgid "Interrupted"
msgstr "Interrompita"
-msgid "E14: Invalid address"
-msgstr "E14: Nevalida adreso"
-
msgid "E474: Invalid argument"
msgstr "E474: Nevalida argumento"
@@ -6476,6 +6274,9 @@ msgstr "E476: Nevalida komando"
msgid "E17: \"%s\" is a directory"
msgstr "E17: \"%s\" estas dosierujo"
+msgid "E756: Spell checking is not possible"
+msgstr "E756: malpermesata literumilo"
+
#, c-format
msgid "E364: Library call failed for \"%s()\""
msgstr "E364: Alvoko al biblioteko malsukcesis por \"%s()\""
@@ -6618,6 +6419,9 @@ msgstr "E44: Difekta programo de regulesprimo"
msgid "E45: 'readonly' option is set (add ! to override)"
msgstr "E45: La opcio 'readonly' estas ŝaltita '(aldonu ! por transpasi)"
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: Ne eblas ŝanĝi ekzistantan variablon"
+
#, c-format
msgid "E46: Cannot change read-only variable \"%s\""
msgstr "E46: Ne eblas ŝanĝi nurlegeblan variablon \"%s\""
@@ -6641,6 +6445,14 @@ msgid "E118: Too many arguments for function: %s"
msgstr "E118: Tro da argumentoj por funkcio: %s"
#, c-format
+msgid "E119: Not enough arguments for function: %s"
+msgstr "E119: Ne sufiĉe da argumentoj por funkcio: %s"
+
+#, c-format
+msgid "E933: Function was deleted: %s"
+msgstr "E933: funkcio estis forviŝita: %s"
+
+#, c-format
msgid "E716: Key not present in Dictionary: %s"
msgstr "E716: Ŝlosilo malekzistas en Vortaro: %s"
@@ -6854,7 +6666,7 @@ msgid "list index out of range"
msgstr "indekso de listo ekster limoj"
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "interna eraro: obteno de vim-a listero %d malsukcesis"
msgid "slice step cannot be zero"
@@ -6865,7 +6677,7 @@ msgid "attempt to assign sequence of size greater than %d to extended slice"
msgstr "provis valorizi sekvencon kun pli ol %d eroj en etendita sekco"
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "interna eraro: neniu vim-a listero %d"
msgid "internal error: not enough list items"
@@ -6974,19 +6786,19 @@ msgstr "malsukcesis ruli la kodon"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: Eval ne revenis kun valida python-objekto"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: Konverto de revena python-objekto al vim-valoro malsukcesis"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "ne povis konverti %s al vim-vortaro"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "ne povis konverti %s al vim-listo"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "ne povis konverti %s al vim-strukturo"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/fi.po b/src/nvim/po/fi.po
index 5986a57488..77d5f7f826 100644
--- a/src/nvim/po/fi.po
+++ b/src/nvim/po/fi.po
@@ -4198,8 +4198,6 @@ msgstr "E537: commentstringin pitää olla tyhjä tai sisältää %s"
msgid "E540: Unclosed expression sequence"
msgstr "E540: Sulkematon lausekesarja"
-msgid "E541: too many items"
-msgstr "E541: liikaa kohteita"
msgid "E542: unbalanced groups"
msgstr "E542: epätasapainoisia ryhmiä"
diff --git a/src/nvim/po/fr.po b/src/nvim/po/fr.po
index 5f1ca2fec5..6df7741f1a 100644
--- a/src/nvim/po/fr.po
+++ b/src/nvim/po/fr.po
@@ -1,4 +1,3 @@
-
# French Translation for Vim
#
# Do ":help uganda" in Vim to read copying and usage conditions.
@@ -62,8 +61,9 @@ msgstr ""
msgid "E931: Buffer cannot be registered"
msgstr "E931: Le tampon ne peut pas tre enregistr"
-msgid "E937: Attempt to delete a buffer that is in use"
-msgstr "E937: Tentative de suppression d'un tampon en cours d'utilisation"
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: Tentative de suppression d'un tampon en cours d'utilisation : %s"
msgid "E515: No buffers were unloaded"
msgstr "E515: Aucun tampon n'a t dcharg"
@@ -159,9 +159,6 @@ msgstr "[Modifi]"
msgid "[Not edited]"
msgstr "[Non dit]"
-msgid "[New file]"
-msgstr "[Nouveau fichier]"
-
msgid "[Read errors]"
msgstr "[Erreurs de lecture]"
@@ -214,13 +211,6 @@ msgstr "Bas"
msgid "Top"
msgstr "Haut"
-msgid ""
-"\n"
-"# Buffer list:\n"
-msgstr ""
-"\n"
-"# Liste des tampons :\n"
-
msgid "E382: Cannot write, 'buftype' option is set"
msgstr "E382: criture impossible, l'option 'buftype' est active"
@@ -248,12 +238,16 @@ msgstr " ligne=%ld id=%d nom=%s"
msgid "E902: Cannot connect to port"
msgstr "E902: Impossible de se connecter au port"
+msgid "E898: socket() in channel_connect()"
+msgstr "E898: socket() dans channel_connect()"
+
+#, c-format
+msgid "E901: getaddrinfo() in channel_open(): %s"
+msgstr "E901: getaddrinfo() dans channel_open(): %s"
+
msgid "E901: gethostbyname() in channel_open()"
msgstr "E901: gethostbyname() dans channel_open()"
-msgid "E898: socket() in channel_open()"
-msgstr "E898: socket() dans channel_open()"
-
msgid "E903: received command with non-string argument"
msgstr "E903: commande reue avec un argument qui n'est pas une chane"
@@ -267,6 +261,9 @@ msgstr "E904: le troisime argument de \"call\" doit tre une liste"
msgid "E905: received unknown command: %s"
msgstr "E905: commande inconnue reue : %s"
+msgid "E906: not an open channel"
+msgstr "E906: pas un canal ouvert"
+
#, c-format
msgid "E630: %s(): write while not connected"
msgstr "E630: %s() : criture sans tre connect"
@@ -284,9 +281,6 @@ msgstr ""
"E912: Impossible d'utiliser ch_evalexpr()/ch_sendexpr() avec un canal brut "
"ou nl"
-msgid "E906: not an open channel"
-msgstr "E906: pas un canal ouvert"
-
msgid "E920: _io file requires _name to be set"
msgstr "E920: fichier _io ncessite _name"
@@ -297,6 +291,18 @@ msgstr "E915: tampon in_io ncessite in_buf ou in_name "
msgid "E918: buffer must be loaded: %s"
msgstr "E918: le tampon doit tre charg : %s"
+# DB - TODO : Pas compris le message ni comment le dclencher malgr une visite
+# dans le code.
+msgid "tagname"
+msgstr "nom du marqueur"
+
+# DB - TODO : Idem prcdent.
+msgid " kind file\n"
+msgstr " type de fichier\n"
+
+msgid "'history' option is zero"
+msgstr "l'option 'history' vaut zro"
+
msgid "E821: File is encrypted with unknown method"
msgstr "E821: Le fichier est chiffr avec une mthode inconnue"
@@ -316,21 +322,54 @@ msgstr "Les cls ne correspondent pas !"
msgid "[crypted]"
msgstr "[chiffr]"
+# AB - La version franaise de la premire phrase ne me satisfait pas.
+# DB - Suggestion.
+msgid "Entering Debug mode. Type \"cont\" to continue."
+msgstr "Mode dbogage activ. Tapez \"cont\" pour continuer."
+
#, c-format
-msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Il manque ':' dans le Dictionnaire %s"
+msgid "Oldval = \"%s\""
+msgstr "Ancienneval = \"%s\""
#, c-format
-msgid "E721: Duplicate key in Dictionary: \"%s\""
-msgstr "E721: Cl duplique dans le Dictionnaire : %s"
+msgid "Newval = \"%s\""
+msgstr "Nouvelleval = \"%s\""
#, c-format
-msgid "E722: Missing comma in Dictionary: %s"
-msgstr "E722: Il manque une virgule dans le Dictionnaire : %s"
+msgid "line %ld: %s"
+msgstr "ligne %ld : %s"
#, c-format
-msgid "E723: Missing end of Dictionary '}': %s"
-msgstr "E723: Il manque '}' la fin du Dictionnaire : %s"
+msgid "cmd: %s"
+msgstr "cmde : %s"
+
+msgid "frame is zero"
+msgstr "le cadre de pile est zro"
+
+#, c-format
+msgid "frame at highest level: %d"
+msgstr "cadre de pile au niveau le plus haut : %d"
+
+#, c-format
+msgid "Breakpoint in \"%s%s\" line %ld"
+msgstr "Point d'arrt dans %s%s ligne %ld"
+
+#, c-format
+msgid "E161: Breakpoint not found: %s"
+msgstr "E161: Le point d'arrt %s est introuvable"
+
+msgid "No breakpoints defined"
+msgstr "Aucun point d'arrt n'est dfini"
+
+# AB - Le deuxime %s est remplac par "func" ou "file" sans que l'on puisse
+# traduire ces mots.
+#, c-format
+msgid "%3d %s %s line %ld"
+msgstr "%3d %s %s ligne %ld"
+
+#, c-format
+msgid "%3d expr %s"
+msgstr "%3d expr %s"
msgid "extend() argument"
msgstr "argument de extend()"
@@ -399,157 +438,15 @@ msgstr "E105: :loadkeymap ne peut tre utilis que dans un script Vim"
msgid "E791: Empty keymap entry"
msgstr "E791: Entre du descripteur de clavier (keymap) vide"
-# AB - Remplacer "compltion" par "compltement" ? Voir l'thymologie
-# d'"accrtion".
-msgid " Keyword completion (^N^P)"
-msgstr " Compltement de mot-cl (^N^P)"
-
-# DB - todo : Faut-il une majuscule "mode" ?
-msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
-msgstr " mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
-
-msgid " Whole line completion (^L^N^P)"
-msgstr " Compltement de ligne entire (^L^N^P)"
-
-msgid " File name completion (^F^N^P)"
-msgstr " Compltement de nom de fichier (^F^N^P)"
-
-msgid " Tag completion (^]^N^P)"
-msgstr " Compltement de marqueur (^]^N^P)"
-
-# AB - J'ai d avoir une bonne raison de faire une version franaise aussi
-# diffrente de la version anglaise. Il me faut la retrouver.
-# DB - TODO
-msgid " Path pattern completion (^N^P)"
-msgstr " Compltement global de mot-cl (^N^P)"
-
-msgid " Definition completion (^D^N^P)"
-msgstr " Compltement de dfinition (^D^N^P)"
-
-# AB - Trouver une meilleure formulation que "selon le".
-# DB : proposition : "avec"
-msgid " Dictionary completion (^K^N^P)"
-msgstr " Compltement avec le dictionnaire (^K^N^P)"
-
-# AB - Trouver une meilleure formulation que "selon le".
-msgid " Thesaurus completion (^T^N^P)"
-msgstr " Compltement avec le thsaurus (^T^N^P)"
-
-# AB - La version franaise est meilleure que la version anglaise.
-# DB : Suggestion.
-msgid " Command-line completion (^V^N^P)"
-msgstr " Compltement de ligne de commande (^V^N^P)"
-
-msgid " User defined completion (^U^N^P)"
-msgstr " Compltement dfini par l'utilisateur (^U^N^P)"
-
-# DB : On doit pouvoir trouver nettement mieux que a.
-msgid " Omni completion (^O^N^P)"
-msgstr " Compltement selon le type de fichier (Omni) (^O^N^P)"
-
-msgid " Spelling suggestion (s^N^P)"
-msgstr " Suggestion d'orthographe (s^N^P)"
-
-msgid " Keyword Local completion (^N^P)"
-msgstr " Compltement local de mot-cl (^N/^P)"
-
-# AB - Ce texte s'ajoute la fin d'un des messages de compltion ci-dessus.
-# Il faut viter de le faire trop long. Je pense que la version franaise
-# est suffisamment comprhensible dans le contexte dans lequel elle est
-# affiche.
-msgid "Hit end of paragraph"
-msgstr "Fin du paragraphe"
-
-msgid "E839: Completion function changed window"
-msgstr "E839: La fonction de compltement a chang la fentre"
-
-msgid "E840: Completion function deleted text"
-msgstr "E840: La fonction de compltement a effac du texte"
-
-msgid "'dictionary' option is empty"
-msgstr "L'option 'dictionary' est vide"
-
-msgid "'thesaurus' option is empty"
-msgstr "L'option 'thesaurus' est vide"
-
-#, c-format
-msgid "Scanning dictionary: %s"
-msgstr "Examen du dictionnaire : %s"
-
-msgid " (insert) Scroll (^E/^Y)"
-msgstr " (insertion) Dfilement (^E/^Y)"
-
-msgid " (replace) Scroll (^E/^Y)"
-msgstr " (remplacement) Dfilement (^E/^Y)"
-
-#, c-format
-msgid "Scanning: %s"
-msgstr "Examen : %s"
-
-msgid "Scanning tags."
-msgstr "Examen des marqueurs."
-
-msgid "match in file"
-msgstr "correspondance dans le fichier"
-
-# AB - Cette chane de caractres est ajoute en dbut de ligne lorsqu'une
-# opration de compltion est rpte (typiquement avec CTRL-X CTRL-N).
-# Que ce soit en anglais ou en franais, il y a un problme de majuscules.
-# Bien qu'insatisfaisante, cette traduction semble optimale.
-msgid " Adding"
-msgstr " Ajout"
-
-msgid "-- Searching..."
-msgstr "-- Recherche en cours..."
-
-# AB - Ce texte s'ajoute la fin d'un des messages de compltion ci-dessus.
-# AB - Faut-il utiliser "origine" ou "originel" au lieu d'"original" ?
-# DB : Suggestion.
-msgid "Back at original"
-msgstr "Retour au point de dpart"
-
-# AB - Ce texte s'ajoute la fin d'un des messages de compltion ci-dessus.
-msgid "Word from other line"
-msgstr "Mot d'une autre ligne"
-
-# AB - Ce texte s'ajoute la fin d'un des messages de compltion ci-dessus.
-msgid "The only match"
-msgstr "La seule correspondance"
-
-# AB - Ce texte s'ajoute la fin d'un des messages de compltion ci-dessus.
-# AB - Faut-il remplacer "sur" par "de" ?
-# DB : Pour moi, non.
-#, c-format
-msgid "match %d of %d"
-msgstr "Correspondance %d sur %d"
-
-# AB - Ce texte s'ajoute la fin d'un des messages de compltion ci-dessus.
-# DB - todo : la VO n'a pas de majuscule.
-#, c-format
-msgid "match %d"
-msgstr "Correspondance %d"
-
msgid "E18: Unexpected characters in :let"
msgstr "E18: Caractres inattendus avant '='"
-#, c-format
-msgid "E121: Undefined variable: %s"
-msgstr "E121: Variable non dfinie : %s"
-
msgid "E111: Missing ']'"
msgstr "E111: ']' manquant"
msgid "E719: Cannot use [:] with a Dictionary"
msgstr "E719: Utilisation de [:] impossible avec un Dictionnaire"
-#, c-format
-msgid "E734: Wrong variable type for %s="
-msgstr "E734: Type de variable erron avec %s="
-
-#, c-format
-msgid "E461: Illegal variable name: %s"
-msgstr "E461: Nom de variable invalide : %s"
-
msgid "E806: using Float as a String"
msgstr "E806: Utilisation d'un Flottant comme une Chane"
@@ -605,15 +502,9 @@ msgstr "E109: Il manque ':' aprs '?'"
msgid "E804: Cannot use '%' with Float"
msgstr "E804: Impossible d'utiliser '%' avec un Flottant"
-msgid "E110: Missing ')'"
-msgstr "E110: ')' manquant"
-
msgid "E695: Cannot index a Funcref"
msgstr "E695: Impossible d'indexer une Funcref"
-msgid "E909: Cannot index a special variable"
-msgstr "E909: Impossible d'indexer une variable spciale"
-
# AB - La version franaise est meilleure que la version anglaise.
#, c-format
msgid "E112: Option name missing: %s"
@@ -719,15 +610,6 @@ msgstr "E742: Impossible de modifier la valeur de %s"
msgid "E698: variable nested too deep for making a copy"
msgstr "E698: variable trop imbrique pour en faire une copie"
-# AB - La version franaise est capitalise pour tre en accord avec les autres
-# commentaires enregistrs dans le fichier viminfo.
-msgid ""
-"\n"
-"# global variables:\n"
-msgstr ""
-"\n"
-"# Variables globales:\n"
-
# DB - Plus prcis ("la dernire fois") ?
msgid ""
"\n"
@@ -751,40 +633,19 @@ msgstr "E736: Opration invalide avec les Dictionnaires"
msgid "E694: Invalid operation for Funcrefs"
msgstr "E694: Opration invalide avec les Funcrefs"
-msgid "map() argument"
-msgstr "argument de map()"
-
-msgid "filter() argument"
-msgstr "argument de filter()"
-
#, c-format
msgid "E686: Argument of %s must be a List"
msgstr "E686: L'argument de %s doit tre une Liste"
-msgid "E928: String required"
-msgstr "E928: Chane requis"
-
msgid "E808: Number or Float required"
msgstr "E808: Nombre ou Flottant requis"
-msgid "add() argument"
-msgstr "argument de add()"
-
-msgid "E785: complete() can only be used in Insert mode"
-msgstr "E785: complete() n'est utilisable que dans le mode Insertion"
-
# AB - Texte par dfaut du bouton de la bote de dialogue affiche par la
# fonction confirm().
msgid "&Ok"
msgstr "&Ok"
#, c-format
-msgid "+-%s%3ld line: "
-msgid_plural "+-%s%3ld lines: "
-msgstr[0] "+-%s%3ld ligne : "
-msgstr[1] "+-%s%3ld lignes : "
-
-#, c-format
msgid "E700: Unknown function: %s"
msgstr "E700: Fonction inconnue : %s"
@@ -807,15 +668,9 @@ msgstr ""
msgid "called inputrestore() more often than inputsave()"
msgstr "inputrestore() a t appel plus de fois qu'inputsave()"
-msgid "insert() argument"
-msgstr "argument de insert()"
-
msgid "E786: Range not allowed"
msgstr "E786: Les plages ne sont pas autorises"
-msgid "E916: not a valid job"
-msgstr "E916: tche invalide"
-
msgid "E701: Invalid type for len()"
msgstr "E701: Type invalide avec len()"
@@ -832,9 +687,6 @@ msgstr "E726: Le pas est nul"
msgid "E727: Start past end"
msgstr "E727: Dbut au-del de la fin"
-msgid "<empty>"
-msgstr "<vide>"
-
msgid "E240: No connection to the X server"
msgstr "E240: Pas de connexion au serveur X"
@@ -852,35 +704,10 @@ msgstr "E941: serveur dj dmarr"
msgid "E942: +clientserver feature not available"
msgstr "E942: La fonctionnalit +clientserver n'est pas disponible"
-msgid "remove() argument"
-msgstr "argument de remove()"
-
-msgid "E655: Too many symbolic links (cycle?)"
-msgstr "E655: Trop de liens symboliques (cycle ?)"
-
-msgid "reverse() argument"
-msgstr "argument de reverse()"
-
# AB - La version franaise est meilleure que la version anglaise.
msgid "E258: Unable to send to client"
msgstr "E258: La rponse n'a pas pu tre envoye au client"
-#, c-format
-msgid "E927: Invalid action: '%s'"
-msgstr "E927: Action invalide : %s "
-
-msgid "sort() argument"
-msgstr "argument de sort()"
-
-msgid "uniq() argument"
-msgstr "argument de uniq()"
-
-msgid "E702: Sort compare function failed"
-msgstr "E702: La fonction de comparaison de sort() a chou"
-
-msgid "E882: Uniq compare function failed"
-msgstr "E882: La fonction de comparaison de uniq() a chou"
-
msgid "(Invalid)"
msgstr "(Invalide)"
@@ -888,9 +715,6 @@ msgstr "(Invalide)"
msgid "E935: invalid submatch number: %d"
msgstr "E935: numro de submatch invalide : %d"
-msgid "E677: Error writing temp file"
-msgstr "E677: Erreur lors de l'criture du fichier temporaire"
-
msgid "E921: Invalid callback argument"
msgstr "E921: Argument de callback invalide"
@@ -947,98 +771,6 @@ msgstr ""
msgid "[No write since last change]\n"
msgstr "[Attention : tout n'est pas enregistr]\n"
-# AB - Le numro et le message d'erreur (%s ci-dessous) et le "numro" de ligne
-# sont des chanes de caractres dont le contenu est la discrtion de
-# l'appelant de la fonction viminfo_error().
-#, c-format
-msgid "%sviminfo: %s in line: "
-msgstr "%sviminfo : %s la ligne "
-
-# AB - La version franaise est meilleure que la version anglaise.
-msgid "E136: viminfo: Too many errors, skipping rest of file"
-msgstr ""
-"E136: Il y a trop d'erreurs ; interruption de la lecture du fichier viminfo"
-
-# AB - Ce texte fait partie d'un message de dbogage.
-# DB - ... dont les valeurs possibles sont les messages
-# qui suivent.
-#, c-format
-msgid "Reading viminfo file \"%s\"%s%s%s"
-msgstr "Lecture du fichier viminfo \"%s\"%s%s%s"
-
-# AB - Ce texte fait partie d'un message de dbogage.
-# DB - Voir ci-dessus.
-msgid " info"
-msgstr " info"
-
-# AB - Ce texte fait partie d'un message de dbogage.
-# DB - Voir ci-dessus.
-msgid " marks"
-msgstr " marques"
-
-msgid " oldfiles"
-msgstr " vieux fichiers"
-
-# AB - Ce texte fait partie d'un message de dbogage.
-# DB - Voir ci-dessus.
-msgid " FAILED"
-msgstr " CHEC"
-
-# AB - J'espre que la plupart des utilisateurs aura l'ide d'aller vrifier
-# ses droits d'accs.
-# AB - Le mot "viminfo" a t retir pour que le message ne dpasse pas 80
-# caractres dans le cas courant o %s = /home/12345678/.viminfo
-#, c-format
-msgid "E137: Viminfo file is not writable: %s"
-msgstr "E137: L'criture dans le fichier %s est interdite"
-
-#, c-format
-msgid "E929: Too many viminfo temp files, like %s!"
-msgstr "E929: Trop de fichiers temporaires viminfo, comme %s!"
-
-# AB - Le point d'exclamation est superflu.
-# AB - Le mot "viminfo" a t retir pour que le message ne dpasse pas 80
-# caractres dans le cas courant o %s = /home/12345678/.viminfo
-#, c-format
-msgid "E138: Can't write viminfo file %s!"
-msgstr "E138: Impossible d'crire le fichier %s"
-
-# AB - Ce texte est un message de dbogage.
-#, c-format
-msgid "Writing viminfo file \"%s\""
-msgstr "criture du fichier viminfo \"%s\""
-
-#, c-format
-msgid "E886: Can't rename viminfo file to %s!"
-msgstr "E886: Impossible de renommer viminfo en %s"
-
-#, c-format
-msgid "# This viminfo file was generated by Vim %s.\n"
-msgstr "# Ce fichier viminfo a t gnr par Vim %s.\n"
-
-# AB - Les deux versions, bien que diffrentes, se valent.
-msgid ""
-"# You may edit it if you're careful!\n"
-"\n"
-msgstr ""
-"# Vous pouvez l'diter, mais soyez prudent.\n"
-"\n"
-
-msgid "# Value of 'encoding' when this file was written\n"
-msgstr "# 'encoding' dans lequel ce fichier a t crit\n"
-
-# AB - Ce texte est pass en argument la fonction viminfo_error().
-# AB - "illgal" est un terme trop fort mon got.
-msgid "Illegal starting char"
-msgstr "Caractre initial non valide"
-
-msgid ""
-"\n"
-"# Bar lines, copied verbatim:\n"
-msgstr ""
-"\n"
-"# Lignes commenant par |, copies littralement :\n"
-
# AB - Ceci est un titre de bote de dialogue. Vrifier que la version
# franaise est correcte pour les trois rfrences ; j'ai un doute quant
# la troisime.
@@ -1171,67 +903,7 @@ msgstr "Motif trouv dans toutes les lignes : %s"
#, c-format
msgid "Pattern not found: %s"
-msgstr "Motif introuvable: %s"
-
-# AB - Ne pas traduire le dollar.
-# AB - Ce message n'est volontairement pas traduit. En effet, il fait partie
-# d'un groupe de trois messages dans viminfo, dont deux ne sont pas soumis
-# internationalisation. J'attends que les deux autres messages soient
-# traduisibles pour traduire celui-ci.
-# DB - TODO : Qu'en est-il prsent ?
-msgid ""
-"\n"
-"# Last Substitute String:\n"
-"$"
-msgstr ""
-"\n"
-"# Dernires chanes de substitution :\n"
-"$"
-
-# This message should *so* be E42!
-msgid "E478: Don't panic!"
-msgstr "E478: Pas de panique !"
-
-#, c-format
-msgid "E661: Sorry, no '%s' help for %s"
-msgstr "E661: Dsol, aucune aide en langue '%s' pour %s"
-
-#, c-format
-msgid "E149: Sorry, no help for %s"
-msgstr "E149: Dsol, aucune aide pour %s"
-
-#, c-format
-msgid "Sorry, help file \"%s\" not found"
-msgstr "Dsol, le fichier d'aide \"%s\" est introuvable"
-
-#, c-format
-msgid "E151: No match: %s"
-msgstr "E151: Aucune correspondance : %s"
-
-#, c-format
-msgid "E152: Cannot open %s for writing"
-msgstr "E152: Impossible d'ouvrir %s en criture"
-
-#, c-format
-msgid "E153: Unable to open %s for reading"
-msgstr "E153: Impossible d'ouvrir %s en lecture"
-
-#, c-format
-msgid "E670: Mix of help file encodings within a language: %s"
-msgstr "E670: Encodages diffrents dans les fichiers d'aide en langue %s"
-
-# AB - L'tiquette la plus longue fait 27 caractres. Le nom de fichier le plus
-# long fait 12 caractres. Il faudrait donc idalement faire une
-# traduction de 40 caractres ou moins. Ce qui est loin d'tre le cas
-# prsent.
-# DB - Suggestion.
-#, c-format
-msgid "E154: Duplicate tag \"%s\" in file %s/%s"
-msgstr "E154: Marqueur \"%s\" dupliqu dans le fichier %s/%s"
-
-#, c-format
-msgid "E150: Not a directory: %s"
-msgstr "E150: %s n'est pas un rpertoire"
+msgstr "Motif introuvable : %s"
# AB - Il faut respecter l'esprit plus que la lettre.
#, c-format
@@ -1290,58 +962,6 @@ msgstr "[Effac]"
msgid "No old files"
msgstr "Aucun vieux fichier"
-# AB - La version franaise de la premire phrase ne me satisfait pas.
-# DB - Suggestion.
-msgid "Entering Debug mode. Type \"cont\" to continue."
-msgstr "Mode dbogage activ. Tapez \"cont\" pour continuer."
-
-#, c-format
-msgid "Oldval = \"%s\""
-msgstr "Ancienneval = \"%s\""
-
-#, c-format
-msgid "Newval = \"%s\""
-msgstr "Nouvelleval = \"%s\""
-
-#, c-format
-msgid "line %ld: %s"
-msgstr "ligne %ld : %s"
-
-#, c-format
-msgid "cmd: %s"
-msgstr "cmde : %s"
-
-msgid "frame is zero"
-msgstr "le cadre de pile est zro"
-
-#, c-format
-msgid "frame at highest level: %d"
-msgstr "cadre de pile au niveau le plus haut : %d"
-
-#, c-format
-msgid "Breakpoint in \"%s%s\" line %ld"
-msgstr "Point d'arrt dans %s%s ligne %ld"
-
-#, c-format
-msgid "E161: Breakpoint not found: %s"
-msgstr "E161: Le point d'arrt %s est introuvable"
-
-msgid "No breakpoints defined"
-msgstr "Aucun point d'arrt n'est dfini"
-
-# AB - Le deuxime %s est remplac par "func" ou "file" sans que l'on puisse
-# traduire ces mots.
-#, c-format
-msgid "%3d %s %s line %ld"
-msgstr "%3d %s %s ligne %ld"
-
-#, c-format
-msgid "%3d expr %s"
-msgstr "%3d expr %s"
-
-msgid "E750: First use \":profile start {fname}\""
-msgstr "E750: Utilisez d'abord \":profile start {nomfichier}\""
-
# AB - "changes to" est redondant et a t omis de la version franaise.
#, c-format
msgid "Save changes to \"%s\"?"
@@ -1361,32 +981,11 @@ msgid "Warning: Entered other buffer unexpectedly (check autocommands)"
msgstr ""
"Alerte : Entre inattendue dans un autre tampon (vrifier autocommandes)"
-msgid "E163: There is only one file to edit"
-msgstr "E163: Il n'y a qu'un seul fichier diter"
-
-msgid "E164: Cannot go before first file"
-msgstr "E164: Impossible d'aller avant le premier fichier"
-
-msgid "E165: Cannot go beyond last file"
-msgstr "E165: Impossible d'aller au-del du dernier fichier"
-
#, c-format
msgid "E666: compiler not supported: %s"
msgstr "E666: Compilateur %s non support"
#, c-format
-msgid "Searching for \"%s\" in \"%s\""
-msgstr "Recherche de \"%s\" dans \"%s\""
-
-#, c-format
-msgid "Searching for \"%s\""
-msgstr "Recherche de \"%s\""
-
-#, c-format
-msgid "not found in '%s': \"%s\""
-msgstr "introuvable dans '%s' : \"%s\""
-
-#, c-format
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
msgstr "W20: Python version 2.x non support, fichier %s ignor"
@@ -1394,78 +993,16 @@ msgstr "W20: Python version 2.x non support, fichier %s ignor"
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
msgstr "W21: Python 3.x non support, fichier %s ignor"
-msgid "Source Vim script"
-msgstr "Sourcer un script - Vim"
-
-#, c-format
-msgid "Cannot source a directory: \"%s\""
-msgstr "Impossible de sourcer un rpertoire : \"%s\""
-
-#, c-format
-msgid "could not source \"%s\""
-msgstr "impossible de sourcer \"%s\""
-
-#, c-format
-msgid "line %ld: could not source \"%s\""
-msgstr "ligne %ld : impossible de sourcer \"%s\""
-
-#, c-format
-msgid "sourcing \"%s\""
-msgstr "sourcement \"%s\""
-
-#, c-format
-msgid "line %ld: sourcing \"%s\""
-msgstr "ligne %ld : sourcement de \"%s\""
-
-#, c-format
-msgid "finished sourcing %s"
-msgstr "fin du sourcement de %s"
-
-# AB - Ce texte fait partie d'un message de dbogage.
-#, c-format
-msgid "continuing in %s"
-msgstr "de retour dans %s"
-
-msgid "modeline"
-msgstr "ligne de mode"
-
-msgid "--cmd argument"
-msgstr "argument --cmd"
-
-msgid "-c argument"
-msgstr "argument -c"
-
-msgid "environment variable"
-msgstr "variable d'environnement"
-
-msgid "error handler"
-msgstr "gestionnaire d'erreur"
-
-msgid "W15: Warning: Wrong line separator, ^M may be missing"
-msgstr "W15: Alerte : Sparateur de ligne erron, ^M possiblement manquant"
-
-msgid "E167: :scriptencoding used outside of a sourced file"
-msgstr "E167: :scriptencoding utilis en dehors d'un fichier sourc"
-
-msgid "E168: :finish used outside of a sourced file"
-msgstr "E168: :finish utilis en dehors d'un fichier sourc"
-
-# DB - Le premier %s est, au choix : "time ", "ctype " ou "messages ",
-# sans qu'il soit possible de les traduire.
-#, c-format
-msgid "Current %slanguage: \"%s\""
-msgstr "Langue courante pour %s : \"%s\""
-
-#, c-format
-msgid "E197: Cannot set language to \"%s\""
-msgstr "E197: Impossible de choisir la langue \"%s\""
-
msgid "Entering Ex mode. Type \"visual\" to go to Normal mode."
msgstr "Mode Ex activ. Tapez \"visual\" pour passer en mode Normal."
msgid "E501: At end-of-file"
msgstr "E501: la fin du fichier"
+#, c-format
+msgid "Executing: %s"
+msgstr "Excution de : %s"
+
msgid "E169: Command too recursive"
msgstr "E169: Commande trop rcursive"
@@ -1523,59 +1060,6 @@ msgstr ""
"\n"
" Nom Args Adresse Complet. Dfinition"
-msgid "No user-defined commands found"
-msgstr "Aucune commande dfinie par l'utilisateur trouve"
-
-msgid "E175: No attribute specified"
-msgstr "E175: Pas d'attribut spcifi"
-
-msgid "E176: Invalid number of arguments"
-msgstr "E176: Nombre d'arguments invalide"
-
-msgid "E177: Count cannot be specified twice"
-msgstr "E177: Le quantificateur ne peut tre spcifi deux fois"
-
-msgid "E178: Invalid default value for count"
-msgstr "E178: La valeur par dfaut du quantificateur est invalide"
-
-msgid "E179: argument required for -complete"
-msgstr "E179: argument requis avec -complete"
-
-msgid "E179: argument required for -addr"
-msgstr "E179: argument requis avec -addr"
-
-#, c-format
-msgid "E181: Invalid attribute: %s"
-msgstr "E181: Attribut invalide : %s"
-
-msgid "E182: Invalid command name"
-msgstr "E182: Nom de commande invalide"
-
-msgid "E183: User defined commands must start with an uppercase letter"
-msgstr "E183: Les commandes utilisateur doivent commencer par une majuscule"
-
-msgid "E841: Reserved name, cannot be used for user defined command"
-msgstr ""
-"E841: Nom rserv, ne peux pas tre utilis pour une commande utilisateur"
-
-#, c-format
-msgid "E184: No such user-defined command: %s"
-msgstr "E184: Aucune commande %s dfinie par l'utilisateur"
-
-#, c-format
-msgid "E180: Invalid address type value: %s"
-msgstr "E180: Valeur de type d'adresse invalide : %s"
-
-#, c-format
-msgid "E180: Invalid complete value: %s"
-msgstr "E180: Valeur invalide pour \"-complete=\" : %s"
-
-msgid "E468: Completion argument only allowed for custom completion"
-msgstr "E468: Seul le compltement personnalis accepte un argument"
-
-msgid "E467: Custom completion requires a function argument"
-msgstr "E467: Le compltement personnalis ncessite une fonction en argument"
-
msgid "unknown"
msgstr "inconnu"
@@ -1640,15 +1124,6 @@ msgstr "E930: Impossible d'utiliser :redir dans execute()"
msgid "Save Redirection"
msgstr "Enregistrer la redirection"
-msgid "Save View"
-msgstr "Enregistrer la vue - Vim"
-
-msgid "Save Session"
-msgstr "Enregistrer la session - Vim"
-
-msgid "Save Setup"
-msgstr "Enregistrer les rglages - Vim"
-
#, c-format
msgid "E739: Cannot create directory: %s"
msgstr "E739: Impossible de crer le rpertoire \"%s\""
@@ -1695,9 +1170,6 @@ msgstr "E499: Nom de fichier vide pour '%' ou '#', ne marche qu'avec \":p:h\""
msgid "E500: Evaluates to an empty string"
msgstr "E500: valu en une chane vide"
-msgid "E195: Cannot open viminfo file for reading"
-msgstr "E195: Impossible d'ouvrir le viminfo en lecture"
-
# AB - Si les parenthses posent problme, il faudra remettre les guillemets
# ci-dessus.
msgid "Untitled"
@@ -1757,15 +1229,6 @@ msgstr "Interruption"
msgid "E579: :if nesting too deep"
msgstr "E579: Imbrication de :if trop importante"
-msgid "E580: :endif without :if"
-msgstr "E580: :endif sans :if"
-
-msgid "E581: :else without :if"
-msgstr "E581: :else sans :if"
-
-msgid "E582: :elseif without :if"
-msgstr "E582: :elseif sans :if"
-
msgid "E583: multiple :else"
msgstr "E583: Il ne peut y avoir qu'un seul :else"
@@ -1775,35 +1238,23 @@ msgstr "E584: :elseif aprs :else"
msgid "E585: :while/:for nesting too deep"
msgstr "E585: Imbrication de :while ou :for trop importante"
-msgid "E586: :continue without :while or :for"
-msgstr "E586: :continue sans :while ou :for"
-
-msgid "E587: :break without :while or :for"
-msgstr "E587: :break sans :while ou :for"
-
msgid "E732: Using :endfor with :while"
msgstr "E732: Utilisation de :endfor avec :while"
msgid "E733: Using :endwhile with :for"
msgstr "E733: Utilisation de :endwhile avec :for"
+msgid "E579: block nesting too deep"
+msgstr "E579: Imbrication de bloc trop importante"
+
msgid "E601: :try nesting too deep"
msgstr "E601: Imbrication de :try trop importante"
-msgid "E603: :catch without :try"
-msgstr "E603: :catch sans :try"
-
msgid "E604: :catch after :finally"
msgstr "E604: :catch aprs :finally"
-msgid "E606: :finally without :try"
-msgstr "E606: :finally sans :try"
-
-msgid "E607: multiple :finally"
-msgstr "E607: Il ne peut y avoir qu'un seul :finally"
-
-msgid "E602: :endtry without :try"
-msgstr "E602: :endtry sans :try"
+msgid "E193: :enddef not inside a function"
+msgstr "E193: :enddef en dehors d'une fonction"
msgid "E193: :endfunction not inside a function"
msgstr "E193: :endfunction en dehors d'une fonction"
@@ -1815,46 +1266,6 @@ msgid "E811: Not allowed to change buffer information now"
msgstr ""
"E811: Changement des informations du tampon n'est pas permise maintenant"
-# DB - TODO : Pas compris le message ni comment le dclencher malgr une visite
-# dans le code.
-msgid "tagname"
-msgstr "nom du marqueur"
-
-# DB - TODO : Idem prcdent.
-msgid " kind file\n"
-msgstr " type de fichier\n"
-
-msgid "'history' option is zero"
-msgstr "l'option 'history' vaut zro"
-
-# DB - Messages et les suivants : fichier .viminfo.
-# Pas de majuscule ncessaire pour les messages d'aprs.
-#, c-format
-msgid ""
-"\n"
-"# %s History (newest to oldest):\n"
-msgstr ""
-"\n"
-"# Historique %s (chronologie dcroissante) :\n"
-
-msgid "Command Line"
-msgstr "ligne de commande"
-
-msgid "Search String"
-msgstr "chane de recherche"
-
-msgid "Expression"
-msgstr "expression"
-
-msgid "Input Line"
-msgstr "ligne de saisie"
-
-msgid "Debug Line"
-msgstr "Ligne de dbogage"
-
-msgid "E198: cmd_pchar beyond the command length"
-msgstr "E198: cmd_pchar au-del de la longueur de la commande"
-
msgid "E199: Active window or buffer deleted"
msgstr "E199: Fentre ou tampon actif effac"
@@ -1864,18 +1275,12 @@ msgstr "E812: Des autocommandes ont chang le tampon ou le nom du tampon"
msgid "Illegal file name"
msgstr "Nom de fichier invalide"
-msgid "is a directory"
-msgstr "est un rpertoire"
-
msgid "is not a file"
msgstr "n'est pas un fichier"
msgid "is a device (disabled with 'opendevice' option)"
msgstr "est un priphrique (dsactiv par l'option 'opendevice')"
-msgid "[New File]"
-msgstr "[Nouveau fichier]"
-
msgid "[New DIRECTORY]"
msgstr "[Nouveau RPERTOIRE]"
@@ -1917,12 +1322,6 @@ msgstr "[CR manquant]"
msgid "[long lines split]"
msgstr "[lignes longues coupes]"
-msgid "[NOT converted]"
-msgstr "[NON converti]"
-
-msgid "[converted]"
-msgstr "[converti]"
-
#, c-format
msgid "[CONVERSION ERROR in line %ld]"
msgstr "[ERREUR DE CONVERSION la ligne %ld]"
@@ -1944,130 +1343,6 @@ msgstr "La conversion avec 'charconvert' a chou"
msgid "can't read output of 'charconvert'"
msgstr "Impossible de lire la sortie de 'charconvert'"
-msgid "E676: No matching autocommands for acwrite buffer"
-msgstr "E676: Pas d'autocommande correspondante pour le tampon acwrite"
-
-msgid "E203: Autocommands deleted or unloaded buffer to be written"
-msgstr "E203: Des autocommandes ont effac ou dcharg le tampon crire"
-
-msgid "E204: Autocommand changed number of lines in unexpected way"
-msgstr ""
-"E204: L'autocommande a modifi le nombre de lignes de manire inattendue"
-
-msgid "NetBeans disallows writes of unmodified buffers"
-msgstr "NetBeans interdit l'criture des tampons non modifis"
-
-msgid "Partial writes disallowed for NetBeans buffers"
-msgstr "Netbeans interdit l'criture partielle de ses tampons"
-
-msgid "is not a file or writable device"
-msgstr "n'est pas un fichier ou un priphrique inscriptible"
-
-msgid "writing to device disabled with 'opendevice' option"
-msgstr "criture vers un priphrique dsactiv par l'option 'opendevice'"
-
-msgid "is read-only (add ! to override)"
-msgstr "est en lecture seule (ajoutez ! pour passer outre)"
-
-msgid "E506: Can't write to backup file (add ! to override)"
-msgstr "E506: Impossible d'crire la copie de secours (! pour passer outre)"
-
-msgid "E507: Close error for backup file (add ! to override)"
-msgstr "E507: Erreur de fermeture de la copie de secours (! pour passer outre)"
-
-msgid "E508: Can't read file for backup (add ! to override)"
-msgstr ""
-"E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! pour "
-"passer outre)"
-
-msgid "E509: Cannot create backup file (add ! to override)"
-msgstr ""
-"E509: Impossible de crer la copie de secours (ajoutez ! pour passer outre)"
-
-msgid "E510: Can't make backup file (add ! to override)"
-msgstr ""
-"E510: Impossible de gnrer la copie de secours (ajoutez ! pour passer outre)"
-
-msgid "E214: Can't find temp file for writing"
-msgstr "E214: Impossible de gnrer un fichier temporaire pour y crire"
-
-msgid "E213: Cannot convert (add ! to write without conversion)"
-msgstr "E213: Impossible de convertir (ajoutez ! pour crire sans convertir)"
-
-msgid "E166: Can't open linked file for writing"
-msgstr "E166: Impossible d'ouvrir le lien pour y crire"
-
-msgid "E212: Can't open file for writing"
-msgstr "E212: Impossible d'ouvrir le fichier pour y crire"
-
-msgid "E949: File changed while writing"
-msgstr "E949: Fichier modifi aprs criture"
-
-msgid "E512: Close failed"
-msgstr "E512: Erreur de fermeture de fichier"
-
-msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
-msgstr ""
-"E513: Erreur d'criture, chec de conversion (videz 'fenc' pour passer outre)"
-
-#, c-format
-msgid ""
-"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
-"override)"
-msgstr ""
-"E513: Erreur d'criture, chec de conversion la ligne %ld (videz 'fenc' "
-"pour passer outre)"
-
-msgid "E514: write error (file system full?)"
-msgstr "E514: erreur d'criture (systme de fichiers plein ?)"
-
-msgid " CONVERSION ERROR"
-msgstr " ERREUR DE CONVERSION"
-
-#, c-format
-msgid " in line %ld;"
-msgstr " la ligne %ld"
-
-msgid "[Device]"
-msgstr "[Priph.]"
-
-msgid "[New]"
-msgstr "[Nouveau]"
-
-msgid " [a]"
-msgstr " [a]"
-
-msgid " appended"
-msgstr " ajout(s)"
-
-msgid " [w]"
-msgstr " [e]"
-
-msgid " written"
-msgstr " crit(s)"
-
-msgid "E205: Patchmode: can't save original file"
-msgstr "E205: Patchmode : impossible d'enregistrer le fichier original"
-
-msgid "E206: patchmode: can't touch empty original file"
-msgstr "E206: patchmode : impossible de crer le fichier original vide"
-
-msgid "E207: Can't delete backup file"
-msgstr "E207: Impossible d'effacer la copie de secours"
-
-msgid ""
-"\n"
-"WARNING: Original file may be lost or damaged\n"
-msgstr ""
-"\n"
-"ALERTE: Le fichier original est peut-tre perdu ou endommag\n"
-
-# DB - todo : un peu long...
-msgid "don't quit the editor until the file is successfully written!"
-msgstr ""
-"ne quittez pas l'diteur tant que le fichier n'est pas correctement "
-"enregistr !"
-
msgid "[dos]"
msgstr "[dos]"
@@ -2093,10 +1368,10 @@ msgstr[0] "%ld ligne, "
msgstr[1] "%ld lignes, "
#, c-format
-msgid "%lld character"
-msgid_plural "%lld characters"
-msgstr[0] "%lld caractre"
-msgstr[1] "%lld caractres"
+msgid "%lld byte"
+msgid_plural "%lld bytes"
+msgstr[0] "%lld octet"
+msgstr[1] "%lld octets"
msgid "[noeol]"
msgstr "[noeol]"
@@ -2104,12 +1379,6 @@ msgstr "[noeol]"
msgid "[Incomplete last line]"
msgstr "[Dernire ligne incomplte]"
-msgid "WARNING: The file has been changed since reading it!!!"
-msgstr "ALERTE : Le fichier a t modifi depuis que Vim l'a lu !"
-
-msgid "Do you really want to write to it"
-msgstr "Voulez-vous vraiment crire dedans"
-
#, c-format
msgid "E208: Error writing to \"%s\""
msgstr "E208: Erreur lors de l'criture dans \"%s\""
@@ -2246,6 +1515,50 @@ msgstr "E219: { manquant."
msgid "E220: Missing }."
msgstr "E220: } manquant."
+# DB : Les trois messages qui suivent sont des titres de botes
+# de dialogue par dfaut.
+msgid "Select Directory dialog"
+msgstr "Slecteur de rpertoire"
+
+msgid "Save File dialog"
+msgstr "Enregistrer un fichier"
+
+msgid "Open File dialog"
+msgstr "Ouvrir un fichier"
+
+msgid "E338: Sorry, no file browser in console mode"
+msgstr "E338: Dsol, pas de slecteur de fichiers en mode console"
+
+msgid "no matches"
+msgstr "aucune correspondance"
+
+msgid "E854: path too long for completion"
+msgstr "E854: chemin trop long pour compltement"
+
+#, c-format
+msgid ""
+"E343: Invalid path: '**[number]' must be at the end of the path or be "
+"followed by '%s'."
+msgstr ""
+"E343: Chemin invalide : '**[nombre]' doit tre la fin du chemin ou tre "
+"suivi de '%s'."
+
+#, c-format
+msgid "E344: Can't find directory \"%s\" in cdpath"
+msgstr "E344: Rpertoire \"%s\" introuvable dans 'cdpath'"
+
+#, c-format
+msgid "E345: Can't find file \"%s\" in path"
+msgstr "E345: Fichier \"%s\" introuvable dans 'path'"
+
+#, c-format
+msgid "E346: No more directory \"%s\" found in cdpath"
+msgstr "E346: Plus de rpertoire \"%s\" dans 'cdpath'"
+
+#, c-format
+msgid "E347: No more file \"%s\" found in path"
+msgstr "E347: Plus de fichier \"%s\" dans 'path'"
+
msgid "E490: No fold found"
msgstr "E490: Aucun repli trouv"
@@ -2267,31 +1580,6 @@ msgstr "E222: Ajout au tampon de lecture"
msgid "E223: recursive mapping"
msgstr "E223: mappage rcursif"
-#, c-format
-msgid "E224: global abbreviation already exists for %s"
-msgstr "E224: une abrviation globale existe dj pour %s"
-
-#, c-format
-msgid "E225: global mapping already exists for %s"
-msgstr "E225: un mappage global existe dj pour %s"
-
-#, c-format
-msgid "E226: abbreviation already exists for %s"
-msgstr "E226: une abrviation existe dj pour %s"
-
-#, c-format
-msgid "E227: mapping already exists for %s"
-msgstr "E227: un mappage existe dj pour %s"
-
-msgid "No abbreviation found"
-msgstr "Aucune abrviation trouve"
-
-msgid "No mapping found"
-msgstr "Aucun mappage trouv"
-
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap : mode invalide"
-
msgid "E851: Failed to create a new process for the GUI"
msgstr ""
"E851: chec lors de la cration d'un nouveau processus pour l'interface "
@@ -2318,10 +1606,6 @@ msgstr "E231: 'guifontwide' est invalide"
msgid "E599: Value of 'imactivatekey' is invalid"
msgstr "E599: Valeur de 'imactivatekey' invalide"
-#, c-format
-msgid "E254: Cannot allocate color %s"
-msgstr "E254: Impossible d'allouer la couleur %s"
-
msgid "No match at cursor, finding next"
msgstr "Aucune correspondance sous le curseur, recherche de la suivante"
@@ -2356,15 +1640,15 @@ msgstr "Vim"
msgid "E232: Cannot create BalloonEval with both message and callback"
msgstr "E232: Impossible de crer un BalloonEval avec message ET callback"
-msgid "_Cancel"
-msgstr "_Annuler"
-
msgid "_Save"
msgstr "_Enregistrer"
msgid "_Open"
msgstr "_Ouvrir"
+msgid "_Cancel"
+msgstr "_Annuler"
+
msgid "_OK"
msgstr "_Ok"
@@ -2508,6 +1792,11 @@ msgstr "E671: Titre de fentre \"%s\" introuvable"
msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
msgstr "E243: Argument non support : \"-%s\" ; Utilisez la version OLE."
+msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
+msgstr ""
+"E988: L'interface graphique ne peut pas tre utilise. Impossible d'excuter "
+"gvim.exe."
+
msgid "E672: Unable to open window inside MDI application"
msgstr "E672: Impossible d'ouvrir une fentre dans une application MDI"
@@ -2586,9 +1875,6 @@ msgstr "Style :"
msgid "Size:"
msgstr "Taille :"
-msgid "E256: Hangul automata ERROR"
-msgstr "E256: ERREUR dans l'automate Hangul"
-
msgid "E550: Missing colon"
msgstr "E550: ':' manquant"
@@ -2686,6 +1972,74 @@ msgstr "E365: L'impression du fichier PostScript a chou"
msgid "Print job sent."
msgstr "Tche d'impression envoye."
+msgid "E679: recursive loop loading syncolor.vim"
+msgstr "E679: boucle rcursive lors du chargement de syncolor.vim"
+
+#, c-format
+msgid "E411: highlight group not found: %s"
+msgstr "E411: groupe de surbrillance introuvable : %s"
+
+#, c-format
+msgid "E412: Not enough arguments: \":highlight link %s\""
+msgstr "E412: Trop peu d'arguments : \":highlight link %s\""
+
+#, c-format
+msgid "E413: Too many arguments: \":highlight link %s\""
+msgstr "E413: Trop d'arguments : \":highlight link %s\""
+
+msgid "E414: group has settings, highlight link ignored"
+msgstr "E414: le groupe a dj des attributs, lien de surbrillance ignor"
+
+#, c-format
+msgid "E415: unexpected equal sign: %s"
+msgstr "E415: signe gal inattendu : %s"
+
+#, c-format
+msgid "E416: missing equal sign: %s"
+msgstr "E416: '=' manquant : %s"
+
+#, c-format
+msgid "E417: missing argument: %s"
+msgstr "E417: argument manquant : %s"
+
+#, c-format
+msgid "E418: Illegal value: %s"
+msgstr "E418: Valeur invalide : %s"
+
+msgid "E419: FG color unknown"
+msgstr "E419: Couleur de premier plan inconnue"
+
+msgid "E420: BG color unknown"
+msgstr "E420: Couleur d'arrire-plan inconnue"
+
+msgid "E453: UL color unknown"
+msgstr "E453: Couleur d'UL inconnue"
+
+#, c-format
+msgid "E421: Color name or number not recognized: %s"
+msgstr "E421: Nom ou numro de couleur non reconnu : %s"
+
+#, c-format
+msgid "E422: terminal code too long: %s"
+msgstr "E422: le code de terminal est trop long : %s"
+
+#, c-format
+msgid "E423: Illegal argument: %s"
+msgstr "E423: Argument invalide : %s"
+
+msgid "E424: Too many different highlighting attributes in use"
+msgstr ""
+"E424: Trop d'attributs de surbrillance diffrents en cours d'utilisation"
+
+msgid "E669: Unprintable character in group name"
+msgstr "E669: Caractre non imprimable dans un nom de groupe"
+
+msgid "W18: Invalid character in group name"
+msgstr "W18: Caractre invalide dans un nom de groupe"
+
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Trop de groupes de surbrillance et de syntaxe"
+
msgid "Add a new database"
msgstr "Ajouter une base de donnes"
@@ -3013,9 +2367,6 @@ msgstr "vimOption inconnue"
msgid "keyboard interrupt"
msgstr "interruption clavier"
-msgid "vim error"
-msgstr "erreur Vim"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr ""
"Impossible de crer commande de tampon/fentre : objet en cours d'effacement"
@@ -3062,10 +2413,24 @@ msgid "E251: VIM instance registry property is badly formed. Deleted!"
msgstr "E251: Entre registre de l'instance de Vim mal formate. Suppression !"
#, c-format
+msgid "%ld lines to indent... "
+msgstr "%ld lignes indenter... "
+
+#, c-format
+msgid "%ld line indented "
+msgid_plural "%ld lines indented "
+msgstr[0] "%ld ligne indente "
+msgstr[1] "%ld lignes indentes "
+
+#, c-format
msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: Cl duplique dans le document JSON : \"%s\""
#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: L'argument de %s doit tre une Liste ou un Blob"
+
+#, c-format
msgid "E696: Missing comma in List: %s"
msgstr "E696: Il manque une virgule dans la Liste %s"
@@ -3279,15 +2644,12 @@ msgstr "-A\t\tDmarrer en mode arabe"
msgid "-H\t\t\tStart in Hebrew mode"
msgstr "-H\t\tDmarrer en mode hbreu"
-msgid "-F\t\t\tStart in Farsi mode"
-msgstr "-F\t\tDmarrer en mode farsi"
-
msgid "-T <terminal>\tSet terminal type to <terminal>"
msgstr "-T <term>\tRgler le type du terminal sur <terminal>"
msgid "--not-a-term\t\tSkip warning for input/output not being a terminal"
msgstr ""
-"--no-a-term\t\tAucun avertissement si l'entre/sortie n'est pas un terminal"
+"--not-a-term\t\tAucun avertissement si l'entre/sortie n'est pas un terminal"
msgid "--ttyfail\t\tExit if input or output is not a terminal"
msgstr "--ttyfail\t\tQuitte si l'entre ou la sortie ne sont pas un terminal"
@@ -3338,7 +2700,7 @@ msgstr "-W <dest>\tcrire toutes les commandes tapes dans le fichier <dest>"
msgid "-x\t\t\tEdit encrypted files"
msgstr "-x\t\t\tditer des fichiers chiffrs"
-msgid "-display <display>\tConnect vim to this particular X-server"
+msgid "-display <display>\tConnect Vim to this particular X-server"
msgstr "-display <display>\tConnecter Vim au serveur X spcifi"
msgid "-X\t\t\tDo not connect to X server"
@@ -3421,10 +2783,10 @@ msgstr ""
"\n"
"Arguments reconnus par gvim (version Athena) :\n"
-msgid "-display <display>\tRun vim on <display>"
+msgid "-display <display>\tRun Vim on <display>"
msgstr "-display <cran>\tLancer Vim sur ce <display>"
-msgid "-iconic\t\tStart vim iconified"
+msgid "-iconic\t\tStart Vim iconified"
msgstr "-iconic\t\tIconifier Vim au dmarrage"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
@@ -3474,7 +2836,7 @@ msgstr ""
"\n"
"Arguments reconnus par gvim (version GTK+) :\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
msgstr ""
"-display <display>\tLancer Vim sur ce <display>\t(galement : --display)"
@@ -3493,24 +2855,41 @@ msgstr "-P <titre parent>\tOuvrir Vim dans une application parente"
msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
msgstr "--windowid <HWND>\tOuvrir Vim dans un autre widget win32"
-msgid "No display"
-msgstr "Aucun display"
+#, c-format
+msgid "E224: global abbreviation already exists for %s"
+msgstr "E224: une abrviation globale existe dj pour %s"
-msgid ": Send failed.\n"
-msgstr " : L'envoi a chou.\n"
+#, c-format
+msgid "E225: global mapping already exists for %s"
+msgstr "E225: un mappage global existe dj pour %s"
-msgid ": Send failed. Trying to execute locally\n"
-msgstr " : L'envoi a chou. Tentative d'excution locale\n"
+#, c-format
+msgid "E226: abbreviation already exists for %s"
+msgstr "E226: une abrviation existe dj pour %s"
#, c-format
-msgid "%d of %d edited"
-msgstr "%d dits sur %d"
+msgid "E227: mapping already exists for %s"
+msgstr "E227: un mappage existe dj pour %s"
+
+msgid "No abbreviation found"
+msgstr "Aucune abrviation trouve"
+
+msgid "No mapping found"
+msgstr "Aucun mappage trouv"
+
+msgid "E228: makemap: Illegal mode"
+msgstr "E228: makemap : mode invalide"
-msgid "No display: Send expression failed.\n"
-msgstr "Aucun display : L'envoi de l'expression a chou.\n"
+msgid "E460: entries missing in mapset() dict argument"
+msgstr "E460: entres manquantes dans l'argument dict de mapset()"
-msgid ": Send expression failed.\n"
-msgstr " : L'envoi de l'expression a chou.\n"
+#, c-format
+msgid "E357: 'langmap': Matching character missing for %s"
+msgstr "E357: 'langmap' : Aucun caractre correspondant pour %s"
+
+#, c-format
+msgid "E358: 'langmap': Extra characters after semicolon: %s"
+msgstr "E358: 'langmap' : Caractres surnumraires aprs point-virgule : %s"
msgid "No marks set"
msgstr "Aucune marque positionne"
@@ -3540,54 +2919,12 @@ msgstr ""
"\n"
"modif ligne col fichier/texte"
-msgid ""
-"\n"
-"# File marks:\n"
-msgstr ""
-"\n"
-"# Marques dans le fichier :\n"
-
-msgid ""
-"\n"
-"# Jumplist (newest first):\n"
-msgstr ""
-"\n"
-"# Liste de sauts (le plus rcent en premier) :\n"
-
-msgid ""
-"\n"
-"# History of marks within files (newest to oldest):\n"
-msgstr ""
-"\n"
-"# Historique des marques dans les fichiers (les plus rcentes en premier) :\n"
-
-msgid "Missing '>'"
-msgstr "'>' manquant"
+msgid "E290: List or number required"
+msgstr "E290: Liste ou nombre requis"
msgid "E543: Not a valid codepage"
msgstr "E543: Page de codes non valide"
-msgid "E284: Cannot set IC values"
-msgstr "E284: Impossible de rgler les valeurs IC"
-
-msgid "E285: Failed to create input context"
-msgstr "E285: chec de la cration du contexte de saisie"
-
-msgid "E286: Failed to open input method"
-msgstr "E286: chec de l'ouverture de la mthode de saisie"
-
-msgid "E287: Warning: Could not set destroy callback to IM"
-msgstr ""
-"E287: Alerte : Impossible d'inscrire le callback de destruction dans la MS"
-
-msgid "E288: input method doesn't support any style"
-msgstr "E288: la mthode de saisie ne supporte aucun style"
-
-msgid "E289: input method doesn't support my preedit type"
-msgstr ""
-"E289: le type de prdition de Vim n'est pas support par la mthode de "
-"saisie"
-
msgid "E293: block was not locked"
msgstr "E293: le bloc n'tait pas verrouill"
@@ -3794,12 +3131,17 @@ msgstr ""
msgid ""
"\n"
-"You may want to delete the .swp file now.\n"
-"\n"
+"You may want to delete the .swp file now."
msgstr ""
"\n"
-"Il est conseill d'effacer maintenant le fichier .swp.\n"
+"Il est conseill d'effacer maintenant le fichier .swp."
+
+msgid ""
"\n"
+"Note: process STILL RUNNING: "
+msgstr ""
+"\n"
+"Note : processus EN COURS D'EXECUTION : "
msgid "Using crypt key from swap file for the text file.\n"
msgstr ""
@@ -3913,8 +3255,8 @@ msgid "E315: ml_get: invalid lnum: %ld"
msgstr "E315: ml_get : numro de ligne invalide : %ld"
#, c-format
-msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get : ligne %ld introuvable"
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get : impossible de trouver la ligne %ld dans le tampon %d %s"
msgid "E317: pointer block id wrong 3"
msgstr "E317: mauvais id de pointeur de bloc 3"
@@ -4010,6 +3352,9 @@ msgstr ""
"\"\n"
" pour viter ce message.\n"
+msgid "Found a swap file that is not useful, deleting it"
+msgstr "Effacement de fichier d'change inutile"
+
msgid "Swap file \""
msgstr "Le fichier d'change \""
@@ -4105,6 +3450,10 @@ msgid "E337: Menu not found - check menu names"
msgstr "E337: Menu introuvable - vrifiez les noms des menus"
#, c-format
+msgid "Error detected while compiling %s:"
+msgstr "Erreur dtecte lors de la compilation %s"
+
+#, c-format
msgid "Error detected while processing %s:"
msgstr "Erreur dtecte en traitant %s :"
@@ -4160,20 +3509,6 @@ msgstr ""
"Tout aban&donner\n"
"&Annuler"
-# DB : Les trois messages qui suivent sont des titres de botes
-# de dialogue par dfaut.
-msgid "Select Directory dialog"
-msgstr "Slecteur de rpertoire"
-
-msgid "Save File dialog"
-msgstr "Enregistrer un fichier"
-
-msgid "Open File dialog"
-msgstr "Ouvrir un fichier"
-
-msgid "E338: Sorry, no file browser in console mode"
-msgstr "E338: Dsol, pas de slecteur de fichiers en mode console"
-
msgid "E766: Insufficient arguments for printf()"
msgstr "E766: Pas assez d'arguments pour printf()"
@@ -4183,14 +3518,12 @@ msgstr "E807: printf() attend un argument de type Flottant"
msgid "E767: Too many arguments to printf()"
msgstr "E767: Trop d'arguments pour printf()"
-msgid "W10: Warning: Changing a readonly file"
-msgstr "W10: Alerte : Modification d'un fichier en lecture seule"
-
-msgid "Type number and <Enter> or click with mouse (empty cancels): "
-msgstr "Tapez un nombre et <Entre> ou cliquez avec la souris (rien annule) :"
+msgid "Type number and <Enter> or click with the mouse (q or empty cancels): "
+msgstr ""
+"Tapez un nombre et <Entre> ou cliquez avec la souris (q ou rien annule) :"
-msgid "Type number and <Enter> (empty cancels): "
-msgstr "Tapez un nombre et <Entre> (rien annule) :"
+msgid "Type number and <Enter> (q or empty cancels): "
+msgstr "Tapez un nombre et <Entre> (q ou rien annule) :"
#, c-format
msgid "%ld more line"
@@ -4210,6 +3543,12 @@ msgstr " (Interrompu)"
msgid "Beep!"
msgstr "Bip !"
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "il y a %ld seconde"
+msgstr[1] "il y a %ld secondes"
+
msgid "ERROR: "
msgstr "ERREUR : "
@@ -4229,12 +3568,8 @@ msgstr ""
"[appels] total re/malloc() %lu, total free() %lu\n"
"\n"
-msgid "E340: Line is becoming too long"
-msgstr "E340: La ligne devient trop longue"
-
-#, c-format
-msgid "E341: Internal error: lalloc(%ld, )"
-msgstr "E341: Erreur interne : lalloc(%ld, )"
+msgid "E341: Internal error: lalloc(0, )"
+msgstr "E341: Erreur interne : lalloc(0, )"
#, c-format
msgid "E342: Out of memory! (allocating %lu bytes)"
@@ -4259,33 +3594,6 @@ msgstr "E548: chiffre attendu"
msgid "E549: Illegal percentage"
msgstr "E549: Pourcentage non autoris"
-msgid "E854: path too long for completion"
-msgstr "E854: chemin trop long pour compltement"
-
-#, c-format
-msgid ""
-"E343: Invalid path: '**[number]' must be at the end of the path or be "
-"followed by '%s'."
-msgstr ""
-"E343: Chemin invalide : '**[nombre]' doit tre la fin du chemin ou tre "
-"suivi de '%s'."
-
-#, c-format
-msgid "E344: Can't find directory \"%s\" in cdpath"
-msgstr "E344: Rpertoire \"%s\" introuvable dans 'cdpath'"
-
-#, c-format
-msgid "E345: Can't find file \"%s\" in path"
-msgstr "E345: Fichier \"%s\" introuvable dans 'path'"
-
-#, c-format
-msgid "E346: No more directory \"%s\" found in cdpath"
-msgstr "E346: Plus de rpertoire \"%s\" dans 'cdpath'"
-
-#, c-format
-msgid "E347: No more file \"%s\" found in path"
-msgstr "E347: Plus de fichier \"%s\" dans 'path'"
-
#, c-format
msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
msgstr ""
@@ -4309,12 +3617,6 @@ msgstr "E505: %s est en lecture seule (ajoutez ! pour passer outre)"
msgid "E349: No identifier under cursor"
msgstr "E349: Aucun identifiant sous le curseur"
-msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: 'operatorfunc' est vide"
-
-msgid "E775: Eval feature not available"
-msgstr "E775: La fonctionnalit d'valuation n'est pas disponible"
-
# DB : Il est ici question du mode Visuel.
msgid "Warning: terminal cannot highlight"
msgstr "Alerte : le terminal ne peut pas surligner"
@@ -4323,7 +3625,7 @@ msgid "E348: No string under cursor"
msgstr "E348: Aucune chane sous le curseur"
msgid "E352: Cannot erase folds with current 'foldmethod'"
-msgstr "E352: Impossible d'effacer des replis avec la 'foldmethod'e actuelle"
+msgstr "E352: Impossible d'effacer des replis avec la 'foldmethod' actuelle"
msgid "E664: changelist is empty"
msgstr "E664: La liste des modifications (changelist) est vide"
@@ -4339,6 +3641,9 @@ msgstr ""
"Tapez :qa! puis <Entre> pour abandonner tous les changements et quitter "
"Vim"
+msgid "Type :qa and press <Enter> to exit Vim"
+msgstr "Tapez :qa puis <Entre> pour quitter Vim"
+
#, c-format
msgid "%ld line %sed %d time"
msgid_plural "%ld line %sed %d times"
@@ -4351,19 +3656,6 @@ msgid_plural "%ld lines %sed %d times"
msgstr[0] "%ld lignes %ses %d fois"
msgstr[1] "%ld lignes %ses %d fois"
-#, c-format
-msgid "%ld lines to indent... "
-msgstr "%ld lignes indenter... "
-
-#, c-format
-msgid "%ld line indented "
-msgid_plural "%ld lines indented "
-msgstr[0] "%ld ligne indente "
-msgstr[1] "%ld lignes indentes "
-
-msgid "E748: No previously used register"
-msgstr "E748: Aucun registre n'a t prcdemment utilis"
-
# DB - Question O/N.
msgid "cannot yank; delete anyway"
msgstr "impossible de raliser une copie ; effacer tout de mme"
@@ -4375,56 +3667,10 @@ msgstr[0] "%ld ligne modifie"
msgstr[1] "%ld lignes modifies"
#, c-format
-msgid "freeing %ld lines"
-msgstr "libration de %ld lignes"
-
-#, c-format
-msgid " into \"%c"
-msgstr " dans \"%c"
-
-#, c-format
-msgid "block of %ld line yanked%s"
-msgid_plural "block of %ld lines yanked%s"
-msgstr[0] "bloc de %ld ligne copi%s"
-msgstr[1] "bloc de %ld lignes copi%s"
-
-#, c-format
-msgid "%ld line yanked%s"
-msgid_plural "%ld lines yanked%s"
-msgstr[0] "%ld ligne copie%s"
-msgstr[1] "%ld lignes copies%s"
-
-#, c-format
-msgid "E353: Nothing in register %s"
-msgstr "E353: Le registre %s est vide"
-
-msgid ""
-"\n"
-"--- Registers ---"
-msgstr ""
-"\n"
-"--- Registres ---"
-
-msgid "Illegal register name"
-msgstr "Nom de registre invalide"
-
-msgid ""
-"\n"
-"# Registers:\n"
-msgstr ""
-"\n"
-"# Registres :\n"
-
-#, c-format
-msgid "E574: Unknown register type %d"
-msgstr "E574: Type de registre %d inconnu"
-
-msgid ""
-"E883: search pattern and expression register may not contain two or more "
-"lines"
-msgstr ""
-"E883: le motif de recherche et le registre d'expression ne peuvent pas "
-"contenir deux lignes ou plus"
+msgid "%d line changed"
+msgid_plural "%d lines changed"
+msgstr[0] "%d ligne modifie"
+msgstr[1] "%d lignes modifies"
#, c-format
msgid "%ld Cols; "
@@ -4461,8 +3707,11 @@ msgstr ""
msgid "(+%lld for BOM)"
msgstr "(+%lld pour le BOM)"
-msgid "Thanks for flying Vim"
-msgstr "Merci d'avoir choisi Vim"
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' est vide"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: La fonctionnalit d'valuation n'est pas disponible"
msgid "E518: Unknown option"
msgstr "E518: Option inconnue"
@@ -4473,6 +3722,10 @@ msgstr "E519: Option non supporte"
msgid "E520: Not allowed in a modeline"
msgstr "E520: Non autoris dans une ligne de mode"
+msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
+msgstr ""
+"E992: Non autoris dans une ligne de mode avec 'modelineexpr' dslectionne"
+
msgid "E846: Key code not set"
msgstr "E846: Le code de touche n'est pas configur"
@@ -4482,6 +3735,66 @@ msgstr "E521: Nombre requis aprs ="
msgid "E522: Not found in termcap"
msgstr "E522: Introuvable dans termcap"
+msgid "E946: Cannot make a terminal with running job modifiable"
+msgstr ""
+"E946: terminal avec tche en cours d'excution ne peut pas tre modifiable"
+
+msgid "E590: A preview window already exists"
+msgstr "E590: Il existe dj une fentre de prvisualisation"
+
+msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
+msgstr "W17: L'arabe ncessite l'UTF-8, tapez ':set encoding=utf-8'"
+
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: Couleurs en 24-bits non supportes sur cet environnement."
+
+#, c-format
+msgid "E593: Need at least %d lines"
+msgstr "E593: Au moins %d lignes sont ncessaires"
+
+#, c-format
+msgid "E594: Need at least %d columns"
+msgstr "E594: Au moins %d colonnes sont ncessaires"
+
+#, c-format
+msgid "E355: Unknown option: %s"
+msgstr "E355: Option inconnue : %s"
+
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: Nombre requis : &%s = '%s'"
+
+msgid ""
+"\n"
+"--- Terminal codes ---"
+msgstr ""
+"\n"
+"--- Codes de terminal ---"
+
+msgid ""
+"\n"
+"--- Global option values ---"
+msgstr ""
+"\n"
+"--- Valeur des options globales ---"
+
+msgid ""
+"\n"
+"--- Local option values ---"
+msgstr ""
+"\n"
+"--- Valeur des options locales ---"
+
+msgid ""
+"\n"
+"--- Options ---"
+msgstr ""
+"\n"
+"--- Options ---"
+
+msgid "E356: get_varp ERROR"
+msgstr "E356: ERREUR get_varp"
+
#, c-format
msgid "E539: Illegal character <%s>"
msgstr "E539: Caractre <%s> invalide"
@@ -4490,6 +3803,15 @@ msgstr "E539: Caractre <%s> invalide"
msgid "For option %s"
msgstr "Pour l'option %s"
+# DB - Le code est sans ambigut sur le caractre manquant.
+# dfaut d'une traduction valable, au moins comprend-on
+# ce qui se passe.
+msgid "E540: Unclosed expression sequence"
+msgstr "E540: '}' manquant"
+
+msgid "E542: unbalanced groups"
+msgstr "E542: parenthses non quilibres"
+
msgid "E529: Cannot set 'term' to empty string"
msgstr "E529: 'term' ne doit pas tre une chane vide"
@@ -4531,8 +3853,9 @@ msgstr "E527: Virgule manquante"
msgid "E528: Must specify a ' value"
msgstr "E528: Une valeur ' doit tre spcifie"
-msgid "E595: contains unprintable or wide character"
-msgstr "E595: contient des caractres largeur double non-imprimables"
+msgid "E595: 'showbreak' contains unprintable or wide character"
+msgstr ""
+"E595: 'showbreak' contient des caractres largeur double ou non imprimables"
msgid "E596: Invalid font(s)"
msgstr "E596: Police(s) invalide(s)"
@@ -4560,89 +3883,6 @@ msgstr "E536: virgule requise"
msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' doit tre vide ou contenir %s"
-msgid "E538: No mouse support"
-msgstr "E538: La souris n'est pas supporte"
-
-# DB - Le code est sans ambigut sur le caractre manquant.
-# dfaut d'une traduction valable, au moins comprend-on
-# ce qui se passe.
-msgid "E540: Unclosed expression sequence"
-msgstr "E540: '}' manquant"
-
-msgid "E541: too many items"
-msgstr "E541: trop d'lments"
-
-msgid "E542: unbalanced groups"
-msgstr "E542: parenthses non quilibres"
-
-msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr ""
-"E946: terminal avec tche en cours d'excution ne peut pas tre modifiable"
-
-msgid "E590: A preview window already exists"
-msgstr "E590: Il existe dj une fentre de prvisualisation"
-
-msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr "W17: L'arabe ncessite l'UTF-8, tapez ':set encoding=utf-8'"
-
-msgid "E954: 24-bit colors are not supported on this environment"
-msgstr "E954: Couleurs en 24-bits non-supportes sur cet environnement."
-
-#, c-format
-msgid "E593: Need at least %d lines"
-msgstr "E593: Au moins %d lignes sont ncessaires"
-
-#, c-format
-msgid "E594: Need at least %d columns"
-msgstr "E594: Au moins %d colonnes sont ncessaires"
-
-#, c-format
-msgid "E355: Unknown option: %s"
-msgstr "E355: Option inconnue : %s"
-
-#, c-format
-msgid "E521: Number required: &%s = '%s'"
-msgstr "E521: Nombre requis : &%s = '%s'"
-
-msgid ""
-"\n"
-"--- Terminal codes ---"
-msgstr ""
-"\n"
-"--- Codes de terminal ---"
-
-msgid ""
-"\n"
-"--- Global option values ---"
-msgstr ""
-"\n"
-"--- Valeur des options globales ---"
-
-msgid ""
-"\n"
-"--- Local option values ---"
-msgstr ""
-"\n"
-"--- Valeur des options locales ---"
-
-msgid ""
-"\n"
-"--- Options ---"
-msgstr ""
-"\n"
-"--- Options ---"
-
-msgid "E356: get_varp ERROR"
-msgstr "E356: ERREUR get_varp"
-
-#, c-format
-msgid "E357: 'langmap': Matching character missing for %s"
-msgstr "E357: 'langmap' : Aucun caractre correspondant pour %s"
-
-#, c-format
-msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: 'langmap' : Caractres surnumraires aprs point-virgule : %s"
-
msgid "cannot open "
msgstr "impossible d'ouvrir "
@@ -4736,6 +3976,10 @@ msgstr ""
"\n"
"Vim : Rception d'une erreur X\n"
+#, c-format
+msgid "restoring display %s"
+msgstr "restauration du display %s"
+
msgid "Testing the X display failed"
msgstr "Le test du display X a chou"
@@ -4833,15 +4077,6 @@ msgstr "XSMP : SmcOpenConnection a chou : %s"
msgid "At line"
msgstr " la ligne"
-msgid "Could not load vim32.dll!"
-msgstr "Impossible de charger vim32.dll !"
-
-msgid "VIM Error"
-msgstr "Erreur VIM"
-
-msgid "Could not fix up function pointers to the DLL!"
-msgstr "Impossible d'initialiser les pointeurs de fonction vers la DLL !"
-
# DB - Les vnements en question sont ceux des messages qui suivent.
#, c-format
msgid "Vim: Caught %s event\n"
@@ -4875,10 +4110,38 @@ msgstr "Alerte Vim"
msgid "shell returned %d"
msgstr "le shell a retourn %d"
+msgid "E278: Cannot put a terminal buffer in a popup window"
+msgstr ""
+"E278: Impossible de mettre un tampon de terminal dans une fentre "
+"contextuelle"
+
+#, c-format
+msgid "E997: Tabpage not found: %d"
+msgstr "E997: Onglet introuvable : %d"
+
+#, c-format
+msgid "E993: window %d is not a popup window"
+msgstr "E993: la fentre %d n'est pas une fentre contextuelle"
+
+msgid "E994: Not allowed in a popup window"
+msgstr "E994: Opration interdite dans une fentre contextuelle"
+
+msgid "E863: Not allowed for a terminal in a popup window"
+msgstr ""
+"E863: Opration interdite pour un terminal dans une fentre contextuelle"
+
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: Utilisez d'abord \":profile start {nomfichier}\""
+
+msgid "E553: No more items"
+msgstr "E553: Plus d'lments"
+
+msgid "E925: Current quickfix list was changed"
+msgstr "E925: La liste quickfix courante a chang"
+
msgid "E926: Current location list was changed"
msgstr "E926: La liste d'emplacements courante a chang"
-#, c-format
msgid "E372: Too many %%%c in format string"
msgstr "E372: Trop de %%%c dans la chane de format"
@@ -4907,15 +4170,9 @@ msgstr "E378: 'errorformat' ne contient aucun motif"
msgid "E379: Missing or empty directory name"
msgstr "E379: Nom de rpertoire vide ou absent"
-msgid "E553: No more items"
-msgstr "E553: Plus d'lments"
-
msgid "E924: Current window was closed"
msgstr "E924: La fentre courante doit tre ferme"
-msgid "E925: Current quickfix was changed"
-msgstr "E925: Le quickfix courant a chang"
-
#, c-format
msgid "(%d of %d)%s%s: "
msgstr "(%d sur %d)%s%s : "
@@ -4946,6 +4203,9 @@ msgstr "E683: Nom de fichier manquant ou motif invalide"
msgid "Cannot open file \"%s\""
msgstr "Impossible d'ouvrir le fichier \"%s\""
+msgid "cannot have both a list and a \"what\" argument"
+msgstr "impossible d'avoir une liste et un argument \"what\" en mme temps"
+
msgid "E681: Buffer is not loaded"
msgstr "E681: le tampon n'est pas charg"
@@ -4995,37 +4255,30 @@ msgstr "E70: %s%%[] vide"
msgid "E956: Cannot use pattern recursively"
msgstr "E956: Impossible d'utiliser le motif rcursivement"
-msgid "E65: Illegal back reference"
-msgstr "E65: post-rfrence invalide"
-
-msgid "E339: Pattern too long"
-msgstr "E339: Motif trop long"
-
-msgid "E50: Too many \\z("
-msgstr "E50: Trop de \\z("
-
#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: Trop de %s("
-
-msgid "E52: Unmatched \\z("
-msgstr "E52: Pas de correspondance pour \\z("
+msgid "E654: missing delimiter after search pattern: %s"
+msgstr "E654: il manque un dlimiteur aprs le motif de recherche : %s"
#, c-format
-msgid "E59: invalid character after %s@"
-msgstr "E59: caractre invalide aprs %s@"
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: Erreur de syntaxe dans %s{...}"
#, c-format
-msgid "E60: Too many complex %s{...}s"
-msgstr "E60: Trop de %s{...}s complexes"
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (regexp NFA) %s ne peut pas tre rpt"
-#, c-format
-msgid "E61: Nested %s*"
-msgstr "E61: %s* imbriqus"
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: \\%#= peut tre suivi uniquement de 0, 1 ou 2. Le moteur automatique "
+"sera utilis "
-#, c-format
-msgid "E62: Nested %s%c"
-msgstr "E62: %s%c imbriqus"
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Moteur RE avec backtracking utilis pour le motif : "
+
+msgid "E65: Illegal back reference"
+msgstr "E65: post-rfrence invalide"
msgid "E63: invalid use of \\_"
msgstr "E63: utilisation invalide de \\_"
@@ -5046,25 +4299,36 @@ msgid "E71: Invalid character after %s%%"
msgstr "E71: Caractre invalide aprs %s%%"
#, c-format
-msgid "E554: Syntax error in %s{...}"
-msgstr "E554: Erreur de syntaxe dans %s{...}"
+msgid "E59: invalid character after %s@"
+msgstr "E59: caractre invalide aprs %s@"
-msgid "External submatches:\n"
-msgstr "Sous-correspondances externes :\n"
+#, c-format
+msgid "E60: Too many complex %s{...}s"
+msgstr "E60: Trop de %s{...}s complexes"
#, c-format
-msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (regexp NFA) %s ne peut pas tre rpt"
+msgid "E61: Nested %s*"
+msgstr "E61: %s* imbriqus"
-msgid ""
-"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
-"used "
-msgstr ""
-"E864: \\%#= peut tre suivi uniquement de 0, 1 ou 2. Le moteur automatique "
-"sera utilis "
+#, c-format
+msgid "E62: Nested %s%c"
+msgstr "E62: %s%c imbriqus"
-msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Moteur RE avec backtracking utilis pour le motif : "
+msgid "E50: Too many \\z("
+msgstr "E50: Trop de \\z("
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: Trop de %s("
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: Pas de correspondance pour \\z("
+
+msgid "E339: Pattern too long"
+msgstr "E339: Motif trop long"
+
+msgid "External submatches:\n"
+msgstr "Sous-correspondances externes :\n"
msgid "E865: (NFA) Regexp end encountered prematurely"
msgstr "E865: (NFA) Fin de regexp rencontre prmaturment"
@@ -5074,16 +4338,16 @@ msgid "E866: (NFA regexp) Misplaced %c"
msgstr "E866: (regexp NFA) %c au mauvais endroit"
#, c-format
-msgid "E877: (NFA regexp) Invalid character class: %ld"
-msgstr "E877: (regexp NFA) Classe de caractre invalide : %ld"
+msgid "E877: (NFA regexp) Invalid character class: %d"
+msgstr "E877: (regexp NFA) Classe de caractre invalide : %d"
+
+msgid "E951: \\% value too large"
+msgstr "E951: valeur \\% trop grande"
#, c-format
msgid "E867: (NFA) Unknown operator '\\z%c'"
msgstr "E867: (NFA) Oprateur inconnu '\\z%c'"
-msgid "E951: \\% value too large"
-msgstr "E951: valeur \\% trop grande"
-
#, c-format
msgid "E867: (NFA) Unknown operator '\\%%%c'"
msgstr "E867: (NFA) Oprateur inconnu '\\%%%c'"
@@ -5132,6 +4396,47 @@ msgid "E878: (NFA) Could not allocate memory for branch traversal!"
msgstr ""
"E878: (NFA) Impossible d'allouer la mmoire pour parcourir les branches !"
+msgid "E748: No previously used register"
+msgstr "E748: Aucun registre n'a t prcdemment utilis"
+
+#, c-format
+msgid "freeing %ld lines"
+msgstr "libration de %ld lignes"
+
+#, c-format
+msgid " into \"%c"
+msgstr " dans \"%c"
+
+#, c-format
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "bloc de %ld ligne copi%s"
+msgstr[1] "bloc de %ld lignes copi%s"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld ligne copie%s"
+msgstr[1] "%ld lignes copies%s"
+
+#, c-format
+msgid "E353: Nothing in register %s"
+msgstr "E353: Le registre %s est vide"
+
+msgid ""
+"\n"
+"Type Name Content"
+msgstr ""
+"\n"
+"Type nom Contenu"
+
+msgid ""
+"E883: search pattern and expression register may not contain two or more "
+"lines"
+msgstr ""
+"E883: le motif de recherche et le registre d'expression ne peuvent pas "
+"contenir deux lignes ou plus"
+
msgid " VREPLACE"
msgstr " VREMPLACEMENT"
@@ -5185,6 +4490,81 @@ msgid "recording"
msgstr "Enregistrement"
#, c-format
+msgid "Searching for \"%s\" in \"%s\""
+msgstr "Recherche de \"%s\" dans \"%s\""
+
+#, c-format
+msgid "Searching for \"%s\""
+msgstr "Recherche de \"%s\""
+
+#, c-format
+msgid "not found in '%s': \"%s\""
+msgstr "introuvable dans '%s' : \"%s\""
+
+msgid "Source Vim script"
+msgstr "Sourcer un script - Vim"
+
+#, c-format
+msgid "Cannot source a directory: \"%s\""
+msgstr "Impossible de sourcer un rpertoire : \"%s\""
+
+#, c-format
+msgid "could not source \"%s\""
+msgstr "impossible de sourcer \"%s\""
+
+#, c-format
+msgid "line %ld: could not source \"%s\""
+msgstr "ligne %ld : impossible de sourcer \"%s\""
+
+#, c-format
+msgid "sourcing \"%s\""
+msgstr "sourcement \"%s\""
+
+#, c-format
+msgid "line %ld: sourcing \"%s\""
+msgstr "ligne %ld : sourcement de \"%s\""
+
+#, c-format
+msgid "finished sourcing %s"
+msgstr "fin du sourcement de %s"
+
+# AB - Ce texte fait partie d'un message de dbogage.
+#, c-format
+msgid "continuing in %s"
+msgstr "de retour dans %s"
+
+msgid "modeline"
+msgstr "ligne de mode"
+
+msgid "--cmd argument"
+msgstr "argument --cmd"
+
+msgid "-c argument"
+msgstr "argument -c"
+
+msgid "environment variable"
+msgstr "variable d'environnement"
+
+msgid "error handler"
+msgstr "gestionnaire d'erreur"
+
+msgid "W15: Warning: Wrong line separator, ^M may be missing"
+msgstr "W15: Alerte : Sparateur de ligne erron, ^M possiblement manquant"
+
+msgid "E167: :scriptencoding used outside of a sourced file"
+msgstr "E167: :scriptencoding utilis en dehors d'un fichier sourc"
+
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion utilis en dehors d'un fichier sourc"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: scriptversion non support : %d"
+
+msgid "E168: :finish used outside of a sourced file"
+msgstr "E168: :finish utilis en dehors d'un fichier sourc"
+
+#, c-format
msgid "E383: Invalid search string: %s"
msgstr "E383: Chane de recherche invalide : %s"
@@ -5240,19 +4620,6 @@ msgstr "E388: Impossible de trouver la dfinition"
msgid "E389: Couldn't find pattern"
msgstr "E389: Impossible de trouver le motif"
-msgid "Substitute "
-msgstr "Substitue "
-
-#, c-format
-msgid ""
-"\n"
-"# Last %sSearch Pattern:\n"
-"~"
-msgstr ""
-"\n"
-"# Dernier motif de recherche %s :\n"
-"~"
-
msgid "E756: Spell checking is not enabled"
msgstr "E756: La vrification orthographique n'est pas active"
@@ -5271,22 +4638,6 @@ msgstr "E797: L'autocommande SpellFileMissing a effac le tampon"
msgid "Warning: region %s not supported"
msgstr "Alerte : rgion %s non supporte"
-msgid "Sorry, no suggestions"
-msgstr "Dsol, aucune suggestion"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "Dsol, seulement %ld suggestions"
-
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "Remplacer \"%.*s\" par :"
-
-# DB - todo : l'intrt de traduire ce message m'chappe.
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < \"%.*s\""
-
msgid "E752: No previous spell replacement"
msgstr "E752: Pas de suggestion orthographique prcdente"
@@ -5523,32 +4874,36 @@ msgid "Reading word file %s..."
msgstr "Lecture de la liste de mots %s..."
#, c-format
-msgid "Duplicate /encoding= line ignored in %s line %d: %s"
-msgstr "Ligne /encoding= en double ignore dans %s ligne %d : %s"
+msgid "Conversion failure for word in %s line %ld: %s"
+msgstr "chec de conversion du mot dans %s ligne %ld : %s"
#, c-format
-msgid "/encoding= line after word ignored in %s line %d: %s"
-msgstr "Ligne /encoding= aprs des mots ignore dans %s ligne %d : %s"
+msgid "Duplicate /encoding= line ignored in %s line %ld: %s"
+msgstr "Ligne /encoding= en double ignore dans %s ligne %ld : %s"
#, c-format
-msgid "Duplicate /regions= line ignored in %s line %d: %s"
-msgstr "Ligne /regions= en double ignore dans %s ligne %d : %s"
+msgid "/encoding= line after word ignored in %s line %ld: %s"
+msgstr "Ligne /encoding= aprs des mots ignore dans %s ligne %ld : %s"
#, c-format
-msgid "Too many regions in %s line %d: %s"
-msgstr "Trop de rgions dans %s ligne %d : %s"
+msgid "Duplicate /regions= line ignored in %s line %ld: %s"
+msgstr "Ligne /regions= en double ignore dans %s ligne %ld : %s"
#, c-format
-msgid "/ line ignored in %s line %d: %s"
-msgstr "Ligne / ignore dans %s ligne %d : %s"
+msgid "Too many regions in %s line %ld: %s"
+msgstr "Trop de rgions dans %s ligne %ld : %s"
#, c-format
-msgid "Invalid region nr in %s line %d: %s"
-msgstr "Numro de rgion invalide dans %s ligne %d : %s"
+msgid "/ line ignored in %s line %ld: %s"
+msgstr "Ligne / ignore dans %s ligne %ld : %s"
#, c-format
-msgid "Unrecognized flags in %s line %d: %s"
-msgstr "Drapeaux non reconnus dans %s ligne %d : %s"
+msgid "Invalid region nr in %s line %ld: %s"
+msgstr "Numro de rgion invalide dans %s ligne %ld : %s"
+
+#, c-format
+msgid "Unrecognized flags in %s line %ld: %s"
+msgstr "Drapeaux non reconnus dans %s ligne %ld : %s"
#, c-format
msgid "Ignored %d words with non-ASCII characters"
@@ -5558,8 +4913,8 @@ msgid "E845: Insufficient memory, word list will be incomplete"
msgstr "E845: mmoire insuffisante, liste de mots peut-tre incomplte"
#, c-format
-msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
-msgstr "%d noeuds compresss sur %d ; %d (%d%%) restants "
+msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining"
+msgstr "Compress %s : %ld/%ld noeuds ; %ld (%ld%%) restants"
msgid "Reading back spell file..."
msgstr "Relecture du fichier orthographique"
@@ -5624,6 +4979,26 @@ msgstr ""
msgid "E783: duplicate char in MAP entry"
msgstr "E783: caractre dupliqu dans l'entre MAP"
+msgid "Sorry, no suggestions"
+msgstr "Dsol, aucune suggestion"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "Dsol, seulement %ld suggestions"
+
+#, c-format
+msgid "Change \"%.*s\" to:"
+msgstr "Remplacer \"%.*s\" par :"
+
+# DB - todo : l'intrt de traduire ce message m'chappe.
+#, c-format
+msgid " < \"%.*s\""
+msgstr " < \"%.*s\""
+
+#, c-format
+msgid "E390: Illegal argument: %s"
+msgstr "E390: Argument invalide : %s"
+
msgid "No Syntax items defined for this buffer"
msgstr "Aucun lment de syntaxe dfini pour ce tampon"
@@ -5636,22 +5011,12 @@ msgstr "\"syntax conceal\" active"
msgid "syntax conceal off"
msgstr "\"syntax conceal\" dsactive"
-#, c-format
-msgid "E390: Illegal argument: %s"
-msgstr "E390: Argument invalide : %s"
-
msgid "syntax case ignore"
msgstr "syntaxe ignore la casse"
msgid "syntax case match"
msgstr "syntaxe respecte la casse"
-msgid "syntax spell toplevel"
-msgstr "contrle orthographique dans le texte sans groupe syntaxique"
-
-msgid "syntax spell notoplevel"
-msgstr "pas de contrle orthographique dans le texte sans groupe syntaxique"
-
msgid "syntax spell default"
msgstr ""
"contrle orthographique dans le texte sans groupe syntaxique, sauf si @Spell/"
@@ -5673,9 +5038,11 @@ msgstr "synchronisation sur les commentaires de type C"
msgid "no syncing"
msgstr "Aucune synchronisation"
-# DB - Les deux messages qui suivent vont ensemble.
+msgid "syncing starts at the first line"
+msgstr "la synchronisation dbute la premire ligne"
+
msgid "syncing starts "
-msgstr "La synchronisation dbute "
+msgstr "la synchronisation dbute "
msgid " lines before top line"
msgstr " lignes avant la ligne du haut"
@@ -5705,6 +5072,9 @@ msgstr ""
msgid "E392: No such syntax cluster: %s"
msgstr "E392: Aucune grappe de syntaxe %s"
+msgid "from the first line"
+msgstr " partir de la premire ligne"
+
msgid "minimal "
msgstr "minimum "
@@ -5744,7 +5114,7 @@ msgstr "E789: ']' manquant : %s"
#, c-format
msgid "E890: trailing char after ']': %s]%s"
-msgstr "E890: Caractre surnumraire aprs ']': %s]%s"
+msgstr "E890: Caractre surnumraire aprs ']' : %s]%s"
#, c-format
msgid "E398: Missing '=': %s"
@@ -5805,76 +5175,17 @@ msgid ""
msgstr ""
" TOTAL NOMBRE MATCH PLUS LENT MOYEN NOM MOTIF"
-msgid "E679: recursive loop loading syncolor.vim"
-msgstr "E679: boucle rcursive lors du chargement de syncolor.vim"
-
-#, c-format
-msgid "E411: highlight group not found: %s"
-msgstr "E411: groupe de surbrillance introuvable : %s"
-
-#, c-format
-msgid "E412: Not enough arguments: \":highlight link %s\""
-msgstr "E412: Trop peu d'arguments : \":highlight link %s\""
-
-#, c-format
-msgid "E413: Too many arguments: \":highlight link %s\""
-msgstr "E413: Trop d'arguments : \":highlight link %s\""
-
-msgid "E414: group has settings, highlight link ignored"
-msgstr "E414: le groupe a dj des attributs, lien de surbrillance ignor"
-
-#, c-format
-msgid "E415: unexpected equal sign: %s"
-msgstr "E415: signe gal inattendu : %s"
-
-#, c-format
-msgid "E416: missing equal sign: %s"
-msgstr "E416: '=' manquant : %s"
-
-#, c-format
-msgid "E417: missing argument: %s"
-msgstr "E417: argument manquant : %s"
-
-#, c-format
-msgid "E418: Illegal value: %s"
-msgstr "E418: Valeur invalide : %s"
-
-msgid "E419: FG color unknown"
-msgstr "E419: Couleur de premier plan inconnue"
-
-msgid "E420: BG color unknown"
-msgstr "E420: Couleur d'arrire-plan inconnue"
-
-#, c-format
-msgid "E421: Color name or number not recognized: %s"
-msgstr "E421: Nom ou numro de couleur non reconnu : %s"
-
-#, c-format
-msgid "E422: terminal code too long: %s"
-msgstr "E422: le code de terminal est trop long : %s"
-
-#, c-format
-msgid "E423: Illegal argument: %s"
-msgstr "E423: Argument invalide : %s"
-
-msgid "E424: Too many different highlighting attributes in use"
-msgstr ""
-"E424: Trop d'attributs de surbrillance diffrents en cours d'utilisation"
-
-msgid "E669: Unprintable character in group name"
-msgstr "E669: Caractre non-imprimable dans un nom de groupe"
-
-msgid "W18: Invalid character in group name"
-msgstr "W18: Caractre invalide dans un nom de groupe"
-
-msgid "E849: Too many highlight and syntax groups"
-msgstr "E849: Trop de groupes de surbrillance et de syntaxe"
-
msgid "E555: at bottom of tag stack"
-msgstr "E555: En bas de la pile de marqueurs"
+msgstr "E555: En bas de la pile des marqueurs"
msgid "E556: at top of tag stack"
-msgstr "E556: Au sommet de la pile de marqueurs"
+msgstr "E556: Au sommet de la pile des marqueurs"
+
+msgid "E986: cannot modify the tag stack within tagfunc"
+msgstr "E986: impossible de modifier la pile des marqueurs dans tagfunc"
+
+msgid "E987: invalid return value from tagfunc"
+msgstr "E987: tagfunc a retourn une valeur de retour invalide"
msgid "E425: Cannot go before first matching tag"
msgstr "E425: Impossible d'aller avant le premier marqueur correspondant"
@@ -5883,12 +5194,6 @@ msgstr "E425: Impossible d'aller avant le premier marqueur correspondant"
msgid "E426: tag not found: %s"
msgstr "E426: Marqueur introuvable : %s"
-msgid " # pri kind tag"
-msgstr " # pri type marqueur"
-
-msgid "file\n"
-msgstr "fichier\n"
-
msgid "E427: There is only one matching tag"
msgstr "E427: Il n'y a qu'un marqueur correspondant"
@@ -5913,6 +5218,12 @@ msgstr " Utilisation d'un marqueur avec une casse diffrente !"
msgid "E429: File \"%s\" does not exist"
msgstr "E429: Le fichier \"%s\" n'existe pas"
+msgid " # pri kind tag"
+msgstr " # pri type marqueur"
+
+msgid "file\n"
+msgstr "fichier\n"
+
msgid ""
"\n"
" # TO tag FROM line in file/text"
@@ -5928,9 +5239,6 @@ msgstr "Examen du fichier de marqueurs %s"
msgid "E430: Tag file path truncated for %s\n"
msgstr "E430: Chemin de fichiers de marqueurs tronqu pour %s\n"
-msgid "Ignoring long line in tags file"
-msgstr "Ignore longue ligne dans le fichier de marqueurs"
-
#, c-format
msgid "E431: Format error in tags file \"%s\""
msgstr "E431: Erreur de format dans le fichier de marqueurs \"%s\""
@@ -5946,6 +5254,9 @@ msgstr "E432: Le fichier de marqueurs %s n'est pas ordonn"
msgid "E433: No tags file"
msgstr "E433: Aucun fichier de marqueurs"
+msgid "Ignoring long line in tags file"
+msgstr "Ignore longue ligne dans le fichier de marqueurs"
+
msgid "E434: Can't find tag pattern"
msgstr "E434: Le motif de marqueur est introuvable"
@@ -5989,6 +5300,9 @@ msgstr ""
msgid "Cannot open $VIMRUNTIME/rgb.txt"
msgstr "Impossible d'ouvrir $VIMRUNTIME/rgb.txt"
+msgid "E279: Sorry, ++shell is not supported on this system"
+msgstr "E279: ++shell non support sur cet environnement"
+
#, c-format
msgid "Kill job in \"%s\"?"
msgstr "Terminer la tche d'excution dans \"%s\"?"
@@ -6082,7 +5396,7 @@ msgstr "E823: Ce n'est pas un fichier d'annulations : %s"
#, c-format
msgid "E832: Non-encrypted file has encrypted undo file: %s"
-msgstr "E832: Fichier non-chiffr a un fichier d'annulations chiffr : %s"
+msgstr "E832: Fichier non chiffr a un fichier d'annulations chiffr : %s"
#, c-format
msgid "E826: Undo file decryption failed: %s"
@@ -6153,12 +5467,6 @@ msgstr "Rien annuler"
msgid "number changes when saved"
msgstr "numro modif. instant enregistr"
-#, c-format
-msgid "%ld second ago"
-msgid_plural "%ld seconds ago"
-msgstr[0] "il y a %ld seconde"
-msgstr[1] "il y a %ld secondes"
-
msgid "E790: undojoin is not allowed after undo"
msgstr "E790: undojoin n'est pas autoris aprs une annulation"
@@ -6168,6 +5476,17 @@ msgstr "E439: la liste d'annulation est corrompue"
msgid "E440: undo line missing"
msgstr "E440: ligne d'annulation manquante"
+msgid ""
+"\n"
+" Name Args Address Complete Definition"
+msgstr ""
+"\n"
+" Nom Args Adresse Complet Dfinition"
+
+#, c-format
+msgid "E174: Command already exists: add ! to replace it: %s"
+msgstr "E174: La commande existe dj : ajoutez ! pour la redfinir : %s"
+
#, c-format
msgid "E122: Function %s already exists, add ! to replace it"
msgstr "E122: La fonction %s existe dj (ajoutez ! pour la remplacer)"
@@ -6190,6 +5509,11 @@ msgstr "E125: Argument invalide : %s"
msgid "E853: Duplicate argument name: %s"
msgstr "E853: Nom d'argument dupliqu : %s"
+msgid "E989: Non-default argument follows default argument"
+msgstr ""
+"E989: Argument sans valeur par dfaut ne peut pas suivre un argument avec "
+"valeur par dfaut"
+
#, c-format
msgid "E740: Too many arguments for function %s"
msgstr "E740: Trop d'arguments pour la fonction %s"
@@ -6228,16 +5552,8 @@ msgid "E699: Too many arguments"
msgstr "E699: Trop d'arguments"
#, c-format
-msgid "E117: Unknown function: %s"
-msgstr "E117: Fonction inconnue : %s"
-
-#, c-format
-msgid "E933: Function was deleted: %s"
-msgstr "E933: La fonction a t efface: %s"
-
-#, c-format
-msgid "E119: Not enough arguments for function: %s"
-msgstr "E119: La fonction %s n'a pas reu assez d'arguments"
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: Impossible d'utiliser une fonction comme mthode : %s"
#, c-format
msgid "E120: Using <SID> not in a script context: %s"
@@ -6261,6 +5577,9 @@ msgstr ""
"E884: Le nom de la fonction ne peut pas contenir le caractre deux-points : "
"%s"
+msgid "E454: function list was modified"
+msgstr "E454: la liste de fonctions a t modifie"
+
#, c-format
msgid "E123: Undefined function: %s"
msgstr "E123: Fonction non dfinie : %s"
@@ -6284,8 +5603,12 @@ msgid "E126: Missing :endfunction"
msgstr "E126: Il manque :endfunction"
#, c-format
+msgid "W1001: Text found after :enddef: %s"
+msgstr "W1001: Texte trouv aprs :enddef : %s"
+
+#, c-format
msgid "W22: Text found after :endfunction: %s"
-msgstr "W22: Texte trouv aprs :endfunction: %s"
+msgstr "W22: Texte trouv aprs :endfunction : %s"
#, c-format
msgid "E707: Function name conflicts with variable: %s"
@@ -6312,15 +5635,25 @@ msgid "E133: :return not inside a function"
msgstr "E133: :return en dehors d'une fonction"
#, c-format
-msgid "E107: Missing parentheses: %s"
-msgstr "E107: Parenthses manquantes : %s"
-
-#, c-format
msgid "%s (%s, compiled %s)"
msgstr "%s (%s, compil %s)"
msgid ""
"\n"
+"MS-Windows 64-bit GUI/console version"
+msgstr ""
+"\n"
+"Version interface graphique/console MS-Windows 64 bits"
+
+msgid ""
+"\n"
+"MS-Windows 32-bit GUI/console version"
+msgstr ""
+"\n"
+"Version interface graphique/console MS-Windows 32 bits"
+
+msgid ""
+"\n"
"MS-Windows 64-bit GUI version"
msgstr ""
"\n"
@@ -6454,18 +5787,15 @@ msgstr "avec interface graphique X11-neXtaw."
msgid "with X11-Athena GUI."
msgstr "avec interface graphique X11-Athena."
+msgid "with Haiku GUI."
+msgstr "avec interface graphique Haiku."
+
msgid "with Photon GUI."
msgstr "avec interface graphique Photon."
msgid "with GUI."
msgstr "avec une interface graphique."
-msgid "with Carbon GUI."
-msgstr "avec interface graphique Carbon."
-
-msgid "with Cocoa GUI."
-msgstr "avec interface graphique Cocoa."
-
msgid " Features included (+) or not (-):\n"
msgstr " Fonctionnalits incluses (+) ou non (-) :\n"
@@ -6476,16 +5806,16 @@ msgid " user vimrc file: \""
msgstr " fichier vimrc utilisateur : \""
msgid " 2nd user vimrc file: \""
-msgstr " 2me fichier vimrc utilisateur : \""
+msgstr " 2e fichier vimrc utilisateur : \""
msgid " 3rd user vimrc file: \""
-msgstr " 3me fichier vimrc utilisateur : \""
+msgstr " 3e fichier vimrc utilisateur : \""
msgid " user exrc file: \""
msgstr " fichier exrc utilisateur : \""
msgid " 2nd user exrc file: \""
-msgstr " 2me fichier exrc utilisateur : \""
+msgstr " 2e fichier exrc utilisateur : \""
msgid " system gvimrc file: \""
msgstr " fichier gvimrc systme : \""
@@ -6494,10 +5824,10 @@ msgid " user gvimrc file: \""
msgstr " fichier gvimrc utilisateur : \""
msgid "2nd user gvimrc file: \""
-msgstr "2me fichier gvimrc utilisateur : \""
+msgstr " 2e fichier gvimrc utilisateur : \""
msgid "3rd user gvimrc file: \""
-msgstr "3me fichier gvimrc utilisateur : \""
+msgstr " 3e fichier gvimrc utilisateur : \""
msgid " defaults file: \""
msgstr " fichier de valeurs par dfaut : \""
@@ -6598,6 +5928,87 @@ msgstr "tapez :help register<Entre> pour plus d'informations "
msgid "menu Help->Sponsor/Register for information "
msgstr "menu Aide->Sponsor/Enregistrement pour plus d'info"
+# DB - Messages et les suivants : fichier .viminfo.
+# Pas de majuscule ncessaire pour les messages d'aprs.
+#, c-format
+msgid ""
+"\n"
+"# %s History (newest to oldest):\n"
+msgstr ""
+"\n"
+"# Historique %s (chronologie dcroissante) :\n"
+
+msgid "Command Line"
+msgstr "ligne de commande"
+
+msgid "Search String"
+msgstr "chane de recherche"
+
+msgid "Expression"
+msgstr "expression"
+
+msgid "Input Line"
+msgstr "ligne de saisie"
+
+msgid "Debug Line"
+msgstr "Ligne de dbogage"
+
+# AB - Ne pas traduire le dollar.
+# AB - Ce message n'est volontairement pas traduit. En effet, il fait partie
+# d'un groupe de trois messages dans viminfo, dont deux ne sont pas soumis
+# internationalisation. J'attends que les deux autres messages soient
+# traduisibles pour traduire celui-ci.
+# DB - TODO : Qu'en est-il prsent ?
+msgid ""
+"\n"
+"# Last Substitute String:\n"
+"$"
+msgstr ""
+"\n"
+"# Dernires chanes de substitution :\n"
+"$"
+
+msgid "Illegal register name"
+msgstr "Nom de registre invalide"
+
+msgid ""
+"\n"
+"# Registers:\n"
+msgstr ""
+"\n"
+"# Registres :\n"
+
+#, c-format
+msgid "E574: Unknown register type %d"
+msgstr "E574: Type de registre %d inconnu"
+
+msgid ""
+"\n"
+"# History of marks within files (newest to oldest):\n"
+msgstr ""
+"\n"
+"# Historique des marques dans les fichiers (les plus rcentes en premier) :\n"
+
+msgid ""
+"\n"
+"# File marks:\n"
+msgstr ""
+"\n"
+"# Marques dans le fichier :\n"
+
+msgid ""
+"\n"
+"# Jumplist (newest first):\n"
+msgstr ""
+"\n"
+"# Liste de sauts (le plus rcent en premier) :\n"
+
+msgid "Missing '>'"
+msgstr "'>' manquant"
+
+msgid "E195: Cannot open viminfo file for reading"
+msgstr "E195: Impossible d'ouvrir le viminfo en lecture"
+
msgid "Already only one window"
msgstr "Il n'y a dj plus qu'une fentre"
@@ -6624,13 +6035,6 @@ msgstr ""
msgid "E445: Other window contains changes"
msgstr "E445: Les modifications de l'autre fentre n'ont pas t enregistres"
-msgid "E446: No file name under cursor"
-msgstr "E446: Aucun nom de fichier sous le curseur"
-
-#, c-format
-msgid "E447: Can't find file \"%s\" in path"
-msgstr "E447: Le fichier \"%s\" est introuvable dans 'path'"
-
#, c-format
msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E799: ID invalide : %ld (doit tre plus grand ou gal 1)"
@@ -6639,9 +6043,6 @@ msgstr "E799: ID invalide : %ld (doit tre plus grand ou gal 1)"
msgid "E801: ID already taken: %ld"
msgstr "E801: ID dj pris: %ld"
-msgid "List or number required"
-msgstr "Liste ou nombre requis"
-
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E802: ID invalide : %ld (doit tre plus grand ou gal 1)"
@@ -6691,7 +6092,356 @@ msgstr "Erreur de gvimext.dll"
msgid "Path length too long!"
msgstr "Le chemin est trop long !"
-# msgstr "--Pas de lignes dans le tampon--"
+#, c-format
+msgid "E121: Undefined variable: %s"
+msgstr "E121: Variable non dfinie : %s"
+
+#, c-format
+msgid "E121: Undefined variable: %c:%s"
+msgstr "E121: Variable non dfinie : %c:%s"
+
+msgid "E476: Invalid command"
+msgstr "E476: Commande invalide"
+
+#, c-format
+msgid "E476: Invalid command: %s"
+msgstr "E476: Commande invalide : %s"
+
+msgid "E710: List value has more items than targets"
+msgstr "E710: La Liste a plus d'lments que la destination"
+
+msgid "E711: List value does not have enough items"
+msgstr "E711: La Liste n'a pas assez d'lments"
+
+msgid "E719: Cannot slice a Dictionary"
+msgstr "E719: Utilisation de [:] impossible avec un Dictionnaire"
+
+msgid ""
+"E856: \"assert_fails()\" second argument must be a string or a list with one "
+"or two strings"
+msgstr ""
+"E856: le second argument d'\"assert_fails()\" doit tre une chane ou une "
+"liste avec une ou deux chanes"
+
+#, c-format
+msgid "E1100: Missing :var: %s"
+msgstr "E1100: Il manque :var: %s"
+
+#, c-format
+msgid "E1001: Variable not found: %s"
+msgstr "E1001: Variable introuvable: %s"
+
+#, c-format
+msgid "E1002: Syntax error at %s"
+msgstr "E1002: Erreur de syntaxe dans %s"
+
+msgid "E1003: Missing return value"
+msgstr "E1003: Valeur de retour manquante"
+
+#, c-format
+msgid "E1004: White space required before and after '%s'"
+msgstr "E1004: Espace requise avant et aprs '%s'"
+
+msgid "E1005: Too many argument types"
+msgstr "E1005: Trop de types d'arguments"
+
+#, c-format
+msgid "E1006: %s is used as an argument"
+msgstr "E1006: %s est utilis comme argument"
+
+msgid "E1007: Mandatory argument after optional argument"
+msgstr "E1007: Argument obligatoire aprs un argument optionnel"
+
+msgid "E1008: Missing <type>"
+msgstr "E1008: <type> manquant"
+
+msgid "E1009: Missing > after type"
+msgstr "E1009: Il manque > aprs type"
+
+#, c-format
+msgid "E1010: Type not recognized: %s"
+msgstr "E1010: Type non reconnu : %s"
+
+#, c-format
+msgid "E1011: Name too long: %s"
+msgstr "E1011: Nom trop long : %s"
+
+#, c-format
+msgid "E1012: Type mismatch; expected %s but got %s"
+msgstr "E1012: Type inconsistant ; attendu %s mais reu %s"
+
+#, c-format
+msgid "E1013: Argument %d: type mismatch, expected %s but got %s"
+msgstr "E1013: Argument %d : type inconsistant, attendu %s mais reu %s"
+
+#, c-format
+msgid "E1014: Invalid key: %s"
+msgstr "E1014: cl invalide : %s"
+
+#, c-format
+msgid "E1015: Name expected: %s"
+msgstr "E1015: Nom attendu : %s"
+
+#, c-format
+msgid "E1016: Cannot declare a %s variable: %s"
+msgstr "E1016: Impossible de dclarer variable %s : %s"
+
+#, c-format
+msgid "E1016: Cannot declare an environment variable: %s"
+msgstr "E1016: Impossible de dclarer une variable d'environnement : %s"
+
+#, c-format
+msgid "E1017: Variable already declared: %s"
+msgstr "E1017: Variable dj dclare : %s"
+
+#, c-format
+msgid "E1018: Cannot assign to a constant: %s"
+msgstr "E1018: Impossible d'assigner une constante : %s"
+
+msgid "E1019: Can only concatenate to string"
+msgstr "E1019: Seules les chanes peuvent tre concatnes"
+
+#, c-format
+msgid "E1020: Cannot use an operator on a new variable: %s"
+msgstr ""
+"E1020: Impossible d'utiliser un oprateur sur une nouvelle variable : %s"
+
+msgid "E1021: Const requires a value"
+msgstr "E1021: Const ncessite une valeur"
+
+msgid "E1022: Type or initialization required"
+msgstr "E1022: Type ou initialisation requis"
+
+#, c-format
+msgid "E1023: Using a Number as a Bool: %d"
+msgstr "E1023: Utilisation d'un Nombre comme un Boolen : %d"
+
+msgid "E1024: Using a Number as a String"
+msgstr "E1024: Utilisation d'un Nombre comme une Chane"
+
+msgid "E1025: Using } outside of a block scope"
+msgstr "E1025: Utilisation de } hors d'un bloc de porte"
+
+msgid "E1026: Missing }"
+msgstr "E1026: } manquant"
+
+msgid "E1027: Missing return statement"
+msgstr "E1027: commande 'return' manquante"
+
+msgid "E1028: Compiling :def function failed"
+msgstr "E1028: Compilation de function :def a chou"
+
+#, c-format
+msgid "E1029: Expected %s but got %s"
+msgstr "E1029: %s attendu mais %s reu"
+
+#, c-format
+msgid "E1030: Using a String as a Number: \"%s\""
+msgstr "E1030: Utilisation d'une Chane comme Nombre : \"%s\""
+
+msgid "E1031: Cannot use void value"
+msgstr "E1031: Impossible d'utiliser une valeur 'void'"
+
+msgid "E1032: Missing :catch or :finally"
+msgstr "E1032: :catch ou :finally manquant"
+
+#, c-format
+msgid "E1034: Cannot use reserved name %s"
+msgstr "E1034: Impossible d'utiliser le nom rserv %s"
+
+msgid "E1035: % requires number arguments"
+msgstr "E1035: % ncessite des arguments numriques"
+
+#, c-format
+msgid "E1036: %c requires number or float arguments"
+msgstr "E1036: %c ncessite des arguments numriques ou flottants"
+
+#, c-format
+msgid "E1037: Cannot use \"%s\" with %s"
+msgstr "E1037: Impossible d'utiliser \"%s\" avec %s"
+
+msgid "E1038: \"vim9script\" can only be used in a script"
+msgstr "E1038: \"vim9script\" ne peut tre utilis que dans un script"
+
+msgid "E1039: \"vim9script\" must be the first command in a script"
+msgstr "E1039: \"vim9script\" doit tre la premire commande dans un script"
+
+msgid "E1040: Cannot use :scriptversion after :vim9script"
+msgstr "E1040: Impossible d'utiliser :scriptversion aprs :vim9script"
+
+#, c-format
+msgid "E1041: Redefining script item %s"
+msgstr "E1041: Redfinition de l'lment de script %s"
+
+msgid "E1042: Export can only be used in vim9script"
+msgstr "E1042: Export ne peut tre utilis que dans vim9script"
+
+msgid "E1043: Invalid command after :export"
+msgstr "E1043: Commande invalide aprs :export"
+
+msgid "E1044: Export with invalid argument"
+msgstr "E1044: Export avec argument invalide"
+
+msgid "E1045: Missing \"as\" after *"
+msgstr "E1045: \"as\" manquant aprs *"
+
+msgid "E1046: Missing comma in import"
+msgstr "E1046: virgule manquante dans import"
+
+msgid "E1047: Syntax error in import"
+msgstr "E1047: Erreur de syntaxe dans import"
+
+#, c-format
+msgid "E1048: Item not found in script: %s"
+msgstr "E1048: lment non trouv dans le script : %s"
+
+#, c-format
+msgid "E1049: Item not exported in script: %s"
+msgstr "E1049: lment non export dans le script : %s"
+
+#, c-format
+msgid "E1052: Cannot declare an option: %s"
+msgstr "E1052: Impossible de dclarer un option : %s"
+
+#, c-format
+msgid "E1053: Could not import \"%s\""
+msgstr "E1053: Impossible d'importer \"%s\""
+
+#, c-format
+msgid "E1054: Variable already declared in the script: %s"
+msgstr "E1054: Variable dj dclare dans le script : %s"
+
+msgid "E1055: Missing name after ..."
+msgstr "E1055: Nom manquant aprs ..."
+
+#, c-format
+msgid "E1056: Expected a type: %s"
+msgstr "E1056: Type attendu : %s"
+
+msgid "E1057: Missing :enddef"
+msgstr "E1057: :enddef manquant"
+
+msgid "E1058: Function nesting too deep"
+msgstr "E1058: Fonctions trop imbriques"
+
+#, c-format
+msgid "E1059: No white space allowed before colon: %s"
+msgstr "E1059: Espace interdite avant les deux-points : %s"
+
+#, c-format
+msgid "E1060: Expected dot after name: %s"
+msgstr "E1060: point attendu aprs le nom : %s"
+
+#, c-format
+msgid "E1061: Cannot find function %s"
+msgstr "E1061: Impossible de trouver la fonction : %s"
+
+msgid "E1062: Cannot index a Number"
+msgstr "E1062: Impossible d'indexer un Nombre"
+
+msgid "E1063: Type mismatch for v: variable"
+msgstr "E1063: Type inconsistant pour la variable v:"
+
+#, c-format
+msgid "E1066: Cannot declare a register: %s"
+msgstr "E1066: Impossible dclarer un registre : %s"
+
+#, c-format
+msgid "E1067: Separator mismatch: %s"
+msgstr "E1067: Sparateur inconsistant : %s"
+
+#, c-format
+msgid "E1068: No white space allowed before '%s'"
+msgstr "E1068: Espace interdite avant '%s'"
+
+#, c-format
+msgid "E1069: White space required after '%s'"
+msgstr "E1069: Espace interdite aprs '%s'"
+
+msgid "E1070: Missing \"from\""
+msgstr "E1070: \"from\" manquant"
+
+msgid "E1071: Invalid string after \"from\""
+msgstr "E1071: Chane invalide aprs \"from\""
+
+#, c-format
+msgid "E1072: Cannot compare %s with %s"
+msgstr "E1072: Impossible de comparer %s avec %s"
+
+#, c-format
+msgid "E1073: Name already defined: %s"
+msgstr "E1073: Nom dj dfini : %s"
+
+msgid "E1074: No white space allowed after dot"
+msgstr "E1074: Espace interdite aprs un point"
+
+#, c-format
+msgid "E1084: Cannot delete Vim9 script function %s"
+msgstr "E1084: Impossible de supprimer la fonction %s du script vim9"
+
+msgid "E1086: Cannot use :function inside :def"
+msgstr "E1086: Impossible d'utiliser :function dans :def"
+
+msgid "E1119: Cannot change list item"
+msgstr "E1119: Impossible de changer un lment de liste"
+
+msgid "E1120: Cannot change dict"
+msgstr "E1120: Impossible de changer un dictionnaire"
+
+msgid "E1121: Cannot change dict item"
+msgstr "E1121: Impossible de changer un lment de dictionnaire"
+
+#, c-format
+msgid "E1122: Variable is locked: %s"
+msgstr "E1122: Variable verrouille : %s"
+
+#, c-format
+msgid "E1123: Missing comma before argument: %s"
+msgstr "E1123: Virgule manquante avant un argument : %s"
+
+msgid "E1127: Missing name after dot"
+msgstr "E1127: Nom manquant aprs un point"
+
+msgid "E1128: } without {"
+msgstr "E1128: } sans {"
+
+msgid "E1130: Cannot add to null list"
+msgstr "E1130: Impossible d'ajouter une liste nulle"
+
+msgid "E1131: Cannot add to null blob"
+msgstr "E1131: Impossible d'ajouter un Blob nul"
+
+msgid "E1132: Missing function argument"
+msgstr "E1132: Argument de fonction manquant"
+
+msgid "E1133: Cannot extend a null dict"
+msgstr "E1133: Impossible d'tendre un dictionnaire nul"
+
+#, c-format
+msgid "E1135: Using a String as a Bool: \"%s\""
+msgstr "E1135: Utilisation d'une Chane comme un Boolen : \"%s\""
+
+msgid "E1138: Using a Bool as a Number"
+msgstr "E1138: Utilisation d'un Boolen comme un Nombre"
+
+msgid "E1141: Indexable type required"
+msgstr "E1141: Type indexable requis"
+
+msgid "E1142: Non-empty string required"
+msgstr "E1142: Chane non vide requise"
+
+#, c-format
+msgid "E1143: Empty expression: \"%s\""
+msgstr "E1143: Expression vide : \"%s\""
+
+#, c-format
+msgid "E1146: Command not recognized: %s"
+msgstr "E1146: Commande non reconnue : %s"
+
+#, c-format
+msgid "E1148: Cannot index a %s"
+msgstr "E1148: Impossible d'indexer %s"
+
# DB - todo : ou encore : msgstr "--Aucune ligne dans le tampon--"
msgid "--No lines in buffer--"
msgstr "--Le tampon est vide--"
@@ -6717,9 +6467,21 @@ msgstr ""
msgid "E171: Missing :endif"
msgstr "E171: :endif manquant"
+msgid "E603: :catch without :try"
+msgstr "E603: :catch sans :try"
+
+msgid "E606: :finally without :try"
+msgstr "E606: :finally sans :try"
+
+msgid "E607: multiple :finally"
+msgstr "E607: Il ne peut y avoir qu'un seul :finally"
+
msgid "E600: Missing :endtry"
msgstr "E600: :endtry manquant"
+msgid "E602: :endtry without :try"
+msgstr "E602: :endtry sans :try"
+
msgid "E170: Missing :endwhile"
msgstr "E170: :endwhile manquant"
@@ -6760,9 +6522,6 @@ msgstr "E685: Erreur interne : %s"
msgid "Interrupted"
msgstr "Interrompu"
-msgid "E14: Invalid address"
-msgstr "E14: Adresse invalide"
-
msgid "E474: Invalid argument"
msgstr "E474: Argument invalide"
@@ -6771,6 +6530,10 @@ msgid "E475: Invalid argument: %s"
msgstr "E475: Argument invalide : %s"
#, c-format
+msgid "E983: Duplicate argument: %s"
+msgstr "E983: Argument dupliqu : %s"
+
+#, c-format
msgid "E475: Invalid value for argument %s"
msgstr "E475: Valeur d'argument invalide : %s"
@@ -6785,13 +6548,13 @@ msgstr "E15: Expression invalide : %s"
msgid "E16: Invalid range"
msgstr "E16: Plage invalide"
-msgid "E476: Invalid command"
-msgstr "E476: Commande invalide"
-
#, c-format
msgid "E17: \"%s\" is a directory"
msgstr "E17: \"%s\" est un rpertoire"
+msgid "E756: Spell checking is not possible"
+msgstr "E756: La vrification orthographique n'est pas possible"
+
#, c-format
msgid "E364: Library call failed for \"%s()\""
msgstr "E364: L'appel la bibliothque a chou pour \"%s()\""
@@ -6830,8 +6593,8 @@ msgstr "E25: L'interface graphique n'a pas t compile dans cette version"
msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
msgstr "E26: Le support de l'hbreu n'a pas t compil dans cette version\n"
-msgid "E27: Farsi cannot be used: Not enabled at compile time\n"
-msgstr "E27: Le support du farsi n'a pas t compil dans cette version\n"
+msgid "E27: Farsi support has been removed\n"
+msgstr "E27: support du farsi a t supprim\n"
msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
msgstr "E800: Le support de l'arabe n'a pas t compil dans cette version\n"
@@ -6938,6 +6701,9 @@ msgstr "E44: L'automate de regexp est corrompu"
msgid "E45: 'readonly' option is set (add ! to override)"
msgstr "E45: L'option 'readonly' est active (ajoutez ! pour passer outre)"
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: Impossible de modifier une variable existante"
+
#, c-format
msgid "E46: Cannot change read-only variable \"%s\""
msgstr "E46: La variable \"%s\" est en lecture seule"
@@ -7015,6 +6781,10 @@ msgstr "E77: Trop de noms de fichiers"
msgid "E488: Trailing characters"
msgstr "E488: Caractres surnumraires"
+#, c-format
+msgid "E488: Trailing characters: %s"
+msgstr "E488: Caractres surnumraires : %s"
+
msgid "E78: Unknown mark"
msgstr "E78: Marque inconnue"
@@ -7036,6 +6806,26 @@ msgstr "E939: Quantificateur positif requis"
msgid "E81: Using <SID> not in a script context"
msgstr "E81: <SID> utilis en dehors d'un script"
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: Parenthses manquantes : %s"
+
+#, c-format
+msgid "E720: Missing colon in Dictionary: %s"
+msgstr "E720: Il manque ':' dans le Dictionnaire %s"
+
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: Cl duplique dans le Dictionnaire : %s"
+
+#, c-format
+msgid "E722: Missing comma in Dictionary: %s"
+msgstr "E722: Il manque une virgule dans le Dictionnaire : %s"
+
+#, c-format
+msgid "E723: Missing end of Dictionary '}': %s"
+msgstr "E723: Il manque '}' la fin du Dictionnaire : %s"
+
msgid "E449: Invalid expression received"
msgstr "E449: Expression invalide reue"
@@ -7188,7 +6978,7 @@ msgid "list index out of range"
msgstr "index de liste hors limites"
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "erreur interne : accs un lment %d de liste a chou"
msgid "slice step cannot be zero"
@@ -7201,7 +6991,7 @@ msgstr ""
"dcoupage en tranche tendu "
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "erreur interne : pas d'lment %d de liste vim"
msgid "internal error: not enough list items"
@@ -7312,19 +7102,19 @@ msgstr "excution du code a chou"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: Eval n'a pas retourn un objet python valide"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: Conversion d'objet python une valeur de vim a chou"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "impossible de convertir %s un dictionnaire vim"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "impossible de convertir %s une liste de vim"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "impossible de convertir %s une structure de vim"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/ga.po b/src/nvim/po/ga.po
index bad01d592a..abbb9c6583 100644
--- a/src/nvim/po/ga.po
+++ b/src/nvim/po/ga.po
@@ -2806,9 +2806,6 @@ msgstr "vimOption anaithnid"
msgid "keyboard interrupt"
msgstr "idirbhriseadh marchlir"
-msgid "vim error"
-msgstr "earrid vim"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr "n fidir ord maolin/fuinneoige a chruth: rad scriosadh"
@@ -3132,8 +3129,8 @@ msgstr "-W <aschur>\tScrobh gach ord clscrofa sa chomhad <aschur>"
msgid "-x\t\t\tEdit encrypted files"
msgstr "-x\t\t\tCuir comhaid chriptithe in eagar"
-msgid "-display <display>\tConnect vim to this particular X-server"
-msgstr "-display <freastala>\tNasc vim leis an bhfreastala-X seo"
+msgid "-display <display>\tConnect Vim to this particular X-server"
+msgstr "-display <freastala>\tNasc Vim leis an bhfreastala-X seo"
msgid "-X\t\t\tDo not connect to X server"
msgstr "-X\t\t\tN naisc leis an bhfreastala X"
@@ -3215,11 +3212,11 @@ msgstr ""
"\n"
"Argint ar eolas do gvim (leagan Athena):\n"
-msgid "-display <display>\tRun vim on <display>"
-msgstr "-display <scilen>\tRith vim ar <scilen>"
+msgid "-display <display>\tRun Vim on <display>"
+msgstr "-display <scilen>\tRith Vim ar <scilen>"
-msgid "-iconic\t\tStart vim iconified"
-msgstr "-iconic\t\tTosaigh vim sa mhd oslaghdaithe"
+msgid "-iconic\t\tStart Vim iconified"
+msgstr "-iconic\t\tTosaigh Vim sa mhd oslaghdaithe"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
msgstr "-background <dath>\tBain sid as <dath> don chlra (-bg fosta)"
@@ -3270,8 +3267,8 @@ msgstr ""
"\n"
"Argint ar eolas do gvim (leagan GTK+):\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
-msgstr "-display <scilen>\tRith vim ar <scilen> (fosta: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
+msgstr "-display <scilen>\tRith Vim ar <scilen> (fosta: --display)"
msgid "--role <role>\tSet a unique role to identify the main window"
msgstr "--role <rl>\tSocraigh rl sainiil chun an phromhfhuinneog a aithint"
@@ -4375,8 +4372,6 @@ msgstr "E538: Gan tacaocht luiche"
msgid "E540: Unclosed expression sequence"
msgstr "E540: Seicheamh gan dnadh"
-msgid "E541: too many items"
-msgstr "E541: an iomarca mreanna"
msgid "E542: unbalanced groups"
msgstr "E542: grpa neamhchothromaithe"
@@ -6408,8 +6403,8 @@ msgstr "E799: Aitheantas neamhbhail: %ld (n mr d a bheith >= 1)"
msgid "E801: ID already taken: %ld"
msgstr "E801: Aitheantas in sid cheana: %ld"
-msgid "List or number required"
-msgstr "T g le liosta n uimhir"
+msgid "E290: List or number required"
+msgstr "E290: T g le liosta n uimhir"
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
@@ -6952,7 +6947,7 @@ msgstr "innacs liosta as raon"
#. No more suitable format specifications in python-2.3
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "earrid inmhenach: nl aon fhil ar mhr %d sa liosta vim"
msgid "slice step cannot be zero"
@@ -6963,7 +6958,7 @@ msgid "attempt to assign sequence of size greater than %d to extended slice"
msgstr "iarracht ar sheicheamh nos m n %d a shannadh do shlisne fadaithe"
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "earrid inmhenach: nl aon mhr %d sa liosta vim"
msgid "internal error: not enough list items"
@@ -7072,19 +7067,19 @@ msgstr "norbh fhidir an cd a chur ar sil"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: N bhfuarthas rad bail python ar ais Eval"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: Norbh fhidir luach vim a dhanamh as an rad python"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "n fidir foclir vim a dhanamh as %s"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "n fidir liosta vim a dhanamh as %s"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "n fidir struchtr vim a dhanamh as %s"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/ja.euc-jp.po b/src/nvim/po/ja.euc-jp.po
index e2cf68f016..5dda7c59f5 100644
--- a/src/nvim/po/ja.euc-jp.po
+++ b/src/nvim/po/ja.euc-jp.po
@@ -1,4 +1,3 @@
-
# Japanese translation for Vim
#
# Do ":help uganda" in Vim to read copying and usage conditions.
@@ -58,8 +57,9 @@ msgstr "E83: ХåեǤʤΤǡ¾ΤѤޤ..."
msgid "E931: Buffer cannot be registered"
msgstr "E931: ХåեϿǤޤ"
-msgid "E937: Attempt to delete a buffer that is in use"
-msgstr "E937: ΥХåե褦Ȼߤޤ"
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: ΥХåե褦Ȼߤޤ: %s"
msgid "E515: No buffers were unloaded"
msgstr "E515: 줿ХåեϤޤ"
@@ -248,6 +248,9 @@ msgstr "E904: call 3ܤΰϥꥹȷǤʤФʤޤ"
msgid "E905: received unknown command: %s"
msgstr "E905: ̤ΤΥޥɤޤ: %s"
+msgid "E906: not an open channel"
+msgstr "E906: ƤʤͥǤ"
+
#, c-format
msgid "E630: %s(): write while not connected"
msgstr "E630: %s(): ³֤ǽ񤭹ߤޤ"
@@ -264,9 +267,6 @@ msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
msgstr ""
"E912: raw nl ⡼ɤΥͥ ch_evalexpr()/ch_sendexpr() ϻȤޤ"
-msgid "E906: not an open channel"
-msgstr "E906: ƤʤͥǤ"
-
msgid "E920: _io file requires _name to be set"
msgstr "E920: _io ե _name ꤬ɬפǤ"
@@ -476,24 +476,12 @@ msgstr "%d ܤγ"
msgid "E18: Unexpected characters in :let"
msgstr "E18: ͽʸ :let ˤޤ"
-#, c-format
-msgid "E121: Undefined variable: %s"
-msgstr "E121: ̤ѿǤ: %s"
-
msgid "E111: Missing ']'"
msgstr "E111: ']' Ĥޤ"
msgid "E719: Cannot use [:] with a Dictionary"
msgstr "E719: [:] 򼭽񷿤Ȥ߹碌ƤϻȤޤ"
-#, c-format
-msgid "E734: Wrong variable type for %s="
-msgstr "E734: ۤʤäѿǤ %s="
-
-#, c-format
-msgid "E461: Illegal variable name: %s"
-msgstr "E461: ѿ̾Ǥ: %s"
-
msgid "E806: using Float as a String"
msgstr "E806: ưʸȤưäƤޤ"
@@ -548,6 +536,9 @@ msgstr "E804: '%' ưȤ߹碌ƤϻȤޤ"
msgid "E110: Missing ')'"
msgstr "E110: ')' Ĥޤ"
+msgid "E260: Missing name after ->"
+msgstr "E260: -> θ̾ޤ"
+
msgid "E695: Cannot index a Funcref"
msgstr "E695: ؿȷϥǥåǤޤ"
@@ -683,25 +674,13 @@ msgstr "E736: 񷿤ˤ̵Ǥ"
msgid "E694: Invalid operation for Funcrefs"
msgstr "E694: ؿȷˤ̵Ǥ"
-msgid "map() argument"
-msgstr "map() ΰ"
-
-msgid "filter() argument"
-msgstr "filter() ΰ"
-
#, c-format
msgid "E686: Argument of %s must be a List"
msgstr "E686: %s ΰϥꥹȷǤʤФʤޤ"
-msgid "E928: String required"
-msgstr "E928: ʸɬפǤ"
-
msgid "E808: Number or Float required"
msgstr "E808: ͤưɬפǤ"
-msgid "add() argument"
-msgstr "add() ΰ"
-
msgid "E785: complete() can only be used in Insert mode"
msgstr "E785: complete() ⡼ɤǤѤǤޤ"
@@ -709,11 +688,6 @@ msgid "&Ok"
msgstr "&Ok"
#, c-format
-msgid "+-%s%3ld line: "
-msgid_plural "+-%s%3ld lines: "
-msgstr[0] "+-%s%3ld : "
-
-#, c-format
msgid "E700: Unknown function: %s"
msgstr "E700: ̤ΤδؿǤ: %s"
@@ -733,15 +707,9 @@ msgstr ""
msgid "called inputrestore() more often than inputsave()"
msgstr "inputrestore() inputsave() ¿ƤФޤ"
-msgid "insert() argument"
-msgstr "insert() ΰ"
-
msgid "E786: Range not allowed"
msgstr "E786: ϰϻϵĤƤޤ"
-msgid "E916: not a valid job"
-msgstr "E916: ͭʥ֤ǤϤޤ"
-
msgid "E701: Invalid type for len()"
msgstr "E701: len() ˤ̵ʷǤ"
@@ -774,35 +742,13 @@ msgstr "E941: СϤǤ˳ϤƤޤ"
msgid "E942: +clientserver feature not available"
msgstr "E942: +clientserver ǽ̵ˤʤäƤޤ"
-msgid "remove() argument"
-msgstr "remove() ΰ"
-
# Added at 10-Mar-2004.
msgid "E655: Too many symbolic links (cycle?)"
msgstr "E655: ܥå󥯤¿᤮ޤ (۴ĤƤǽޤ)"
-msgid "reverse() argument"
-msgstr "reverse() ΰ"
-
msgid "E258: Unable to send to client"
msgstr "E258: 饤Ȥ뤳ȤǤޤ"
-#, c-format
-msgid "E927: Invalid action: '%s'"
-msgstr "E927: ̵Ǥ: %s"
-
-msgid "sort() argument"
-msgstr "sort() ΰ"
-
-msgid "uniq() argument"
-msgstr "uniq() ΰ"
-
-msgid "E702: Sort compare function failed"
-msgstr "E702: ȤӴؿԤޤ"
-
-msgid "E882: Uniq compare function failed"
-msgstr "E882: Uniq ӴؿԤޤ"
-
msgid "(Invalid)"
msgstr "(̵)"
@@ -810,9 +756,6 @@ msgstr "(̵)"
msgid "E935: invalid submatch number: %d"
msgstr "E935: ̵ʥ֥ޥåֹ: %d"
-msgid "E677: Error writing temp file"
-msgstr "E677: ե˥顼ȯޤ"
-
msgid "E921: Invalid callback argument"
msgstr "E921: ̵ʥХåǤ"
@@ -860,73 +803,6 @@ msgstr "E135: *ե륿* autocommandϸߤΥХåեѹƤϤޤ"
msgid "[No write since last change]\n"
msgstr "[Ǹѹ¸Ƥޤ]\n"
-#, c-format
-msgid "%sviminfo: %s in line: "
-msgstr "%sviminfo: %s : "
-
-msgid "E136: viminfo: Too many errors, skipping rest of file"
-msgstr "E136: viminfo: 顼¿᤮Τǡʹߤϥåפޤ"
-
-#, c-format
-msgid "Reading viminfo file \"%s\"%s%s%s"
-msgstr "viminfoե \"%s\"%s%s%s ɹ"
-
-msgid " info"
-msgstr " "
-
-msgid " marks"
-msgstr " ޡ"
-
-msgid " oldfiles"
-msgstr " ե뷲"
-
-msgid " FAILED"
-msgstr " "
-
-#, c-format
-msgid "E137: Viminfo file is not writable: %s"
-msgstr "E137: viminfoե뤬ߤǤޤ: %s"
-
-#, c-format
-msgid "E929: Too many viminfo temp files, like %s!"
-msgstr "E929: viminfoե뤬¿᤮ޤ! : %s"
-
-#, c-format
-msgid "E138: Can't write viminfo file %s!"
-msgstr "E138: viminfoե %s ¸Ǥޤ!"
-
-#, c-format
-msgid "Writing viminfo file \"%s\""
-msgstr "viminfoե \"%s\" "
-
-#, c-format
-msgid "E886: Can't rename viminfo file to %s!"
-msgstr "E886: viminfoե %s ̾ѹǤޤ!"
-
-#, c-format
-msgid "# This viminfo file was generated by Vim %s.\n"
-msgstr "# viminfo ե Vim %s ˤäޤ.\n"
-
-msgid ""
-"# You may edit it if you're careful!\n"
-"\n"
-msgstr ""
-"# ѹݤˤϽʬդƤ!\n"
-"\n"
-
-msgid "# Value of 'encoding' when this file was written\n"
-msgstr "# Υե뤬񤫤줿 'encoding' \n"
-
-msgid "Illegal starting char"
-msgstr "ƬʸǤ"
-
-msgid ""
-"\n"
-"# Bar lines, copied verbatim:\n"
-msgstr ""
-"\n"
-"# '|' ǻϤޤԤΡʸ̤Υԡ:\n"
-
msgid "Save As"
msgstr "̾¸"
@@ -942,7 +818,7 @@ msgstr "¸Υե \"%s\" 񤭤ޤ?"
#, c-format
msgid "Swap file \"%s\" exists, overwrite anyway?"
-msgstr "åץե \"%s\" ¸ߤޤ. 񤭤ޤ?"
+msgstr "åץե \"%s\" ¸ߤޤ񤭤ޤ?"
#, c-format
msgid "E768: Swap file exists: %s (:silent! overrides)"
@@ -1032,15 +908,6 @@ msgstr "ѥƤιԤǸĤޤ: %s"
msgid "Pattern not found: %s"
msgstr "ѥϸĤޤǤ: %s"
-msgid ""
-"\n"
-"# Last Substitute String:\n"
-"$"
-msgstr ""
-"\n"
-"# Ǹִ줿ʸ:\n"
-"$"
-
msgid "E478: Don't panic!"
msgstr "E478: ƤʤǤ"
@@ -1207,18 +1074,6 @@ msgid "E666: compiler not supported: %s"
msgstr "E666: ΥѥˤбƤޤ: %s"
#, c-format
-msgid "Searching for \"%s\" in \"%s\""
-msgstr "\"%s\" \"%s\" 鸡"
-
-#, c-format
-msgid "Searching for \"%s\""
-msgstr "\"%s\" 򸡺"
-
-#, c-format
-msgid "not found in '%s': \"%s\""
-msgstr "'%s' ˤϤޤ: \"%s\""
-
-#, c-format
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
msgstr "W20: ׵ᤵ줿python 2.xбƤޤ󡢥ե̵뤷ޤ: %s"
@@ -1226,61 +1081,6 @@ msgstr "W20: ׵ᤵ줿python 2.xбƤޤ󡢥ե̵뤷ޤ: %s"
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
msgstr "W21: ׵ᤵ줿python 3.xбƤޤ󡢥ե̵뤷ޤ: %s"
-msgid "Source Vim script"
-msgstr "VimץȤμ"
-
-#, c-format
-msgid "Cannot source a directory: \"%s\""
-msgstr "ǥ쥯ȥϼޤ: \"%s\""
-
-#, c-format
-msgid "could not source \"%s\""
-msgstr "\"%s\" ޤ"
-
-#, c-format
-msgid "line %ld: could not source \"%s\""
-msgstr " %ld: \"%s\" ޤ"
-
-#, c-format
-msgid "sourcing \"%s\""
-msgstr "\"%s\" "
-
-#, c-format
-msgid "line %ld: sourcing \"%s\""
-msgstr " %ld: %s "
-
-#, c-format
-msgid "finished sourcing %s"
-msgstr "%s μλ"
-
-#, c-format
-msgid "continuing in %s"
-msgstr "%s μ¹Ԥ³Ǥ"
-
-msgid "modeline"
-msgstr "⡼ɹ"
-
-msgid "--cmd argument"
-msgstr "--cmd "
-
-msgid "-c argument"
-msgstr "-c "
-
-msgid "environment variable"
-msgstr "Ķѿ"
-
-msgid "error handler"
-msgstr "顼ϥɥ"
-
-msgid "W15: Warning: Wrong line separator, ^M may be missing"
-msgstr "W15: ٹ: ԶڤǤ. ^M ʤΤǤ礦"
-
-msgid "E167: :scriptencoding used outside of a sourced file"
-msgstr "E167: :scriptencoding ץȰʳǻѤޤ"
-
-msgid "E168: :finish used outside of a sourced file"
-msgstr "E168: :finish ץȰʳǻѤޤ"
-
#, c-format
msgid "Current %slanguage: \"%s\""
msgstr "ߤ %s: \"%s\""
@@ -1471,15 +1271,6 @@ msgstr "E930: execute() Ǥ :redir ϻȤޤ"
msgid "Save Redirection"
msgstr "쥯Ȥ¸ޤ"
-msgid "Save View"
-msgstr "ӥ塼¸ޤ"
-
-msgid "Save Session"
-msgstr "å¸ޤ"
-
-msgid "Save Setup"
-msgstr "¸ޤ"
-
#, c-format
msgid "E739: Cannot create directory: %s"
msgstr "E739: ǥ쥯ȥǤޤ: %s"
@@ -1527,9 +1318,6 @@ msgstr ""
msgid "E500: Evaluates to an empty string"
msgstr "E500: ʸȤɾޤ"
-msgid "E195: Cannot open viminfo file for reading"
-msgstr "E195: viminfoեɹѤȤƳޤ"
-
msgid "Untitled"
msgstr "̵"
@@ -1643,15 +1431,6 @@ msgstr "E788: ߤ¾ΥХåեԽ뤳Ȥϵޤ"
msgid "E811: Not allowed to change buffer information now"
msgstr "E811: ߤϥХåեѹ뤳Ȥϵޤ"
-msgid "tagname"
-msgstr "̾"
-
-msgid " kind file\n"
-msgstr " ե\n"
-
-msgid "'history' option is zero"
-msgstr "ץ 'history' Ǥ"
-
#, c-format
msgid ""
"\n"
@@ -1922,12 +1701,6 @@ msgstr "[noeol]"
msgid "[Incomplete last line]"
msgstr "[ǽԤԴ]"
-msgid "WARNING: The file has been changed since reading it!!!"
-msgstr "ٹ: ɹ˥եѹޤ!!!"
-
-msgid "Do you really want to write to it"
-msgstr "˾񤭤ޤ"
-
#, c-format
msgid "E208: Error writing to \"%s\""
msgstr "E208: \"%s\" Υ顼Ǥ"
@@ -2079,31 +1852,6 @@ msgstr "E222: ɹХåեɲ"
msgid "E223: recursive mapping"
msgstr "E223: ƵŪޥåԥ"
-#, c-format
-msgid "E224: global abbreviation already exists for %s"
-msgstr "E224: %s ȤХûϤϴ¸ߤޤ"
-
-#, c-format
-msgid "E225: global mapping already exists for %s"
-msgstr "E225: %s ȤХޥåԥ󥰤ϴ¸ߤޤ"
-
-#, c-format
-msgid "E226: abbreviation already exists for %s"
-msgstr "E226: %s ȤûϤϴ¸ߤޤ"
-
-#, c-format
-msgid "E227: mapping already exists for %s"
-msgstr "E227: %s Ȥޥåԥ󥰤ϴ¸ߤޤ"
-
-msgid "No abbreviation found"
-msgstr "ûϤϸĤޤǤ"
-
-msgid "No mapping found"
-msgstr "ޥåԥ󥰤ϸĤޤǤ"
-
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: ʥ⡼"
-
msgid "E851: Failed to create a new process for the GUI"
msgstr "E851: GUIѤΥץεư˼Ԥޤ"
@@ -2156,7 +1904,7 @@ msgid "Cancel"
msgstr "󥻥"
msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
-msgstr "С: ǤޤǤ."
+msgstr "С: ǤޤǤ"
msgid "Vim dialog"
msgstr "Vim "
@@ -2437,14 +2185,16 @@ msgid "E621: \"%s\" resource file has wrong version"
msgstr "E621: ꥽ե \"%s\" ϥС󤬰ۤʤޤ"
msgid "E673: Incompatible multi-byte encoding and character set."
-msgstr "E673: ߴ̵ޥХȥ󥳡ǥ󥰤ʸåȤǤ"
+msgstr "E673: ߴ̵ޥХȥ󥳡ǥ󥰤ʸåȤǤ"
msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
-msgstr "E674: ޥХȥ󥳡ǥ󥰤Ǥ printmbcharset ˤǤޤ"
+msgstr ""
+"E674: ޥХȥ󥳡ǥ󥰤Ǥ printmbcharset ˤǤޤ"
msgid "E675: No default font specified for multi-byte printing."
msgstr ""
-"E675: ޥХʸ뤿ΥǥեȥեȤꤵƤޤ"
+"E675: ޥХʸ뤿ΥǥեȥեȤꤵƤޤ"
+""
msgid "E324: Can't open PostScript output file"
msgstr "E324: PostScriptѤΥե򳫤ޤ"
@@ -2474,7 +2224,27 @@ msgid "E365: Failed to print PostScript file"
msgstr "E365: PostScriptեΰ˼Ԥޤ"
msgid "Print job sent."
-msgstr "֤ޤ."
+msgstr "֤ޤ"
+
+#, c-format
+msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E799: ̵ ID: %d (1 ʾǤʤФʤޤ)"
+
+#, c-format
+msgid "E801: ID already taken: %d"
+msgstr "E801: ID ϤǤǤ: %d"
+
+#, c-format
+msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E802: ̵ ID: %d (1 ʾǤʤФʤޤ)"
+
+#, c-format
+msgid "E803: ID not found: %d"
+msgstr "E803: ID Ϥޤ: %d"
+
+#, c-format
+msgid "E798: ID is reserved for \":match\": %d"
+msgstr "E798: ID \":match\" Τͽ󤵤Ƥޤ: %d"
msgid "Add a new database"
msgstr "ǡ١ɲ"
@@ -2640,7 +2410,7 @@ msgid " # pid database name prepend path\n"
msgstr " # pid ǡ١̾ prepend ѥ\n"
msgid "Lua library cannot be loaded."
-msgstr "Lua饤֥ɤǤޤ."
+msgstr "Lua饤֥ɤǤޤ"
msgid "cannot save undo information"
msgstr "ɥ¸Ǥޤ"
@@ -2648,14 +2418,14 @@ msgstr "ɥ¸Ǥޤ"
msgid ""
"E815: Sorry, this command is disabled, the MzScheme libraries could not be "
"loaded."
-msgstr "E815: Υޥɤ̵Ǥ. MzScheme 饤֥ɤǤޤ."
+msgstr "E815: Υޥɤ̵ǤMzScheme 饤֥ɤǤޤ"
msgid ""
"E895: Sorry, this command is disabled, the MzScheme's racket/base module "
"could not be loaded."
msgstr ""
-"E895: Υޥɤ̵Ǥʤ. MzScheme racket/base ⥸塼"
-"뤬ɤǤޤǤ."
+"E895: Υޥɤ̵ǤʤMzScheme racket/base ⥸塼"
+"뤬ɤǤޤǤ"
msgid "invalid expression"
msgstr "̵ʼǤ"
@@ -2729,14 +2499,14 @@ msgid ""
"loaded."
msgstr ""
"E263: Υޥɤ̵Ǥʤ: Python饤֥ɤǤޤ"
-"Ǥ."
+"Ǥ"
msgid ""
"E887: Sorry, this command is disabled, the Python's site module could not be "
"loaded."
msgstr ""
-"E887: Υޥɤ̵Ǥʤ. Python site ⥸塼"
-"ǤޤǤ."
+"E887: Υޥɤ̵ǤʤPython site ⥸塼"
+"ǤޤǤ"
# Added at 07-Feb-2004.
msgid "E659: Cannot invoke Python recursively"
@@ -2752,7 +2522,7 @@ msgid ""
"E266: Sorry, this command is disabled, the Ruby library could not be loaded."
msgstr ""
"E266: Υޥɤ̵Ǥʤ: Ruby饤֥ɤǤޤ"
-"Ǥ."
+"Ǥ"
msgid "E267: unexpected return"
msgstr "E267: ͽ return Ǥ"
@@ -2810,9 +2580,6 @@ msgstr "̤Τ vimOption Ǥ"
msgid "keyboard interrupt"
msgstr "ܡɳ"
-msgid "vim error"
-msgstr "vim 顼"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr ""
"Хåե/ɥޥɤǤޤ: ֥ȤõƤ"
@@ -2838,7 +2605,7 @@ msgid ""
"E571: Sorry, this command is disabled: the Tcl library could not be loaded."
msgstr ""
"E571: Υޥɤ̵Ǥʤ: Tcl饤֥ɤǤޤ"
-"."
+""
#, c-format
msgid "E572: exit code %d"
@@ -2865,6 +2632,10 @@ msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: JSON˽ʣޤ: \"%s\""
#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: %s ΰϥꥹȷޤBlobǤʤФʤޤ"
+
+#, c-format
msgid "E696: Missing comma in List: %s"
msgstr "E696: ꥹȷ˥ޤޤ: %s"
@@ -2901,7 +2672,7 @@ msgid "'-nb' cannot be used: not enabled at compile time\n"
msgstr "'-nb' ԲǽǤ: ѥ̵ˤƤޤ\n"
msgid "This Vim was not compiled with the diff feature."
-msgstr "Vimˤdiffǽޤ(ѥ)."
+msgstr "Vimˤdiffǽޤ(ѥ)"
msgid "Attempt to open script file again: \""
msgstr "ץȥեƤӳȤޤ: \""
@@ -3129,7 +2900,7 @@ msgstr "-W <scriptout>\tϤޥɤե <scriptout> ¸"
msgid "-x\t\t\tEdit encrypted files"
msgstr "-x\t\t\tŹ沽줿եԽ"
-msgid "-display <display>\tConnect vim to this particular X-server"
+msgid "-display <display>\tConnect Vim to this particular X-server"
msgstr "-display <display>\tvimꤷ X С³"
msgid "-X\t\t\tDo not connect to X server"
@@ -3204,10 +2975,10 @@ msgstr ""
"\n"
"gvimˤäƲᤵ(AthenaС):\n"
-msgid "-display <display>\tRun vim on <display>"
+msgid "-display <display>\tRun Vim on <display>"
msgstr "-display <display>\t<display> vim¹Ԥ"
-msgid "-iconic\t\tStart vim iconified"
+msgid "-iconic\t\tStart Vim iconified"
msgstr "-iconic\t\tǾ֤vimư"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
@@ -3254,8 +3025,8 @@ msgstr ""
"\n"
"gvimˤäƲᤵ(GTK+С):\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
-msgstr "-display <display>\t<display> vim¹Ԥ(Ʊ: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
+msgstr "-display <display>\t<display> Vim¹Ԥ(Ʊ: --display)"
msgid "--role <role>\tSet a unique role to identify the main window"
msgstr "--role <role>\tᥤ󥦥ɥ̤դ(role)ꤹ"
@@ -3279,7 +3050,7 @@ msgid ": Send failed.\n"
msgstr ": ˼Ԥޤ.\n"
msgid ": Send failed. Trying to execute locally\n"
-msgstr ": ˼Ԥޤ. Ǥμ¹ԤߤƤޤ\n"
+msgstr ": ˼ԤޤǤμ¹ԤߤƤޤ\n"
#, c-format
msgid "%d of %d edited"
@@ -3291,6 +3062,39 @@ msgstr "ǥץ쥤ޤ: ˼Ԥޤ.\n"
msgid ": Send expression failed.\n"
msgstr ": ˼Ԥޤ.\n"
+#, c-format
+msgid "E224: global abbreviation already exists for %s"
+msgstr "E224: %s ȤХûϤϴ¸ߤޤ"
+
+#, c-format
+msgid "E225: global mapping already exists for %s"
+msgstr "E225: %s ȤХޥåԥ󥰤ϴ¸ߤޤ"
+
+#, c-format
+msgid "E226: abbreviation already exists for %s"
+msgstr "E226: %s ȤûϤϴ¸ߤޤ"
+
+#, c-format
+msgid "E227: mapping already exists for %s"
+msgstr "E227: %s Ȥޥåԥ󥰤ϴ¸ߤޤ"
+
+msgid "No abbreviation found"
+msgstr "ûϤϸĤޤǤ"
+
+msgid "No mapping found"
+msgstr "ޥåԥ󥰤ϸĤޤǤ"
+
+msgid "E228: makemap: Illegal mode"
+msgstr "E228: makemap: ʥ⡼"
+
+#, c-format
+msgid "E357: 'langmap': Matching character missing for %s"
+msgstr "E357: 'langmap': %s бʸޤ"
+
+#, c-format
+msgid "E358: 'langmap': Extra characters after semicolon: %s"
+msgstr "E358: 'langmap': ߥθ;ʬʸޤ: %s"
+
msgid "No marks set"
msgstr "ޡꤵƤޤ"
@@ -3426,7 +3230,7 @@ msgid ""
"Maybe no changes were made or Vim did not update the swap file."
msgstr ""
"\n"
-"餯ѹƤʤVimåץե򹹿Ƥޤ."
+"餯ѹƤʤVimåץե򹹿Ƥޤ"
msgid " cannot be used with this version of Vim.\n"
msgstr " VimΤΥСǤϻѤǤޤ.\n"
@@ -3449,7 +3253,7 @@ msgid ""
"or the file has been damaged."
msgstr ""
",\n"
-"⤷ϥե뤬»Ƥޤ."
+"⤷ϥե뤬»Ƥޤ"
#, c-format
msgid ""
@@ -3487,7 +3291,7 @@ msgid ""
"enter the new crypt key."
msgstr ""
"\n"
-"Ź業ϤƤ."
+"Ź業ϤƤ"
msgid ""
"\n"
@@ -3501,7 +3305,7 @@ msgid ""
"to use the same key for text file and swap file"
msgstr ""
"\n"
-"åץեƱŹ業Ȥenter򲡤Ƥ."
+"åץեƱŹ業Ȥenter򲡤Ƥ"
#, c-format
msgid "E309: Unable to read block 1 from %s"
@@ -3547,7 +3351,7 @@ msgid "See \":help E312\" for more information."
msgstr "ܺ٤ \":help E312\" 򻲾ȤƤ"
msgid "Recovery completed. You should check if everything is OK."
-msgstr "ꥫХ꤬λޤ. ƤåƤ."
+msgstr "ꥫХ꤬λޤƤåƤ"
msgid ""
"\n"
@@ -3560,7 +3364,7 @@ msgid "and run diff with the original file to check for changes)"
msgstr "ܥեȤ diff ¹ԤɤǤ礦)"
msgid "Recovery completed. Buffer contents equals file contents."
-msgstr "λ. ХåեƤϥեƱˤʤޤ."
+msgstr "λХåեƤϥեƱˤʤޤ"
msgid ""
"\n"
@@ -3589,6 +3393,9 @@ msgstr " ǥ쥯ȥ "
msgid " -- none --\n"
msgstr " -- ʤ --\n"
+msgid "%a %b %d %H:%M:%S %Y"
+msgstr "%Y/%m/%d (%a) %H:%M:%S"
+
msgid " owned by: "
msgstr " ͭ: "
@@ -3681,8 +3488,8 @@ msgid "E315: ml_get: invalid lnum: %ld"
msgstr "E315: ml_get: ̵lnumǤ: %ld"
#, c-format
-msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get: %ld 򸫤Ĥޤ"
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get: %ld Хåե %d %s ˸Ĥޤ"
msgid "E317: pointer block id wrong 3"
msgstr "E317: ݥ󥿥֥åIDְäƤޤ 3"
@@ -3750,10 +3557,10 @@ msgid ""
" file when making changes. Quit, or continue with caution.\n"
msgstr ""
"\n"
-"(1) ̤ΥץबƱեԽƤ뤫⤷ޤ.\n"
+"(1) ̤ΥץबƱեԽƤ뤫⤷ޤ\n"
" ξˤϡѹ򤷤Ƥޤ1ĤΥեФưۤʤ2Ĥ\n"
-" 󥹥󥹤ǤƤޤΤǡʤ褦˵ĤƤ.\n"
-" λ뤫դʤ³Ƥ.\n"
+" 󥹥󥹤ǤƤޤΤǡʤ褦˵ĤƤ\n"
+" λ뤫դʤ³Ƥ\n"
msgid "(2) An edit session for this file crashed.\n"
msgstr "(2) ΥեԽå󤬥å夷.\n"
@@ -3924,18 +3731,6 @@ msgstr ""
"(&D)\n"
"󥻥(&C)"
-msgid "Select Directory dialog"
-msgstr "ǥ쥯ȥ"
-
-msgid "Save File dialog"
-msgstr "ե¸"
-
-msgid "Open File dialog"
-msgstr "եɹ"
-
-msgid "E338: Sorry, no file browser in console mode"
-msgstr "E338: 󥽡⡼ɤǤϥե֥饦Ȥޤ󡢤ʤ"
-
msgid "E766: Insufficient arguments for printf()"
msgstr "E766: printf() ΰԽʬǤ"
@@ -3945,9 +3740,6 @@ msgstr "E807: printf() ΰˤưԤƤޤ"
msgid "E767: Too many arguments to printf()"
msgstr "E767: printf() ΰ¿᤮ޤ"
-msgid "W10: Warning: Changing a readonly file"
-msgstr "W10: ٹ: ɹѥեѹޤ"
-
msgid "Type number and <Enter> or click with mouse (empty cancels): "
msgstr ""
"ֹ<Enter>Ϥ뤫ޥǥåƤ (ǥ󥻥): "
@@ -3975,6 +3767,11 @@ msgstr " (ޤޤ)"
msgid "Beep!"
msgstr "ӡ!"
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "%ld ÷вᤷƤޤ"
+
msgid "ERROR: "
msgstr "顼: "
@@ -3994,12 +3791,8 @@ msgstr ""
"[ƽ] re/malloc() %lu, free() %lu\n"
"\n"
-msgid "E340: Line is becoming too long"
-msgstr "E340: ԤĹʤ᤮ޤ"
-
-#, c-format
-msgid "E341: Internal error: lalloc(%ld, )"
-msgstr "E341: 顼: lalloc(%ld,)"
+msgid "E341: Internal error: lalloc(0, )"
+msgstr "E341: 顼: lalloc(0, )"
#, c-format
msgid "E342: Out of memory! (allocating %lu bytes)"
@@ -4073,12 +3866,6 @@ msgstr "E505: %s ɹѤǤ (ˤ ! ɲ)"
msgid "E349: No identifier under cursor"
msgstr "E349: ΰ֤ˤϼ̻Ҥޤ"
-msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: 'operatorfunc' ץ󤬶Ǥ"
-
-msgid "E775: Eval feature not available"
-msgstr "E775: ɾǽ̵ˤʤäƤޤ"
-
msgid "Warning: terminal cannot highlight"
msgstr "ٹ: ѤƤüϥϥ饤ȤǤޤ"
@@ -4129,9 +3916,6 @@ msgstr "1 Ԥ򥤥ǥȤޤ "
msgid "%ld lines indented "
msgstr "%ld Ԥ򥤥ǥȤޤ "
-msgid "E748: No previously used register"
-msgstr "E748: ޤ쥸ѤƤޤ"
-
msgid "cannot yank; delete anyway"
msgstr "󥯤Ǥޤ; Ȥˤõ"
@@ -4143,14 +3927,6 @@ msgid "%ld lines changed"
msgstr "%ld Ԥѹޤ"
#, c-format
-msgid "freeing %ld lines"
-msgstr "%ld Ԥ"
-
-#, c-format
-msgid " into \"%c"
-msgstr " \"%c "
-
-#, c-format
msgid "block of 1 line yanked%s"
msgstr "1 ԤΥ֥å%s󥯤ޤ"
@@ -4166,10 +3942,6 @@ msgstr "%ld ԤΥ֥å%s󥯤ޤ"
msgid "%ld lines yanked%s"
msgstr "%ld Ԥ%s󥯤ޤ"
-#, c-format
-msgid "E353: Nothing in register %s"
-msgstr "E353: 쥸 %s ˤϲ⤢ޤ"
-
msgid ""
"\n"
"--- Registers ---"
@@ -4191,11 +3963,6 @@ msgstr ""
msgid "E574: Unknown register type %d"
msgstr "E574: ̤ΤΥ쥸 %d Ǥ"
-msgid ""
-"E883: search pattern and expression register may not contain two or more "
-"lines"
-msgstr "E883: ѥȼ쥸ˤ2԰ʾޤޤ"
-
#, c-format
msgid "%ld Cols; "
msgstr "%ld ; "
@@ -4227,8 +3994,11 @@ msgstr ""
msgid "(+%lld for BOM)"
msgstr "(+%lld for BOM)"
-msgid "Thanks for flying Vim"
-msgstr "Vim ȤäƤƤ꤬Ȥ"
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' ץ󤬶Ǥ"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: ɾǽ̵ˤʤäƤޤ"
msgid "E518: Unknown option"
msgstr "E518: ̤ΤΥץǤ"
@@ -4239,6 +4009,9 @@ msgstr "E519: ץϥݡȤƤޤ"
msgid "E520: Not allowed in a modeline"
msgstr "E520: modeline ǤϵĤޤ"
+msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
+msgstr "E992: 'modelineexpr' դλ modeline ǤϵĤޤ"
+
msgid "E846: Key code not set"
msgstr "E846: ɤꤵƤޤ"
@@ -4248,6 +4021,66 @@ msgstr "E521: = θˤϿɬפǤ"
msgid "E522: Not found in termcap"
msgstr "E522: termcap ˸Ĥޤ"
+msgid "E946: Cannot make a terminal with running job modifiable"
+msgstr "E946: ¹Υ֤üѹǽˤǤޤ"
+
+msgid "E590: A preview window already exists"
+msgstr "E590: ץӥ塼ɥ¸ߤޤ"
+
+msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
+msgstr ""
+"W17: ӥʸˤUTF-8ɬפʤΤǡ':set encoding=utf-8' Ƥ"
+
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: 24bitϤδĶǤϥݡȤƤޤ"
+
+#, c-format
+msgid "E593: Need at least %d lines"
+msgstr "E593: %d ιԿɬפǤ"
+
+#, c-format
+msgid "E594: Need at least %d columns"
+msgstr "E594: %d ΥɬפǤ"
+
+#, c-format
+msgid "E355: Unknown option: %s"
+msgstr "E355: ̤ΤΥץǤ: %s"
+
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: ɬפǤ: &%s = '%s'"
+
+msgid ""
+"\n"
+"--- Terminal codes ---"
+msgstr ""
+"\n"
+"--- ü ---"
+
+msgid ""
+"\n"
+"--- Global option values ---"
+msgstr ""
+"\n"
+"--- Х륪ץ ---"
+
+msgid ""
+"\n"
+"--- Local option values ---"
+msgstr ""
+"\n"
+"--- 륪ץ ---"
+
+msgid ""
+"\n"
+"--- Options ---"
+msgstr ""
+"\n"
+"--- ץ ---"
+
+msgid "E356: get_varp ERROR"
+msgstr "E356: get_varp 顼"
+
#, c-format
msgid "E539: Illegal character <%s>"
msgstr "E539: ʸǤ <%s>"
@@ -4256,6 +4089,13 @@ msgstr "E539: ʸǤ <%s>"
msgid "For option %s"
msgstr "ץ: %s"
+msgid "E540: Unclosed expression sequence"
+msgstr "E540: λƤޤ"
+
+
+msgid "E542: unbalanced groups"
+msgstr "E542: 롼פ礤ޤ"
+
msgid "E529: Cannot set 'term' to empty string"
msgstr "E529: 'term' ˤ϶ʸǤޤ"
@@ -4326,86 +4166,6 @@ msgstr "E536: ޤɬפǤ"
msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' ϶Ǥ뤫 %s ޤɬפޤ"
-msgid "E538: No mouse support"
-msgstr "E538: ޥϥݡȤޤ"
-
-msgid "E540: Unclosed expression sequence"
-msgstr "E540: λƤޤ"
-
-msgid "E541: too many items"
-msgstr "E541: Ǥ¿᤮ޤ"
-
-msgid "E542: unbalanced groups"
-msgstr "E542: 롼פ礤ޤ"
-
-msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr "E946: ¹Υ֤üѹǽˤǤޤ"
-
-msgid "E590: A preview window already exists"
-msgstr "E590: ץӥ塼ɥ¸ߤޤ"
-
-msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr ""
-"W17: ӥʸˤUTF-8ɬפʤΤǡ':set encoding=utf-8' Ƥ"
-
-msgid "E954: 24-bit colors are not supported on this environment"
-msgstr "E954: 24bitϤδĶǤϥݡȤƤޤ"
-
-#, c-format
-msgid "E593: Need at least %d lines"
-msgstr "E593: %d ιԿɬפǤ"
-
-#, c-format
-msgid "E594: Need at least %d columns"
-msgstr "E594: %d ΥɬפǤ"
-
-#, c-format
-msgid "E355: Unknown option: %s"
-msgstr "E355: ̤ΤΥץǤ: %s"
-
-#, c-format
-msgid "E521: Number required: &%s = '%s'"
-msgstr "E521: ɬפǤ: &%s = '%s'"
-
-msgid ""
-"\n"
-"--- Terminal codes ---"
-msgstr ""
-"\n"
-"--- ü ---"
-
-msgid ""
-"\n"
-"--- Global option values ---"
-msgstr ""
-"\n"
-"--- Х륪ץ ---"
-
-msgid ""
-"\n"
-"--- Local option values ---"
-msgstr ""
-"\n"
-"--- 륪ץ ---"
-
-msgid ""
-"\n"
-"--- Options ---"
-msgstr ""
-"\n"
-"--- ץ ---"
-
-msgid "E356: get_varp ERROR"
-msgstr "E356: get_varp 顼"
-
-#, c-format
-msgid "E357: 'langmap': Matching character missing for %s"
-msgstr "E357: 'langmap': %s бʸޤ"
-
-#, c-format
-msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: 'langmap': ߥθ;ʬʸޤ: %s"
-
msgid "cannot open "
msgstr "ޤ "
@@ -4448,7 +4208,7 @@ msgid " returned\n"
msgstr " ޤ\n"
msgid "ANCHOR_BUF_SIZE too small."
-msgstr "ANCHOR_BUF_SIZE ᤮ޤ."
+msgstr "ANCHOR_BUF_SIZE ᤮ޤ"
msgid "I/O ERROR"
msgstr "ϥ顼"
@@ -4498,6 +4258,10 @@ msgstr ""
"\n"
"Vim: X Υ顼򸡽Фޤr\n"
+#, c-format
+msgid "restoring display %s"
+msgstr "ǥץ쥤 %s Ƥޤ"
+
msgid "Testing the X display failed"
msgstr "X display Υå˼Ԥޤ"
@@ -4524,7 +4288,7 @@ msgstr "ƥƥ %s %s Ǥޤ"
#, c-format
msgid "Could not get security context %s for %s. Removing it!"
-msgstr "ƥƥ %s %s Ǥޤ. ޤ!"
+msgstr "ƥƥ %s %s Ǥޤ󡣺ޤ!"
msgid ""
"\n"
@@ -4755,37 +4519,26 @@ msgstr "E70: %s%%[] Ǥ"
msgid "E956: Cannot use pattern recursively"
msgstr "E956: ѥƵŪ˻ȤȤϤǤޤ"
-msgid "E65: Illegal back reference"
-msgstr "E65: ʸȤǤ"
-
-msgid "E339: Pattern too long"
-msgstr "E339: ѥĹ᤮ޤ"
-
-msgid "E50: Too many \\z("
-msgstr "E50: \\z( ¿᤮ޤ"
-
#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: %s( ¿᤮ޤ"
-
-msgid "E52: Unmatched \\z("
-msgstr "E52: \\z( äƤޤ"
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: %s{...} ʸˡ顼ޤ"
#, c-format
-msgid "E59: invalid character after %s@"
-msgstr "E59: %s@ θʸޤ"
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA ɽ) ֤ޤ %s"
-#, c-format
-msgid "E60: Too many complex %s{...}s"
-msgstr "E60: ʣ %s{...} ¿᤮ޤ"
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: \\%#= ˤ 0, 1 ⤷ 2 Τߤ³ޤɽ󥸥ϼư"
+"򤵤ޤ"
-#, c-format
-msgid "E61: Nested %s*"
-msgstr "E61:%s* ҤˤʤäƤޤ"
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Υѥ˥Хåȥå RE 󥸥ŬѤޤ: "
-#, c-format
-msgid "E62: Nested %s%c"
-msgstr "E62:%s%c ҤˤʤäƤޤ"
+msgid "E65: Illegal back reference"
+msgstr "E65: ʸȤǤ"
msgid "E63: invalid use of \\_"
msgstr "E63: \\_ ̵ʻˡǤ"
@@ -4806,25 +4559,36 @@ msgid "E71: Invalid character after %s%%"
msgstr "E71: %s%% θʸޤ"
#, c-format
-msgid "E554: Syntax error in %s{...}"
-msgstr "E554: %s{...} ʸˡ顼ޤ"
+msgid "E59: invalid character after %s@"
+msgstr "E59: %s@ θʸޤ"
-msgid "External submatches:\n"
-msgstr "ʬ:\n"
+#, c-format
+msgid "E60: Too many complex %s{...}s"
+msgstr "E60: ʣ %s{...} ¿᤮ޤ"
#, c-format
-msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA ɽ) ֤ޤ %s"
+msgid "E61: Nested %s*"
+msgstr "E61:%s* ҤˤʤäƤޤ"
-msgid ""
-"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
-"used "
-msgstr ""
-"E864: \\%#= ˤ 0, 1 ⤷ 2 Τߤ³ޤɽ󥸥ϼư"
-"򤵤ޤ"
+#, c-format
+msgid "E62: Nested %s%c"
+msgstr "E62:%s%c ҤˤʤäƤޤ"
-msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Υѥ˥Хåȥå RE 󥸥ŬѤޤ: "
+msgid "E50: Too many \\z("
+msgstr "E50: \\z( ¿᤮ޤ"
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: %s( ¿᤮ޤ"
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: \\z( äƤޤ"
+
+msgid "E339: Pattern too long"
+msgstr "E339: ѥĹ᤮ޤ"
+
+msgid "External submatches:\n"
+msgstr "ʬ:\n"
msgid "E865: (NFA) Regexp end encountered prematurely"
msgstr "E865: (NFA) Ԥ᤯ɽνüãޤ"
@@ -4891,6 +4655,23 @@ msgstr "E876: (NFA ɽ) NFAΤ¸ˤ϶ڡ­ޤ"
msgid "E878: (NFA) Could not allocate memory for branch traversal!"
msgstr "E878: (NFA) ߲Υ֥˽ʬʥƤޤ!"
+#, c-format
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "%ld ԤΥ֥å%s󥯤ޤ"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld Ԥ%s󥯤ޤ"
+
+msgid ""
+"\n"
+"Type Name Content"
+msgstr ""
+"\n"
+" ̾ "
+
msgid " VREPLACE"
msgstr " ִ"
@@ -4942,6 +4723,13 @@ msgstr " "
msgid "recording"
msgstr "Ͽ"
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion ץȰʳǻѤޤ"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: scriptversion ϥݡȤƤޤ: %d"
+
#, c-format
msgid "E383: Invalid search string: %s"
msgstr "E383: ̵ʸʸǤ: %s"
@@ -5031,21 +4819,6 @@ msgstr "E797: autocommand SpellFileMissing Хåեޤ"
msgid "Warning: region %s not supported"
msgstr "ٹ9: %s ȤϰϤϥݡȤƤޤ"
-msgid "Sorry, no suggestions"
-msgstr "ǰǤϤޤ"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "ǰǤ %ld Ĥޤ"
-
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "\"%.*s\" 򼡤Ѵ:"
-
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < \"%.*s\""
-
msgid "E752: No previous spell replacement"
msgstr "E752: ڥִޤ¹ԤƤޤ"
@@ -5152,7 +4925,7 @@ msgstr ""
#, c-format
msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
-msgstr "COMPOUNDRULES ͤ˸꤬ޤ. ե %s %d : %s"
+msgstr "COMPOUNDRULES ͤ˸꤬ޤե %s %d : %s"
#, c-format
msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
@@ -5548,70 +5321,6 @@ msgid ""
msgstr ""
" TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN"
-msgid "E679: recursive loop loading syncolor.vim"
-msgstr "E679: syncolor.vim κƵƤӽФ򸡽Фޤ"
-
-#, c-format
-msgid "E411: highlight group not found: %s"
-msgstr "E411: ϥ饤ȥ롼פĤޤ: %s"
-
-#, c-format
-msgid "E412: Not enough arguments: \":highlight link %s\""
-msgstr "E412: ʬǤϤʤ: \":highlight link %s\""
-
-#, c-format
-msgid "E413: Too many arguments: \":highlight link %s\""
-msgstr "E413: ¿᤮ޤ: \":highlight link %s\""
-
-msgid "E414: group has settings, highlight link ignored"
-msgstr "E414: 롼פꤵƤΤǥϥ饤ȥ󥯤̵뤵ޤ"
-
-#, c-format
-msgid "E415: unexpected equal sign: %s"
-msgstr "E415: ͽǤ: %s"
-
-#, c-format
-msgid "E416: missing equal sign: %s"
-msgstr "E416: 椬ޤ: %s"
-
-#, c-format
-msgid "E417: missing argument: %s"
-msgstr "E417: ޤ: %s"
-
-#, c-format
-msgid "E418: Illegal value: %s"
-msgstr "E418: ͤǤ: %s"
-
-msgid "E419: FG color unknown"
-msgstr "E419: ̤ΤʿǤ"
-
-msgid "E420: BG color unknown"
-msgstr "E420: ̤ΤطʿǤ"
-
-#, c-format
-msgid "E421: Color name or number not recognized: %s"
-msgstr "E421: 顼ֹ̾ǧǤޤ: %s"
-
-#, c-format
-msgid "E422: terminal code too long: %s"
-msgstr "E422: üɤĹ᤮ޤ: %s"
-
-#, c-format
-msgid "E423: Illegal argument: %s"
-msgstr "E423: ʰǤ: %s"
-
-msgid "E424: Too many different highlighting attributes in use"
-msgstr "E424: ¿ΰۤʤϥ饤°Ȥ᤮Ƥޤ"
-
-msgid "E669: Unprintable character in group name"
-msgstr "E669: 롼̾˰Բǽʸޤ"
-
-msgid "W18: Invalid character in group name"
-msgstr "W18: 롼̾ʸޤ"
-
-msgid "E849: Too many highlight and syntax groups"
-msgstr "E849: ϥ饤Ȥȹʸ롼פ¿᤮ޤ"
-
msgid "E555: at bottom of tag stack"
msgstr "E555: åǤ"
@@ -5699,7 +5408,7 @@ msgid "Duplicate field name: %s"
msgstr "ʣե̾: %s"
msgid "' not known. Available builtin terminals are:"
-msgstr "' ̤ΤǤ. ԤȤ߹üϼΤȤǤ:"
+msgstr "' ̤ΤǤԤȤ߹üϼΤȤǤ:"
msgid "defaulting to '"
msgstr "άͤ򼡤Τ褦ꤷޤ '"
@@ -5922,6 +5631,9 @@ msgstr "E125: ʰǤ: %s"
msgid "E853: Duplicate argument name: %s"
msgstr "E853: ̾ʣƤޤ: %s"
+msgid "E989: Non-default argument follows default argument"
+msgstr "E989: ǥեȰǥեȰθˤޤ"
+
#, c-format
msgid "E740: Too many arguments for function %s"
msgstr "E740: ؿΰ¿᤮ޤ: %s"
@@ -5957,6 +5669,10 @@ msgid "E117: Unknown function: %s"
msgstr "E117: ̤ΤδؿǤ: %s"
#, c-format
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: ؿ᥽åɤȤƻѤǤޤ: %s"
+
+#, c-format
msgid "E933: Function was deleted: %s"
msgstr "E933: ؿϺޤ: %s"
@@ -6025,10 +5741,6 @@ msgid "E133: :return not inside a function"
msgstr "E133: ؿ :return ޤ"
#, c-format
-msgid "E107: Missing parentheses: %s"
-msgstr "E107: å '(' ޤ: %s"
-
-#, c-format
msgid "%s (%s, compiled %s)"
msgstr "%s (%s, compiled %s)"
@@ -6344,9 +6056,6 @@ msgstr "E799: ̵ ID: %ld (1 ʾǤʤФʤޤ)"
msgid "E801: ID already taken: %ld"
msgstr "E801: ID ϤǤǤ: %ld"
-msgid "List or number required"
-msgstr "ꥹȤͤɬפǤ"
-
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E802: ̵ ID: %ld (1 ʾǤʤФʤޤ)"
@@ -6447,9 +6156,6 @@ msgstr "E685: 顼Ǥ: %s"
msgid "Interrupted"
msgstr "ޤޤ"
-msgid "E14: Invalid address"
-msgstr "E14: ̵ʥɥ쥹Ǥ"
-
msgid "E474: Invalid argument"
msgstr "E474: ̵ʰǤ"
@@ -6624,6 +6330,9 @@ msgstr "E44: ɽץǤ"
msgid "E45: 'readonly' option is set (add ! to override)"
msgstr "E45: 'readonly' ץꤵƤޤ (! ɲäǾ)"
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: ¸ѿѹǤޤ"
+
#, c-format
msgid "E46: Cannot change read-only variable \"%s\""
msgstr "E46: ɼѿ \"%s\" ˤͤǤޤ"
@@ -6720,6 +6429,10 @@ msgstr "E939: ΥȤɬפǤ"
msgid "E81: Using <SID> not in a script context"
msgstr "E81: ץȰʳ<SID>Ȥޤ"
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: å '(' ޤ: %s"
+
msgid "E449: Invalid expression received"
msgstr "E449: ̵ʼޤ"
@@ -6863,7 +6576,7 @@ msgid "list index out of range"
msgstr "ꥹϰϳΥǥåǤ"
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "顼: vimΥꥹ %d μ˼Ԥޤ"
msgid "slice step cannot be zero"
@@ -6874,7 +6587,7 @@ msgid "attempt to assign sequence of size greater than %d to extended slice"
msgstr "Ĺ %d γĥ饤ˡĹ饤Ƥ褦Ȥޤ"
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "顼: vimΥꥹ %d Ϥޤ"
msgid "internal error: not enough list items"
@@ -6983,19 +6696,19 @@ msgstr "ɤμ¹Ԥ˼Ԥޤ"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: ɾͭpython֥Ȥ֤ޤǤ"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: ֤줿python֥ȤvimͤѴǤޤǤ"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "%s vimμ񷿤ѴǤޤ"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "%s vimΥꥹȤѴǤޤ"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "%s vimι¤ΤѴǤޤ"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/ja.po b/src/nvim/po/ja.po
index 85a45cd171..a169bd3589 100644
--- a/src/nvim/po/ja.po
+++ b/src/nvim/po/ja.po
@@ -1,4 +1,3 @@
-
# Japanese translation for Vim
#
# Do ":help uganda" in Vim to read copying and usage conditions.
@@ -58,8 +57,9 @@ msgstr "E83: バッファを作成できないので、他のを使用します.
msgid "E931: Buffer cannot be registered"
msgstr "E931: バッファを登録できません"
-msgid "E937: Attempt to delete a buffer that is in use"
-msgstr "E937: 使用中のバッファを削除しようと試みました"
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: 使用中のバッファを削除しようと試みました: %s"
msgid "E515: No buffers were unloaded"
msgstr "E515: 解放されたバッファはありません"
@@ -248,6 +248,9 @@ msgstr "E904: call の3番目の引数はリスト型でなければなりませ
msgid "E905: received unknown command: %s"
msgstr "E905: 未知のコマンドを受信しました: %s"
+msgid "E906: not an open channel"
+msgstr "E906: 開いていないチャネルです"
+
#, c-format
msgid "E630: %s(): write while not connected"
msgstr "E630: %s(): 非接続状態で書き込みました"
@@ -264,9 +267,6 @@ msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
msgstr ""
"E912: raw や nl モードのチャネルに ch_evalexpr()/ch_sendexpr() は使えません"
-msgid "E906: not an open channel"
-msgstr "E906: 開いていないチャネルです"
-
msgid "E920: _io file requires _name to be set"
msgstr "E920: _io ファイルは _name の設定が必要です"
@@ -476,24 +476,12 @@ msgstr "%d 番目の該当"
msgid "E18: Unexpected characters in :let"
msgstr "E18: 予期せぬ文字が :let にありました"
-#, c-format
-msgid "E121: Undefined variable: %s"
-msgstr "E121: 未定義の変数です: %s"
-
msgid "E111: Missing ']'"
msgstr "E111: ']' が見つかりません"
msgid "E719: Cannot use [:] with a Dictionary"
msgstr "E719: [:] を辞書型と組み合わせては使えません"
-#, c-format
-msgid "E734: Wrong variable type for %s="
-msgstr "E734: 異なった型の変数です %s="
-
-#, c-format
-msgid "E461: Illegal variable name: %s"
-msgstr "E461: 不正な変数名です: %s"
-
msgid "E806: using Float as a String"
msgstr "E806: 浮動小数点数を文字列として扱っています"
@@ -548,6 +536,9 @@ msgstr "E804: '%' を浮動小数点数と組み合わせては使えません"
msgid "E110: Missing ')'"
msgstr "E110: ')' が見つかりません"
+msgid "E260: Missing name after ->"
+msgstr "E260: -> の後に名前がありません"
+
msgid "E695: Cannot index a Funcref"
msgstr "E695: 関数参照型はインデックスできません"
@@ -683,25 +674,13 @@ msgstr "E736: 辞書型には無効な操作です"
msgid "E694: Invalid operation for Funcrefs"
msgstr "E694: 関数参照型には無効な操作です"
-msgid "map() argument"
-msgstr "map() の引数"
-
-msgid "filter() argument"
-msgstr "filter() の引数"
-
#, c-format
msgid "E686: Argument of %s must be a List"
msgstr "E686: %s の引数はリスト型でなければなりません"
-msgid "E928: String required"
-msgstr "E928: 文字列が必要です"
-
msgid "E808: Number or Float required"
msgstr "E808: 数値か浮動小数点数が必要です"
-msgid "add() argument"
-msgstr "add() の引数"
-
msgid "E785: complete() can only be used in Insert mode"
msgstr "E785: complete() は挿入モードでしか利用できません"
@@ -709,11 +688,6 @@ msgid "&Ok"
msgstr "&Ok"
#, c-format
-msgid "+-%s%3ld line: "
-msgid_plural "+-%s%3ld lines: "
-msgstr[0] "+-%s%3ld 行: "
-
-#, c-format
msgid "E700: Unknown function: %s"
msgstr "E700: 未知の関数です: %s"
@@ -733,15 +707,9 @@ msgstr ""
msgid "called inputrestore() more often than inputsave()"
msgstr "inputrestore() が inputsave() よりも多く呼ばれました"
-msgid "insert() argument"
-msgstr "insert() の引数"
-
msgid "E786: Range not allowed"
msgstr "E786: 範囲指定は許可されていません"
-msgid "E916: not a valid job"
-msgstr "E916: 有効なジョブではありません"
-
msgid "E701: Invalid type for len()"
msgstr "E701: len() には無効な型です"
@@ -774,35 +742,13 @@ msgstr "E941: サーバーはすでに開始しています"
msgid "E942: +clientserver feature not available"
msgstr "E942: +clientserver 機能が無効になっています"
-msgid "remove() argument"
-msgstr "remove() の引数"
-
# Added at 10-Mar-2004.
msgid "E655: Too many symbolic links (cycle?)"
msgstr "E655: シンボリックリンクが多過ぎます (循環している可能性があります)"
-msgid "reverse() argument"
-msgstr "reverse() の引数"
-
msgid "E258: Unable to send to client"
msgstr "E258: クライアントへ送ることができません"
-#, c-format
-msgid "E927: Invalid action: '%s'"
-msgstr "E927: 無効な操作です: %s"
-
-msgid "sort() argument"
-msgstr "sort() の引数"
-
-msgid "uniq() argument"
-msgstr "uniq() の引数"
-
-msgid "E702: Sort compare function failed"
-msgstr "E702: ソートの比較関数が失敗しました"
-
-msgid "E882: Uniq compare function failed"
-msgstr "E882: Uniq の比較関数が失敗しました"
-
msgid "(Invalid)"
msgstr "(無効)"
@@ -810,9 +756,6 @@ msgstr "(無効)"
msgid "E935: invalid submatch number: %d"
msgstr "E935: 無効なサブマッチ番号: %d"
-msgid "E677: Error writing temp file"
-msgstr "E677: 一時ファイル書込中にエラーが発生しました"
-
msgid "E921: Invalid callback argument"
msgstr "E921: 無効なコールバック引数です"
@@ -860,73 +803,6 @@ msgstr "E135: *フィルタ* autocommandは現在のバッファを変更して
msgid "[No write since last change]\n"
msgstr "[最後の変更が保存されていません]\n"
-#, c-format
-msgid "%sviminfo: %s in line: "
-msgstr "%sviminfo: %s 行目: "
-
-msgid "E136: viminfo: Too many errors, skipping rest of file"
-msgstr "E136: viminfo: エラーが多過ぎるので、以降はスキップします"
-
-#, c-format
-msgid "Reading viminfo file \"%s\"%s%s%s"
-msgstr "viminfoファイル \"%s\"%s%s%s を読込み中"
-
-msgid " info"
-msgstr " 情報"
-
-msgid " marks"
-msgstr " マーク"
-
-msgid " oldfiles"
-msgstr " 旧ファイル群"
-
-msgid " FAILED"
-msgstr " 失敗"
-
-#, c-format
-msgid "E137: Viminfo file is not writable: %s"
-msgstr "E137: viminfoファイルが書込みできません: %s"
-
-#, c-format
-msgid "E929: Too many viminfo temp files, like %s!"
-msgstr "E929: 一時viminfoファイルが多過ぎます! 例: %s"
-
-#, c-format
-msgid "E138: Can't write viminfo file %s!"
-msgstr "E138: viminfoファイル %s を保存できません!"
-
-#, c-format
-msgid "Writing viminfo file \"%s\""
-msgstr "viminfoファイル \"%s\" を書込み中"
-
-#, c-format
-msgid "E886: Can't rename viminfo file to %s!"
-msgstr "E886: viminfoファイルを %s へ名前変更できません!"
-
-#, c-format
-msgid "# This viminfo file was generated by Vim %s.\n"
-msgstr "# この viminfo ファイルは Vim %s によって生成されました.\n"
-
-msgid ""
-"# You may edit it if you're careful!\n"
-"\n"
-msgstr ""
-"# 変更する際には十分注意してください!\n"
-"\n"
-
-msgid "# Value of 'encoding' when this file was written\n"
-msgstr "# このファイルが書かれた時の 'encoding' の値\n"
-
-msgid "Illegal starting char"
-msgstr "不正な先頭文字です"
-
-msgid ""
-"\n"
-"# Bar lines, copied verbatim:\n"
-msgstr ""
-"\n"
-"# '|' で始まる行の、文字通りのコピー:\n"
-
msgid "Save As"
msgstr "別名で保存"
@@ -942,7 +818,7 @@ msgstr "既存のファイル \"%s\" を上書きしますか?"
#, c-format
msgid "Swap file \"%s\" exists, overwrite anyway?"
-msgstr "スワップファイル \"%s\" が存在します. 上書きを強制しますか?"
+msgstr "スワップファイル \"%s\" が存在します。上書きを強制しますか?"
#, c-format
msgid "E768: Swap file exists: %s (:silent! overrides)"
@@ -1032,15 +908,6 @@ msgstr "パターンが全ての行で見つかりました: %s"
msgid "Pattern not found: %s"
msgstr "パターンは見つかりませんでした: %s"
-msgid ""
-"\n"
-"# Last Substitute String:\n"
-"$"
-msgstr ""
-"\n"
-"# 最後に置換された文字列:\n"
-"$"
-
msgid "E478: Don't panic!"
msgstr "E478: 慌てないでください"
@@ -1207,18 +1074,6 @@ msgid "E666: compiler not supported: %s"
msgstr "E666: そのコンパイラには対応していません: %s"
#, c-format
-msgid "Searching for \"%s\" in \"%s\""
-msgstr "\"%s\" を \"%s\" から検索中"
-
-#, c-format
-msgid "Searching for \"%s\""
-msgstr "\"%s\" を検索中"
-
-#, c-format
-msgid "not found in '%s': \"%s\""
-msgstr "'%s' の中にはありません: \"%s\""
-
-#, c-format
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
msgstr "W20: 要求されたpython 2.xは対応していません、ファイルを無視します: %s"
@@ -1226,61 +1081,6 @@ msgstr "W20: 要求されたpython 2.xは対応していません、ファイル
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
msgstr "W21: 要求されたpython 3.xは対応していません、ファイルを無視します: %s"
-msgid "Source Vim script"
-msgstr "Vimスクリプトの取込み"
-
-#, c-format
-msgid "Cannot source a directory: \"%s\""
-msgstr "ディレクトリは取込めません: \"%s\""
-
-#, c-format
-msgid "could not source \"%s\""
-msgstr "\"%s\" を取込めません"
-
-#, c-format
-msgid "line %ld: could not source \"%s\""
-msgstr "行 %ld: \"%s\" を取込めません"
-
-#, c-format
-msgid "sourcing \"%s\""
-msgstr "\"%s\" を取込中"
-
-#, c-format
-msgid "line %ld: sourcing \"%s\""
-msgstr "行 %ld: %s を取込中"
-
-#, c-format
-msgid "finished sourcing %s"
-msgstr "%s の取込を完了"
-
-#, c-format
-msgid "continuing in %s"
-msgstr "%s の実行を継続中です"
-
-msgid "modeline"
-msgstr "モード行"
-
-msgid "--cmd argument"
-msgstr "--cmd 引数"
-
-msgid "-c argument"
-msgstr "-c 引数"
-
-msgid "environment variable"
-msgstr "環境変数"
-
-msgid "error handler"
-msgstr "エラーハンドラ"
-
-msgid "W15: Warning: Wrong line separator, ^M may be missing"
-msgstr "W15: 警告: 行区切が不正です. ^M がないのでしょう"
-
-msgid "E167: :scriptencoding used outside of a sourced file"
-msgstr "E167: :scriptencoding が取込スクリプト以外で使用されました"
-
-msgid "E168: :finish used outside of a sourced file"
-msgstr "E168: :finish が取込スクリプト以外で使用されました"
-
#, c-format
msgid "Current %slanguage: \"%s\""
msgstr "現在の %s言語: \"%s\""
@@ -1471,15 +1271,6 @@ msgstr "E930: execute() の中では :redir は使えません"
msgid "Save Redirection"
msgstr "リダイレクトを保存します"
-msgid "Save View"
-msgstr "ビューを保存します"
-
-msgid "Save Session"
-msgstr "セッション情報を保存します"
-
-msgid "Save Setup"
-msgstr "設定を保存します"
-
#, c-format
msgid "E739: Cannot create directory: %s"
msgstr "E739: ディレクトリを作成できません: %s"
@@ -1527,9 +1318,6 @@ msgstr ""
msgid "E500: Evaluates to an empty string"
msgstr "E500: 空文字列として評価されました"
-msgid "E195: Cannot open viminfo file for reading"
-msgstr "E195: viminfoファイルを読込用として開けません"
-
msgid "Untitled"
msgstr "無題"
@@ -1643,15 +1431,6 @@ msgstr "E788: 現在は他のバッファを編集することは許されませ
msgid "E811: Not allowed to change buffer information now"
msgstr "E811: 現在はバッファ情報を変更することは許されません"
-msgid "tagname"
-msgstr "タグ名"
-
-msgid " kind file\n"
-msgstr " ファイル種類\n"
-
-msgid "'history' option is zero"
-msgstr "オプション 'history' がゼロです"
-
#, c-format
msgid ""
"\n"
@@ -1922,12 +1701,6 @@ msgstr "[noeol]"
msgid "[Incomplete last line]"
msgstr "[最終行が不完全]"
-msgid "WARNING: The file has been changed since reading it!!!"
-msgstr "警告: 読込んだ後にファイルに変更がありました!!!"
-
-msgid "Do you really want to write to it"
-msgstr "本当に上書きしますか"
-
#, c-format
msgid "E208: Error writing to \"%s\""
msgstr "E208: \"%s\" を書込み中のエラーです"
@@ -2079,31 +1852,6 @@ msgstr "E222: 読込バッファへ追加"
msgid "E223: recursive mapping"
msgstr "E223: 再帰的マッピング"
-#, c-format
-msgid "E224: global abbreviation already exists for %s"
-msgstr "E224: %s というグローバル短縮入力は既に存在します"
-
-#, c-format
-msgid "E225: global mapping already exists for %s"
-msgstr "E225: %s というグローバルマッピングは既に存在します"
-
-#, c-format
-msgid "E226: abbreviation already exists for %s"
-msgstr "E226: %s という短縮入力は既に存在します"
-
-#, c-format
-msgid "E227: mapping already exists for %s"
-msgstr "E227: %s というマッピングは既に存在します"
-
-msgid "No abbreviation found"
-msgstr "短縮入力は見つかりませんでした"
-
-msgid "No mapping found"
-msgstr "マッピングは見つかりませんでした"
-
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: 不正なモード"
-
msgid "E851: Failed to create a new process for the GUI"
msgstr "E851: GUI用のプロセスの起動に失敗しました"
@@ -2156,7 +1904,7 @@ msgid "Cancel"
msgstr "キャンセル"
msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
-msgstr "スクロールバー: 画像を取得できませんでした."
+msgstr "スクロールバー: 画像を取得できませんでした。"
msgid "Vim dialog"
msgstr "Vim ダイアログ"
@@ -2437,14 +2185,16 @@ msgid "E621: \"%s\" resource file has wrong version"
msgstr "E621: リソースファイル \"%s\" はバージョンが異なります"
msgid "E673: Incompatible multi-byte encoding and character set."
-msgstr "E673: 互換性の無いマルチバイトエンコーディングと文字セットです"
+msgstr "E673: 互換性の無いマルチバイトエンコーディングと文字セットです。"
msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
-msgstr "E674: マルチバイトエンコーディングでは printmbcharset を空にできません"
+msgstr ""
+"E674: マルチバイトエンコーディングでは printmbcharset を空にできません。"
msgid "E675: No default font specified for multi-byte printing."
msgstr ""
-"E675: マルチバイト文字を印刷するためのデフォルトフォントが指定されていません"
+"E675: マルチバイト文字を印刷するためのデフォルトフォントが指定されていませ"
+"ん。"
msgid "E324: Can't open PostScript output file"
msgstr "E324: PostScript出力用のファイルを開けません"
@@ -2474,7 +2224,27 @@ msgid "E365: Failed to print PostScript file"
msgstr "E365: PostScriptファイルの印刷に失敗しました"
msgid "Print job sent."
-msgstr "印刷ジョブを送信しました."
+msgstr "印刷ジョブを送信しました。"
+
+#, c-format
+msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E799: 無効な ID: %d (1 以上でなければなりません)"
+
+#, c-format
+msgid "E801: ID already taken: %d"
+msgstr "E801: ID はすでに利用中です: %d"
+
+#, c-format
+msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E802: 無効な ID: %d (1 以上でなければなりません)"
+
+#, c-format
+msgid "E803: ID not found: %d"
+msgstr "E803: ID はありません: %d"
+
+#, c-format
+msgid "E798: ID is reserved for \":match\": %d"
+msgstr "E798: ID は \":match\" のために予約されています: %d"
msgid "Add a new database"
msgstr "新データベースを追加"
@@ -2640,7 +2410,7 @@ msgid " # pid database name prepend path\n"
msgstr " # pid データベース名 prepend パス\n"
msgid "Lua library cannot be loaded."
-msgstr "Luaライブラリをロードできません."
+msgstr "Luaライブラリをロードできません。"
msgid "cannot save undo information"
msgstr "アンドゥ情報が保存できません"
@@ -2648,14 +2418,14 @@ msgstr "アンドゥ情報が保存できません"
msgid ""
"E815: Sorry, this command is disabled, the MzScheme libraries could not be "
"loaded."
-msgstr "E815: このコマンドは無効です. MzScheme ライブラリをロードできません."
+msgstr "E815: このコマンドは無効です。MzScheme ライブラリをロードできません。"
msgid ""
"E895: Sorry, this command is disabled, the MzScheme's racket/base module "
"could not be loaded."
msgstr ""
-"E895: このコマンドは無効です、ごめんなさい. MzScheme の racket/base モジュー"
-"ルがロードできませんでした."
+"E895: このコマンドは無効です、ごめんなさい。MzScheme の racket/base モジュー"
+"ルがロードできませんでした。"
msgid "invalid expression"
msgstr "無効な式です"
@@ -2729,14 +2499,14 @@ msgid ""
"loaded."
msgstr ""
"E263: このコマンドは無効です、ごめんなさい: Pythonライブラリをロードできませ"
-"んでした."
+"んでした。"
msgid ""
"E887: Sorry, this command is disabled, the Python's site module could not be "
"loaded."
msgstr ""
-"E887: このコマンドは無効です、ごめんなさい. Python の site モジュールをロード"
-"できませんでした."
+"E887: このコマンドは無効です、ごめんなさい。Python の site モジュールをロード"
+"できませんでした。"
# Added at 07-Feb-2004.
msgid "E659: Cannot invoke Python recursively"
@@ -2752,7 +2522,7 @@ msgid ""
"E266: Sorry, this command is disabled, the Ruby library could not be loaded."
msgstr ""
"E266: このコマンドは無効です、ごめんなさい: Rubyライブラリをロードできません"
-"でした."
+"でした。"
msgid "E267: unexpected return"
msgstr "E267: 予期せぬ return です"
@@ -2810,9 +2580,6 @@ msgstr "未知の vimOption です"
msgid "keyboard interrupt"
msgstr "キーボード割込み"
-msgid "vim error"
-msgstr "vim エラー"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr ""
"バッファ/ウィンドウ作成コマンドを作成できません: オブジェクトが消去されていま"
@@ -2838,7 +2605,7 @@ msgid ""
"E571: Sorry, this command is disabled: the Tcl library could not be loaded."
msgstr ""
"E571: このコマンドは無効です、ごめんなさい: Tclライブラリをロードできませんで"
-"した."
+"した。"
#, c-format
msgid "E572: exit code %d"
@@ -2865,6 +2632,10 @@ msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: JSONに重複キーがあります: \"%s\""
#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: %s の引数はリスト型またはBlob型でなければなりません"
+
+#, c-format
msgid "E696: Missing comma in List: %s"
msgstr "E696: リスト型にカンマがありません: %s"
@@ -2901,7 +2672,7 @@ msgid "'-nb' cannot be used: not enabled at compile time\n"
msgstr "'-nb' 使用不可能です: コンパイル時に無効にされています\n"
msgid "This Vim was not compiled with the diff feature."
-msgstr "このVimにはdiff機能がありません(コンパイル時設定)."
+msgstr "このVimにはdiff機能がありません(コンパイル時設定)。"
msgid "Attempt to open script file again: \""
msgstr "スクリプトファイルを再び開こうとしました: \""
@@ -3129,7 +2900,7 @@ msgstr "-W <scriptout>\t入力した全コマンドをファイル <scriptout>
msgid "-x\t\t\tEdit encrypted files"
msgstr "-x\t\t\t暗号化されたファイルを編集する"
-msgid "-display <display>\tConnect vim to this particular X-server"
+msgid "-display <display>\tConnect Vim to this particular X-server"
msgstr "-display <display>\tvimを指定した X サーバーに接続する"
msgid "-X\t\t\tDo not connect to X server"
@@ -3204,10 +2975,10 @@ msgstr ""
"\n"
"gvimによって解釈される引数(Athenaバージョン):\n"
-msgid "-display <display>\tRun vim on <display>"
+msgid "-display <display>\tRun Vim on <display>"
msgstr "-display <display>\t<display> でvimを実行する"
-msgid "-iconic\t\tStart vim iconified"
+msgid "-iconic\t\tStart Vim iconified"
msgstr "-iconic\t\t最小化した状態でvimを起動する"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
@@ -3254,8 +3025,8 @@ msgstr ""
"\n"
"gvimによって解釈される引数(GTK+バージョン):\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
-msgstr "-display <display>\t<display> でvimを実行する(同義: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
+msgstr "-display <display>\t<display> でVimを実行する(同義: --display)"
msgid "--role <role>\tSet a unique role to identify the main window"
msgstr "--role <role>\tメインウィンドウを識別する一意な役割(role)を設定する"
@@ -3279,7 +3050,7 @@ msgid ": Send failed.\n"
msgstr ": 送信に失敗しました.\n"
msgid ": Send failed. Trying to execute locally\n"
-msgstr ": 送信に失敗しました. ローカルでの実行を試みています\n"
+msgstr ": 送信に失敗しました。ローカルでの実行を試みています\n"
#, c-format
msgid "%d of %d edited"
@@ -3291,6 +3062,39 @@ msgstr "ディスプレイがありません: 式の送信に失敗しました.
msgid ": Send expression failed.\n"
msgstr ": 式の送信に失敗しました.\n"
+#, c-format
+msgid "E224: global abbreviation already exists for %s"
+msgstr "E224: %s というグローバル短縮入力は既に存在します"
+
+#, c-format
+msgid "E225: global mapping already exists for %s"
+msgstr "E225: %s というグローバルマッピングは既に存在します"
+
+#, c-format
+msgid "E226: abbreviation already exists for %s"
+msgstr "E226: %s という短縮入力は既に存在します"
+
+#, c-format
+msgid "E227: mapping already exists for %s"
+msgstr "E227: %s というマッピングは既に存在します"
+
+msgid "No abbreviation found"
+msgstr "短縮入力は見つかりませんでした"
+
+msgid "No mapping found"
+msgstr "マッピングは見つかりませんでした"
+
+msgid "E228: makemap: Illegal mode"
+msgstr "E228: makemap: 不正なモード"
+
+#, c-format
+msgid "E357: 'langmap': Matching character missing for %s"
+msgstr "E357: 'langmap': %s に対応する文字がありません"
+
+#, c-format
+msgid "E358: 'langmap': Extra characters after semicolon: %s"
+msgstr "E358: 'langmap': セミコロンの後に余分な文字があります: %s"
+
msgid "No marks set"
msgstr "マークが設定されていません"
@@ -3426,7 +3230,7 @@ msgid ""
"Maybe no changes were made or Vim did not update the swap file."
msgstr ""
"\n"
-"恐らく変更がされていないかVimがスワップファイルを更新していません."
+"恐らく変更がされていないかVimがスワップファイルを更新していません。"
msgid " cannot be used with this version of Vim.\n"
msgstr " Vimのこのバージョンでは使用できません.\n"
@@ -3449,7 +3253,7 @@ msgid ""
"or the file has been damaged."
msgstr ""
",\n"
-"もしくはファイルが損傷しています."
+"もしくはファイルが損傷しています。"
#, c-format
msgid ""
@@ -3487,7 +3291,7 @@ msgid ""
"enter the new crypt key."
msgstr ""
"\n"
-"新しい暗号キーを入力してください."
+"新しい暗号キーを入力してください。"
msgid ""
"\n"
@@ -3501,7 +3305,7 @@ msgid ""
"to use the same key for text file and swap file"
msgstr ""
"\n"
-"スワップファイルに同じ暗号キーを使うためにenterだけを押してください."
+"スワップファイルに同じ暗号キーを使うためにenterだけを押してください。"
#, c-format
msgid "E309: Unable to read block 1 from %s"
@@ -3547,7 +3351,7 @@ msgid "See \":help E312\" for more information."
msgstr "詳細は \":help E312\" を参照してください"
msgid "Recovery completed. You should check if everything is OK."
-msgstr "リカバリが終了しました. 全てが正しいかチェックしてください."
+msgstr "リカバリが終了しました。全てが正しいかチェックしてください。"
msgid ""
"\n"
@@ -3560,7 +3364,7 @@ msgid "and run diff with the original file to check for changes)"
msgstr "原本ファイルとの diff を実行すると良いでしょう)"
msgid "Recovery completed. Buffer contents equals file contents."
-msgstr "復元完了. バッファの内容はファイルと同じになりました."
+msgstr "復元完了。バッファの内容はファイルと同じになりました。"
msgid ""
"\n"
@@ -3589,6 +3393,9 @@ msgstr " ディレクトリ "
msgid " -- none --\n"
msgstr " -- なし --\n"
+msgid "%a %b %d %H:%M:%S %Y"
+msgstr "%Y/%m/%d (%a) %H:%M:%S"
+
msgid " owned by: "
msgstr " 所有者: "
@@ -3681,8 +3488,8 @@ msgid "E315: ml_get: invalid lnum: %ld"
msgstr "E315: ml_get: 無効なlnumです: %ld"
#, c-format
-msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get: 行 %ld を見つけられません"
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get: 行 %ld をバッファ %d %s 内に見つけられません"
msgid "E317: pointer block id wrong 3"
msgstr "E317: ポインタブロックのIDが間違っています 3"
@@ -3750,10 +3557,10 @@ msgid ""
" file when making changes. Quit, or continue with caution.\n"
msgstr ""
"\n"
-"(1) 別のプログラムが同じファイルを編集しているかもしれません.\n"
+"(1) 別のプログラムが同じファイルを編集しているかもしれません。\n"
" この場合には、変更をしてしまうと1つのファイルに対して異なる2つの\n"
-" インスタンスができてしまうので、そうしないように気をつけてください.\n"
-" 終了するか、注意しながら続けてください.\n"
+" インスタンスができてしまうので、そうしないように気をつけてください。\n"
+" 終了するか、注意しながら続けてください。\n"
msgid "(2) An edit session for this file crashed.\n"
msgstr "(2) このファイルの編集セッションがクラッシュした.\n"
@@ -3924,18 +3731,6 @@ msgstr ""
"全て放棄(&D)\n"
"キャンセル(&C)"
-msgid "Select Directory dialog"
-msgstr "ディレクトリ選択ダイアログ"
-
-msgid "Save File dialog"
-msgstr "ファイル保存ダイアログ"
-
-msgid "Open File dialog"
-msgstr "ファイル読込ダイアログ"
-
-msgid "E338: Sorry, no file browser in console mode"
-msgstr "E338: コンソールモードではファイルブラウザを使えません、ごめんなさい"
-
msgid "E766: Insufficient arguments for printf()"
msgstr "E766: printf() の引数が不十分です"
@@ -3945,9 +3740,6 @@ msgstr "E807: printf() の引数には浮動小数点数が期待されていま
msgid "E767: Too many arguments to printf()"
msgstr "E767: printf() の引数が多過ぎます"
-msgid "W10: Warning: Changing a readonly file"
-msgstr "W10: 警告: 読込専用ファイルを変更します"
-
msgid "Type number and <Enter> or click with mouse (empty cancels): "
msgstr ""
"番号と<Enter>を入力するかマウスでクリックしてください (空でキャンセル): "
@@ -3975,6 +3767,11 @@ msgstr " (割込まれました)"
msgid "Beep!"
msgstr "ビーッ!"
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "%ld 秒経過しています"
+
msgid "ERROR: "
msgstr "エラー: "
@@ -3994,12 +3791,8 @@ msgstr ""
"[呼出] 総 re/malloc() 回数 %lu, 総 free() 回数 %lu\n"
"\n"
-msgid "E340: Line is becoming too long"
-msgstr "E340: 行が長くなり過ぎました"
-
-#, c-format
-msgid "E341: Internal error: lalloc(%ld, )"
-msgstr "E341: 内部エラー: lalloc(%ld,)"
+msgid "E341: Internal error: lalloc(0, )"
+msgstr "E341: 内部エラー: lalloc(0, )"
#, c-format
msgid "E342: Out of memory! (allocating %lu bytes)"
@@ -4073,12 +3866,6 @@ msgstr "E505: %s は読込専用です (強制書込には ! を追加)"
msgid "E349: No identifier under cursor"
msgstr "E349: カーソルの位置には識別子がありません"
-msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: 'operatorfunc' オプションが空です"
-
-msgid "E775: Eval feature not available"
-msgstr "E775: 式評価機能が無効になっています"
-
msgid "Warning: terminal cannot highlight"
msgstr "警告: 使用している端末はハイライトできません"
@@ -4129,9 +3916,6 @@ msgstr "1 行をインデントしました "
msgid "%ld lines indented "
msgstr "%ld 行をインデントしました "
-msgid "E748: No previously used register"
-msgstr "E748: まだレジスタを使用していません"
-
msgid "cannot yank; delete anyway"
msgstr "ヤンクできません; とにかく消去"
@@ -4143,14 +3927,6 @@ msgid "%ld lines changed"
msgstr "%ld 行が変更されました"
#, c-format
-msgid "freeing %ld lines"
-msgstr "%ld 行を解放中"
-
-#, c-format
-msgid " into \"%c"
-msgstr " \"%c に"
-
-#, c-format
msgid "block of 1 line yanked%s"
msgstr "1 行のブロックが%sヤンクされました"
@@ -4166,10 +3942,6 @@ msgstr "%ld 行のブロックが%sヤンクされました"
msgid "%ld lines yanked%s"
msgstr "%ld 行が%sヤンクされました"
-#, c-format
-msgid "E353: Nothing in register %s"
-msgstr "E353: レジスタ %s には何もありません"
-
msgid ""
"\n"
"--- Registers ---"
@@ -4191,11 +3963,6 @@ msgstr ""
msgid "E574: Unknown register type %d"
msgstr "E574: 未知のレジスタ型 %d です"
-msgid ""
-"E883: search pattern and expression register may not contain two or more "
-"lines"
-msgstr "E883: 検索パターンと式レジスタには2行以上を含められません"
-
#, c-format
msgid "%ld Cols; "
msgstr "%ld 列; "
@@ -4227,8 +3994,11 @@ msgstr ""
msgid "(+%lld for BOM)"
msgstr "(+%lld for BOM)"
-msgid "Thanks for flying Vim"
-msgstr "Vim を使ってくれてありがとう"
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' オプションが空です"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: 式評価機能が無効になっています"
msgid "E518: Unknown option"
msgstr "E518: 未知のオプションです"
@@ -4239,6 +4009,9 @@ msgstr "E519: オプションはサポートされていません"
msgid "E520: Not allowed in a modeline"
msgstr "E520: modeline では許可されません"
+msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
+msgstr "E992: 'modelineexpr' がオフの時 modeline では許可されません"
+
msgid "E846: Key code not set"
msgstr "E846: キーコードが設定されていません"
@@ -4248,6 +4021,66 @@ msgstr "E521: = の後には数字が必要です"
msgid "E522: Not found in termcap"
msgstr "E522: termcap 内に見つかりません"
+msgid "E946: Cannot make a terminal with running job modifiable"
+msgstr "E946: 実行中のジョブがある端末は変更可能にできません"
+
+msgid "E590: A preview window already exists"
+msgstr "E590: プレビューウィンドウが既に存在します"
+
+msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
+msgstr ""
+"W17: アラビア文字にはUTF-8が必要なので、':set encoding=utf-8' してください"
+
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: 24bit色はこの環境ではサポートされていません"
+
+#, c-format
+msgid "E593: Need at least %d lines"
+msgstr "E593: 最低 %d の行数が必要です"
+
+#, c-format
+msgid "E594: Need at least %d columns"
+msgstr "E594: 最低 %d のカラム幅が必要です"
+
+#, c-format
+msgid "E355: Unknown option: %s"
+msgstr "E355: 未知のオプションです: %s"
+
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: 数字が必要です: &%s = '%s'"
+
+msgid ""
+"\n"
+"--- Terminal codes ---"
+msgstr ""
+"\n"
+"--- 端末コード ---"
+
+msgid ""
+"\n"
+"--- Global option values ---"
+msgstr ""
+"\n"
+"--- グローバルオプション値 ---"
+
+msgid ""
+"\n"
+"--- Local option values ---"
+msgstr ""
+"\n"
+"--- ローカルオプション値 ---"
+
+msgid ""
+"\n"
+"--- Options ---"
+msgstr ""
+"\n"
+"--- オプション ---"
+
+msgid "E356: get_varp ERROR"
+msgstr "E356: get_varp エラー"
+
#, c-format
msgid "E539: Illegal character <%s>"
msgstr "E539: 不正な文字です <%s>"
@@ -4256,6 +4089,13 @@ msgstr "E539: 不正な文字です <%s>"
msgid "For option %s"
msgstr "オプション: %s"
+msgid "E540: Unclosed expression sequence"
+msgstr "E540: 式が終了していません"
+
+
+msgid "E542: unbalanced groups"
+msgstr "E542: グループが釣合いません"
+
msgid "E529: Cannot set 'term' to empty string"
msgstr "E529: 'term' には空文字列を設定できません"
@@ -4326,86 +4166,6 @@ msgstr "E536: カンマが必要です"
msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' は空であるか %s を含む必要があります"
-msgid "E538: No mouse support"
-msgstr "E538: マウスはサポートされません"
-
-msgid "E540: Unclosed expression sequence"
-msgstr "E540: 式が終了していません"
-
-msgid "E541: too many items"
-msgstr "E541: 要素が多過ぎます"
-
-msgid "E542: unbalanced groups"
-msgstr "E542: グループが釣合いません"
-
-msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr "E946: 実行中のジョブがある端末は変更可能にできません"
-
-msgid "E590: A preview window already exists"
-msgstr "E590: プレビューウィンドウが既に存在します"
-
-msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr ""
-"W17: アラビア文字にはUTF-8が必要なので、':set encoding=utf-8' してください"
-
-msgid "E954: 24-bit colors are not supported on this environment"
-msgstr "E954: 24bit色はこの環境ではサポートされていません"
-
-#, c-format
-msgid "E593: Need at least %d lines"
-msgstr "E593: 最低 %d の行数が必要です"
-
-#, c-format
-msgid "E594: Need at least %d columns"
-msgstr "E594: 最低 %d のカラム幅が必要です"
-
-#, c-format
-msgid "E355: Unknown option: %s"
-msgstr "E355: 未知のオプションです: %s"
-
-#, c-format
-msgid "E521: Number required: &%s = '%s'"
-msgstr "E521: 数字が必要です: &%s = '%s'"
-
-msgid ""
-"\n"
-"--- Terminal codes ---"
-msgstr ""
-"\n"
-"--- 端末コード ---"
-
-msgid ""
-"\n"
-"--- Global option values ---"
-msgstr ""
-"\n"
-"--- グローバルオプション値 ---"
-
-msgid ""
-"\n"
-"--- Local option values ---"
-msgstr ""
-"\n"
-"--- ローカルオプション値 ---"
-
-msgid ""
-"\n"
-"--- Options ---"
-msgstr ""
-"\n"
-"--- オプション ---"
-
-msgid "E356: get_varp ERROR"
-msgstr "E356: get_varp エラー"
-
-#, c-format
-msgid "E357: 'langmap': Matching character missing for %s"
-msgstr "E357: 'langmap': %s に対応する文字がありません"
-
-#, c-format
-msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: 'langmap': セミコロンの後に余分な文字があります: %s"
-
msgid "cannot open "
msgstr "開けません "
@@ -4448,7 +4208,7 @@ msgid " returned\n"
msgstr " 戻りました\n"
msgid "ANCHOR_BUF_SIZE too small."
-msgstr "ANCHOR_BUF_SIZE が小さ過ぎます."
+msgstr "ANCHOR_BUF_SIZE が小さ過ぎます。"
msgid "I/O ERROR"
msgstr "入出力エラー"
@@ -4498,6 +4258,10 @@ msgstr ""
"\n"
"Vim: X のエラーを検出しましたr\n"
+#, c-format
+msgid "restoring display %s"
+msgstr "ディスプレイ %s を復元しています"
+
msgid "Testing the X display failed"
msgstr "X display のチェックに失敗しました"
@@ -4524,7 +4288,7 @@ msgstr "セキュリティコンテキスト %s を %s に設定できません"
#, c-format
msgid "Could not get security context %s for %s. Removing it!"
-msgstr "セキュリティコンテキスト %s を %s から取得できません. 削除します!"
+msgstr "セキュリティコンテキスト %s を %s から取得できません。削除します!"
msgid ""
"\n"
@@ -4755,37 +4519,26 @@ msgstr "E70: %s%%[] が空です"
msgid "E956: Cannot use pattern recursively"
msgstr "E956: パターンを再帰的に使うことはできません"
-msgid "E65: Illegal back reference"
-msgstr "E65: 不正な後方参照です"
-
-msgid "E339: Pattern too long"
-msgstr "E339: パターンが長過ぎます"
-
-msgid "E50: Too many \\z("
-msgstr "E50: \\z( が多過ぎます"
-
#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: %s( が多過ぎます"
-
-msgid "E52: Unmatched \\z("
-msgstr "E52: \\z( が釣り合っていません"
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: %s{...} 内に文法エラーがあります"
#, c-format
-msgid "E59: invalid character after %s@"
-msgstr "E59: %s@ の後に不正な文字がありました"
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA 正規表現) 繰り返せません %s"
-#, c-format
-msgid "E60: Too many complex %s{...}s"
-msgstr "E60: 複雑な %s{...} が多過ぎます"
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: \\%#= には 0, 1 もしくは 2 のみが続けられます。正規表現エンジンは自動選"
+"択されます。"
-#, c-format
-msgid "E61: Nested %s*"
-msgstr "E61:%s* が入れ子になっています"
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "次のパターンにバックトラッキング RE エンジンを適用します: "
-#, c-format
-msgid "E62: Nested %s%c"
-msgstr "E62:%s%c が入れ子になっています"
+msgid "E65: Illegal back reference"
+msgstr "E65: 不正な後方参照です"
msgid "E63: invalid use of \\_"
msgstr "E63: \\_ の無効な使用方法です"
@@ -4806,25 +4559,36 @@ msgid "E71: Invalid character after %s%%"
msgstr "E71: %s%% の後に不正な文字がありました"
#, c-format
-msgid "E554: Syntax error in %s{...}"
-msgstr "E554: %s{...} 内に文法エラーがあります"
+msgid "E59: invalid character after %s@"
+msgstr "E59: %s@ の後に不正な文字がありました"
-msgid "External submatches:\n"
-msgstr "外部の部分該当:\n"
+#, c-format
+msgid "E60: Too many complex %s{...}s"
+msgstr "E60: 複雑な %s{...} が多過ぎます"
#, c-format
-msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA 正規表現) 繰り返せません %s"
+msgid "E61: Nested %s*"
+msgstr "E61:%s* が入れ子になっています"
-msgid ""
-"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
-"used "
-msgstr ""
-"E864: \\%#= には 0, 1 もしくは 2 のみが続けられます。正規表現エンジンは自動選"
-"択されます。"
+#, c-format
+msgid "E62: Nested %s%c"
+msgstr "E62:%s%c が入れ子になっています"
-msgid "Switching to backtracking RE engine for pattern: "
-msgstr "次のパターンにバックトラッキング RE エンジンを適用します: "
+msgid "E50: Too many \\z("
+msgstr "E50: \\z( が多過ぎます"
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: %s( が多過ぎます"
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: \\z( が釣り合っていません"
+
+msgid "E339: Pattern too long"
+msgstr "E339: パターンが長過ぎます"
+
+msgid "External submatches:\n"
+msgstr "外部の部分該当:\n"
msgid "E865: (NFA) Regexp end encountered prematurely"
msgstr "E865: (NFA) 期待より早く正規表現の終端に到達しました"
@@ -4891,6 +4655,23 @@ msgstr "E876: (NFA 正規表現) NFA全体を保存するには空きスペー
msgid "E878: (NFA) Could not allocate memory for branch traversal!"
msgstr "E878: (NFA) 現在横断中のブランチに十分なメモリを割り当てられません!"
+#, c-format
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "%ld 行のブロックが%sヤンクされました"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld 行が%sヤンクされました"
+
+msgid ""
+"\n"
+"Type Name Content"
+msgstr ""
+"\n"
+"型式 名前 内容"
+
msgid " VREPLACE"
msgstr " 仮想置換"
@@ -4942,6 +4723,13 @@ msgstr " 矩形選択"
msgid "recording"
msgstr "記録中"
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion が取込スクリプト以外で使用されました"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: scriptversion はサポートされていません: %d"
+
#, c-format
msgid "E383: Invalid search string: %s"
msgstr "E383: 無効な検索文字列です: %s"
@@ -5031,21 +4819,6 @@ msgstr "E797: autocommand の SpellFileMissing がバッファを削除しまし
msgid "Warning: region %s not supported"
msgstr "警告9: %s という範囲はサポートされていません"
-msgid "Sorry, no suggestions"
-msgstr "残念ですが、修正候補はありません"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "残念ですが、修正候補は %ld 個しかありません"
-
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "\"%.*s\" を次へ変換:"
-
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < \"%.*s\""
-
msgid "E752: No previous spell replacement"
msgstr "E752: スペル置換がまだ実行されていません"
@@ -5152,7 +4925,7 @@ msgstr ""
#, c-format
msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
-msgstr "COMPOUNDRULES の値に誤りがあります. ファイル %s の %d 行目: %s"
+msgstr "COMPOUNDRULES の値に誤りがあります。ファイル %s の %d 行目: %s"
#, c-format
msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
@@ -5548,70 +5321,6 @@ msgid ""
msgstr ""
" TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN"
-msgid "E679: recursive loop loading syncolor.vim"
-msgstr "E679: syncolor.vim の再帰呼び出しを検出しました"
-
-#, c-format
-msgid "E411: highlight group not found: %s"
-msgstr "E411: ハイライトグループが見つかりません: %s"
-
-#, c-format
-msgid "E412: Not enough arguments: \":highlight link %s\""
-msgstr "E412: 引数が充分ではない: \":highlight link %s\""
-
-#, c-format
-msgid "E413: Too many arguments: \":highlight link %s\""
-msgstr "E413: 引数が多過ぎます: \":highlight link %s\""
-
-msgid "E414: group has settings, highlight link ignored"
-msgstr "E414: グループが設定されているのでハイライトリンクは無視されます"
-
-#, c-format
-msgid "E415: unexpected equal sign: %s"
-msgstr "E415: 予期せぬ等号です: %s"
-
-#, c-format
-msgid "E416: missing equal sign: %s"
-msgstr "E416: 等号がありません: %s"
-
-#, c-format
-msgid "E417: missing argument: %s"
-msgstr "E417: 引数がありません: %s"
-
-#, c-format
-msgid "E418: Illegal value: %s"
-msgstr "E418: 不正な値です: %s"
-
-msgid "E419: FG color unknown"
-msgstr "E419: 未知の前景色です"
-
-msgid "E420: BG color unknown"
-msgstr "E420: 未知の背景色です"
-
-#, c-format
-msgid "E421: Color name or number not recognized: %s"
-msgstr "E421: カラー名や番号を認識できません: %s"
-
-#, c-format
-msgid "E422: terminal code too long: %s"
-msgstr "E422: 終端コードが長過ぎます: %s"
-
-#, c-format
-msgid "E423: Illegal argument: %s"
-msgstr "E423: 不正な引数です: %s"
-
-msgid "E424: Too many different highlighting attributes in use"
-msgstr "E424: 多くの異なるハイライト属性が使われ過ぎています"
-
-msgid "E669: Unprintable character in group name"
-msgstr "E669: グループ名に印刷不可能な文字があります"
-
-msgid "W18: Invalid character in group name"
-msgstr "W18: グループ名に不正な文字があります"
-
-msgid "E849: Too many highlight and syntax groups"
-msgstr "E849: ハイライトと構文グループが多過ぎます"
-
msgid "E555: at bottom of tag stack"
msgstr "E555: タグスタックの末尾です"
@@ -5699,7 +5408,7 @@ msgid "Duplicate field name: %s"
msgstr "重複したフィールド名: %s"
msgid "' not known. Available builtin terminals are:"
-msgstr "' は未知です. 現行の組み込み端末は次のとおりです:"
+msgstr "' は未知です。現行の組み込み端末は次のとおりです:"
msgid "defaulting to '"
msgstr "省略値を次のように設定します '"
@@ -5922,6 +5631,9 @@ msgstr "E125: 不正な引数です: %s"
msgid "E853: Duplicate argument name: %s"
msgstr "E853: 引数名が重複しています: %s"
+msgid "E989: Non-default argument follows default argument"
+msgstr "E989: 非デフォルト引数がデフォルト引数の後にあります"
+
#, c-format
msgid "E740: Too many arguments for function %s"
msgstr "E740: 関数の引数が多過ぎます: %s"
@@ -5957,6 +5669,10 @@ msgid "E117: Unknown function: %s"
msgstr "E117: 未知の関数です: %s"
#, c-format
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: 関数をメソッドとして使用できません: %s"
+
+#, c-format
msgid "E933: Function was deleted: %s"
msgstr "E933: 関数は削除されました: %s"
@@ -6025,10 +5741,6 @@ msgid "E133: :return not inside a function"
msgstr "E133: 関数外に :return がありました"
#, c-format
-msgid "E107: Missing parentheses: %s"
-msgstr "E107: カッコ '(' がありません: %s"
-
-#, c-format
msgid "%s (%s, compiled %s)"
msgstr "%s (%s, compiled %s)"
@@ -6344,9 +6056,6 @@ msgstr "E799: 無効な ID: %ld (1 以上でなければなりません)"
msgid "E801: ID already taken: %ld"
msgstr "E801: ID はすでに利用中です: %ld"
-msgid "List or number required"
-msgstr "リストか数値が必要です"
-
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E802: 無効な ID: %ld (1 以上でなければなりません)"
@@ -6447,9 +6156,6 @@ msgstr "E685: 内部エラーです: %s"
msgid "Interrupted"
msgstr "割込まれました"
-msgid "E14: Invalid address"
-msgstr "E14: 無効なアドレスです"
-
msgid "E474: Invalid argument"
msgstr "E474: 無効な引数です"
@@ -6624,6 +6330,9 @@ msgstr "E44: 不正な正規表現プログラムです"
msgid "E45: 'readonly' option is set (add ! to override)"
msgstr "E45: 'readonly' オプションが設定されています (! を追加で上書き)"
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: 既存の変数を変更できません"
+
#, c-format
msgid "E46: Cannot change read-only variable \"%s\""
msgstr "E46: 読取専用変数 \"%s\" には値を設定できません"
@@ -6720,6 +6429,10 @@ msgstr "E939: 正のカウントが必要です"
msgid "E81: Using <SID> not in a script context"
msgstr "E81: スクリプト以外で<SID>が使われました"
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: カッコ '(' がありません: %s"
+
msgid "E449: Invalid expression received"
msgstr "E449: 無効な式を受け取りました"
@@ -6863,7 +6576,7 @@ msgid "list index out of range"
msgstr "リスト範囲外のインデックスです"
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "内部エラー: vimのリスト要素 %d の取得に失敗しました"
msgid "slice step cannot be zero"
@@ -6874,7 +6587,7 @@ msgid "attempt to assign sequence of size greater than %d to extended slice"
msgstr "長さ %d の拡張スライスに、より長いスライスを割り当てようとしました"
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "内部エラー: vimのリスト要素 %d はありません"
msgid "internal error: not enough list items"
@@ -6983,19 +6696,19 @@ msgstr "コードの実行に失敗しました"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: 式評価は有効なpythonオブジェクトを返しませんでした"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: 返されたpythonオブジェクトをvimの値に変換できませんでした"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "%s vimの辞書型に変換できません"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "%s をvimのリストに変換できません"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "%s をvimの構造体に変換できません"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/sr.po b/src/nvim/po/sr.po
index a93a2ec584..1450ab5164 100644
--- a/src/nvim/po/sr.po
+++ b/src/nvim/po/sr.po
@@ -10,15 +10,92 @@ msgid ""
msgstr ""
"Project-Id-Version: Vim(Serbian)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-15 11:55+0400\n"
-"PO-Revision-Date: 2018-05-15 10:50+0400\n"
+"POT-Creation-Date: 2021-02-14 01:49+0400\n"
+"PO-Revision-Date: 2021-02-14 01:54+0400\n"
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
"Language-Team: Serbian\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgid "E163: There is only one file to edit"
+msgstr "E163: Постоји само један фајл за уређивање"
+
+msgid "E164: Cannot go before first file"
+msgstr "E164: Не може да се иде испред првог фајла"
+
+msgid "E165: Cannot go beyond last file"
+msgstr "E165: Не може да се иде иза последњег фајла"
+
+msgid "E610: No argument to delete"
+msgstr "E610: Нема аргумента за брисање"
+
+msgid "E249: window layout changed unexpectedly"
+msgstr "E249: распоред прозора се неочекивано променио"
+
+msgid "--Deleted--"
+msgstr "--Обрисано--"
+
+#, c-format
+msgid "auto-removing autocommand: %s <buffer=%d>"
+msgstr "ауто-уклањајућа аутокоманда: %s <бафер=%d>"
+
+#, c-format
+msgid "E367: No such group: \"%s\""
+msgstr "E367: Нема такве групе: \"%s\""
+
+msgid "E936: Cannot delete the current group"
+msgstr "E936: Текућа група не може да се обрише"
+
+msgid "W19: Deleting augroup that is still in use"
+msgstr "W19: Брисање augroup која је још у употреби"
+
+#, c-format
+msgid "E215: Illegal character after *: %s"
+msgstr "E215: Недозвољени карактер након *: %s"
+
+#, c-format
+msgid "E216: No such event: %s"
+msgstr "E216: Нема таквог догађаја: %s"
+
+#, c-format
+msgid "E216: No such group or event: %s"
+msgstr "E216: Нема такве групе или догађаја: %s"
+
+msgid ""
+"\n"
+"--- Autocommands ---"
+msgstr ""
+"\n"
+"--- Аутокоманде ---"
+
+#, c-format
+msgid "E680: <buffer=%d>: invalid buffer number "
+msgstr "E680: <бафер=%d>: неисправан број бафера "
+
+msgid "E217: Can't execute autocommands for ALL events"
+msgstr "E217: Аутокоманде за СВЕ догађаје не могу да се изврше"
+
+msgid "No matching autocommands"
+msgstr "Нема подударајућих аутокоманди"
+
+msgid "E218: autocommand nesting too deep"
+msgstr "E218: Угњеждавање аутокоманде је сувише дубоко"
+
+#, c-format
+msgid "%s Autocommands for \"%s\""
+msgstr "%s Аутокоманде за \"%s\""
+
+#, c-format
+msgid "Executing %s"
+msgstr "Извршавање %s"
+
+#, c-format
+msgid "autocommand %s"
+msgstr "аутокоманда %s"
msgid "E831: bf_key_init() called with empty password"
msgstr "E831: bf_key_init() је позвана са празном лозинком"
@@ -53,8 +130,9 @@ msgstr "E83: Не може да се резервише меморија за б
msgid "E931: Buffer cannot be registered"
msgstr "E931: Бафер не може да се региструје"
-msgid "E937: Attempt to delete a buffer that is in use"
-msgstr "E937: Покушај брисања бафера који је у употреби"
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: Покушај брисања бафера који је у употреби: %s"
msgid "E515: No buffers were unloaded"
msgstr "E515: Ниједан бафер није уклоњен из меморије"
@@ -65,26 +143,26 @@ msgstr "E516: Ниједан бафер није обрисан"
msgid "E517: No buffers were wiped out"
msgstr "E517: Ниједан бафер није очишћен"
-msgid "1 buffer unloaded"
-msgstr "1 бафер је уклоњен из меморије"
-
#, c-format
-msgid "%d buffers unloaded"
-msgstr "%d бафера је уклоњено из меморије"
-
-msgid "1 buffer deleted"
-msgstr "1 бафер је обрисан"
+msgid "%d buffer unloaded"
+msgid_plural "%d buffers unloaded"
+msgstr[0] "%d бафер је уклоњен из меморије"
+msgstr[1] "%d бафера је уклоњено из меморије"
+msgstr[2] "%d бафера је уклоњено из меморије"
#, c-format
-msgid "%d buffers deleted"
-msgstr "%d бафера је обрисано"
-
-msgid "1 buffer wiped out"
-msgstr "1 бафер је очишћен"
+msgid "%d buffer deleted"
+msgid_plural "%d buffers deleted"
+msgstr[0] "%d бафер је обрисан"
+msgstr[1] "%d бафера је обрисано"
+msgstr[2] "%d бафера је обрисано"
#, c-format
-msgid "%d buffers wiped out"
-msgstr "%d бафера је очишћено"
+msgid "%d buffer wiped out"
+msgid_plural "%d buffers wiped out"
+msgstr[0] "%d бафер је очишћен"
+msgstr[1] "%d бафера је очишћено"
+msgstr[2] "%d бафера је очишћено"
msgid "E90: Cannot unload last buffer"
msgstr "E90: Последњи бафер не може да се уклони из меморије"
@@ -102,10 +180,9 @@ msgid "E88: Cannot go before first buffer"
msgstr "E88: Не може да се иде испред првог бафера"
#, c-format
-msgid "E89: No write since last change for buffer %ld (add ! to override)"
+msgid "E89: No write since last change for buffer %d (add ! to override)"
msgstr ""
-"E89: Од последње измене није било уписа за бафер %ld (додајте ! да "
-"премостите)"
+"E89: Од последње измене није било уписа за бафер %d (додајте ! да премостите)"
msgid "E948: Job still running (add ! to end the job)"
msgstr "E948: Задатак се још извршава (додајте ! да зауставите задатак)"
@@ -161,12 +238,11 @@ msgid "[readonly]"
msgstr "[само за читање]"
#, c-format
-msgid "1 line --%d%%--"
-msgstr "1 линија --%d%%--"
-
-#, c-format
-msgid "%ld lines --%d%%--"
-msgstr "%ld линија --%d%%--"
+msgid "%ld line --%d%%--"
+msgid_plural "%ld lines --%d%%--"
+msgstr[0] "%ld линија --%d%%--"
+msgstr[1] "%ld линијe --%d%%--"
+msgstr[2] "%ld линија --%d%%--"
#, c-format
msgid "line %ld of %ld --%d%%-- col "
@@ -193,45 +269,174 @@ msgstr "Дно"
msgid "Top"
msgstr "Врх"
-msgid ""
-"\n"
-"# Buffer list:\n"
-msgstr ""
-"\n"
-"# Листа бафера:\n"
-
msgid "E382: Cannot write, 'buftype' option is set"
msgstr "E382: Упис није могућ, постављена је 'buftype' опција"
+msgid "[Prompt]"
+msgstr "[Одзив]"
+
+msgid "[Popup]"
+msgstr "[Балон]"
+
msgid "[Scratch]"
msgstr "[Празно]"
+msgid "WARNING: The file has been changed since reading it!!!"
+msgstr "УПОЗОРЕЊЕ: Овај фајл је промењен од кад је прочитан!!!"
+
+msgid "Do you really want to write to it"
+msgstr "Да ли заиста желите да пишете у њега"
+
+msgid "[New]"
+msgstr "[Ново]"
+
+msgid "[New File]"
+msgstr "[Нов фајл]"
+
+msgid "E676: No matching autocommands for acwrite buffer"
+msgstr "E676: Нема одговарајућих аутокоманди за acwrite бафер"
+
+msgid "E203: Autocommands deleted or unloaded buffer to be written"
+msgstr ""
+"E203: Аутокоманде су обрисале или уклониле из меморије бафер који требало да "
+"буде уписан"
+
+msgid "E204: Autocommand changed number of lines in unexpected way"
+msgstr "E204: Аутокоманде су на неочекиван начин промениле број линија"
+
+msgid "NetBeans disallows writes of unmodified buffers"
+msgstr "NetBeans не дозвољава упис неизмењених бафера"
+
+msgid "Partial writes disallowed for NetBeans buffers"
+msgstr "Парцијални уписи нису дозвољени за NetBeans бафере"
+
+msgid "is a directory"
+msgstr "је директоријум"
+
+msgid "is not a file or writable device"
+msgstr "није фајл или уређај на који може да се уписује"
+
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "упис на уређај је онемогућен опцијом 'opendevice'"
+
+msgid "is read-only (add ! to override)"
+msgstr "је само за читање (додајте ! за премошћавање)"
+
+msgid "E506: Can't write to backup file (add ! to override)"
+msgstr "E506: Не може да се упише у резервни фајл (додајте ! за премошћавање)"
+
+msgid "E507: Close error for backup file (add ! to override)"
+msgstr ""
+"E507: Грешка код затварања за резервни фајл (додајте ! за премошћавање)"
+
+msgid "E508: Can't read file for backup (add ! to override)"
+msgstr "E508: Резервни фајл не може да се прочита (додајте ! за премошћавање)"
+
+msgid "E509: Cannot create backup file (add ! to override)"
+msgstr "E509: Резервни фајл не може да се креира (додајте ! за премошћавање)"
+
+msgid "E510: Can't make backup file (add ! to override)"
+msgstr "E510: Резервни фајл не може да се направи (додајте ! за премошћавање)"
+
+msgid "E214: Can't find temp file for writing"
+msgstr "E214: Привремени фајл за упис не може да се пронађе"
+
+msgid "E213: Cannot convert (add ! to write without conversion)"
+msgstr "E213: Конверзија није могућа (додајте ! за упис без конверзије)"
+
+msgid "E166: Can't open linked file for writing"
+msgstr "E166: Повезани фајл не може да се отвори за упис"
+
+msgid "E212: Can't open file for writing"
+msgstr "E212: фајл не може да се отвори за упис"
+
+msgid "E949: File changed while writing"
+msgstr "E949: фајл је промењен током уписа"
+
+msgid "E512: Close failed"
+msgstr "E512: Затварање није успело"
+
+msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
+msgstr ""
+"E513: грешка при упису, конверзија није успела (оставите 'fenc' празно да "
+"премостите)"
+
+#, c-format
+msgid ""
+"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"override)"
+msgstr ""
+"E513: грешка при упису, конверзија није успела у линији %ld (оставите 'fenc' "
+"празно да премостите)"
+
+msgid "E514: write error (file system full?)"
+msgstr "E514: грешка при упису (систем фајлова је пун?)"
+
+msgid " CONVERSION ERROR"
+msgstr " ГРЕШКА КОНВЕРЗИЈЕ"
+
+#, c-format
+msgid " in line %ld;"
+msgstr " у линији %ld;"
+
+msgid "[NOT converted]"
+msgstr "[НИЈЕ конвертовано]"
+
+msgid "[converted]"
+msgstr "[конвертовано]"
+
+msgid "[Device]"
+msgstr "[Уређај]"
+
+msgid " [a]"
+msgstr " [н]"
+
+msgid " appended"
+msgstr " настављено"
+
+msgid " [w]"
+msgstr " [у]"
+
+msgid " written"
+msgstr " уписано"
+
+msgid "E205: Patchmode: can't save original file"
+msgstr "E205: Patch режим: оригинални фајл не може да се сачува"
+
+msgid "E206: patchmode: can't touch empty original file"
+msgstr "E206: Patch режим: не може да се креира празан оригинални фајл"
+
+msgid "E207: Can't delete backup file"
+msgstr "E207: Резервни фајл не може да се обрише"
+
msgid ""
"\n"
-"--- Signs ---"
+"WARNING: Original file may be lost or damaged\n"
msgstr ""
"\n"
-"--- Знаци ---"
+"УПОЗОРЕЊЕ: Оригинални фајл је можда изгубљен или оштећен\n"
-#, c-format
-msgid "Signs for %s:"
-msgstr "Знаци за %s:"
+msgid "don't quit the editor until the file is successfully written!"
+msgstr "не напуштајте едитор док се фајл успешно не упише!"
-#, c-format
-msgid " line=%ld id=%d name=%s"
-msgstr " линија=%ld ид=%d име=%s"
+msgid "W10: Warning: Changing a readonly file"
+msgstr "W10: Упозорење: Мења се фајл који може само да се чита"
msgid "E902: Cannot connect to port"
msgstr "E902: Повезивање на порт није могуће"
+msgid "E898: socket() in channel_connect()"
+msgstr "E898: socket() у channel_connect()"
+
+#, c-format
+msgid "E901: getaddrinfo() in channel_open(): %s"
+msgstr "E901: getaddrinfo() у channel_open(): %s"
+
msgid "E901: gethostbyname() in channel_open()"
msgstr "E901: gethostbyname() у channel_open()"
-msgid "E898: socket() in channel_open()"
-msgstr "E898: socket() у channel_open()"
-
msgid "E903: received command with non-string argument"
-msgstr "E903: примњена команда са аргуменом који није стринг"
+msgstr "E903: примљена команда са аргументом који није стринг"
msgid "E904: last argument for expr/call must be a number"
msgstr "E904: последњи аргумент за expr/call мора бити број"
@@ -243,6 +448,9 @@ msgstr "E904: трећи аргумент за call мора бити листа
msgid "E905: received unknown command: %s"
msgstr "E905: примљена непозната команда: %s"
+msgid "E906: not an open channel"
+msgstr "E906: није отворен канал"
+
#, c-format
msgid "E630: %s(): write while not connected"
msgstr "E630: %s(): упис док није успостављена веза"
@@ -290,21 +498,50 @@ msgstr "Кључеви нису исти!"
msgid "[crypted]"
msgstr "[шифровано]"
+msgid "Entering Debug mode. Type \"cont\" to continue."
+msgstr "Улазак у Debug режим. Откуцајте \"cont\" за наставак."
+
#, c-format
-msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Недостаје тачка-зарез у Речнику: %s"
+msgid "Oldval = \"%s\""
+msgstr "Старавред = \"%s\""
#, c-format
-msgid "E721: Duplicate key in Dictionary: \"%s\""
-msgstr "E721: Дупликат кључа у Речнику: \"%s\""
+msgid "Newval = \"%s\""
+msgstr "Новавред = \"%s\""
#, c-format
-msgid "E722: Missing comma in Dictionary: %s"
-msgstr "E722: Недостаје зарез у Речнику: %s"
+msgid "line %ld: %s"
+msgstr "линија %ld: %s"
+
+#, c-format
+msgid "cmd: %s"
+msgstr "ком: %s"
+
+msgid "frame is zero"
+msgstr "оквир је нула"
#, c-format
-msgid "E723: Missing end of Dictionary '}': %s"
-msgstr "E723: Недостаје крај Речника '}': %s"
+msgid "frame at highest level: %d"
+msgstr "оквир је на највишем нивоу: %d"
+
+#, c-format
+msgid "Breakpoint in \"%s%s\" line %ld"
+msgstr "Прекидна тачка у \"%s%s\" линија %ld"
+
+#, c-format
+msgid "E161: Breakpoint not found: %s"
+msgstr "E161: Прекидна тачка није пронађена: %s"
+
+msgid "No breakpoints defined"
+msgstr "Није дефинисана ниједна прекидна тачка"
+
+#, c-format
+msgid "%3d %s %s line %ld"
+msgstr "%3d %s %s линија %ld"
+
+#, c-format
+msgid "%3d expr %s"
+msgstr "%3d израз %s"
msgid "extend() argument"
msgstr "extend() аргумент"
@@ -589,6 +826,9 @@ msgstr "E910: Користи се Job као Number"
msgid "E913: Using a Channel as a Number"
msgstr "E913: Користи се Channel као Number"
+msgid "E974: Using a Blob as a Number"
+msgstr "E974: Користи се Blob као Number"
+
msgid "E891: Using a Funcref as a Float"
msgstr "E891: Користи се Funcref као Float"
@@ -610,6 +850,9 @@ msgstr "E911: Користи се Job као Float"
msgid "E914: Using a Channel as a Float"
msgstr "E914: Користи се Channel као Float"
+msgid "E975: Using a Blob as a Float"
+msgstr "E975: Користи се Blob као Float"
+
msgid "E729: using Funcref as a String"
msgstr "E729: користи се Funcref као String"
@@ -619,48 +862,27 @@ msgstr "E730: користи се List као String"
msgid "E731: using Dictionary as a String"
msgstr "E731: користи се Dictionary као String"
+msgid "E976: using Blob as a String"
+msgstr "E976: коришћење Blob као String"
+
msgid "E908: using an invalid value as a String"
msgstr "E908: користи се недозвољена вредност као String"
-#, c-format
-msgid "E795: Cannot delete variable %s"
-msgstr "E795: Променљива %s не може да се обрише"
-
-#, c-format
-msgid "E704: Funcref variable name must start with a capital: %s"
-msgstr "E704: Име Funcref мора да почне великим словом: %s"
-
-#, c-format
-msgid "E705: Variable name conflicts with existing function: %s"
-msgstr "E705: Име променљиве је у конфликту са постојећом функцијом: %s"
-
-#, c-format
-msgid "E741: Value is locked: %s"
-msgstr "E741: Вредност је закључана: %s"
-
-msgid "Unknown"
-msgstr "Непознато"
-
-#, c-format
-msgid "E742: Cannot change value of %s"
-msgstr "E742: Вредност %s не може да се промени"
-
msgid "E698: variable nested too deep for making a copy"
msgstr "E698: променљива је предубоко угњеждена да би се направила копија"
msgid ""
"\n"
-"# global variables:\n"
-msgstr ""
-"\n"
-"# глобалне променљиве:\n"
-
-msgid ""
-"\n"
"\tLast set from "
msgstr ""
"\n"
-"\tПоследњи сет од "
+"\tПоследње постављено из "
+
+msgid " line "
+msgstr " линија "
+
+msgid "E977: Can only compare Blob with Blob"
+msgstr "E977: Blob може да се пореди само са Blob"
msgid "E691: Can only compare List with List"
msgstr "E691: List може да се пореди само са List"
@@ -728,31 +950,18 @@ msgstr ""
msgid "called inputrestore() more often than inputsave()"
msgstr "inputrestore() је позвана више пута него inputsave()"
-msgid "insert() argument"
-msgstr "insert() аргумент"
-
msgid "E786: Range not allowed"
msgstr "E786: Опсег није дозвољен"
-msgid "E916: not a valid job"
-msgstr "E916: није валидан job"
-
msgid "E701: Invalid type for len()"
msgstr "E701: Неисправан тип за len()"
-#, c-format
-msgid "E798: ID is reserved for \":match\": %ld"
-msgstr "E798: ИД је резервисан за \":match\": %ld"
-
msgid "E726: Stride is zero"
msgstr "E726: Корак је нула"
msgid "E727: Start past end"
msgstr "E727: Почетак иза краја"
-msgid "<empty>"
-msgstr "<празно>"
-
msgid "E240: No connection to the X server"
msgstr "E240: Нема везе са X сервером"
@@ -1026,15 +1235,6 @@ msgstr "Шаблон је пронаћен у свакој линији: %s"
msgid "Pattern not found: %s"
msgstr "Шаблон није пронађен: %s"
-msgid ""
-"\n"
-"# Last Substitute String:\n"
-"$"
-msgstr ""
-"\n"
-"# Последњи Стринг за замену:\n"
-"$"
-
msgid "E478: Don't panic!"
msgstr "E478: Не паничите!"
@@ -1409,7 +1609,7 @@ msgid "E185: Cannot find color scheme '%s'"
msgstr "E185: Шема боја '%s' не може да се пронађе"
msgid "Greetings, Vim user!"
-msgstr "Поздрав, корисниче Vim-a"
+msgstr "Поздрав, корисниче програма Vim!"
msgid "E784: Cannot close last tab page"
msgstr "E784: Последња картица не може да се затвори"
@@ -1436,7 +1636,7 @@ msgstr ""
"премошћавање)"
msgid "E186: No previous directory"
-msgstr "E186: Нема претгодног директоријума"
+msgstr "E186: Нема претходног директоријума"
msgid "E187: Unknown"
msgstr "E187: Непознато"
@@ -1460,15 +1660,6 @@ msgstr "E930: :redir не може да се користи унутар execute
msgid "Save Redirection"
msgstr "Сачувај Редирекцију"
-msgid "Save View"
-msgstr "Сачувај Поглед"
-
-msgid "Save Session"
-msgstr "Сачувај Сесију"
-
-msgid "Save Setup"
-msgstr "Сачувај Подешавање"
-
#, c-format
msgid "E739: Cannot create directory: %s"
msgstr "E739: Директоријум не може да се креира: %s"
@@ -1574,15 +1765,6 @@ msgstr "Прекид"
msgid "E579: :if nesting too deep"
msgstr "E579: :if угњеждавање је сувише дубоко"
-msgid "E580: :endif without :if"
-msgstr "E580: :endif без :if"
-
-msgid "E581: :else without :if"
-msgstr "E581: :else без :if"
-
-msgid "E582: :elseif without :if"
-msgstr "E582: :elseif без :if"
-
msgid "E583: multiple :else"
msgstr "E583: вишеструко :else"
@@ -1592,35 +1774,23 @@ msgstr "E584: :elseif након :else"
msgid "E585: :while/:for nesting too deep"
msgstr "E585: :while/:for угњеждавање је сувише дубоко"
-msgid "E586: :continue without :while or :for"
-msgstr "E586: :continue без :while или :for"
-
-msgid "E587: :break without :while or :for"
-msgstr "E587: :break без :while или :for"
-
msgid "E732: Using :endfor with :while"
msgstr "E732: Коришћење :endfor са :while"
msgid "E733: Using :endwhile with :for"
msgstr "E733: Коришћење :endwhile са :for"
+msgid "E579: block nesting too deep"
+msgstr "E579: угњеждавање блокова је сувише дубоко"
+
msgid "E601: :try nesting too deep"
msgstr "E601: :try угњеждавање је сувише дубоко"
-msgid "E603: :catch without :try"
-msgstr "E603: :catch без :try"
-
msgid "E604: :catch after :finally"
msgstr "E604: :catch након :finally"
-msgid "E606: :finally without :try"
-msgstr "E606: :finally без :try"
-
-msgid "E607: multiple :finally"
-msgstr "E607: вишеструко :finally"
-
-msgid "E602: :endtry without :try"
-msgstr "E602: :endtry без :try"
+msgid "E193: :enddef not inside a function"
+msgstr "E193: :enddef није унутар функције"
msgid "E193: :endfunction not inside a function"
msgstr "E193: :endfunction није унутар функције"
@@ -1991,72 +2161,69 @@ msgstr "E462: Припрема за поновно учитавање \"%s\" н
msgid "E321: Could not reload \"%s\""
msgstr "E321: \"%s\" не може поново да се учита"
-msgid "--Deleted--"
-msgstr "--Обрисано--"
+msgid "E219: Missing {."
+msgstr "E219: Недостаје {."
-#, c-format
-msgid "auto-removing autocommand: %s <buffer=%d>"
-msgstr "ауто-уклањајућа аутокоманда: %s <бафер=%d>"
+msgid "E220: Missing }."
+msgstr "E220: Недостаје }."
-#, c-format
-msgid "E367: No such group: \"%s\""
-msgstr "E367: Нема такве групе: \"%s\""
+msgid "<empty>"
+msgstr "<празно>"
-msgid "E936: Cannot delete the current group"
-msgstr "E936: Текућа група не може да се обрише"
+msgid "E655: Too many symbolic links (cycle?)"
+msgstr "E655: Превише симболичких веза (циклус?)"
-msgid "W19: Deleting augroup that is still in use"
-msgstr "W19: Брисање augroup која је још у употреби"
+msgid "writefile() first argument must be a List or a Blob"
+msgstr "Први аргумент writefile() мора бити Листа или Блоб"
-#, c-format
-msgid "E215: Illegal character after *: %s"
-msgstr "E215: Недозвољени карактер након *: %s"
+msgid "Select Directory dialog"
+msgstr "Дијалог избора директоријума"
-#, c-format
-msgid "E216: No such event: %s"
-msgstr "E216: Нема таквог догађаја: %s"
+msgid "Save File dialog"
+msgstr "Дијалог чувања фајла"
-#, c-format
-msgid "E216: No such group or event: %s"
-msgstr "E216: Нема такве групе или догађаја: %s"
+msgid "Open File dialog"
+msgstr "Дијалог отварања фајла"
-msgid ""
-"\n"
-"--- Autocommands ---"
-msgstr ""
-"\n"
-"--- Аутокоманде ---"
+msgid "E338: Sorry, no file browser in console mode"
+msgstr "E338: Жао нам је, нема претраживача фајлова у конзолном режиму"
-#, c-format
-msgid "E680: <buffer=%d>: invalid buffer number "
-msgstr "E680: <бафер=%d>: неисправан број бафера "
+msgid "no matches"
+msgstr "нема подударања"
-msgid "E217: Can't execute autocommands for ALL events"
-msgstr "E217: Аутокоманде за СВЕ догађаје не могу да се изврше"
+msgid "E854: path too long for completion"
+msgstr "E854: путања је сувише дугачка да би се довршила"
-msgid "No matching autocommands"
-msgstr "Нема подударајућих аутокоманди"
+#, c-format
+msgid ""
+"E343: Invalid path: '**[number]' must be at the end of the path or be "
+"followed by '%s'."
+msgstr ""
+"E343: Неисправна путања: '**[број]' мора бити на крају путање или да иза "
+"њега следи '%s'."
-msgid "E218: autocommand nesting too deep"
-msgstr "E218: Угњеждавање аутокоманде је сувише дубоко"
+#, c-format
+msgid "E344: Can't find directory \"%s\" in cdpath"
+msgstr "E344: Директоријум \"%s\" не може да се пронађе у cdpath"
#, c-format
-msgid "%s Autocommands for \"%s\""
-msgstr "%s Аутокоманде за \"%s\""
+msgid "E345: Can't find file \"%s\" in path"
+msgstr "E345: Фајл \"%s\" не може да се пронађе у path"
#, c-format
-msgid "Executing %s"
-msgstr "Извршавање %s"
+msgid "E346: No more directory \"%s\" found in cdpath"
+msgstr "E346: Директоријум \"%s\" више не може да се пронађе у cdpath"
#, c-format
-msgid "autocommand %s"
-msgstr "аутокоманда %s"
+msgid "E347: No more file \"%s\" found in path"
+msgstr "E347: Фајл \"%s\" више не може да се пронађе у path"
-msgid "E219: Missing {."
-msgstr "E219: Недостаје {."
+msgid "E446: No file name under cursor"
+msgstr "E446: Под курсором се не налази име фајла"
-msgid "E220: Missing }."
-msgstr "E220: Недостаје }."
+#, c-format
+msgid "E447: Can't find file \"%s\" in path"
+msgstr "E447: Фајл \"%s\" не може да се пронађе у путањи"
msgid "E490: No fold found"
msgstr "E490: Није пронађено ниједно склапање"
@@ -2126,10 +2293,6 @@ msgstr "E231: 'guifontwide' неисправан"
msgid "E599: Value of 'imactivatekey' is invalid"
msgstr "E599: Вредност 'imactivatekey' није исправна"
-#, c-format
-msgid "E254: Cannot allocate color %s"
-msgstr "E254: Боја %s не може да се алоцира"
-
msgid "No match at cursor, finding next"
msgstr "Нема подударања на месту курсора, тражи се даље"
@@ -2165,15 +2328,15 @@ msgid "E232: Cannot create BalloonEval with both message and callback"
msgstr ""
"E232: Не може да се креира BalloonEval и са поруком и са повратним позивом"
-msgid "_Cancel"
-msgstr "_Откажи"
-
msgid "_Save"
msgstr "_Сачувај"
msgid "_Open"
msgstr "_Отвори"
+msgid "_Cancel"
+msgstr "_Откажи"
+
msgid "_OK"
msgstr "_OK"
@@ -2288,11 +2451,11 @@ msgstr "О&позови"
msgid "Open tab..."
msgstr "Отвори картицу"
-msgid "Find string (use '\\\\' to find a '\\')"
-msgstr "Пронађи стринг (користите '\\\\' да пронађете '\\')"
+msgid "Find string"
+msgstr "Пронађи стринг"
-msgid "Find & Replace (use '\\\\' to find a '\\')"
-msgstr "Пронађи & Замени (користите '\\\\' да пронађете '\\')"
+msgid "Find & Replace"
+msgstr "Пронађи & Замени"
msgid "Not Used"
msgstr "Не користи се"
@@ -2308,6 +2471,9 @@ msgstr "E671: Наслов прозора \"%s\" не може да се про
msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
msgstr "E243: Аргумент није подржан: \"-%s\"; Користите OLE верзију."
+msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
+msgstr "E988: ГКИ не може да се користи. Није могуће извршавање gvim.exe."
+
msgid "E672: Unable to open window inside MDI application"
msgstr "E672: Није могуће отварање прозора унутар MDI апликације"
@@ -2317,7 +2483,7 @@ msgstr ""
#, c-format
msgid "E250: Fonts for the following charsets are missing in fontset %s:"
-msgstr "E250: Фонтови за следеће сетове карактера недостају у фонтсету %s:"
+msgstr "E250: У фонтсету %s недостају фонтови за следеће скупове карактера:"
#, c-format
msgid "E252: Fontset name: %s"
@@ -2325,7 +2491,7 @@ msgstr "E252: Име фонтсета: %s"
#, c-format
msgid "Font '%s' is not fixed-width"
-msgstr "Фонт %s' није фиксне ширине"
+msgstr "Фонт '%s' није фиксне ширине"
#, c-format
msgid "E253: Fontset name: %s"
@@ -2336,20 +2502,39 @@ msgid "Font0: %s"
msgstr "Фонт0: %s"
#, c-format
-msgid "Font1: %s"
-msgstr "Фонт1: %s"
+msgid "Font%d: %s"
+msgstr "Фонт%d: %s"
#, c-format
-msgid "Font%ld width is not twice that of font0"
-msgstr "Ширина фонт%ld није двострука од ширине фонт0"
+msgid "Font%d width is not twice that of font0"
+msgstr "Фонт%d није два пута шири од фонт0"
#, c-format
-msgid "Font0 width: %ld"
-msgstr "Фонт0 ширина: %ld"
+msgid "Font0 width: %d"
+msgstr "Фонт0 ширина: %d"
#, c-format
-msgid "Font1 width: %ld"
-msgstr "Фонт1 ширина: %ld"
+msgid "Font%d width: %d"
+msgstr "Фонт%d ширина: %d"
+
+msgid "E284: Cannot set IC values"
+msgstr "E284: IC вредности не могу да се поставе"
+
+msgid "E285: Failed to create input context"
+msgstr "E285: Креирање контекста уноса није успело"
+
+msgid "E286: Failed to open input method"
+msgstr "E286: Отварање методе уноса није успело"
+
+msgid "E287: Warning: Could not set destroy callback to IM"
+msgstr ""
+"E287: Упозорење: Постављање повратне функције за уништење IM није успело"
+
+msgid "E288: input method doesn't support any style"
+msgstr "E288: метод уноса не подржава ниједан стил"
+
+msgid "E289: input method doesn't support my preedit type"
+msgstr "E289: метод уноса не подржава мој preedit тип"
msgid "Invalid font specification"
msgstr "Неисправна спецификација фонта"
@@ -2381,9 +2566,6 @@ msgstr "Стил:"
msgid "Size:"
msgstr "Величина:"
-msgid "E256: Hangul automata ERROR"
-msgstr "E256: ГРЕШКА Hangul аутомата"
-
msgid "E550: Missing colon"
msgstr "E550: Недостаје двотачка"
@@ -2525,8 +2707,8 @@ msgid "Added cscope database %s"
msgstr "cscope база података %s је додата"
#, c-format
-msgid "E262: error reading cscope connection %ld"
-msgstr "E262: грешка код читања cscope везе %ld"
+msgid "E262: error reading cscope connection %d"
+msgstr "E262: грешка код читања cscope везе %d"
msgid "E561: unknown cscope search type"
msgstr "E561: непознат cscope тип претраге"
@@ -2718,11 +2900,12 @@ msgstr "E370: Библиотека %s није могла да се учита"
msgid "Sorry, this command is disabled: the Perl library could not be loaded."
msgstr ""
-"Жао нам је, ова команда је онемогућена: Perl библиотека није могла да "
-"се учита."
+"Жао нам је, ова команда је онемогућена: Perl библиотека није могла да се "
+"учита."
msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr "E299: Perl одређивање вредности у sandbox-у је забрањено без Safe модула"
+msgstr ""
+"E299: Perl одређивање вредности у sandbox-у је забрањено без Safe модула"
msgid "E836: This Vim cannot execute :python after using :py3"
msgstr "E836: Овај Vim не може да изврши :python након коришћења :py3"
@@ -2812,9 +2995,6 @@ msgstr "непозната vimОпција"
msgid "keyboard interrupt"
msgstr "прекид тастатуре"
-msgid "vim error"
-msgstr "vim грешка"
-
msgid "cannot create buffer/window command: object is being deleted"
msgstr "бафер/прозор команда не може да се креира: објекат се брише"
@@ -2828,8 +3008,8 @@ msgid ""
"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
"org"
msgstr ""
-"E280: TCL ФАТАЛНА ГРЕШКА: reflist је оштећена!? Молимо пријавите ово на "
-"vim-dev@vim.org"
+"E280: TCL ФАТАЛНА ГРЕШКА: reflist је оштећена!? Молимо пријавите ово на vim-"
+"dev@vim.org"
msgid "cannot register callback command: buffer/window reference not found"
msgstr ""
@@ -2863,10 +3043,128 @@ msgid "E251: VIM instance registry property is badly formed. Deleted!"
msgstr "E251: registry својство VIM инстанце је лоше формирано. Обрисано!"
#, c-format
+msgid "%ld lines to indent... "
+msgstr "%ld за увлачење... "
+
+#, c-format
+msgid "%ld line indented "
+msgid_plural "%ld lines indented "
+msgstr[0] "%ld линија увучена "
+msgstr[1] "%ld линије увучене "
+msgstr[2] "%ld линија увучено "
+
+msgid " Keyword completion (^N^P)"
+msgstr " Довршавање кључне речи (^N^P)"
+
+msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+msgstr " ^X режим (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+
+msgid " Whole line completion (^L^N^P)"
+msgstr " Довршавање целе линије (^L^N^P)"
+
+msgid " File name completion (^F^N^P)"
+msgstr " Довршавање имена фајла (^F^N^P)"
+
+msgid " Tag completion (^]^N^P)"
+msgstr " Довршавање ознаке (^]^N^P)"
+
+msgid " Path pattern completion (^N^P)"
+msgstr " Довршавање шаблона путање (^N^P)"
+
+msgid " Definition completion (^D^N^P)"
+msgstr " Довршавање дефиниције (^D^N^P)"
+
+msgid " Dictionary completion (^K^N^P)"
+msgstr " Довршавање речника (^K^N^P)"
+
+msgid " Thesaurus completion (^T^N^P)"
+msgstr " Довршавање речника синонима (^T^N^P)"
+
+msgid " Command-line completion (^V^N^P)"
+msgstr " Довршавање командне линије (^V^N^P)"
+
+msgid " User defined completion (^U^N^P)"
+msgstr " Кориснички дефинисано довршавање (^U^N^P)"
+
+msgid " Omni completion (^O^N^P)"
+msgstr " Omni довршавање (^O^N^P)"
+
+msgid " Spelling suggestion (s^N^P)"
+msgstr " Правописни предлог (s^N^P)"
+
+msgid " Keyword Local completion (^N^P)"
+msgstr " Довршавање локалне кључне речи (^N^P)"
+
+msgid "Hit end of paragraph"
+msgstr "Достигнут је крај пасуса"
+
+msgid "E839: Completion function changed window"
+msgstr "E839: Функција довршавања је променила прозор"
+
+msgid "E840: Completion function deleted text"
+msgstr "E840: Функција довршавања је обрисала текст"
+
+msgid "'dictionary' option is empty"
+msgstr "Опција 'dictionary' је празна"
+
+msgid "'thesaurus' option is empty"
+msgstr "Опција 'thesaurus' је празна"
+
+#, c-format
+msgid "Scanning dictionary: %s"
+msgstr "Скенирање речника: %s"
+
+msgid " (insert) Scroll (^E/^Y)"
+msgstr " (уметање) Скроловање (^E/^Y)"
+
+msgid " (replace) Scroll (^E/^Y)"
+msgstr " (замена) Скроловање (^E/^Y)"
+
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() може да се користи само у режиму Уметање"
+
+#, c-format
+msgid "Scanning: %s"
+msgstr "Скенирање: %s"
+
+msgid "Scanning tags."
+msgstr "Скенирање ознака."
+
+msgid "match in file"
+msgstr "подударање у фајлу"
+
+msgid " Adding"
+msgstr " Додавање"
+
+msgid "-- Searching..."
+msgstr "-- Претрага..."
+
+msgid "Back at original"
+msgstr "Назад на оригинал"
+
+msgid "Word from other line"
+msgstr "Реч из друге линије"
+
+msgid "The only match"
+msgstr "Једино подударање"
+
+#, c-format
+msgid "match %d of %d"
+msgstr "подударање %d од %d"
+
+#, c-format
+msgid "match %d"
+msgstr "подударање %d"
+
+#, c-format
msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: Дупли кључ у JSON: \"%s\""
#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: Аргумент за %s мора бити Листа или Blob"
+
+#, c-format
msgid "E696: Missing comma in List: %s"
msgstr "E696: У Листи недостаје зарез: %s"
@@ -2874,6 +3172,36 @@ msgstr "E696: У Листи недостаје зарез: %s"
msgid "E697: Missing end of List ']': %s"
msgstr "E697: Недостаје крај Листе ']': %s"
+msgid "sort() argument"
+msgstr "sort() аргумент"
+
+msgid "uniq() argument"
+msgstr "uniq() аргумент"
+
+msgid "E702: Sort compare function failed"
+msgstr "E702: Sort функција поређења није успела"
+
+msgid "E882: Uniq compare function failed"
+msgstr "E882: Uniq функција поређења није успела"
+
+msgid "map() argument"
+msgstr "map() аргумент"
+
+msgid "filter() argument"
+msgstr "filter() аргумент"
+
+msgid "add() argument"
+msgstr "add() аргумент"
+
+msgid "insert() argument"
+msgstr "insert() аргумент"
+
+msgid "remove() argument"
+msgstr "remove() аргумент"
+
+msgid "reverse() argument"
+msgstr "reverse() аргумент"
+
msgid "Unknown option argument"
msgstr "Непознат аргумент опције"
@@ -3076,9 +3404,6 @@ msgstr "-A\t\t\tПокрени у Арапском режиму"
msgid "-H\t\t\tStart in Hebrew mode"
msgstr "-H\t\t\tПокрени у Хебрејском режиму"
-msgid "-F\t\t\tStart in Farsi mode"
-msgstr "-F\t\t\tПокрени у Фарси режиму"
-
msgid "-T <terminal>\tSet terminal type to <terminal>"
msgstr "-T <терминал>\tПостави тип терминала на <терминал>"
@@ -3217,11 +3542,11 @@ msgstr ""
"\n"
"Аргументи које препознаје gvim (Athena верзија):\n"
-msgid "-display <display>\tRun vim on <display>"
-msgstr "-display <дисплеј>\tПокрени vim на <дисплеј>"
+msgid "-display <display>\tRun Vim on <display>"
+msgstr "-display <дисплеј>\tПокрени Vim на <дисплеј>"
-msgid "-iconic\t\tStart vim iconified"
-msgstr "-iconic\t\tПокрени vim као икону"
+msgid "-iconic\t\tStart Vim iconified"
+msgstr "-iconic\t\tПокрени Vim као икону"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
msgstr "-background <боја>\tКористи <боја> за позадину (такође: -bg)"
@@ -3269,8 +3594,8 @@ msgstr ""
"\n"
"Аргументи које препознаје gvim (GTK+ верзија):\n"
-msgid "-display <display>\tRun vim on <display> (also: --display)"
-msgstr "-display <дисплеј>\tПокрени vim на <дисплеј> (такође: --display)"
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
+msgstr "-display <дисплеј>\tПокрени Vim на <дисплеј> (такође: --display)"
msgid "--role <role>\tSet a unique role to identify the main window"
msgstr ""
@@ -3308,6 +3633,39 @@ msgstr "Нема приказа: Израз слања није успео.\n"
msgid ": Send expression failed.\n"
msgstr ": Израз слања није успео.\n"
+#, c-format
+msgid "E224: global abbreviation already exists for %s"
+msgstr "E224: глобална скраћеница за %s већ постоји"
+
+#, c-format
+msgid "E225: global mapping already exists for %s"
+msgstr "E225: глобално мапирање за %s већ постоји"
+
+#, c-format
+msgid "E226: abbreviation already exists for %s"
+msgstr "E226: скраћеница за %s већ постоји"
+
+#, c-format
+msgid "E227: mapping already exists for %s"
+msgstr "E227: мапирање за %s већ постоји"
+
+msgid "No abbreviation found"
+msgstr "Скраћеница није пронађена"
+
+msgid "No mapping found"
+msgstr "Мапирање није пронађено"
+
+msgid "E228: makemap: Illegal mode"
+msgstr "E228: makemap: Недозвољен режим"
+
+#, c-format
+msgid "E357: 'langmap': Matching character missing for %s"
+msgstr "E357: 'langmap': Недостаје одговарајући карактер за %s"
+
+#, c-format
+msgid "E358: 'langmap': Extra characters after semicolon: %s"
+msgstr "E358: 'langmap': Има још карактера након тачказареза: %s"
+
msgid "No marks set"
msgstr "Нема постављених маркера"
@@ -3320,21 +3678,21 @@ msgid ""
"mark line col file/text"
msgstr ""
"\n"
-"линија маркера кол датотека/текст"
+"марк лин кол фајл/текст"
msgid ""
"\n"
" jump line col file/text"
msgstr ""
"\n"
-" линија скока кол датотека/текст"
+" скок лин кол фајл/текст"
msgid ""
"\n"
"change line col text"
msgstr ""
"\n"
-"линија промене кол текст"
+"измена лин кол текст"
msgid ""
"\n"
@@ -3664,8 +4022,8 @@ msgstr ""
"\n"
" ИД процеса: "
-msgid " (still running)"
-msgstr " (још се извршава)"
+msgid " (STILL RUNNING)"
+msgstr " (ЈОШ СЕ ИЗВРШАВА)"
msgid ""
"\n"
@@ -3701,8 +4059,8 @@ msgid "E315: ml_get: invalid lnum: %ld"
msgstr "E315: ml_get: неисправан lnum: %ld"
#, c-format
-msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get: линија %ld не може да се пронађе"
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get: линија %ld у баферу %d не може да се пронађе %s"
msgid "E317: pointer block id wrong 3"
msgstr "E317: ид показивача блока је погрешан 3"
@@ -3842,9 +4200,6 @@ msgstr "E326: Пронађено је превише swap датотека"
msgid "E327: Part of menu-item path is not sub-menu"
msgstr "E327: Део путање ставке менија није подмени"
-msgid "E328: Menu only exists in another mode"
-msgstr "E328: Мени постоји само у другом режиму"
-
#, c-format
msgid "E329: No menu \"%s\""
msgstr "E329: Нема менија \"%s\""
@@ -3964,7 +4319,7 @@ msgid "E767: Too many arguments to printf()"
msgstr "E767: Сувише аргумената за printf()"
msgid "W10: Warning: Changing a readonly file"
-msgstr "W10: Упозорење: Мења се датотека која може само да се чита"
+msgstr "W10: Упозорење: Мења се фајл који може само да се чита"
msgid "Type number and <Enter> or click with mouse (empty cancels): "
msgstr "Унесите број и <Enter> или кликните мишем (ништа за отказ): "
@@ -4011,12 +4366,8 @@ msgstr ""
"[позива] укупно re/malloc()-а %lu, укупно free()-ова %lu\n"
"\n"
-msgid "E340: Line is becoming too long"
-msgstr "E340: Линија постаје предугачка"
-
-#, c-format
-msgid "E341: Internal error: lalloc(%ld, )"
-msgstr "E341: Интерна грешка: lalloc(%ld, )"
+msgid "E341: Internal error: lalloc(0, )"
+msgstr "E341: Интерна грешка: lalloc(0, )"
#, c-format
msgid "E342: Out of memory! (allocating %lu bytes)"
@@ -4089,12 +4440,6 @@ msgstr "E505: %s је само за читање (додајте ! за прем
msgid "E349: No identifier under cursor"
msgstr "E349: Под курсором није идентификатор"
-msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: 'operatorfunc' је празна"
-
-msgid "E775: Eval feature not available"
-msgstr "E775: Eval могућност није доступна"
-
msgid "Warning: terminal cannot highlight"
msgstr "Упозорење: терминал не може да истакне текст"
@@ -4117,101 +4462,32 @@ msgid "Type :qa! and press <Enter> to abandon all changes and exit Vim"
msgstr ""
"Откуцајте :qa! и притисните <Ентер> да одбаците све измене и напустите Vim"
-#, c-format
-msgid "1 line %sed 1 time"
-msgstr "1 линија %sрана 1 пут"
+msgid "Type :qa and press <Enter> to exit Vim"
+msgstr "Откуцајте :qa и притисните <Ентер> да напустите Vim"
#, c-format
-msgid "1 line %sed %d times"
-msgstr "1 линија %sрана %d пута"
+msgid "%ld line %sed %d time"
+msgid_plural "%ld line %sed %d times"
+msgstr[0] "%ld линија %sрано %d пут"
+msgstr[1] "%ld линије %sрано %d пут"
+msgstr[2] "%ld линија %sрано %d пут"
#, c-format
-msgid "%ld lines %sed 1 time"
-msgstr "%ld линија %sрано 1 пут"
-
-#, c-format
-msgid "%ld lines %sed %d times"
-msgstr "%ld линија %sрано %d пута"
-
-#, c-format
-msgid "%ld lines to indent... "
-msgstr "%ld за увлачење... "
-
-msgid "1 line indented "
-msgstr "1 линија увучена "
-
-#, c-format
-msgid "%ld lines indented "
-msgstr "%ld инија увучено "
-
-msgid "E748: No previously used register"
-msgstr "E748: Нема претходно коришћеног регистра"
+msgid "%ld lines %sed %d time"
+msgid_plural "%ld lines %sed %d times"
+msgstr[0] "%ld линија %sрано %d пут"
+msgstr[1] "%ld линија %sрано %d пута"
+msgstr[2] "%ld линија %sрано %d пута"
msgid "cannot yank; delete anyway"
msgstr "не може да се тргне; ипак обрисати"
-msgid "1 line changed"
-msgstr "1 линија је промењена"
-
-#, c-format
-msgid "%ld lines changed"
-msgstr "%ld линија је промењено"
-
-#, c-format
-msgid "freeing %ld lines"
-msgstr "ослобађа се %ld линија"
-
-#, c-format
-msgid " into \"%c"
-msgstr " у \"%c"
-
-#, c-format
-msgid "block of 1 line yanked%s"
-msgstr "блок од 1 линије је тргнут%s"
-
-#, c-format
-msgid "1 line yanked%s"
-msgstr "1 линија је тргнута%s"
-
#, c-format
-msgid "block of %ld lines yanked%s"
-msgstr "блок од %ld линија је тргнут%s"
-
-#, c-format
-msgid "%ld lines yanked%s"
-msgstr "%ld линија је тргнуто%s"
-
-#, c-format
-msgid "E353: Nothing in register %s"
-msgstr "E353: Регистар %s је празан"
-
-msgid ""
-"\n"
-"--- Registers ---"
-msgstr ""
-"\n"
-"--- Регистри ---"
-
-msgid "Illegal register name"
-msgstr "Неважеће име регистра"
-
-msgid ""
-"\n"
-"# Registers:\n"
-msgstr ""
-"\n"
-"# Регистри:\n"
-
-#, c-format
-msgid "E574: Unknown register type %d"
-msgstr "E574: Непознат тип регистра %d"
-
-msgid ""
-"E883: search pattern and expression register may not contain two or more "
-"lines"
-msgstr ""
-"E883: регистар за шаблон претраге и израз не може да садржи две или више "
-"линија"
+msgid "%ld line changed"
+msgid_plural "%ld lines changed"
+msgstr[0] "%ld линија је промењена"
+msgstr[1] "%ld линије је промењено"
+msgstr[2] "%ld линија је промењено"
#, c-format
msgid "%ld Cols; "
@@ -4235,18 +4511,21 @@ msgstr "Кол %s од %s; Линија %ld од %ld; Реч %lld од %lld; Б
#, c-format
msgid ""
-"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte %"
-"lld of %lld"
+"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte "
+"%lld of %lld"
msgstr ""
-"Кол %s од %s; Линија %ld од %ld; Реч %lld од %lld; Знак %lld од %lld; Бајт %"
-"lld од %lld"
+"Кол %s од %s; Линија %ld од %ld; Реч %lld од %lld; Знак %lld од %lld; Бајт "
+"%lld од %lld"
#, c-format
msgid "(+%lld for BOM)"
msgstr "(+%lld за BOM)"
-msgid "Thanks for flying Vim"
-msgstr "Хвала што летите са Vim"
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' је празна"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: Eval могућност није доступна"
msgid "E518: Unknown option"
msgstr "E518: Непозната опција"
@@ -4257,8 +4536,11 @@ msgstr "E519: Опција није подржана"
msgid "E520: Not allowed in a modeline"
msgstr "E520: Није довољено у режимској линији"
+msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
+msgstr "E992: Није дозвољено у режимској линији када је 'modelineexpr' искључена"
+
msgid "E846: Key code not set"
-msgstr "E846: Није постављрн код тастера"
+msgstr "E846: Није постављeн код тастера"
msgid "E521: Number required after ="
msgstr "E521: Потребан је број након ="
@@ -4266,6 +4548,66 @@ msgstr "E521: Потребан је број након ="
msgid "E522: Not found in termcap"
msgstr "E522: Није пронађено у termcap"
+msgid "E946: Cannot make a terminal with running job modifiable"
+msgstr ""
+"E946: Терминал са задатком који се извршава не може да се учини измењивим"
+
+msgid "E590: A preview window already exists"
+msgstr "E590: Прозор за преглед већ постоји"
+
+msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
+msgstr "W17: Арапски захтева UTF-8, извршите ':set encoding=utf-8'"
+
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: Ово окружење не подржава 24-битне боје"
+
+#, c-format
+msgid "E593: Need at least %d lines"
+msgstr "E593: Потребно је најмање %d линија"
+
+#, c-format
+msgid "E594: Need at least %d columns"
+msgstr "E594: Потребно је најмање %d колона"
+
+#, c-format
+msgid "E355: Unknown option: %s"
+msgstr "E355: Непозната опција: %s"
+
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: Захтева се број: &%s = '%s'"
+
+msgid ""
+"\n"
+"--- Terminal codes ---"
+msgstr ""
+"\n"
+"--- Кодови терминала ---"
+
+msgid ""
+"\n"
+"--- Global option values ---"
+msgstr ""
+"\n"
+"--- Вредности глобалних опција ---"
+
+msgid ""
+"\n"
+"--- Local option values ---"
+msgstr ""
+"\n"
+"--- Вредности локалних опција ---"
+
+msgid ""
+"\n"
+"--- Options ---"
+msgstr ""
+"\n"
+"--- Опције ---"
+
+msgid "E356: get_varp ERROR"
+msgstr "E356: get_varp ГРЕШКА"
+
#, c-format
msgid "E539: Illegal character <%s>"
msgstr "E539: Недозвољен карактер <%s>"
@@ -4274,6 +4616,13 @@ msgstr "E539: Недозвољен карактер <%s>"
msgid "For option %s"
msgstr "За опцију %s"
+msgid "E540: Unclosed expression sequence"
+msgstr "E540: Низ израза није затворен"
+
+
+msgid "E542: unbalanced groups"
+msgstr "E542: неуравнотежене групе"
+
msgid "E529: Cannot set 'term' to empty string"
msgstr "E529: 'term' не може да се постави на празан стринг"
@@ -4344,86 +4693,6 @@ msgstr "E536: потребан зарез"
msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' мора бити празно или да садржи %s"
-msgid "E538: No mouse support"
-msgstr "E538: Нема подршке за миша"
-
-msgid "E540: Unclosed expression sequence"
-msgstr "E540: Низ израза није затворен"
-
-msgid "E541: too many items"
-msgstr "E541: превише ставки"
-
-msgid "E542: unbalanced groups"
-msgstr "E542: неуравнотежене групе"
-
-msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr ""
-"E946: Терминал са задатком који се извршава не може да се учини измењивим"
-
-msgid "E590: A preview window already exists"
-msgstr "E590: Прозор за преглед већ постоји"
-
-msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr "W17: Арапски захтева UTF-8, извршите ':set encoding=utf-8'"
-
-msgid "E954: 24-bit colors are not supported on this environment"
-msgstr "E954: Ово окружење не подржава 24-битне боје"
-
-#, c-format
-msgid "E593: Need at least %d lines"
-msgstr "E593: Потребно је најмање %d линија"
-
-#, c-format
-msgid "E594: Need at least %d columns"
-msgstr "E594: Потребно је најмање %d колона"
-
-#, c-format
-msgid "E355: Unknown option: %s"
-msgstr "E355: Непозната опција: %s"
-
-#, c-format
-msgid "E521: Number required: &%s = '%s'"
-msgstr "E521: Захтева се број: &%s = '%s'"
-
-msgid ""
-"\n"
-"--- Terminal codes ---"
-msgstr ""
-"\n"
-"--- Кодови терминала ---"
-
-msgid ""
-"\n"
-"--- Global option values ---"
-msgstr ""
-"\n"
-"--- Вредности глобалних опција ---"
-
-msgid ""
-"\n"
-"--- Local option values ---"
-msgstr ""
-"\n"
-"--- Вредности локалних опција ---"
-
-msgid ""
-"\n"
-"--- Options ---"
-msgstr ""
-"\n"
-"--- Опције ---"
-
-msgid "E356: get_varp ERROR"
-msgstr "E356: get_varp ГРЕШКА"
-
-#, c-format
-msgid "E357: 'langmap': Matching character missing for %s"
-msgstr "E357: 'langmap': Недостаје одговарајући карактер за %s"
-
-#, c-format
-msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: 'langmap': Има још карактера након тачказареза: %s"
-
msgid "cannot open "
msgstr "не може да се отвори "
@@ -4516,6 +4785,10 @@ msgstr ""
"\n"
"Vim: Дошло је до X грешке\n"
+#, c-format
+msgid "restoring display %s"
+msgstr "враћање екрана %s"
+
msgid "Testing the X display failed"
msgstr "Тестирање X приказа није успело"
@@ -4612,15 +4885,6 @@ msgstr "XSMP SmcOpenConnection није успело: %s"
msgid "At line"
msgstr "Код линије"
-msgid "Could not load vim32.dll!"
-msgstr "vim32.dll није могла да се учита!"
-
-msgid "VIM Error"
-msgstr "VIM Грешка"
-
-msgid "Could not fix up function pointers to the DLL!"
-msgstr "Показивачи на функције у DLL-у нису могли да се поправе!"
-
#, c-format
msgid "Vim: Caught %s event\n"
msgstr "Vim: Ухваћен је %s догађај\n"
@@ -4653,6 +4917,26 @@ msgstr "Vim Упозорење"
msgid "shell returned %d"
msgstr "командно окружење је вратило %d"
+msgid "E278: Cannot put a terminal buffer in a popup window"
+msgstr "E278: Терминалски бафер не може да се стави у искачући прозор"
+
+#, c-format
+msgid "E997: Tabpage not found: %d"
+msgstr "E997: Картица није пронађена: %d"
+
+#, c-format
+msgid "E993: window %d is not a popup window"
+msgstr "E993: прозор %d није искачући прозор"
+
+msgid "E994: Not allowed in a popup window"
+msgstr "E994: Није дозвољено у искачућем прозору"
+
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: Најпре користите \":profile start {fname}\""
+
+msgid "E553: No more items"
+msgstr "E553: Нема више ставки"
+
msgid "E926: Current location list was changed"
msgstr "E926: Текућа листа локација је промењена"
@@ -4685,9 +4969,6 @@ msgstr "E378: 'errorformat' не садржи шаблон"
msgid "E379: Missing or empty directory name"
msgstr "E379: Име директоријума недостаје или је празно"
-msgid "E553: No more items"
-msgstr "E553: Нема више ставки"
-
msgid "E924: Current window was closed"
msgstr "E924: Текући прозор је затворен"
@@ -4731,6 +5012,10 @@ msgid "E777: String or List expected"
msgstr "E777: Очекује се String или List"
#, c-format
+msgid "E927: Invalid action: '%s'"
+msgstr "E927: Неисправна акција: '%s'"
+
+#, c-format
msgid "E369: invalid item in %s%%[]"
msgstr "E369: неважећа ставка у %s%%[]"
@@ -4770,37 +5055,29 @@ msgstr "E69: Недостаје ] након %s%%["
msgid "E70: Empty %s%%[]"
msgstr "E70: Празан %s%%[]"
-msgid "E65: Illegal back reference"
-msgstr "E65: Неважећа повратна референца"
-
-msgid "E339: Pattern too long"
-msgstr "E339: Шаблон је предугачак"
-
-msgid "E50: Too many \\z("
-msgstr "E50: Превише \\z("
+msgid "E956: Cannot use pattern recursively"
+msgstr "E956: Шаблон не може да се користи рекурзивно"
#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: Превише %s("
-
-msgid "E52: Unmatched \\z("
-msgstr "E52: Неупарено \\z("
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: Синтаксна грешка у %s{...}"
#, c-format
-msgid "E59: invalid character after %s@"
-msgstr "E59: неважећи карактер након %s@"
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA regexp) не може да се понови %s"
-#, c-format
-msgid "E60: Too many complex %s{...}s"
-msgstr "E60: Превише комплексних %s{...}s"
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: Иза \\%#= може да следи једино 0, 1, или 2. Користиће се аутоматски "
+"енџин "
-#, c-format
-msgid "E61: Nested %s*"
-msgstr "E61: Угњеждено %s*"
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Пребацивање на backtracking RE енџин за шаблон: "
-#, c-format
-msgid "E62: Nested %s%c"
-msgstr "E62: Угњеждено %s%c"
+msgid "E65: Illegal back reference"
+msgstr "E65: Неважећа повратна референца"
msgid "E63: invalid use of \\_"
msgstr "E63: неисправна употреба \\_"
@@ -4821,25 +5098,36 @@ msgid "E71: Invalid character after %s%%"
msgstr "E71: Неважећи карактер након %s%%"
#, c-format
-msgid "E554: Syntax error in %s{...}"
-msgstr "E554: Синтаксна грешка у %s{...}"
+msgid "E59: invalid character after %s@"
+msgstr "E59: неважећи карактер након %s@"
-msgid "External submatches:\n"
-msgstr "Спољна подпоклапања:\n"
+#, c-format
+msgid "E60: Too many complex %s{...}s"
+msgstr "E60: Превише комплексних %s{...}s"
#, c-format
-msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA regexp) не може да се понови %s"
+msgid "E61: Nested %s*"
+msgstr "E61: Угњеждено %s*"
-msgid ""
-"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
-"used "
-msgstr ""
-"E864: Иза \\%#= може да следи једино 0, 1, или 2. Користиће се аутоматски "
-"енџин "
+#, c-format
+msgid "E62: Nested %s%c"
+msgstr "E62: Угњеждено %s%c"
-msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Пребацивање на backtracking RE енџин за шаблон: "
+msgid "E50: Too many \\z("
+msgstr "E50: Превише \\z("
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: Превише %s("
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: Неупарено \\z("
+
+msgid "E339: Pattern too long"
+msgstr "E339: Шаблон је предугачак"
+
+msgid "External submatches:\n"
+msgstr "Спољна подпоклапања:\n"
msgid "E865: (NFA) Regexp end encountered prematurely"
msgstr "E865: Крај (NFA) Regexp израза је достигнут прерано"
@@ -4849,8 +5137,8 @@ msgid "E866: (NFA regexp) Misplaced %c"
msgstr "E866: (NFA regexp) %c је на погрешном месту"
#, c-format
-msgid "E877: (NFA regexp) Invalid character class: %ld"
-msgstr "E877: (NFA regexp) Неважећа карактер класа: %ld"
+msgid "E877: (NFA regexp) Invalid character class: %d"
+msgstr "E877: (NFA regexp) Неважећа карактер класа: %d"
#, c-format
msgid "E867: (NFA) Unknown operator '\\z%c'"
@@ -4885,6 +5173,11 @@ msgstr "E879: (NFA regexp) Превише \\z("
msgid "E873: (NFA regexp) proper termination error"
msgstr "E873: (NFA regexp) грешка правилне терминације"
+msgid "Could not open temporary log file for writing, displaying on stderr... "
+msgstr ""
+"Привремени лог фајл није могао да се отвори за упис, приказује се на "
+"stderr... "
+
msgid "E874: (NFA) Could not pop the stack!"
msgstr "E874: (NFA) Скидање са стека није успело!"
@@ -4967,6 +5260,80 @@ msgid "recording"
msgstr "снимање"
#, c-format
+msgid "Searching for \"%s\" in \"%s\""
+msgstr "Тражи се \"%s\" у \"%s\""
+
+#, c-format
+msgid "Searching for \"%s\""
+msgstr "Тражи се\"%s\""
+
+#, c-format
+msgid "not found in '%s': \"%s\""
+msgstr "није пронађено у '%s': \"%s\""
+
+msgid "Source Vim script"
+msgstr "Изворна Vim скрипта"
+
+#, c-format
+msgid "Cannot source a directory: \"%s\""
+msgstr "Директоријум не може да буде извор: \"%s\""
+
+#, c-format
+msgid "could not source \"%s\""
+msgstr "не може да се прибави \"%s\""
+
+#, c-format
+msgid "line %ld: could not source \"%s\""
+msgstr "линија %ld: не може да се прибави \"%s\""
+
+#, c-format
+msgid "sourcing \"%s\""
+msgstr "прибављање \"%s\""
+
+#, c-format
+msgid "line %ld: sourcing \"%s\""
+msgstr "линија %ld: прибављање \"%s\""
+
+#, c-format
+msgid "finished sourcing %s"
+msgstr "завршено прибављање %s"
+
+#, c-format
+msgid "continuing in %s"
+msgstr "наставља се у %s"
+
+msgid "modeline"
+msgstr "режимскe линијe (modeline)"
+
+msgid "--cmd argument"
+msgstr "--cmd аргументa"
+
+msgid "-c argument"
+msgstr "-c аргументa"
+
+msgid "environment variable"
+msgstr "променљивe окружења"
+
+msgid "error handler"
+msgstr "процедурe за обраду грешке"
+
+msgid "W15: Warning: Wrong line separator, ^M may be missing"
+msgstr "W15: Упозорење: Погрешан сепаратор линије, можда недостаје ^M"
+
+msgid "E167: :scriptencoding used outside of a sourced file"
+msgstr "E167: :scriptencoding се користи ван изворишног фајла"
+
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion се користи ван изворишног фајла"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: scriptversion није подржана: %d"
+
+msgid "E168: :finish used outside of a sourced file"
+msgstr "E168: :finish се користи ван изворишног фајла"
+
+#, c-format
msgid "E383: Invalid search string: %s"
msgstr "E383: Неисправан стринг за претрагу: %s"
@@ -5022,18 +5389,74 @@ msgstr "E388: Дефиниција не може да се пронађе"
msgid "E389: Couldn't find pattern"
msgstr "E389: Шаблон за претрагу није пронађен"
-msgid "Substitute "
-msgstr "Замена "
+msgid "Save View"
+msgstr "Сачувај Поглед"
+
+msgid "Save Session"
+msgstr "Сачувај Сесију"
+
+msgid "Save Setup"
+msgstr "Сачувај Подешавање"
+
+msgid "[Deleted]"
+msgstr "[Обрисано]"
-#, c-format
msgid ""
"\n"
-"# Last %sSearch Pattern:\n"
-"~"
+"--- Signs ---"
msgstr ""
"\n"
-"# Последњи %sШаблон Претраге:\n"
-"~"
+"--- Знаци ---"
+
+#, c-format
+msgid "Signs for %s:"
+msgstr "Знаци за %s:"
+
+#, c-format
+msgid " group=%s"
+msgstr " група=%s"
+
+#, c-format
+msgid " line=%ld id=%d%s name=%s priority=%d"
+msgstr " линија=%ld ид=%d%s име=%s приоритет=%d"
+
+msgid "E612: Too many signs defined"
+msgstr "E612: Дефинисано је превише знакова"
+
+#, c-format
+msgid "E239: Invalid sign text: %s"
+msgstr "E239: Неисправан текст знака: %s"
+
+#, c-format
+msgid "E155: Unknown sign: %s"
+msgstr "E155: Непознат знак: %s"
+
+#, c-format
+msgid "E885: Not possible to change sign %s"
+msgstr "E885: Знак %s не може да се промени"
+
+msgid "E159: Missing sign number"
+msgstr "E159: Недостаје број знака"
+
+#, c-format
+msgid "E157: Invalid sign ID: %d"
+msgstr "E157: Неисправан ИД знака: %d"
+
+msgid "E934: Cannot jump to a buffer that does not have a name"
+msgstr "E934: Не може да се скочи на бафер који нема име"
+
+#, c-format
+msgid "E160: Unknown sign command: %s"
+msgstr "E160: Непозната знак команда: %s"
+
+msgid "E156: Missing sign name"
+msgstr "E156: Недостаје име знака"
+
+msgid " (NOT FOUND)"
+msgstr " (НИЈЕ ПРОНАЂЕНО)"
+
+msgid " (not supported)"
+msgstr " (није подржано)"
msgid "E756: Spell checking is not enabled"
msgstr "E756: Провера правописа није омогућена"
@@ -5057,21 +5480,6 @@ msgstr "E797: SpellFileMissing аутокоманда је обрисала ба
msgid "Warning: region %s not supported"
msgstr "Упозорење: регион %s није подржан"
-msgid "Sorry, no suggestions"
-msgstr "Жао нам је, нема сугестија"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "Жао нам је, само %ld сугестија"
-
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "Променити \"%.*s\" у:"
-
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < \"%.*s\""
-
msgid "E752: No previous spell replacement"
msgstr "E752: Нема претходне правописне замене"
@@ -5148,10 +5556,6 @@ msgid "Conversion in %s not supported: from %s to %s"
msgstr "Конверзија у %s није подржана: из %s у %s"
#, c-format
-msgid "Conversion in %s not supported"
-msgstr "Конверзија у %s није подржана"
-
-#, c-format
msgid "Invalid value for FLAG in %s line %d: %s"
msgstr "Неважећа вредност за FLAG у %s линија %d: %s"
@@ -5210,8 +5614,8 @@ msgid ""
"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
"line %d: %s"
msgstr ""
-"Наставак се такође користи за BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST у %s"
-"линија %d: %s"
+"Наставак се такође користи за BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
+"NOSUGGEST у %sлинија %d: %s"
#, c-format
msgid "Expected Y or N in %s line %d: %s"
@@ -5389,8 +5793,8 @@ msgid "Done!"
msgstr "Завршено!"
#, c-format
-msgid "E765: 'spellfile' does not have %ld entries"
-msgstr "E765: 'spellfile' не садржи %ld ставке"
+msgid "E765: 'spellfile' does not have %d entries"
+msgstr "E765: 'spellfile' не садржи %d ставке"
#, c-format
msgid "Word '%.*s' removed from %s"
@@ -5437,6 +5841,9 @@ msgstr "синтакса правописа подразумевано"
msgid "syntax iskeyword "
msgstr "синтакса iskeyword "
+msgid "syntax iskeyword not set"
+msgstr "синтакса iskeyword није постављена"
+
#, c-format
msgid "E391: No such syntax cluster: %s"
msgstr "E391: Не постоји такав синтаксни кластер: %s"
@@ -5595,7 +6002,7 @@ msgstr "E414: група има поставке, highlight link се игнор
#, c-format
msgid "E415: unexpected equal sign: %s"
-msgstr "E415: неочкиван знак једнакости: %s"
+msgstr "E415: неочекиван знак једнакости: %s"
#, c-format
msgid "E416: missing equal sign: %s"
@@ -5615,6 +6022,9 @@ msgstr "E419: Непозната FG боја"
msgid "E420: BG color unknown"
msgstr "E420: Непозната BG боја"
+msgid "E453: UL color unknown"
+msgstr "E453: Непозната UL боја"
+
#, c-format
msgid "E421: Color name or number not recognized: %s"
msgstr "E421: Име боје или број нису препознати: %s"
@@ -5918,10 +6328,6 @@ msgstr "Ништа за опозив"
msgid "number changes when saved"
msgstr "број измене када сачувано"
-#, c-format
-msgid "%ld seconds ago"
-msgstr "пре %ld секунди"
-
msgid "E790: undojoin is not allowed after undo"
msgstr "E790: undojoin ије дозвољен након undo"
@@ -5931,6 +6337,66 @@ msgstr "E439: листа опозива је искварена"
msgid "E440: undo line missing"
msgstr "E440: недостаје линија опозива"
+msgid ""
+"\n"
+" Name Args Address Complete Definition"
+msgstr ""
+"\n"
+" Име Аргу Адреса Довршење Дефиниција"
+
+msgid "No user-defined commands found"
+msgstr "Нису пронађене кориснички дефинисане команде"
+
+#, c-format
+msgid "E180: Invalid address type value: %s"
+msgstr "E180: Неисправна вредност адресног типа: %s"
+
+#, c-format
+msgid "E180: Invalid complete value: %s"
+msgstr "E180: Неисправна вредност довршавања: %s"
+
+msgid "E468: Completion argument only allowed for custom completion"
+msgstr "E468: Аргумент довршавања је дозвољен само за прилагођена довршавања"
+
+msgid "E467: Custom completion requires a function argument"
+msgstr "E467: Прилагођено довршавање захтева аргумент функције"
+
+msgid "E175: No attribute specified"
+msgstr "E175: Није наведен ни један атрибут"
+
+msgid "E176: Invalid number of arguments"
+msgstr "E176: Неисправан број аргумената"
+
+msgid "E177: Count cannot be specified twice"
+msgstr "E177: Бројач не може да се наведе два пута"
+
+msgid "E178: Invalid default value for count"
+msgstr "E178: Неисправна подразумевана вредност за бројач"
+
+msgid "E179: argument required for -complete"
+msgstr "E179: потребан је аргумент за -complete"
+
+msgid "E179: argument required for -addr"
+msgstr "E179: потребан је аргумент за -addr"
+
+#, c-format
+msgid "E174: Command already exists: add ! to replace it: %s"
+msgstr "E174: Команда већ постоји: додајте ! да је замените: %s"
+
+msgid "E182: Invalid command name"
+msgstr "E182: Неисправно име команде"
+
+msgid "E183: User defined commands must start with an uppercase letter"
+msgstr "E183: Кориснички дефинисане команде морају да почну великим словом"
+
+msgid "E841: Reserved name, cannot be used for user defined command"
+msgstr ""
+"E841: Резервисано име, не може да се користи за кориснички дефинисану команду"
+
+#, c-format
+msgid "E184: No such user-defined command: %s"
+msgstr "E184: Не постоји таква кориснички дефинисана команда: %s"
+
#, c-format
msgid "E122: Function %s already exists, add ! to replace it"
msgstr "E122: Функција %s већ постоји, додајте ! да је замените"
@@ -5953,6 +6419,13 @@ msgstr "E125: Неважећи аргумент: %s"
msgid "E853: Duplicate argument name: %s"
msgstr "E853: Име аргумента је дуплирано: %s"
+msgid "E989: Non-default argument follows default argument"
+msgstr "E989: Неподразумевани аргумент следи иза подразумеваног аргумента"
+
+#, c-format
+msgid "E451: Expected }: %s"
+msgstr "E451: Очекује се }: %s"
+
#, c-format
msgid "E740: Too many arguments for function %s"
msgstr "E740: Превише аргумената за функцију %s"
@@ -5984,16 +6457,8 @@ msgid "E699: Too many arguments"
msgstr "E699: Сувише аргумената"
#, c-format
-msgid "E117: Unknown function: %s"
-msgstr "E117: Непозната функција: %s"
-
-#, c-format
-msgid "E933: Function was deleted: %s"
-msgstr "E933: Функција је обрисана: %s"
-
-#, c-format
-msgid "E119: Not enough arguments for function: %s"
-msgstr "E119: Нема довољно аргумената за функцију: %s"
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: Функција не може да се користи као метода: %s"
#, c-format
msgid "E120: Using <SID> not in a script context: %s"
@@ -6014,6 +6479,9 @@ msgstr "E128: Име функције мора да почне великим с
msgid "E884: Function name cannot contain a colon: %s"
msgstr "E884: Име функције не може да садржи двотачку: %s"
+msgid "E454: function list was modified"
+msgstr "E454: листа функције је измењена"
+
#, c-format
msgid "E123: Undefined function: %s"
msgstr "E123: Недефинисана функција: %s"
@@ -6023,7 +6491,7 @@ msgid "E124: Missing '(': %s"
msgstr "E124: Недостаје '(': %s"
msgid "E862: Cannot use g: here"
-msgstr "E862: g: не може овде да се користи"
+msgstr "E862: Овде не може да се користи g:"
#, c-format
msgid "E932: Closure function should not be at top level: %s"
@@ -6033,6 +6501,10 @@ msgid "E126: Missing :endfunction"
msgstr "E126: Недостаје :endfunction"
#, c-format
+msgid "W1001: Text found after :enddef: %s"
+msgstr "W1001: Пронађен је текст након :enddef: %s"
+
+#, c-format
msgid "W22: Text found after :endfunction: %s"
msgstr "W22: Пронађен текст након :endfunction: %s"
@@ -6056,8 +6528,22 @@ msgid "E133: :return not inside a function"
msgstr "E133: :return није унутар функције"
#, c-format
-msgid "E107: Missing parentheses: %s"
-msgstr "E107: Недостају заграде: %s"
+msgid "%s (%s, compiled %s)"
+msgstr "%s (%s, компајлирано %s)"
+
+msgid ""
+"\n"
+"MS-Windows 64-bit GUI/console version"
+msgstr ""
+"\n"
+"MS-Windows 64-битна ГКИ/конзолна верзија"
+
+msgid ""
+"\n"
+"MS-Windows 32-bit GUI/console version"
+msgstr ""
+"\n"
+"MS-Windows 32-битна ГКИ/конзолна верзија"
msgid ""
"\n"
@@ -6116,14 +6602,14 @@ msgid ""
"Included patches: "
msgstr ""
"\n"
-"Укључене исправке: "
+"Укључене закрпе: "
msgid ""
"\n"
"Extra patches: "
msgstr ""
"\n"
-"Екстра исправке: "
+"Додатне закрпе: "
msgid "Modified by "
msgstr "Модификовао "
@@ -6261,7 +6747,7 @@ msgid "Linking: "
msgstr "Повезивање: "
msgid " DEBUG BUILD"
-msgstr " DEBUG ИЗДАЊЕ"
+msgstr " ДИБАГ ИЗДАЊЕ"
msgid "VIM - Vi IMproved"
msgstr "VIM - Vi IMproved"
@@ -6270,7 +6756,7 @@ msgid "version "
msgstr "верзија "
msgid "by Bram Moolenaar et al."
-msgstr "написали Bram Moolenaar et al."
+msgstr "написали Брам Моленар и др."
msgid "Vim is open source and freely distributable"
msgstr "Vim је отвореног кода и може слободно да се дистрибуира"
@@ -6306,13 +6792,13 @@ msgid "Running modeless, typed text is inserted"
msgstr "Безрежимски рад, умеће се откуцани текст"
msgid "menu Edit->Global Settings->Toggle Insert Mode "
-msgstr "мени Уређивање->Глобална подешавања->Преклапај режим Уметање "
+msgstr "мени Уређивање->Општа подешавања->Режим Уметање (да/не) "
msgid " for two modes "
msgstr " за два режима "
msgid "menu Edit->Global Settings->Toggle Vi Compatible"
-msgstr "мени Уређивање->Глобална подешавања->Преклапај Vi Компатибилно"
+msgstr "мени Уређивање->Општа подешавања->'Vi' сагласно (да/не)"
msgid " for Vim defaults "
msgstr " за Vim подразумевано "
@@ -6477,9 +6963,6 @@ msgstr "E685: Интерна грешка: %s"
msgid "Interrupted"
msgstr "Прекинуто"
-msgid "E14: Invalid address"
-msgstr "E14: Неважећа адреса"
-
msgid "E474: Invalid argument"
msgstr "E474: Неважећи аргумент"
@@ -6488,12 +6971,16 @@ msgid "E475: Invalid argument: %s"
msgstr "E475: Неважећи аргумент: %s"
#, c-format
+msgid "E983: Duplicate argument: %s"
+msgstr "E983: Дуплирани аргумент: %s"
+
+#, c-format
msgid "E475: Invalid value for argument %s"
-msgstr "E475: Неважећa вредност за аргумент: %s"
+msgstr "E475: Неважећа вредност за аргумент: %s"
#, c-format
msgid "E475: Invalid value for argument %s: %s"
-msgstr "E475: Неважећa вредност за аргумент %s: %s"
+msgstr "E475: Неважећа вредност за аргумент %s: %s"
#, c-format
msgid "E15: Invalid expression: %s"
@@ -6548,8 +7035,8 @@ msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
msgstr ""
"E26: хебрејски не може да се користи: Није омогућен у време компилације\n"
-msgid "E27: Farsi cannot be used: Not enabled at compile time\n"
-msgstr "E27: фарси не може да се користи: Није омогућен у време компилације\n"
+msgid "E27: Farsi support has been removed\n"
+msgstr "E27: Подршка за фарси је уклоњена\n"
msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
msgstr ""
@@ -6657,6 +7144,21 @@ msgid "E45: 'readonly' option is set (add ! to override)"
msgstr "E45: Постављена је 'readonly' опција (додајте ! за премошћавање)"
#, c-format
+msgid "E121: Undefined variable: %s"
+msgstr "E121: Недефинисана променљива: %s"
+
+#, c-format
+msgid "E734: Wrong variable type for %s="
+msgstr "E734: Погрешан тип променљиве за %s="
+
+#, c-format
+msgid "E461: Illegal variable name: %s"
+msgstr "E461: Недозвољено име променљиве: %s"
+
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: Постојећа променљива не може да се измени"
+
+#, c-format
msgid "E46: Cannot change read-only variable \"%s\""
msgstr "E46: Променљива само за читање \"%s\" не може да се измени"
@@ -6664,6 +7166,9 @@ msgstr "E46: Променљива само за читање \"%s\" не мож
msgid "E794: Cannot set variable in the sandbox: \"%s\""
msgstr "E794: Не може да се постави променљива у sandbox-у: \"%s\""
+msgid "E928: String required"
+msgstr "E928: Захтева се String"
+
msgid "E713: Cannot use empty key for Dictionary"
msgstr "E713: Не може да се користи празан кључ за Речник"
@@ -6711,7 +7216,7 @@ msgid "E255: Couldn't read in sign data!"
msgstr "E255: Подаци за знак нису могли да се прочитају!"
msgid "E72: Close error on swap file"
-msgstr "E72: Грешка код затвањара swap датотеке"
+msgstr "E72: Грешка код затварања swap фајла"
msgid "E73: tag stack empty"
msgstr "E73: стек ознака је празан"
@@ -6752,6 +7257,10 @@ msgstr "E939: Потребан је позитиван број"
msgid "E81: Using <SID> not in a script context"
msgstr "E81: <SID> се користи ван скрипт контекста"
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: Недостају заграде: %s"
+
msgid "E449: Invalid expression received"
msgstr "E449: Примљен је неважећи израз"
@@ -6792,11 +7301,22 @@ msgstr "E919: Није пронађен директоријум у '%s': \"%s\"
msgid "E952: Autocommand caused recursive behavior"
msgstr "E952: Аутокомандa je изазвала рекурзивно понашање"
+msgid "E328: Menu only exists in another mode"
+msgstr "E328: Мени постоји само у другом режиму"
+
+
+msgid "E957: Invalid window number"
+msgstr "E957: Неисправан број прозора"
+
+#, c-format
+msgid "E686: Argument of %s must be a List"
+msgstr "E686: Аргумент за %s мора бити Листа"
+
msgid "search hit TOP, continuing at BOTTOM"
-msgstr "претрага је достигла ВРХ, наставља се на ДНУ"
+msgstr "претрага је достигла ВРХ, наставља се од ДНА"
msgid "search hit BOTTOM, continuing at TOP"
-msgstr "претрага је достигла ДНО, наставља се на ВРХУ"
+msgstr "претрага је достигла ДНО, наставља се од ВРХА"
#, c-format
msgid "Need encryption key for \"%s\""
@@ -6837,8 +7357,8 @@ msgstr ""
#, c-format
msgid "expected int() or something supporting coercing to int(), but got %s"
msgstr ""
-"очекивало се int() или нешто што подржава спајање са int(), али је добијено %"
-"s"
+"очекивало се int() или нешто што подржава спајање са int(), али је добијено "
+"%s"
msgid "value is too large to fit into C int type"
msgstr "вредност је сувише велика да се смести у C int тип"
@@ -6894,8 +7414,7 @@ msgstr "hashtab је промењен током итерације"
#, c-format
msgid "expected sequence element of size 2, but got sequence of size %d"
msgstr ""
-"очекивао се елемент секвенце величине 2, али је добијена секвенца "
-"величине %d"
+"очекивао се елемент секвенце величине 2, али је добијена секвенца величине %d"
msgid "list constructor does not accept keyword arguments"
msgstr "конструктор листе не прихвата кључне речи за аргументе"
@@ -6904,7 +7423,7 @@ msgid "list index out of range"
msgstr "индекс листе је ван опсега"
#, c-format
-msgid "internal error: failed to get vim list item %d"
+msgid "internal error: failed to get Vim list item %d"
msgstr "интерна грешка: ставка %d vim листе није могла да се добије"
msgid "slice step cannot be zero"
@@ -6915,7 +7434,7 @@ msgid "attempt to assign sequence of size greater than %d to extended slice"
msgstr "покушај доделе секвенце величине веће од %d како би се продужио slice"
#, c-format
-msgid "internal error: no vim list item %d"
+msgid "internal error: no Vim list item %d"
msgstr "интерна грешка: нема ставке %d у vim листи"
msgid "internal error: not enough list items"
@@ -7025,19 +7544,19 @@ msgstr "кôд није могао да се покрене"
msgid "E858: Eval did not return a valid python object"
msgstr "E858: Eval није вратио важећи python објекат"
-msgid "E859: Failed to convert returned python object to vim value"
+msgid "E859: Failed to convert returned python object to a Vim value"
msgstr "E859: Конверзија враћеног python објекта у vim вредност није успела"
#, c-format
-msgid "unable to convert %s to vim dictionary"
+msgid "unable to convert %s to a Vim dictionary"
msgstr "%s не може да се конвертује у vim речник"
#, c-format
-msgid "unable to convert %s to vim list"
+msgid "unable to convert %s to a Vim list"
msgstr "%s не може да се конвертује у vim листу"
#, c-format
-msgid "unable to convert %s to vim structure"
+msgid "unable to convert %s to a Vim structure"
msgstr "%s не може да се конвертује у vim структуру"
msgid "internal error: NULL reference passed"
diff --git a/src/nvim/po/tr.po b/src/nvim/po/tr.po
new file mode 100644
index 0000000000..3db3cbfef0
--- /dev/null
+++ b/src/nvim/po/tr.po
@@ -0,0 +1,9370 @@
+# Turkish translations for Vim
+# Vim Türkçe çevirileri
+# Copyright (C) 2020 Emir SARI <bitigchi@me.com>
+# This file is distributed under the same license as the Vim package.
+# Emir SARI <bitigchi@me.com>, 2019-2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Vim Turkish Localization Project\n"
+"Report-Msgid-Bugs-To: Emir SARI <bitigchi@me.com>\n"
+"POT-Creation-Date: 2020-11-29 00:20+0300\n"
+"PO-Revision-Date: 2020-11-29 20:00+0300\n"
+"Last-Translator: Emir SARI <bitigchi@me.com>\n"
+"Language-Team: Turkish <https://github.com/bitigchi/vim>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "E163: There is only one file to edit"
+msgstr "E163: Düzenlenecek yalnızca bir dosya var"
+
+msgid "E164: Cannot go before first file"
+msgstr "E164: İlk dosyadan öncesine gidilemez"
+
+msgid "E165: Cannot go beyond last file"
+msgstr "E165: Son dosyadan öteye gidilemez"
+
+msgid "E610: No argument to delete"
+msgstr "E610: Silinecek bir değişken yok"
+
+msgid "E249: window layout changed unexpectedly"
+msgstr "E249: Pencere yerleşimi beklenmedik bir biçimde değişti"
+
+msgid "--Deleted--"
+msgstr "--Silindi--"
+
+#, c-format
+msgid "auto-removing autocommand: %s <buffer=%d>"
+msgstr "otokomut kendiliğinden kaldırılıyor: %s <buffer=%d>"
+
+#, c-format
+msgid "E367: No such group: \"%s\""
+msgstr "E367: Böyle bir grup yok: \"%s\""
+
+msgid "E936: Cannot delete the current group"
+msgstr "E936: Geçerli grup silinemiyor"
+
+msgid "W19: Deleting augroup that is still in use"
+msgstr "W19: Kullanımda olan otokomut grubu siliniyor"
+
+#, c-format
+msgid "E215: Illegal character after *: %s"
+msgstr "E215: * sonrası izin verilmeyen karakter: %s"
+
+#, c-format
+msgid "E216: No such event: %s"
+msgstr "E216: Böyle bir olay yok: %s"
+
+#, c-format
+msgid "E216: No such group or event: %s"
+msgstr "E216: Böyle bir grup veya olay yok: %s"
+
+msgid ""
+"\n"
+"--- Autocommands ---"
+msgstr ""
+"\n"
+"--- Otokomutlar ---"
+
+#, c-format
+msgid "E680: <buffer=%d>: invalid buffer number "
+msgstr "E680: <buffer=%d>: Geçersiz arabellek numarası"
+
+msgid "E217: Can't execute autocommands for ALL events"
+msgstr "E217: Otokomutlar TÜM olaylar için çalıştırılamıyor"
+
+msgid "No matching autocommands"
+msgstr "Eşleşen otokomut yok"
+
+msgid "E218: autocommand nesting too deep"
+msgstr "E218: Çok fazla iç içe geçmiş otokomut"
+
+#, c-format
+msgid "%s Autocommands for \"%s\""
+msgstr "\"%s\" için %s otokomutlar"
+
+#, c-format
+msgid "Executing %s"
+msgstr "%s çalıştırılıyor"
+
+#, c-format
+msgid "autocommand %s"
+msgstr "%s otokomutu"
+
+msgid "E831: bf_key_init() called with empty password"
+msgstr "E831: bf_key_init() boş bir şifre ile çağrıldı"
+
+msgid "E820: sizeof(uint32_t) != 4"
+msgstr "E820: sizeof(uint32_t) != 4"
+
+msgid "E817: Blowfish big/little endian use wrong"
+msgstr "E817: Blowfish yüksek/düşük son haneli kullanımı yanlış"
+
+msgid "E818: sha256 test failed"
+msgstr "E818: sha256 testi başarısız oldu"
+
+msgid "E819: Blowfish test failed"
+msgstr "E819: Blowfish testi başarısız oldu"
+
+msgid "[Location List]"
+msgstr "[Konum Listesi]"
+
+msgid "[Quickfix List]"
+msgstr "[Hızlı Düzelt Listesi]"
+
+msgid "E855: Autocommands caused command to abort"
+msgstr "E855: Otokomutlar komutun durmasına neden oldu"
+
+msgid "E82: Cannot allocate any buffer, exiting..."
+msgstr "E82: Arabellek ayrılamadı, çıkılıyor..."
+
+msgid "E83: Cannot allocate buffer, using other one..."
+msgstr "E83: Arabellek ayrılamadı, başka bir tane kullanılıyor..."
+
+msgid "E931: Buffer cannot be registered"
+msgstr "E931: Arabellek kaydedilemedi"
+
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: Kullanımda olan bir arabellek silinmeye çalışılıyor: %s"
+
+msgid "E515: No buffers were unloaded"
+msgstr "E515: Hiçbir arabellek bellekten kaldırılmadı"
+
+msgid "E516: No buffers were deleted"
+msgstr "E516: Hiçbir arabellek silinmedi"
+
+msgid "E517: No buffers were wiped out"
+msgstr "E517: Hiçbir arabellek yok edilmedi"
+
+#, c-format
+msgid "%d buffer unloaded"
+msgid_plural "%d buffers unloaded"
+msgstr[0] "%d arabellek bellekten kaldırıldı"
+msgstr[1] "%d arabellek bellekten kaldırıldı"
+
+#, c-format
+msgid "%d buffer deleted"
+msgid_plural "%d buffers deleted"
+msgstr[0] "%d arabellek silindi"
+msgstr[1] "%d arabellek silindi"
+
+#, c-format
+msgid "%d buffer wiped out"
+msgid_plural "%d buffers wiped out"
+msgstr[0] "%d arabellek yok edildi"
+msgstr[1] "%d arabellek yok edildi"
+
+msgid "E90: Cannot unload last buffer"
+msgstr "E90: Son arabellek bellekten kaldırılamıyor"
+
+msgid "E84: No modified buffer found"
+msgstr "E84: Değiştirilmiş bir arabellek bulunamadı"
+
+msgid "E85: There is no listed buffer"
+msgstr "E85: Listelenmiş bir arabellek yok"
+
+msgid "E87: Cannot go beyond last buffer"
+msgstr "E87: Son arabellekten öteye gidilemez"
+
+msgid "E88: Cannot go before first buffer"
+msgstr "E88: İlk arabellekten öncesine gidilemez"
+
+#, c-format
+msgid "E89: No write since last change for buffer %d (add ! to override)"
+msgstr ""
+"E89: %d numaralı arabellek son değişiklikten sonra yazılmadı (geçersiz "
+"kılmak için ! ekleyin)"
+
+msgid "E948: Job still running (add ! to end the job)"
+msgstr "E948: İş hâlâ sürüyor (bitirmek için ! ekleyin)"
+
+msgid "E37: No write since last change (add ! to override)"
+msgstr ""
+"E37: Son değişiklikten sonra yazılmadı (geçersiz kılmak için ! ekleyin)"
+
+msgid "E948: Job still running"
+msgstr "E948: İş hâlâ sürüyor"
+
+msgid "E37: No write since last change"
+msgstr "E37: Son değişiklikten sonra yazılmadı"
+
+msgid "W14: Warning: List of file names overflow"
+msgstr "W14: Uyarı: Dosya adları taşımı"
+
+#, c-format
+msgid "E92: Buffer %d not found"
+msgstr "E92: %d numaralı arabellek bulunamadı"
+
+#, c-format
+msgid "E93: More than one match for %s"
+msgstr "E93: %s için birden çok eşleşme"
+
+#, c-format
+msgid "E94: No matching buffer for %s"
+msgstr "E94: %s için eşleşen arabellek yok"
+
+#, c-format
+msgid "line %ld"
+msgstr "%ld. satır"
+
+msgid "E95: Buffer with this name already exists"
+msgstr "E95: Aynı adda bir arabellek hâlihazırda var"
+
+msgid " [Modified]"
+msgstr " [Değiştirildi]"
+
+msgid "[Not edited]"
+msgstr "[Değiştirilmedi]"
+
+msgid "[Read errors]"
+msgstr "[Okuma hataları]"
+
+msgid "[RO]"
+msgstr "[SO]"
+
+msgid "[readonly]"
+msgstr "[saltokunur]"
+
+#, c-format
+msgid "%ld line --%d%%--"
+msgid_plural "%ld lines --%d%%--"
+msgstr[0] "%ld. satır --%d%%"
+msgstr[1] "%ld. satır --%d%%"
+
+#, c-format
+msgid "line %ld of %ld --%d%%-- col "
+msgstr "satır %ld/%ld --%d%%-- sütun "
+
+msgid "[No Name]"
+msgstr "[Adsız]"
+
+msgid "help"
+msgstr "yardım"
+
+msgid "[Help]"
+msgstr "[Yardım]"
+
+msgid "[Preview]"
+msgstr "[Önizleme]"
+
+msgid "All"
+msgstr "Tüm Belge"
+
+msgid "Bot"
+msgstr "Son"
+
+msgid "Top"
+msgstr "Baş"
+
+msgid "E382: Cannot write, 'buftype' option is set"
+msgstr "E382: Yazılamıyor, 'buftype' seçeneği ayarlanmamış"
+
+msgid "[Prompt]"
+msgstr "[İstem]"
+
+msgid "[Popup]"
+msgstr "[Açılır pencere]"
+
+msgid "[Scratch]"
+msgstr "[Geçici alan]"
+
+msgid "WARNING: The file has been changed since reading it!!!"
+msgstr "UYARI: Bu dosya açıldıktan sonra başkası tarafından değiştirilmiş!!!"
+
+msgid "Do you really want to write to it"
+msgstr "Yine de yazmak istiyor musunuz?"
+
+msgid "[New]"
+msgstr "[Yeni]"
+
+msgid "[New File]"
+msgstr "[Yeni Dosya]"
+
+msgid "E676: No matching autocommands for acwrite buffer"
+msgstr "E676: acwrite arabelleği için eşleşen bir otokomut yok"
+
+msgid "E203: Autocommands deleted or unloaded buffer to be written"
+msgstr "E203: Otokomutlar arabelleği silmiş veya yazılması için kaldırmışlar"
+
+msgid "E204: Autocommand changed number of lines in unexpected way"
+msgstr "E204: Otokomut satır sayısını beklenmeyen biçimde değiştirdi"
+
+msgid "NetBeans disallows writes of unmodified buffers"
+msgstr "NetBeans değiştirilmemiş arabelleklerin yazılmasına izin vermez"
+
+msgid "Partial writes disallowed for NetBeans buffers"
+msgstr "NetBeans arabellekleri için kısmî yazmalara izin verilmez"
+
+msgid "is a directory"
+msgstr "bir dizin"
+
+msgid "is not a file or writable device"
+msgstr "bir dosya veya yazılabilir aygıt değil"
+
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "aygıta yazma 'opendevice' seçeneği ile kapatılmış"
+
+msgid "is read-only (add ! to override)"
+msgstr "saltokunur (geçersiz kılmak için ! ekleyin)"
+
+msgid "E506: Can't write to backup file (add ! to override)"
+msgstr "E506: Yedek dosyasına yazılamıyor (geçersiz kılmak için ! ekleyin)"
+
+msgid "E507: Close error for backup file (add ! to override)"
+msgstr "E507: Yedek dosya için kapatma hatası (geçersiz kılmak için ! ekleyin)"
+
+msgid "E508: Can't read file for backup (add ! to override)"
+msgstr "E508: Yedek dosyası okunamıyor (geçersiz kılmak için ! ekleyin)"
+
+msgid "E509: Cannot create backup file (add ! to override)"
+msgstr "E509: Yedek dosyası oluşturulamıyor (geçersiz kılmak için ! ekleyin)"
+
+msgid "E510: Can't make backup file (add ! to override)"
+msgstr "E510: Yedek dosyası yapılamıyor (geçersiz kılmak için ! ekleyin) "
+
+msgid "E214: Can't find temp file for writing"
+msgstr "E214: Yazma için geçici dosya bulunamıyor"
+
+msgid "E213: Cannot convert (add ! to write without conversion)"
+msgstr "E213: Dönüştürülemiyor (dönüştürmeden yazmak için ! ekleyin)"
+
+msgid "E166: Can't open linked file for writing"
+msgstr "E166: Bağlı dosya yazma için açılamıyor"
+
+msgid "E212: Can't open file for writing"
+msgstr "E212: Dosya yazma için açılamıyor"
+
+msgid "E949: File changed while writing"
+msgstr "E949: Dosya yazma sırasında değiştirildi"
+
+msgid "E512: Close failed"
+msgstr "E512: Kapatma başarısız oldu"
+
+msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
+msgstr ""
+"E513: Yazma hatası, dönüştürme başarısız (geçersiz kılmak için 'fenc'i boş "
+"bırakın)"
+
+#, c-format
+msgid ""
+"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"override)"
+msgstr ""
+"E513: Yazma hatası, %ld. satırda dönüştürme başarısız (geçersiz kılmak için "
+"'fenc'i boş bırakın)"
+
+msgid "E514: write error (file system full?)"
+msgstr "E514: Yazma hatası (dosya sistemi dolu mu?)"
+
+msgid " CONVERSION ERROR"
+msgstr " DÖNÜŞTÜRME HATASI"
+
+#, c-format
+msgid " in line %ld;"
+msgstr " %ld. satırda;"
+
+msgid "[NOT converted]"
+msgstr "[dönüştürülmedi]"
+
+msgid "[converted]"
+msgstr "[dönüştürüldü]"
+
+msgid "[Device]"
+msgstr "[Aygıt]"
+
+msgid " [a]"
+msgstr " [a]"
+
+msgid " appended"
+msgstr " iliştirildi"
+
+msgid " [w]"
+msgstr " [w]"
+
+msgid " written"
+msgstr " yazıldı"
+
+msgid "E205: Patchmode: can't save original file"
+msgstr "E205: Yama kipi: Orijinal dosya kaydedilemiyor"
+
+msgid "E206: patchmode: can't touch empty original file"
+msgstr "E206: Yama kipi: Orijinal boş dosyaya dokunulamıyor"
+
+msgid "E207: Can't delete backup file"
+msgstr "E207: Yedek dosyası silinemiyor"
+
+msgid ""
+"\n"
+"WARNING: Original file may be lost or damaged\n"
+msgstr ""
+"\n"
+"UYARI: Orijinal dosya kaybolmuş veya hasar görmüş olabilir\n"
+
+msgid "don't quit the editor until the file is successfully written!"
+msgstr "dosya başarılı bir biçimde yazılana kadar düzenleyiciden çıkmayın!"
+
+msgid "W10: Warning: Changing a readonly file"
+msgstr "W10: Uyarı: Saltokunur bir dosya değiştiriliyor"
+
+msgid "E902: Cannot connect to port"
+msgstr "E902: Kapıya bağlanılamıyor"
+
+msgid "E898: socket() in channel_connect()"
+msgstr "E898: channel_connect() içinde socket()"
+
+#, c-format
+msgid "E901: getaddrinfo() in channel_open(): %s"
+msgstr "E901: channel_open() içinde getaddrinfo(): %s"
+
+msgid "E901: gethostbyname() in channel_open()"
+msgstr "E901: channel_open() içinde gethostbyname()"
+
+msgid "E903: received command with non-string argument"
+msgstr "E903: Dizi olmayan değişken içeren komut alındı"
+
+msgid "E904: last argument for expr/call must be a number"
+msgstr "E904: İfadenin/çağrının son değişkeni bir sayı olmalıdır"
+
+msgid "E904: third argument for call must be a list"
+msgstr "E904: Çağrının üçüncü değişkeni bir liste olmalıdır"
+
+#, c-format
+msgid "E905: received unknown command: %s"
+msgstr "E905: Bilinmeyen komut alındı: %s"
+
+msgid "E906: not an open channel"
+msgstr "E906: Açık bir kanal değil"
+
+#, c-format
+msgid "E630: %s(): write while not connected"
+msgstr "E630: %s(): Bağlantı yokken yazım"
+
+#, c-format
+msgid "E631: %s(): write failed"
+msgstr "E631: %s(): Yazma başarısız"
+
+#, c-format
+msgid "E917: Cannot use a callback with %s()"
+msgstr "E917: %s() ile geri çağırma kullanılamaz"
+
+msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
+msgstr "E912: ch_evalexpr()/ch_sendexpr() raw/nl kanalları ile kullanılamaz"
+
+msgid "No display"
+msgstr "Görüntü yok"
+
+msgid ": Send failed.\n"
+msgstr ": Gönderme başarısız oldu.\n"
+
+msgid ": Send failed. Trying to execute locally\n"
+msgstr ": Gönderme başarısız oldu. Yerel ortamda çalıştırma deneniyor\n"
+
+#, c-format
+msgid "%d of %d edited"
+msgstr "%d/%d düzenlendi"
+
+msgid "No display: Send expression failed.\n"
+msgstr "Görüntü yok: Gönderme başarısız oldu.\n"
+
+msgid ": Send expression failed.\n"
+msgstr ": Gönderme başarısız oldu.\n"
+
+msgid "E240: No connection to the X server"
+msgstr "E240: X sunucusuna bağlanılamadı"
+
+#, c-format
+msgid "E241: Unable to send to %s"
+msgstr "E241: Şuraya gönderilemedi: %s"
+
+msgid "E277: Unable to read a server reply"
+msgstr "E277: Bir sunucu yanıtı okunamadı"
+
+msgid "E941: already started a server"
+msgstr "E941: Sunucu hâlihazırda çalışıyor"
+
+msgid "E942: +clientserver feature not available"
+msgstr "E942: +clientserver özelliği mevcut değil"
+
+msgid "E258: Unable to send to client"
+msgstr "E258: İstemciye gönderilemiyor"
+
+msgid "Used CUT_BUFFER0 instead of empty selection"
+msgstr "Boş seçim yerine CUT_BUFFER0 kullanıldı"
+
+msgid "tagname"
+msgstr "etiket adı"
+
+msgid " kind file\n"
+msgstr " dosya türü\n"
+
+msgid "'history' option is zero"
+msgstr "'history' seçeneği sıfır"
+
+msgid "E821: File is encrypted with unknown method"
+msgstr "E821: Dosya bilinmeyen bir yöntemle şifrelenmiş"
+
+msgid "Warning: Using a weak encryption method; see :help 'cm'"
+msgstr ""
+"Uyarı: Zayıf bir şifreleme yöntemi kullanılıyor; bilgi için: :help 'cm'"
+
+msgid "Enter encryption key: "
+msgstr "Şifreleme anahtarı girin: "
+
+msgid "Enter same key again: "
+msgstr "Aynı anahtarı yeniden girin: "
+
+msgid "Keys don't match!"
+msgstr "Anahtarlar eşleşmiyor!"
+
+msgid "[crypted]"
+msgstr "[şifreli]"
+
+msgid "Entering Debug mode. Type \"cont\" to continue."
+msgstr "Hata Ayıklama kipine giriliyor. Sürdürmek için \"cont\" yazın."
+
+#, c-format
+msgid "Oldval = \"%s\""
+msgstr "Eski değer = \"%s\""
+
+# debugger.c:103
+#, c-format
+msgid "Newval = \"%s\""
+msgstr "Yeni değer = \"%s\""
+
+#, c-format
+msgid "line %ld: %s"
+msgstr "%ld. satır: %s"
+
+#, c-format
+msgid "cmd: %s"
+msgstr "komut: %s"
+
+msgid "frame is zero"
+msgstr "çerçeve sıfır"
+
+#, c-format
+msgid "frame at highest level: %d"
+msgstr "çerçeve en yüksek düzeyde: %d"
+
+#, c-format
+msgid "Breakpoint in \"%s%s\" line %ld"
+msgstr "\"%s%s\" içinde kesme noktası, %ld. satır"
+
+#, c-format
+msgid "E161: Breakpoint not found: %s"
+msgstr "E161: Kesme noktası bulunamadı: %s"
+
+msgid "No breakpoints defined"
+msgstr "Hiçbir kesme noktası tanımlanmamış"
+
+#, c-format
+msgid "%3d %s %s line %ld"
+msgstr "%3d %s %s %ld. satır"
+
+#, c-format
+msgid "%3d expr %s"
+msgstr "%3d ifade %s"
+
+msgid "extend() argument"
+msgstr "extend() değişkeni"
+
+#, c-format
+msgid "E737: Key already exists: %s"
+msgstr "E737: Anahtar hâlihazırda var: %s"
+
+#, c-format
+msgid "E96: Cannot diff more than %d buffers"
+msgstr "E96: %d arabellekten fazlasında karşılaştırma yapılamıyor"
+
+#, c-format
+msgid "Not enough memory to use internal diff for buffer \"%s\""
+msgstr "\"%s\" arabelleği için karşılaştırma yapacak yeterli bellek yok"
+
+msgid "E810: Cannot read or write temp files"
+msgstr "E810: Geçici dosyalar okunamıyor veya yazılamıyor"
+
+msgid "E97: Cannot create diffs"
+msgstr "E97: Karşılaştırma yapılamıyor"
+
+msgid "E960: Problem creating the internal diff"
+msgstr "E960: Karşılaştırma hazırlanırken sorun"
+
+msgid "Patch file"
+msgstr "Yama dosyası"
+
+msgid "E816: Cannot read patch output"
+msgstr "E816: Yama çıktısı okunamıyor"
+
+msgid "E98: Cannot read diff output"
+msgstr "E98: Karşılaştırma çıktısı okunamıyor"
+
+msgid "E959: Invalid diff format."
+msgstr "E959: Geçersiz karşılaştırma biçimi"
+
+msgid "E99: Current buffer is not in diff mode"
+msgstr "E99: Şu anki arabellek karşılaştırma kipinde değil"
+
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr ""
+"E793: Karşılaştırma kipindeki başka hiçbir arabellek değiştirilebilir değil"
+
+msgid "E100: No other buffer in diff mode"
+msgstr "E100: Karşılaştırma kipinde başka hiçbir arabellek yok"
+
+msgid "E101: More than two buffers in diff mode, don't know which one to use"
+msgstr ""
+"E101: Karşılaştırma kipinde ikiden fazla arabellek var, hangisinin "
+"kullanılacağı belli değil"
+
+#, c-format
+msgid "E102: Can't find buffer \"%s\""
+msgstr "E102: Arabellek \"%s\" bulunamıyor"
+
+#, c-format
+msgid "E103: Buffer \"%s\" is not in diff mode"
+msgstr "E103: Arabellek \"%s\" karşılaştırma kipinde değil"
+
+msgid "E787: Buffer changed unexpectedly"
+msgstr "E787: Arabellek beklenmeyen bir biçimde değiştirildi"
+
+msgid "E104: Escape not allowed in digraph"
+msgstr "E104: Kaçan, ikili harflerde kullanılamaz"
+
+msgid "Custom"
+msgstr "Özel"
+
+msgid "Latin supplement"
+msgstr "Latin ek"
+
+msgid "Greek and Coptic"
+msgstr "Yunan ve Antik Mısır"
+
+msgid "Cyrillic"
+msgstr "Kiril"
+
+msgid "Hebrew"
+msgstr "İbranca"
+
+msgid "Arabic"
+msgstr "Arapça"
+
+msgid "Latin extended"
+msgstr "Latin genişletilmiş"
+
+msgid "Greek extended"
+msgstr "Yunan genişletilmiş"
+
+msgid "Punctuation"
+msgstr "Noktalama"
+
+msgid "Super- and subscripts"
+msgstr "Üst ve alt simgeler"
+
+msgid "Currency"
+msgstr "Para birimi"
+
+msgid "Other"
+msgstr "Diğer"
+
+msgid "Roman numbers"
+msgstr "Roma rakamları"
+
+msgid "Arrows"
+msgstr "Oklar"
+
+msgid "Mathematical operators"
+msgstr "Matematiksel işleçler"
+
+msgid "Technical"
+msgstr "Teknik"
+
+msgid "Box drawing"
+msgstr "Kutu çizimi"
+
+msgid "Block elements"
+msgstr "Bloklar"
+
+msgid "Geometric shapes"
+msgstr "Geometrik biçimler"
+
+msgid "Symbols"
+msgstr "Semboller"
+
+msgid "Dingbats"
+msgstr "Harf simgeler"
+
+msgid "CJK symbols and punctuation"
+msgstr "ÇJK simgeler ve noktalama"
+
+msgid "Hiragana"
+msgstr "Hiragana"
+
+msgid "Katakana"
+msgstr "Katakana"
+
+msgid "Bopomofo"
+msgstr "Bopomofo"
+
+msgid "E544: Keymap file not found"
+msgstr "E544: Düğme eşlem dosyası bulunamadı"
+
+msgid "E105: Using :loadkeymap not in a sourced file"
+msgstr "E105: :loadkeymap kaynak alınmayan bir dosyada kullanılıyor"
+
+msgid "E791: Empty keymap entry"
+msgstr "E791: Boş düğme eşlem girdisi"
+
+msgid "E689: Can only index a List, Dictionary or Blob"
+msgstr ""
+"E689: Yalnızca bir liste, sözlük, veya ikili geniş nesne dizinlenebilir"
+
+msgid "E708: [:] must come last"
+msgstr "E708: [:] en son gelmelidir"
+
+msgid "E709: [:] requires a List or Blob value"
+msgstr "E709: [:] bir liste veya ikili geniş nesne değeri gerektirir"
+
+msgid "E972: Blob value does not have the right number of bytes"
+msgstr "E972: İkili geniş nesne değeri doğru bayt sayısına sahip değil"
+
+msgid "E996: Cannot lock a range"
+msgstr "E996: Erim kilitlenemiyor"
+
+msgid "E996: Cannot lock a list or dict"
+msgstr "E996: Bir liste veya sözlük kilitlenemiyor"
+
+msgid "E260: Missing name after ->"
+msgstr "E260: -> sonrası ad eksik"
+
+msgid "E695: Cannot index a Funcref"
+msgstr "E695: Bir Funcref dizinlenemez"
+
+msgid "Not enough memory to set references, garbage collection aborted!"
+msgstr "Referansları ayarlamak için yetersiz bellek, atık toplama durduruldu"
+
+msgid "E724: variable nested too deep for displaying"
+msgstr "E724: Değişken çok iç içe geçtiğinden görüntülenemiyor"
+
+msgid "E698: variable nested too deep for making a copy"
+msgstr "E698: Değişken kopyalama için çok iç içe geçmiş"
+
+msgid ""
+"\n"
+"\tLast set from "
+msgstr ""
+"\n"
+"\tEn son şuradan ayarlandı: "
+
+msgid "E808: Number or Float required"
+msgstr "E808: Sayı veya kayan noktalı değer gerekiyor"
+
+#, c-format
+msgid "E158: Invalid buffer name: %s"
+msgstr "E158: Geçersiz arabellek adı: %s"
+
+msgid "&Ok"
+msgstr "&Tamam"
+
+msgid "E980: lowlevel input not supported"
+msgstr "E980: Alt düzey girdi desteklenmiyor"
+
+#, c-format
+msgid "E700: Unknown function: %s"
+msgstr "E700: Bilinmeyen işlev: %s"
+
+msgid "E922: expected a dict"
+msgstr "E922: Bir sözlük bekleniyordu"
+
+msgid "E923: Second argument of function() must be a list or a dict"
+msgstr "E923: function() ikinci değişkeni bir liste veya sözlük olmalıdır"
+
+msgid ""
+"&OK\n"
+"&Cancel"
+msgstr ""
+"&Tamam\n"
+"İ&ptal"
+
+msgid "called inputrestore() more often than inputsave()"
+msgstr "inputrestore(), inputsave()'den daha fazla çağrıldı"
+
+msgid "E786: Range not allowed"
+msgstr "E786: Erime izin verilmiyor"
+
+msgid "E701: Invalid type for len()"
+msgstr "E701: len() için geçersiz tür"
+
+msgid "E726: Stride is zero"
+msgstr "E726: Sıfır adım"
+
+msgid "E727: Start past end"
+msgstr "E727: Başlangıç bitişten sonra"
+
+#, c-format
+msgid "E962: Invalid action: '%s'"
+msgstr "E962: Geçersiz eylem: '%s'"
+
+#, c-format
+msgid "E935: invalid submatch number: %d"
+msgstr "E935: Geçersiz alteşleşme numarası: %d"
+
+msgid "E991: cannot use =<< here"
+msgstr "E991: Burada =<< kullanılamaz"
+
+msgid "E221: Marker cannot start with lower case letter"
+msgstr "E221: İmleyici küçük harfle başlayamaz"
+
+msgid "E172: Missing marker"
+msgstr "E172: İmleyici eksik"
+
+#, c-format
+msgid "E990: Missing end marker '%s'"
+msgstr "E990: Son imleyici '%s' eksik"
+
+msgid "E985: .= is not supported with script version >= 2"
+msgstr "E985: .= betiğin ikinci sürümünden itibaren desteklenmiyor"
+
+msgid "E687: Less targets than List items"
+msgstr "E687: Liste ögelerinden daha az hedef var"
+
+msgid "E688: More targets than List items"
+msgstr "E688: Liste ögelerinden daha fazla hedef var"
+
+msgid "E452: Double ; in list of variables"
+msgstr "E452: Değişkenler listesinde çifte ;"
+
+#, c-format
+msgid "E738: Can't list variables for %s"
+msgstr "E738: %s için değişkenler listelenemiyor"
+
+msgid "E996: Cannot lock an environment variable"
+msgstr "E996: Ortam değişkeni kilitlenemiyor"
+
+msgid "E996: Cannot lock a register"
+msgstr "E996: Yazmaç kilitlenemiyor"
+
+#, c-format
+msgid "E108: No such variable: \"%s\""
+msgstr "E108: Böyle bir değişken yok: \"%s\""
+
+msgid "E743: variable nested too deep for (un)lock"
+msgstr "E743: Değişken kilitlenemez/kilidi açılamaz, çok iç içe geçmiş"
+
+#, c-format
+msgid "E963: setting %s to value with wrong type"
+msgstr "E963: %s yanlış türe sahip değere ayarlanıyor"
+
+#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: %s değişkeni silinemiyor"
+
+#, c-format
+msgid "E704: Funcref variable name must start with a capital: %s"
+msgstr "E704: Funcref değişkeni BÜYÜK harf ile başlamalıdır: %s"
+
+#, c-format
+msgid "E705: Variable name conflicts with existing function: %s"
+msgstr "E705: Değişken adı mevcut işlevle çakışıyor: %s"
+
+#, c-format
+msgid "E741: Value is locked: %s"
+msgstr "E741: Değer kilitli: %s"
+
+msgid "Unknown"
+msgstr "Bilinmiyor"
+
+#, c-format
+msgid "E742: Cannot change value of %s"
+msgstr "E742: %s değeri değiştirilemiyor"
+
+msgid "E921: Invalid callback argument"
+msgstr "E921: Geçersiz geri çağırma değişkeni"
+
+#, c-format
+msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s"
+msgstr "<%s>%s%s %d, Onalt. %02x, Sek. %03o, Digr %s"
+
+#, c-format
+msgid "<%s>%s%s %d, Hex %02x, Octal %03o"
+msgstr "<%s>%s%s %d, Onaltılı %02x, Sekizli %03o"
+
+#, c-format
+msgid "> %d, Hex %04x, Oct %o, Digr %s"
+msgstr "> %d, Onalt. %04x, Sek. %o, Digr %s"
+
+#, c-format
+msgid "> %d, Hex %08x, Oct %o, Digr %s"
+msgstr "> %d, Onalt. %08x, Sek. %o, Digr %s"
+
+#, c-format
+msgid "> %d, Hex %04x, Octal %o"
+msgstr "> %d, Onaltılı %04x, Sekizli %o"
+
+#, c-format
+msgid "> %d, Hex %08x, Octal %o"
+msgstr "> %d, Onaltılı %08x, Sekizli %o"
+
+msgid "E134: Cannot move a range of lines into itself"
+msgstr "E134: Satırlardan oluşan erim kendi içine taşınamaz"
+
+#, c-format
+msgid "%ld line moved"
+msgid_plural "%ld lines moved"
+msgstr[0] "%ld satır taşındı"
+msgstr[1] "%ld satır taşındı"
+
+#, c-format
+msgid "%ld lines filtered"
+msgstr "%ld satır süzüldü"
+
+msgid "E135: *Filter* Autocommands must not change current buffer"
+msgstr "E135: *Süzgeç* otokomutları şu anki arabelleği değiştirmemelidir"
+
+msgid "[No write since last change]\n"
+msgstr "[Son değişiklikten sonra yazılmadı]\n"
+
+msgid "Save As"
+msgstr "Farklı Kaydet"
+
+msgid "Write partial file?"
+msgstr "Dosyanın bir kısmı yazılsın mı?"
+
+msgid "E140: Use ! to write partial buffer"
+msgstr "E140: Arabelleğin bir kısmını yazmak için ! kullanın"
+
+#, c-format
+msgid "Overwrite existing file \"%s\"?"
+msgstr "Mevcut \"%s\" dosyasının üzerine yazılsın mı?"
+
+#, c-format
+msgid "Swap file \"%s\" exists, overwrite anyway?"
+msgstr "Takas dosyası \"%s\" mevcut, yine de üzerine yazılsın mı?"
+
+#, c-format
+msgid "E768: Swap file exists: %s (:silent! overrides)"
+msgstr "E768: Takas dosyası mevcut: %s (:silent! geçersiz kılar)"
+
+#, c-format
+msgid "E141: No file name for buffer %ld"
+msgstr "E141: %ld numaralı arabelleğin bir adı yok"
+
+msgid "E142: File not written: Writing is disabled by 'write' option"
+msgstr "E142: Dosya yazılamadı: Yazma 'write' seçeneği ile kapatılmış"
+
+#, c-format
+msgid ""
+"'readonly' option is set for \"%s\".\n"
+"Do you wish to write anyway?"
+msgstr ""
+"\"%s\" için 'readonly' (saltokunur) seçeneği açık.\n"
+"Yine de yazmak istiyor musunuz?"
+
+#, c-format
+msgid ""
+"File permissions of \"%s\" are read-only.\n"
+"It may still be possible to write it.\n"
+"Do you wish to try?"
+msgstr ""
+"\"%s\" dosyasının izinleri saltokunur.\n"
+"Belki yine de yazılabilir.\n"
+"Denemek ister misiniz?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: \"%s\" saltokunur (geçersiz kılmak için ! ekleyin)"
+
+msgid "Edit File"
+msgstr "Dosya Düzenle"
+
+#, c-format
+msgid "E143: Autocommands unexpectedly deleted new buffer %s"
+msgstr "E143: yeni %s arabelleğini otokomutlar beklenmedik bir biçimde sildi"
+
+msgid "E144: non-numeric argument to :z"
+msgstr "E144: :z için sayısal olmayan değişken"
+
+msgid "E145: Shell commands and some functionality not allowed in rvim"
+msgstr "E145: rvim içinde kabuk komutları ve bazı işlevselliğe izin verilmez"
+
+msgid "E146: Regular expressions can't be delimited by letters"
+msgstr "E146: Düzenli ifadeler harflerle sınırlandırılamaz"
+
+#, c-format
+msgid "replace with %s (y/n/a/q/l/^E/^Y)?"
+msgstr "%s ile değiştir (y/n/a/q/l/^E/^Y)?"
+
+msgid "(Interrupted) "
+msgstr "(Yarıda kesildi) "
+
+#, c-format
+msgid "%ld match on %ld line"
+msgid_plural "%ld matches on %ld line"
+msgstr[0] "%ld eşleşme, %ld satırda"
+msgstr[1] "%ld eşleşme, %ld satırda"
+
+#, c-format
+msgid "%ld substitution on %ld line"
+msgid_plural "%ld substitutions on %ld line"
+msgstr[0] "%ld değiştirme, %ld satırda"
+msgstr[1] "%ld değiştirme, %ld satırda"
+
+#, c-format
+msgid "%ld match on %ld lines"
+msgid_plural "%ld matches on %ld lines"
+msgstr[0] "%ld eşleşme, %ld satırda"
+msgstr[1] "%ld eşleşme, %ld satırda"
+
+#, c-format
+msgid "%ld substitution on %ld lines"
+msgid_plural "%ld substitutions on %ld lines"
+msgstr[0] "%ld değiştirme, %ld satırda"
+msgstr[1] "%ld değiştirme, %ld satırda"
+
+msgid "E147: Cannot do :global recursive with a range"
+msgstr "E147: :global özyineli olarak bir erim ile yapılamaz"
+
+msgid "E148: Regular expression missing from global"
+msgstr "E148: Düzenli ifade eksik"
+
+#, c-format
+msgid "Pattern found in every line: %s"
+msgstr "Dizginin bulunduğu her satır: %s"
+
+#, c-format
+msgid "Pattern not found: %s"
+msgstr "Dizgi bulunamadı: %s"
+
+msgid "No old files"
+msgstr "Eski dosya yok"
+
+#, c-format
+msgid "Save changes to \"%s\"?"
+msgstr "Değişiklikler şuraya kaydedilsin mi: \"%s\"?"
+
+#, c-format
+msgid "E947: Job still running in buffer \"%s\""
+msgstr "E947: İş \"%s\" arabelleğinde hâlâ sürüyor"
+
+#, c-format
+msgid "E162: No write since last change for buffer \"%s\""
+msgstr "E162: \"%s\" arabelleği son değişiklikten sonra yazılmadı"
+
+msgid "Warning: Entered other buffer unexpectedly (check autocommands)"
+msgstr "Uyarı: Diğer arabelleğe aniden girildi (otokomutları denetleyin)"
+
+#, c-format
+msgid "E666: compiler not supported: %s"
+msgstr "E666: Derleyici desteklenmiyor: %s"
+
+#, c-format
+msgid "W20: Required python version 2.x not supported, ignoring file: %s"
+msgstr "W20: Gerekli 2.x Python sürümü desteklenmiyor, dosya yok sayılıyor: %s"
+
+#, c-format
+msgid "W21: Required python version 3.x not supported, ignoring file: %s"
+msgstr "W21: Gerekli Python sürümü 3.x desteklenmiyor, dosya yok sayılıyor: %s"
+
+msgid "Entering Ex mode. Type \"visual\" to go to Normal mode."
+msgstr "Ex kipine giriliyor. Normal kipe geri dönmek için \"visual\" yazın."
+
+msgid "E501: At end-of-file"
+msgstr "E501: Dosyanın sonunda"
+
+#, c-format
+msgid "Executing: %s"
+msgstr "Çalıştırılıyor: %s"
+
+msgid "E169: Command too recursive"
+msgstr "E169: Komut çok özyineli"
+
+#, c-format
+msgid "E605: Exception not caught: %s"
+msgstr "E605: Kural dışı durum yakalanmadı: %s"
+
+msgid "End of sourced file"
+msgstr "Kaynak alınan dosyanın sonu"
+
+msgid "End of function"
+msgstr "İşlevin sonu"
+
+msgid "E464: Ambiguous use of user-defined command"
+msgstr "E464: Kullanıcı tanımlı komutun belirsiz kullanımı"
+
+msgid "E492: Not an editor command"
+msgstr "E492: Bir düzenleyici komutu değil"
+
+msgid "E981: Command not allowed in rvim"
+msgstr "E981: Bu komuta rvim'de izin verilmiyor"
+
+msgid "E493: Backwards range given"
+msgstr "E493: Geriye dönük erim verildi"
+
+msgid "Backwards range given, OK to swap"
+msgstr "Geriye dönük erim verildi, takas edilebilir"
+
+msgid "E494: Use w or w>>"
+msgstr "E494: w veya w>> kullanın"
+
+msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
+msgstr ""
+"E943: Komut tablosunun güncellenmesi gerekiyor, 'make cmdidxs' çalıştırın"
+
+msgid ""
+"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
+msgstr ""
+"DAHİLİ: EX_DFLALL; ADDR_NONE, ADDR_UNSIGNED veya ADDR_QUICKFIX ile birlikte "
+"kullanılamaz"
+
+msgid "E319: Sorry, the command is not available in this version"
+msgstr "E319: Üzgünüm, komut bu sürümde mevcut değil"
+
+#, c-format
+msgid "%d more file to edit. Quit anyway?"
+msgid_plural "%d more files to edit. Quit anyway?"
+msgstr[0] "Düzenlenecek %d dosya daha var. Yine de çıkılsın mı?"
+msgstr[1] "Düzenlenecek %d dosya daha var. Yine de çıkılsın mı?"
+
+#, c-format
+msgid "E173: %d more file to edit"
+msgid_plural "E173: %d more files to edit"
+msgstr[0] "E173: Düzenlenecek %d dosya daha var"
+msgstr[1] "E173: Düzenlenecek %d dosya daha var"
+
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#, c-format
+msgid "E185: Cannot find color scheme '%s'"
+msgstr "E185: '%s' renk düzeni bulunamadı"
+
+msgid "Greetings, Vim user!"
+msgstr "Selamlar Vim kullanıcısı!"
+
+msgid "E784: Cannot close last tab page"
+msgstr "E784: Son sekme sayfası kapatılamıyor"
+
+msgid "Already only one tab page"
+msgstr "Zaten bir sekme sayfası var"
+
+msgid "Edit File in new tab page"
+msgstr "Dosyayı yeni sekme sayfasında düzenle"
+
+msgid "Edit File in new window"
+msgstr "Dosyayı yeni pencerede düzenle"
+
+#, c-format
+msgid "Tab page %d"
+msgstr "Sekme sayfası %d"
+
+msgid "No swap file"
+msgstr "Takas dosyası yok"
+
+msgid "Append File"
+msgstr "Dosya iliştir"
+
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
+msgstr ""
+"E747: Dizin değiştirilemiyor, arabellek değiştirilmiş (geçersiz kılmak "
+"için ! ekleyin)"
+
+msgid "E186: No previous directory"
+msgstr "E186: Öncesinde dizin yok"
+
+msgid "E187: Unknown"
+msgstr "E187: Bilinmeyen"
+
+msgid "E465: :winsize requires two number arguments"
+msgstr "E465: :winsize iki adet sayı değişken gerektirir"
+
+#, c-format
+msgid "Window position: X %d, Y %d"
+msgstr "Pencere konumu: X %d, Y %d"
+
+msgid "E188: Obtaining window position not implemented for this platform"
+msgstr "E188: Pencere konumunu alma özelliği bu platformda mevcut değil"
+
+msgid "E466: :winpos requires two number arguments"
+msgstr "E466: :winpos iki adet sayı değişken gerektirir"
+
+msgid "E930: Cannot use :redir inside execute()"
+msgstr "E930: :redir, execute() içinde kullanılamaz"
+
+msgid "Save Redirection"
+msgstr "Yeniden yönlendirmeyi kaydet"
+
+#, c-format
+msgid "E739: Cannot create directory: %s"
+msgstr "E739: Dizin oluşturulamıyor: %s"
+
+#, c-format
+msgid "E189: \"%s\" exists (add ! to override)"
+msgstr "E189: \"%s\" zaten var (geçersiz kılmak için ! ekleyin)"
+
+#, c-format
+msgid "E190: Cannot open \"%s\" for writing"
+msgstr "E190: \"%s\" yazma için açılamıyor"
+
+msgid "E191: Argument must be a letter or forward/backward quote"
+msgstr "E191: Değişken bir harf veya açma/kapama tırnağı olmalıdır"
+
+msgid "E192: Recursive use of :normal too deep"
+msgstr "E192: :normal'in özyineli kullanımı çok derinde"
+
+msgid "E809: #< is not available without the +eval feature"
+msgstr "E809: #<, +eval özelliği olmadan kullanılamaz"
+
+msgid "E194: No alternate file name to substitute for '#'"
+msgstr "E194: '#' yerine koymak için başka dosya adı yok"
+
+msgid "E495: no autocommand file name to substitute for \"<afile>\""
+msgstr "E495: \"<afile>\" yerine koymak için otokomut dosya adı yok"
+
+msgid "E496: no autocommand buffer number to substitute for \"<abuf>\""
+msgstr "E496: \"<abuf>\" yerine koymak için otokomut arabellek numarası yok"
+
+msgid "E497: no autocommand match name to substitute for \"<amatch>\""
+msgstr "E497: \"<amatch>\" yerine koymak için otokomut eşleşme adı yok"
+
+msgid "E498: no :source file name to substitute for \"<sfile>\""
+msgstr "E498: \"<sfile>\" yerine koymak için :source dosya adı yok"
+
+msgid "E489: no call stack to substitute for \"<stack>\""
+msgstr "E489: \"<stack>\" yerine koymak için bir çağrı yığını yok"
+
+msgid "E842: no line number to use for \"<slnum>\""
+msgstr "E842: \"<slnum>\" kullanımı için satır numarası yok"
+
+msgid "E961: no line number to use for \"<sflnum>\""
+msgstr "E961: \"<sflnum>\" kullanımı için satır numarası yok"
+
+#, no-c-format
+msgid "E499: Empty file name for '%' or '#', only works with \":p:h\""
+msgstr "E499: '%' veya '#' için boş dosya adı, yalnızca \":p:h\" ile çalışır"
+
+msgid "E500: Evaluates to an empty string"
+msgstr "E500: Boş bir satır olarak değer biçer"
+
+msgid "Untitled"
+msgstr "Adsız"
+
+msgid "E196: No digraphs in this version"
+msgstr "E196: Bu sürümde ikili harfler bulunmamaktadır"
+
+msgid "E608: Cannot :throw exceptions with 'Vim' prefix"
+msgstr "E608: 'Vim' öneki ile kural dışı durumlar :throw edilemez"
+
+#, c-format
+msgid "Exception thrown: %s"
+msgstr "Kural dışı durum verdi: %s"
+
+#, c-format
+msgid "Exception finished: %s"
+msgstr "Kural dışı durum bitti: %s"
+
+#, c-format
+msgid "Exception discarded: %s"
+msgstr "Kural dışı durum kenara atıldı: %s"
+
+#, c-format
+msgid "%s, line %ld"
+msgstr "%s, %ld. satır"
+
+#, c-format
+msgid "Exception caught: %s"
+msgstr "Kural dışı durum yakalandı: %s"
+
+#, c-format
+msgid "%s made pending"
+msgstr "%s askıya alındı"
+
+#, c-format
+msgid "%s resumed"
+msgstr "%s sürdürüldü"
+
+#, c-format
+msgid "%s discarded"
+msgstr "%s kenara atıldı"
+
+msgid "Exception"
+msgstr "Kural dışı durum"
+
+msgid "Error and interrupt"
+msgstr "Hata ve yarıda kesilme"
+
+msgid "Error"
+msgstr "Hata"
+
+msgid "Interrupt"
+msgstr "Yarıda Kesilme"
+
+msgid "E579: :if nesting too deep"
+msgstr "E579: :if'ler çok iç içe geçmiş"
+
+msgid "E583: multiple :else"
+msgstr "E583: Birden fazla :else"
+
+msgid "E584: :elseif after :else"
+msgstr "E584: :else sonrası :elseif"
+
+msgid "E585: :while/:for nesting too deep"
+msgstr "E585: :while/:for çok iç içe geçmiş"
+
+msgid "E732: Using :endfor with :while"
+msgstr "E732: :endfor, :while ile kullanılıyor"
+
+msgid "E733: Using :endwhile with :for"
+msgstr "E733: :endwhile, :for ile kullanılıyor"
+
+msgid "E579: block nesting too deep"
+msgstr "E579: İç içe geçmeler çok derin"
+
+msgid "E601: :try nesting too deep"
+msgstr "E601: :try çok iç içe geçmiş"
+
+msgid "E604: :catch after :finally"
+msgstr "E604: :finally sonrası :catch"
+
+msgid "E193: :enddef not inside a function"
+msgstr "E193: :enddef bir işlev içinde değil"
+
+msgid "E193: :endfunction not inside a function"
+msgstr "E193: :endfunction bir işlev içinde değil"
+
+msgid "E788: Not allowed to edit another buffer now"
+msgstr "E788: Şu anda başka bir arabellek düzenlenemez"
+
+msgid "E811: Not allowed to change buffer information now"
+msgstr "E811: Şu anda arabellek bilgisi değiştirilemez"
+
+msgid "E199: Active window or buffer deleted"
+msgstr "E199: Etkin pencere veya arabellek silinmiş"
+
+msgid "E812: Autocommands changed buffer or buffer name"
+msgstr "E812: Otokomutlar arabelleği veya arabellek adını değiştirdi"
+
+msgid "Illegal file name"
+msgstr "İzin verilmeyen dosya adı"
+
+msgid "is not a file"
+msgstr "bir dosya değil"
+
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "bir aygıt ('opendevice' seçeneği ile kapatılır)"
+
+msgid "[New DIRECTORY]"
+msgstr "[Yeni DİZİN]"
+
+msgid "[File too big]"
+msgstr "[Dosya çok büyük]"
+
+msgid "[Permission Denied]"
+msgstr "[İzin verilmedi]"
+
+msgid "E200: *ReadPre autocommands made the file unreadable"
+msgstr "E200: *ReadPre otokomutları dosyayı okunamaz hale getirdi"
+
+msgid "E201: *ReadPre autocommands must not change current buffer"
+msgstr "E201: *ReadPre otokomutları şu anki arabelleği değiştirmemeli"
+
+msgid "Vim: Reading from stdin...\n"
+msgstr "Vim: stdin'den okunuyor...\n"
+
+msgid "Reading from stdin..."
+msgstr "stdin'den okunuyor..."
+
+msgid "E202: Conversion made file unreadable!"
+msgstr "E202: Dönüştürme dosyayı okunamaz hale getirdi!"
+
+msgid "[fifo]"
+msgstr "[fifo]"
+
+msgid "[socket]"
+msgstr "[uç nokta]"
+
+msgid "[character special]"
+msgstr "[özel karakterli]"
+
+msgid "[CR missing]"
+msgstr "[Eksik CR]"
+
+msgid "[long lines split]"
+msgstr "[uzun satırlar bölünmüş]"
+
+#, c-format
+msgid "[CONVERSION ERROR in line %ld]"
+msgstr "[%ld. satırda DÖNÜŞTÜRME HATASI]"
+
+#, c-format
+msgid "[ILLEGAL BYTE in line %ld]"
+msgstr "[%ld. satırda GEÇERSİZ BAYT]"
+
+msgid "[READ ERRORS]"
+msgstr "[OKUMA HATALARI]"
+
+msgid "Can't find temp file for conversion"
+msgstr "Dönüştürme için geçici dosya bulunamadı"
+
+msgid "Conversion with 'charconvert' failed"
+msgstr "'charconvert' ile dönüştürme başarısız"
+
+msgid "can't read output of 'charconvert'"
+msgstr "'charconvert' çıktısı okunamıyor"
+
+msgid "[dos]"
+msgstr "[dos]"
+
+msgid "[dos format]"
+msgstr "[dos biçimi]"
+
+msgid "[mac]"
+msgstr "[mac]"
+
+msgid "[mac format]"
+msgstr "[mac biçimi]"
+
+msgid "[unix]"
+msgstr "[unix]"
+
+msgid "[unix format]"
+msgstr "[unix biçimi]"
+
+#, c-format
+msgid "%ld line, "
+msgid_plural "%ld lines, "
+msgstr[0] "%ld satır, "
+msgstr[1] "%ld satır, "
+
+#, c-format
+msgid "%lld byte"
+msgid_plural "%lld bytes"
+msgstr[0] "%lld bayt"
+msgstr[1] "%lld bayt"
+
+msgid "[noeol]"
+msgstr "[noeol]"
+
+msgid "[Incomplete last line]"
+msgstr "[Tamamlanmamış son satır]"
+
+#, c-format
+msgid "E208: Error writing to \"%s\""
+msgstr "E208: Şuraya yazılamadı: \"%s\""
+
+#, c-format
+msgid "E209: Error closing \"%s\""
+msgstr "E209: \"%s\" kapatılırken hata"
+
+#, c-format
+msgid "E210: Error reading \"%s\""
+msgstr "E210: \"%s\" okunurken hata"
+
+msgid "E246: FileChangedShell autocommand deleted buffer"
+msgstr "E246: FileChangedShell otokomutu arabelleği sildi"
+
+#, c-format
+msgid "E211: File \"%s\" no longer available"
+msgstr "E211: \"%s\" dosyası artık mevcut değil"
+
+#, c-format
+msgid ""
+"W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as "
+"well"
+msgstr ""
+"W12: Uyarı: \"%s\" dosyası Vim'deki arabellek de dahil olmak üzere "
+"değiştirildi"
+
+msgid "See \":help W12\" for more info."
+msgstr "Ek bilgi için \":help W12\" yazın."
+
+#, c-format
+msgid "W11: Warning: File \"%s\" has changed since editing started"
+msgstr "W11: Uyarı: \"%s\" dosyası düzenleme başladığından beri değişti"
+
+msgid "See \":help W11\" for more info."
+msgstr "Ek bilgi için \":help W11\" yazın."
+
+#, c-format
+msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
+msgstr ""
+"W16: Uyarı: \"%s\" dosyasının kipi düzenleme başladığından beri değişti"
+
+msgid "See \":help W16\" for more info."
+msgstr "Ek bilgi için \":help W16\" yazın."
+
+#, c-format
+msgid "W13: Warning: File \"%s\" has been created after editing started"
+msgstr "W13: Uyarı: \"%s\" dosyası düzenleme başladıktan sonra oluşturuldu"
+
+msgid "Warning"
+msgstr "Uyarı"
+
+msgid ""
+"&OK\n"
+"&Load File"
+msgstr ""
+"&Tamam\n"
+"&Dosya Yükle"
+
+#, c-format
+msgid "E462: Could not prepare for reloading \"%s\""
+msgstr "E462: \"%s\" yeniden yükleme için hazırlanamadı"
+
+#, c-format
+msgid "E321: Could not reload \"%s\""
+msgstr "E321: \"%s\" yeniden yüklenemedi"
+
+msgid "E219: Missing {."
+msgstr "E219: { eksik."
+
+msgid "E220: Missing }."
+msgstr "E220: } eksik."
+
+msgid "<empty>"
+msgstr "<boş>"
+
+msgid "E655: Too many symbolic links (cycle?)"
+msgstr "E655: Çok fazla sembolik bağlantı (çevrim?)"
+
+msgid "writefile() first argument must be a List or a Blob"
+msgstr "writefile() ilk değişkeni bir liste veya ikili geniş nesne olmalıdır"
+
+msgid "Select Directory dialog"
+msgstr "Dizin Seç iletişim kutusu"
+
+msgid "Save File dialog"
+msgstr "Dosya Kaydet iletişim kutusu"
+
+msgid "Open File dialog"
+msgstr "Dosya Aç iletişim kutusu"
+
+msgid "E338: Sorry, no file browser in console mode"
+msgstr "E338: Üzgünüm, konsol kipinde dosya tarayıcı yoktur"
+
+msgid "no matches"
+msgstr "eşleşme yok"
+
+msgid "E854: path too long for completion"
+msgstr "E854: Yol tamamlama için çok uzun"
+
+#, c-format
+msgid ""
+"E343: Invalid path: '**[number]' must be at the end of the path or be "
+"followed by '%s'."
+msgstr ""
+"E343: Geçersiz yol: '**[sayı]' yolun sonunda olmalı veya sonrasında '%s' "
+"gelmelidir"
+
+#, c-format
+msgid "E344: Can't find directory \"%s\" in cdpath"
+msgstr "E344: \"%s\" dizini cdpath içinde bulunamadı"
+
+#, c-format
+msgid "E345: Can't find file \"%s\" in path"
+msgstr "E345: \"%s\" dosyası yol içinde bulunamadı"
+
+#, c-format
+msgid "E346: No more directory \"%s\" found in cdpath"
+msgstr "E346: Başka bir \"%s\" dizini cdpath içinde bulunamadı"
+
+#, c-format
+msgid "E347: No more file \"%s\" found in path"
+msgstr "E347: Başka bir \"%s\" dosyası yol içinde bulunamadı"
+
+msgid "E446: No file name under cursor"
+msgstr "E446: İmleç altında bir dosya adı yok"
+
+#, c-format
+msgid "E447: Can't find file \"%s\" in path"
+msgstr "E447: \"%s\" dosyası yol içinde bulunamadı"
+
+msgid "E490: No fold found"
+msgstr "E490: Kıvırma bulunamadı"
+
+msgid "E350: Cannot create fold with current 'foldmethod'"
+msgstr "E350: Şu anki 'foldmethod' ile kıvırma oluşturulamıyor"
+
+msgid "E351: Cannot delete fold with current 'foldmethod'"
+msgstr "E351: Şu anki 'foldmethod' ile kıvırma silinemiyor"
+
+#, c-format
+msgid "+--%3ld line folded "
+msgid_plural "+--%3ld lines folded "
+msgstr[0] "+--%3ld satır kıvrıldı "
+msgstr[1] "+--%3ld satır kıvrıldı "
+
+#, c-format
+msgid "+-%s%3ld line: "
+msgid_plural "+-%s%3ld lines: "
+msgstr[0] "+-%s%3ld satır: "
+msgstr[1] "+-%s%3ld satır: "
+
+msgid "E222: Add to read buffer"
+msgstr "E222: Okuma arabelleğine ekle"
+
+msgid "E223: recursive mapping"
+msgstr "E223: Özyineli eşlemleme"
+
+msgid "E851: Failed to create a new process for the GUI"
+msgstr "E851: Grafik arabirim için yeni bir işlem yaratılamadı"
+
+msgid "E852: The child process failed to start the GUI"
+msgstr "E852: Alt işlem grafik arabirimini başlatamadı"
+
+msgid "E229: Cannot start the GUI"
+msgstr "E229: Grafik arabirimi başlatılamıyor"
+
+#, c-format
+msgid "E230: Cannot read from \"%s\""
+msgstr "E230: \"%s\" okunamıyor"
+
+msgid "E665: Cannot start GUI, no valid font found"
+msgstr "E665: Grafik arabirim başlatılamıyor, geçerli bir font bulunamadı"
+
+msgid "E231: 'guifontwide' invalid"
+msgstr "E231: 'guifontwide' geçersiz"
+
+msgid "E599: Value of 'imactivatekey' is invalid"
+msgstr "E599: 'imactivatekey' değeri geçersiz"
+
+msgid "No match at cursor, finding next"
+msgstr "İmleç konumunda eşleşme bulunamadı, sonraki bulunuyor"
+
+msgid "<cannot open> "
+msgstr "<açılamıyor> "
+
+#, c-format
+msgid "E616: vim_SelFile: can't get font %s"
+msgstr "E616: vim_SelFile: %s fontu bulunamıyor"
+
+msgid "E614: vim_SelFile: can't return to current directory"
+msgstr "E614: vim_SelFile: Şu anki dizine dönülemiyor"
+
+msgid "Pathname:"
+msgstr "Yol adı:"
+
+msgid "E615: vim_SelFile: can't get current directory"
+msgstr "E615: vim_SelFile: Şu anki dizin bulunamıyor"
+
+msgid "OK"
+msgstr "Tamam"
+
+msgid "Cancel"
+msgstr "İptal"
+
+msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
+msgstr "Kaydırma Parçacığı: Kenar piksel haritası geometrisi bulunamadı"
+
+msgid "Vim dialog"
+msgstr "Vim"
+
+msgid "E232: Cannot create BalloonEval with both message and callback"
+msgstr "E232: Hem ileti hem de geri çağırma ile BallonEval oluşturulamıyor"
+
+msgid "_Save"
+msgstr "_Kaydet"
+
+msgid "_Open"
+msgstr "_Aç"
+
+msgid "_Cancel"
+msgstr "İ_ptal"
+
+msgid "_OK"
+msgstr "_Tamam"
+
+msgid ""
+"&Yes\n"
+"&No\n"
+"&Cancel"
+msgstr ""
+"&Evet\n"
+"&Hayır\n"
+"İ&ptal"
+
+msgid "Yes"
+msgstr "Evet"
+
+msgid "No"
+msgstr "Hayır"
+
+msgid "Input _Methods"
+msgstr "Giriş _Yöntemleri"
+
+msgid "VIM - Search and Replace..."
+msgstr "VİM - Ara ve Değiştir..."
+
+msgid "VIM - Search..."
+msgstr "VİM - Ara..."
+
+msgid "Find what:"
+msgstr "Bulunacak nesne:"
+
+msgid "Replace with:"
+msgstr "Şununla değiştir:"
+
+msgid "Match whole word only"
+msgstr "Tam sözcükleri ara"
+
+msgid "Match case"
+msgstr "BÜYÜK/küçük harf duyarlı"
+
+msgid "Direction"
+msgstr "Yön"
+
+msgid "Up"
+msgstr "Yukarı"
+
+msgid "Down"
+msgstr "Aşağı"
+
+msgid "Find Next"
+msgstr "Sonrakini Bul"
+
+msgid "Replace"
+msgstr "Değiştir"
+
+msgid "Replace All"
+msgstr "Tümünü Değiştir"
+
+msgid "_Close"
+msgstr "K_apat"
+
+msgid "Vim: Received \"die\" request from session manager\n"
+msgstr "Vim: Oturum yöneticisinden işi sonlandırma isteği geldi\n"
+
+msgid "Close tab"
+msgstr "Sekmeyi kapat"
+
+msgid "New tab"
+msgstr "Yeni sekme"
+
+msgid "Open Tab..."
+msgstr "Sekme Aç..."
+
+msgid "Vim: Main window unexpectedly destroyed\n"
+msgstr "Vim: Ana pencere beklenmedik bir biçimde gitti\n"
+
+msgid "&Filter"
+msgstr "&Süz"
+
+msgid "&Cancel"
+msgstr "İ&ptal"
+
+msgid "Directories"
+msgstr "Dizinler"
+
+msgid "Filter"
+msgstr "Süzgeç"
+
+msgid "&Help"
+msgstr "&Yardım"
+
+msgid "Files"
+msgstr "Dosyalar"
+
+msgid "&OK"
+msgstr "&Tamam"
+
+msgid "Selection"
+msgstr "Seçim"
+
+msgid "Find &Next"
+msgstr "Sonrakini &Bul"
+
+msgid "&Replace"
+msgstr "&Değiştir"
+
+msgid "Replace &All"
+msgstr "Tümünü D&eğiştir"
+
+msgid "&Undo"
+msgstr "&Geri al"
+
+msgid "Open tab..."
+msgstr "Sekme aç..."
+
+msgid "Find string"
+msgstr "Dizi bul"
+
+msgid "Find & Replace"
+msgstr "Bul ve Değiştir"
+
+msgid "Not Used"
+msgstr "Kullanılmıyor"
+
+msgid "Directory\t*.nothing\n"
+msgstr "Directory\t*.hiçbir şey\n"
+
+#, c-format
+msgid "E671: Cannot find window title \"%s\""
+msgstr "E671: Pencere başlığı \"%s\" bulunamıyor"
+
+#, c-format
+msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
+msgstr "E243: \"-%s\" değişkeni desteklenmiyor; OLE sürümünü kullanın."
+
+msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
+msgstr "E988: Grafik arabirim kullanılamaz. gvim.exe çalıştırılamadı."
+
+msgid "E672: Unable to open window inside MDI application"
+msgstr "E672: MDI uygulaması içinde pencere açılamıyor"
+
+msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
+msgstr ""
+"Vim E458: Renk eşlemi girdisi ayrılamadı, bazı renkler hatalı görünebilir"
+
+#, c-format
+msgid "E250: Fonts for the following charsets are missing in fontset %s:"
+msgstr "E250: %s yazıtipi seti içinde şu karakter setleri için fontlar eksik:"
+
+#, c-format
+msgid "E252: Fontset name: %s"
+msgstr "E252: Yazıtipi seti adı: %s"
+
+#, c-format
+msgid "Font '%s' is not fixed-width"
+msgstr "'%s' yazıtipi sabit aralıklı değil"
+
+#, c-format
+msgid "E253: Fontset name: %s"
+msgstr "E253: Yazıtipi seti adı: %s"
+
+#, c-format
+msgid "Font0: %s"
+msgstr "Yazıtipi0: %s"
+
+#, c-format
+msgid "Font%d: %s"
+msgstr "Yazıtipi%d: %s"
+
+#, c-format
+msgid "Font%d width is not twice that of font0"
+msgstr "Yazıtipi%d genişliği yazıtipi0 genişliğinin iki katı olmalıdır"
+
+#, c-format
+msgid "Font0 width: %d"
+msgstr "Yazıtipi0 genişliği: %d"
+
+#, c-format
+msgid "Font%d width: %d"
+msgstr "Yazıtipi%d genişliği: %d"
+
+msgid "E284: Cannot set IC values"
+msgstr "E284: Girdi bağlamı değerleri ayarlanamıyor"
+
+msgid "E285: Failed to create input context"
+msgstr "E285: Girdi bağlamı oluşturulamadı"
+
+msgid "E286: Failed to open input method"
+msgstr "E286: Giriş yöntemi açılamadı"
+
+msgid "E287: Warning: Could not set destroy callback to IM"
+msgstr "E287: Uyarı: Giriş yöntemine yok etme geri çağırması ayarlanamadı"
+
+msgid "E288: input method doesn't support any style"
+msgstr "E288: Giriş yöntemi herhangi bir biçemi desteklemiyor"
+
+msgid "E289: input method doesn't support my preedit type"
+msgstr "E289: Giriş yöntemi benim ön düzenleme türümü desteklemiyor"
+
+msgid "Invalid font specification"
+msgstr "Geçersiz yazıtipi belirtimi"
+
+msgid "&Dismiss"
+msgstr "So&nlandır"
+
+msgid "no specific match"
+msgstr "belirli bir eşleşme yok"
+
+msgid "Vim - Font Selector"
+msgstr "Vim - Yazıtipi Seçicisi"
+
+msgid "Name:"
+msgstr "Ad:"
+
+msgid "Show size in Points"
+msgstr "Büyüklüğü puntolarla göster"
+
+msgid "Encoding:"
+msgstr "Kodlama:"
+
+msgid "Font:"
+msgstr "Yazıtipi:"
+
+msgid "Style:"
+msgstr "Biçem:"
+
+msgid "Size:"
+msgstr "Büyüklük:"
+
+msgid "E550: Missing colon"
+msgstr "E550: İki nokta eksik"
+
+msgid "E551: Illegal component"
+msgstr "E551: Geçersiz bileşen"
+
+msgid "E552: digit expected"
+msgstr "E552: Basamak bekleniyordu"
+
+#, c-format
+msgid "Page %d"
+msgstr "Sayfa %d"
+
+msgid "No text to be printed"
+msgstr "Yazdırılacak metin yok"
+
+#, c-format
+msgid "Printing page %d (%d%%)"
+msgstr "Sayfa yazdırılıyor: %d (%d%%)"
+
+#, c-format
+msgid " Copy %d of %d"
+msgstr " Kopya %d/%d"
+
+#, c-format
+msgid "Printed: %s"
+msgstr "Yazdırıldı: %s"
+
+msgid "Printing aborted"
+msgstr "Yazdırma durduruldu"
+
+msgid "E455: Error writing to PostScript output file"
+msgstr "E455: PostScript çıktı dosyasına yazarken hata"
+
+#, c-format
+msgid "E624: Can't open file \"%s\""
+msgstr "E624: \"%s\" dosyası açılamıyor"
+
+#, c-format
+msgid "E457: Can't read PostScript resource file \"%s\""
+msgstr "E457: PostScript kaynak dosyası \"%s\" okunamıyor"
+
+#, c-format
+msgid "E618: file \"%s\" is not a PostScript resource file"
+msgstr "E618: \"%s\" dosyası bir PostScript kaynak dosyası değil"
+
+#, c-format
+msgid "E619: file \"%s\" is not a supported PostScript resource file"
+msgstr "E619: \"%s\" dosyası desteklenen bir PostScript kaynak dosyası değil"
+
+#, c-format
+msgid "E621: \"%s\" resource file has wrong version"
+msgstr "E621: \"%s\" kaynak dosyası sürümü hatalı"
+
+msgid "E673: Incompatible multi-byte encoding and character set."
+msgstr "E673: Uyumsuz çoklu bit kodlaması ve karakter seti."
+
+msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
+msgstr "E674: printmbcharset çoklu bit kodlamada boş olamaz"
+
+msgid "E675: No default font specified for multi-byte printing."
+msgstr "E675: Çoklu bit yazdırma için öntanımlı yazıtipi ayarlanmamış."
+
+msgid "E324: Can't open PostScript output file"
+msgstr "E324: PostScript çıktı dosyası açılamıyor"
+
+#, c-format
+msgid "E456: Can't open file \"%s\""
+msgstr "E456: \"%s\" dosyası açılamıyor"
+
+msgid "E456: Can't find PostScript resource file \"prolog.ps\""
+msgstr "E456: PostScript kaynak dosyası \"prolog.ps\" bulunamıyor"
+
+msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
+msgstr "E456: PostScript kaynak dosyası \"cidfont.ps\" bulunamıyor"
+
+#, c-format
+msgid "E456: Can't find PostScript resource file \"%s.ps\""
+msgstr "E456: PostScript kaynak dosyası \"%s.ps\" bulunamıyor"
+
+#, c-format
+msgid "E620: Unable to convert to print encoding \"%s\""
+msgstr "E620: \"%s\" yazdırma kodlamasına dönüştürülemiyor"
+
+msgid "Sending to printer..."
+msgstr "Yazıcıya gönderiliyor..."
+
+msgid "E365: Failed to print PostScript file"
+msgstr "E365: PostScript dosyası yazdırılamadı"
+
+msgid "Print job sent."
+msgstr "Yazdırma işi gönderildi"
+
+msgid "E478: Don't panic!"
+msgstr "E478: Panik yok!"
+
+#, c-format
+msgid "E661: Sorry, no '%s' help for %s"
+msgstr "E661: Üzgünüm, '%s' yardımı %s için mevcut değil"
+
+#, c-format
+msgid "E149: Sorry, no help for %s"
+msgstr "E149: Üzgünüm, %s için yardım mevcut değil"
+
+#, c-format
+msgid "Sorry, help file \"%s\" not found"
+msgstr "Üzgünüm, \"%s\" yardım dosyası bulunamadı"
+
+#, c-format
+msgid "E151: No match: %s"
+msgstr "E151: Eşleşme bulunamadı: %s"
+
+#, c-format
+msgid "E152: Cannot open %s for writing"
+msgstr "E152: %s yazma için açılamıyor"
+
+#, c-format
+msgid "E153: Unable to open %s for reading"
+msgstr "E153: %s okuma için açılamıyor"
+
+#, c-format
+msgid "E670: Mix of help file encodings within a language: %s"
+msgstr "E670: Bir dilde yardım dosyası kodlamaları karıştı: %s"
+
+#, c-format
+msgid "E154: Duplicate tag \"%s\" in file %s/%s"
+msgstr "E154: Şu dosyada yinelenen \"%s\" etiketi: %s/%s"
+
+#, c-format
+msgid "E150: Not a directory: %s"
+msgstr "E150: %s bir dizin değil"
+
+msgid "E679: recursive loop loading syncolor.vim"
+msgstr "E679: syncolor.vim yüklenirken özyineli döngü"
+
+#, c-format
+msgid "E411: highlight group not found: %s"
+msgstr "E411: Vurgulama grubu bulunamadı: %s"
+
+#, c-format
+msgid "E412: Not enough arguments: \":highlight link %s\""
+msgstr "E412: Yetersiz sayıda değişken: \":highlight link %s\""
+
+#, c-format
+msgid "E413: Too many arguments: \":highlight link %s\""
+msgstr "E413: Çok fazla değişken: \":highlight link %s\""
+
+msgid "E414: group has settings, highlight link ignored"
+msgstr "E414: Grup ayarları mevcut, vurgulama bağlantısı yok sayıldı"
+
+#, c-format
+msgid "E415: unexpected equal sign: %s"
+msgstr "E415: Beklenmedik eşittir imi: %s"
+
+#, c-format
+msgid "E416: missing equal sign: %s"
+msgstr "E416: Eksik eşittir imi: %s"
+
+#, c-format
+msgid "E417: missing argument: %s"
+msgstr "E417: Eksik değişkenler: %s"
+
+#, c-format
+msgid "E418: Illegal value: %s"
+msgstr "E418: İzin verilmeyen değer: %s"
+
+msgid "E419: FG color unknown"
+msgstr "E419: Bilinmeyen metin rengi"
+
+msgid "E420: BG color unknown"
+msgstr "E420: Bilinmeyen ardalan rengi"
+
+msgid "E453: UL color unknown"
+msgstr "E453: Bilinmeyen alt çizme rengi"
+
+#, c-format
+msgid "E421: Color name or number not recognized: %s"
+msgstr "E421: Renk adı veya numarası tanımlanamadı: %s"
+
+#, c-format
+msgid "E422: terminal code too long: %s"
+msgstr "E422: Uçbirim kodu çok uzun: %s"
+
+#, c-format
+msgid "E423: Illegal argument: %s"
+msgstr "E423: İzin verilmeyen değişken: %s"
+
+msgid "E424: Too many different highlighting attributes in use"
+msgstr "E424: Çok fazla değişik vurgulama kuralları kullanılıyor"
+
+msgid "E669: Unprintable character in group name"
+msgstr "E669: Grup adında yazdırılamayan karakter"
+
+msgid "W18: Invalid character in group name"
+msgstr "W18: Grup adında geçersiz karakter"
+
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Çok fazla vurgulama ve sözdizim grupları"
+
+msgid "Add a new database"
+msgstr "Yeni bir veritabanı ekle"
+
+msgid "Query for a pattern"
+msgstr "Bir dizgiyi sorgula"
+
+msgid "Show this message"
+msgstr "Bu iletiyi göster"
+
+msgid "Kill a connection"
+msgstr "Bir bağlantıyı kes"
+
+msgid "Reinit all connections"
+msgstr "Tüm bağlantıları yeniden kur"
+
+msgid "Show connections"
+msgstr "Bağlantıları göster"
+
+#, c-format
+msgid "E560: Usage: cs[cope] %s"
+msgstr "E560: Kullanım: cs[cope] %s"
+
+msgid "This cscope command does not support splitting the window.\n"
+msgstr "Bu cscope komutu pencereyi bölmeyi desteklemiyor.\n"
+
+msgid "E562: Usage: cstag <ident>"
+msgstr "E562: Kullanım: cstag <ad>"
+
+msgid "E257: cstag: tag not found"
+msgstr "E257: cstag: Etiket bulunamadı"
+
+#, c-format
+msgid "E563: stat(%s) error: %d"
+msgstr "E563: stat(%s) hatası: %d"
+
+msgid "E563: stat error"
+msgstr "E563: stat hatası"
+
+#, c-format
+msgid "E564: %s is not a directory or a valid cscope database"
+msgstr "E564: %s bir dizin veya geçerli bir cscope veritabanı değil"
+
+#, c-format
+msgid "Added cscope database %s"
+msgstr "cscope veritabanı %s eklendi"
+
+#, c-format
+msgid "E262: error reading cscope connection %d"
+msgstr "E262: cscope bağlantısı %d okunurken hata"
+
+msgid "E561: unknown cscope search type"
+msgstr "E561: Bilinmeyen cscope arama türü"
+
+msgid "E566: Could not create cscope pipes"
+msgstr "E566: cscope veri yolları oluşturulamadı"
+
+msgid "E622: Could not fork for cscope"
+msgstr "E622: cscope için çatal oluşturulamadı"
+
+msgid "cs_create_connection setpgid failed"
+msgstr "cs_create_connection: setpgid başarısız oldu"
+
+msgid "cs_create_connection exec failed"
+msgstr "cs_create_connection: exec başarısız oldu"
+
+msgid "cs_create_connection: fdopen for to_fp failed"
+msgstr "cs_create_connection: to_fp için fdopen başarısız oldu"
+
+msgid "cs_create_connection: fdopen for fr_fp failed"
+msgstr "cs_create_connection: fr_fp için fdopen başarısız oldu"
+
+msgid "E623: Could not spawn cscope process"
+msgstr "E623: cscope işlemi ortaya çıkarılamadı"
+
+msgid "E567: no cscope connections"
+msgstr "E567: cscope bağlantıları yok"
+
+#, c-format
+msgid "E469: invalid cscopequickfix flag %c for %c"
+msgstr "E469: Geçersiz cscopequickfix bayrağı %c, %c için"
+
+#, c-format
+msgid "E259: no matches found for cscope query %s of %s"
+msgstr "E259: cscope sorgusu %s/%s için eşleşme bulunamadı"
+
+msgid "cscope commands:\n"
+msgstr "cscope komutları:\n"
+
+#, c-format
+msgid "%-5s: %s%*s (Usage: %s)"
+msgstr "%-5s: %s%*s (Kullanım: %s)"
+
+msgid ""
+"\n"
+" a: Find assignments to this symbol\n"
+" c: Find functions calling this function\n"
+" d: Find functions called by this function\n"
+" e: Find this egrep pattern\n"
+" f: Find this file\n"
+" g: Find this definition\n"
+" i: Find files #including this file\n"
+" s: Find this C symbol\n"
+" t: Find this text string\n"
+msgstr ""
+"\n"
+" a: Bu sembole yapılan atamaları bul\n"
+" c: Bu işlevi çağıran işlevleri bul\n"
+" d: bu işlev tarafından çağrılan işlevleri bul\n"
+" e: Bu egrep dizgisini bul\n"
+" f: Bu dosyayı bul\n"
+" g: Bu tanımı bul\n"
+" i: Bu dosyayı içeren (#including) dosyaları bul\n"
+" s: Bu \"C\" sembolünü bul\n"
+" t: Bu metin dizisini bul\n"
+
+#, c-format
+msgid "E625: cannot open cscope database: %s"
+msgstr "E625: cscope veritabanı açılamıyor: %s"
+
+msgid "E626: cannot get cscope database information"
+msgstr "E626: cscope veritabanı bilgisi alınamıyor"
+
+msgid "E568: duplicate cscope database not added"
+msgstr "E568: Yinelenen cscope veritabanı eklenmemiş"
+
+#, c-format
+msgid "E261: cscope connection %s not found"
+msgstr "E261: %s cscope bağlantısı bulunamadı"
+
+#, c-format
+msgid "cscope connection %s closed"
+msgstr "%s cscope bağlantısı bitirildi"
+
+msgid "E570: fatal error in cs_manage_matches"
+msgstr "E570: cs_manage_matches içinde onulmaz hata"
+
+#, c-format
+msgid "Cscope tag: %s"
+msgstr "cscope etiketi: %s"
+
+msgid ""
+"\n"
+" # line"
+msgstr ""
+"\n"
+" # satır"
+
+msgid "filename / context / line\n"
+msgstr "dosya adı / bağlam / satır\n"
+
+#, c-format
+msgid "E609: Cscope error: %s"
+msgstr "E609: cscope hatası: %s"
+
+msgid "All cscope databases reset"
+msgstr "Tüm cscope veritabanları sıfırlandı"
+
+msgid "no cscope connections\n"
+msgstr "cscope bağlantısı yok\n"
+
+msgid " # pid database name prepend path\n"
+msgstr " # pid veritabanı adı başlangıç yolu\n"
+
+msgid "Lua library cannot be loaded."
+msgstr "Lua kitaplığı yüklenemedi."
+
+msgid "cannot save undo information"
+msgstr "Geri al bilgisi kaydedilemiyor"
+
+msgid ""
+"E815: Sorry, this command is disabled, the MzScheme libraries could not be "
+"loaded."
+msgstr ""
+"E815: Üzgünüm, bu komut etkin değil, MzScheme kitaplıkları yüklenemedi."
+
+msgid ""
+"E895: Sorry, this command is disabled, the MzScheme's racket/base module "
+"could not be loaded."
+msgstr ""
+"E895: Üzgünüm, bu komut etkin değil, MzScheme'in racket/base birimi "
+"yüklenemedi."
+
+msgid "invalid expression"
+msgstr "geçersiz ifade"
+
+msgid "expressions disabled at compile time"
+msgstr "ifadeler derleme aşamasında kapatılmış"
+
+msgid "hidden option"
+msgstr "gizli seçenek"
+
+msgid "unknown option"
+msgstr "bilinmeyen seçenek"
+
+msgid "window index is out of range"
+msgstr "pencere dizini erimin dışında"
+
+msgid "couldn't open buffer"
+msgstr "arabellek açılamadı"
+
+msgid "cannot delete line"
+msgstr "satır silinemiyor"
+
+msgid "cannot replace line"
+msgstr "satır değiştirilemiyor"
+
+msgid "cannot insert line"
+msgstr "satır eklenemiyor"
+
+msgid "string cannot contain newlines"
+msgstr "dizi \"yeni satır\" imi içeremez"
+
+msgid "error converting Scheme values to Vim"
+msgstr "Scheme değerlerini Vim değerlerine dönüştürürken hata"
+
+msgid "Vim error: ~a"
+msgstr "Vim hatası: ~a"
+
+msgid "Vim error"
+msgstr "Vim hatası"
+
+msgid "buffer is invalid"
+msgstr "arabellek geçersiz"
+
+msgid "window is invalid"
+msgstr "pencere geçersiz"
+
+msgid "linenr out of range"
+msgstr "linenr erimin dışında"
+
+msgid "not allowed in the Vim sandbox"
+msgstr "Vim kum havuzunda izin verilmiyor"
+
+msgid "E836: This Vim cannot execute :python after using :py3"
+msgstr "E836: Bu Vim :py3 komutundan sonra :python komutunu çalıştıramaz"
+
+msgid ""
+"E263: Sorry, this command is disabled, the Python library could not be "
+"loaded."
+msgstr "E263: Üzgünüm, bu komut etkin değil, Python kitaplığı yüklenemedi"
+
+msgid ""
+"E887: Sorry, this command is disabled, the Python's site module could not be "
+"loaded."
+msgstr ""
+"E887: Üzgünüm, bu komut etkin değil, Python'un site birimi yüklenemedi."
+
+msgid "E659: Cannot invoke Python recursively"
+msgstr "E659: Python özyineli olarak çalıştırılamıyor"
+
+msgid "E837: This Vim cannot execute :py3 after using :python"
+msgstr "E837: Bu Vim :python komutundan sonra :py3 komutunu çalıştıramaz"
+
+msgid "E265: $_ must be an instance of String"
+msgstr "E265: $_ bir dizi örneği olmalıdır"
+
+msgid ""
+"E266: Sorry, this command is disabled, the Ruby library could not be loaded."
+msgstr "E266: Üzgünüm, bu komut etkin değil, Ruby kitaplığı yüklenemedi."
+
+msgid "E267: unexpected return"
+msgstr "E267: Beklenmeyen dönüş"
+
+msgid "E268: unexpected next"
+msgstr "E268: Beklenmeyen sonraki"
+
+msgid "E269: unexpected break"
+msgstr "E269: Beklenmeyen kesme"
+
+msgid "E270: unexpected redo"
+msgstr "E270: Beklenmeyen yinele komutu"
+
+msgid "E271: retry outside of rescue clause"
+msgstr "E271: retry, rescue işlecinin dışında"
+
+msgid "E272: unhandled exception"
+msgstr "E272: İşletilemeyen kural dışı durum"
+
+#, c-format
+msgid "E273: unknown longjmp status %d"
+msgstr "E273: Bilinmeyen longjmp durumu %d"
+
+msgid "invalid buffer number"
+msgstr "Geçersiz arabellek numarası"
+
+msgid "not implemented yet"
+msgstr "henüz uygulanmadı"
+
+msgid "cannot set line(s)"
+msgstr "satır(lar) ayarlanamıyor"
+
+msgid "invalid mark name"
+msgstr "geçersiz im adı"
+
+msgid "mark not set"
+msgstr "im ayarlanmamış"
+
+#, c-format
+msgid "row %d column %d"
+msgstr "satır %d sütun %d"
+
+msgid "cannot insert/append line"
+msgstr "satır eklenemiyor/iliştirilemiyor"
+
+msgid "line number out of range"
+msgstr "satır numarası erimin dışında"
+
+msgid "unknown flag: "
+msgstr "geçersiz bayrak: "
+
+msgid "unknown vimOption"
+msgstr "geçersiz vimOption"
+
+msgid "keyboard interrupt"
+msgstr "klavye araya girdi"
+
+msgid "cannot create buffer/window command: object is being deleted"
+msgstr "arabellek/pencere komutu oluşturulamadı: öge şu anda siliniyor"
+
+msgid ""
+"cannot register callback command: buffer/window is already being deleted"
+msgstr "geri çağırma komutu kaydedilemiyor: arabellek/pencere zaten siliniyor"
+
+msgid ""
+"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
+"org"
+msgstr ""
+"E280: ONULMAZ TCL HATASI: Başvuru listesi hasar görmüş! Lütfen bunu vim-"
+"dev@vim.org adresine bildirin"
+
+msgid "cannot register callback command: buffer/window reference not found"
+msgstr ""
+"geri çağırma komutu kaydedilemiyor: arabellek/pencere başvurusu bulunamadı"
+
+msgid ""
+"E571: Sorry, this command is disabled: the Tcl library could not be loaded."
+msgstr "E571: Üzgünüm, bu komut etkin değil: Tcl kitaplığı yüklenemedi."
+
+#, c-format
+msgid "E572: exit code %d"
+msgstr "E572: %d çıkış kodu"
+
+msgid "cannot get line"
+msgstr "satır alınamıyor"
+
+msgid "Unable to register a command server name"
+msgstr "Bir komut sunucusu adı kaydedilemiyor"
+
+msgid "E248: Failed to send command to the destination program"
+msgstr "E248: Hedef programa komut gönderimi başarısız oldu"
+
+#, c-format
+msgid "E573: Invalid server id used: %s"
+msgstr "E573: Geçersiz sunucu kimliği kullanıldı: %s"
+
+msgid "E251: VIM instance registry property is badly formed. Deleted!"
+msgstr "E251: VİM oturumu kayıt değeri düzgün oluşturulmamış. Silindi!"
+
+#, c-format
+msgid "%ld lines to indent... "
+msgstr "girintilenecek %ld satır kaldı... "
+
+#, c-format
+msgid "%ld line indented "
+msgid_plural "%ld lines indented "
+msgstr[0] "%ld satır girintilendi "
+msgstr[1] "%ld satır girintilendi"
+
+msgid " Keyword completion (^N^P)"
+msgstr " Anahtar sözcük tamamlaması (^N^P)"
+
+msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+msgstr " ^X kipi (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+
+msgid " Whole line completion (^L^N^P)"
+msgstr " Tam satır tamamlaması (^L^N^P)"
+
+msgid " File name completion (^F^N^P)"
+msgstr " Dosya adı tamamlaması (^F^N^P)"
+
+msgid " Tag completion (^]^N^P)"
+msgstr " Etiket tamamlaması (^]^N^P)"
+
+msgid " Path pattern completion (^N^P)"
+msgstr " Yol dizgisi tamamlaması (^N^P)"
+
+msgid " Definition completion (^D^N^P)"
+msgstr " Tanım tamamlaması (^D^N^P)"
+
+msgid " Dictionary completion (^K^N^P)"
+msgstr " Sözlük tamamlaması (^K^N^P)"
+
+msgid " Thesaurus completion (^T^N^P)"
+msgstr " Eşanlamlılar sözlüğü tamamlaması (^T^N^P)"
+
+msgid " Command-line completion (^V^N^P)"
+msgstr " Komut satırı tamamlaması (^V^N^P)"
+
+msgid " User defined completion (^U^N^P)"
+msgstr " Kullanıcı tanımlı tamamlamalar (^U^N^P)"
+
+msgid " Omni completion (^O^N^P)"
+msgstr " Omni tamamlaması (^O^N^P)"
+
+msgid " Spelling suggestion (s^N^P)"
+msgstr " Yazım önerisi (s^N^P)"
+
+msgid " Keyword Local completion (^N^P)"
+msgstr " Dahili anahtar sözcük tamamlaması (^N^P)"
+
+msgid "Hit end of paragraph"
+msgstr "Paragrafın sonuna varıldı"
+
+msgid "E839: Completion function changed window"
+msgstr "E839: Tamamlama işlevi pencereyi değiştirdi"
+
+msgid "E840: Completion function deleted text"
+msgstr "E840: Tamamlama işlevi metni sildi"
+
+msgid "'dictionary' option is empty"
+msgstr "'dictionary' seçeneği boş"
+
+msgid "'thesaurus' option is empty"
+msgstr "'thesaurus' seçeneği boş"
+
+#, c-format
+msgid "Scanning dictionary: %s"
+msgstr "Sözlük taranıyor: %s"
+
+msgid " (insert) Scroll (^E/^Y)"
+msgstr " (ekle) Kaydır (^E/^Y)"
+
+msgid " (replace) Scroll (^E/^Y)"
+msgstr " (değiştir) Kaydır (^E/^Y)"
+
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() yalnızca Ekleme kipinde kullanılabilir"
+
+#, c-format
+msgid "Scanning: %s"
+msgstr "Taranıyor: %s"
+
+msgid "Scanning tags."
+msgstr "Etiketler taranıyor..."
+
+msgid "match in file"
+msgstr "dosya içinde eşleşme"
+
+msgid " Adding"
+msgstr " Ekleniyor"
+
+msgid "-- Searching..."
+msgstr "-- Aranıyor..."
+
+msgid "Back at original"
+msgstr "Başlangıca geri dönüldü"
+
+msgid "Word from other line"
+msgstr "Sözcük diğer satırdan"
+
+msgid "The only match"
+msgstr "Tek eşleşen"
+
+#, c-format
+msgid "match %d of %d"
+msgstr "eşleşme %d/%d"
+
+#, c-format
+msgid "match %d"
+msgstr "eşleşme %d"
+
+msgid "E920: _io file requires _name to be set"
+msgstr "E920: _io dosyası _name ayarlı olmasını gerektirir"
+
+msgid "E915: in_io buffer requires in_buf or in_name to be set"
+msgstr "E915: in_io arabelleği in_buf veya in_name ayarlı olmasını gerektirir"
+
+#, c-format
+msgid "E918: buffer must be loaded: %s"
+msgstr "E918: Arabellek yüklenmiş olmalıdır: %s"
+
+msgid "E916: not a valid job"
+msgstr "E916: Geçerli bir iş değil"
+
+#, c-format
+msgid "E491: json decode error at '%s'"
+msgstr "E491: '%s' konumunda json çözümü hatası"
+
+#, c-format
+msgid "E938: Duplicate key in JSON: \"%s\""
+msgstr "E938: JSON'da yinelenmiş anahtar: \"%s\""
+
+#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: %s değişkeni bir liste veya ikili geniş nesne olmalıdır"
+
+msgid "E900: maxdepth must be non-negative number"
+msgstr "E900: maxdepth negatif olmayan bir sayı olmalı"
+
+msgid "flatten() argument"
+msgstr "flatten() değişkeni"
+
+#, c-format
+msgid "E696: Missing comma in List: %s"
+msgstr "E696: Listede virgül eksik: %s"
+
+msgid "sort() argument"
+msgstr "sort() değişkeni"
+
+msgid "uniq() argument"
+msgstr "uniq() değişkeni"
+
+msgid "E702: Sort compare function failed"
+msgstr "E702: Sıralayıp karşılaştırma işlevi başarısız oldu"
+
+msgid "E882: Uniq compare function failed"
+msgstr "E882: Benzersizlik karşılaştırma işlevi başarısız oldu"
+
+msgid "map() argument"
+msgstr "map() değişkeni"
+
+msgid "mapnew() argument"
+msgstr "mapnew() değişkeni"
+
+msgid "filter() argument"
+msgstr "filter() değişkeni"
+
+msgid "add() argument"
+msgstr "add() değişkeni"
+
+msgid "insert() argument"
+msgstr "insert() değişkeni"
+
+msgid "remove() argument"
+msgstr "remove() değişkeni"
+
+msgid "reverse() argument"
+msgstr "reverse() değişkeni"
+
+#, c-format
+msgid "Current %slanguage: \"%s\""
+msgstr "Şu anki %sdil: \"%s\""
+
+#, c-format
+msgid "E197: Cannot set language to \"%s\""
+msgstr "E197: \"%s\" diline ayarlanamıyor"
+
+msgid "Unknown option argument"
+msgstr "Bilinmeyen seçenek değişkeni"
+
+msgid "Too many edit arguments"
+msgstr "Çok fazla düzenleme değişkeni"
+
+msgid "Argument missing after"
+msgstr "Şundan sonra değişken eksik:"
+
+msgid "Garbage after option argument"
+msgstr "Seçenek değişkeninden sonra anlamsız veri"
+
+msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"
+msgstr "Çok fazla \"+komut\", \"-c komut\" veya \"--cmd komut\" değişkeni"
+
+msgid "Invalid argument for"
+msgstr "Şunun için geçersiz değişken:"
+
+#, c-format
+msgid "%d files to edit\n"
+msgstr "%d dosya düzenleniyor\n"
+
+msgid "netbeans is not supported with this GUI\n"
+msgstr "NetBeans bu grafik arabirimde desteklenmiyor\n"
+
+msgid "'-nb' cannot be used: not enabled at compile time\n"
+msgstr "'-nb' kullanılamaz: Derleme sırasında etkinleştirilmemiş\n"
+
+msgid "This Vim was not compiled with the diff feature."
+msgstr "Bu Vim karşılaştırma özelliği ile derlenmemiş"
+
+msgid "Attempt to open script file again: \""
+msgstr "Betik dosyası yeniden açılmaya çalışılıyor: \""
+
+msgid "Cannot open for reading: \""
+msgstr "Okuma için açılamıyor: \""
+
+msgid "Cannot open for script output: \""
+msgstr "Betik çıktısı için açılamıyor: \""
+
+msgid "Vim: Error: Failure to start gvim from NetBeans\n"
+msgstr "Vim: Hata: gvim'i NetBeans içinden başlatma başarısız oldu\n"
+
+msgid "Vim: Error: This version of Vim does not run in a Cygwin terminal\n"
+msgstr "Vim: Hata: Vim'in bu sürümü bir Cygwin uçbirimi içinde çalışmaz\n"
+
+msgid "Vim: Warning: Output is not to a terminal\n"
+msgstr "Vim: Uyarı: Çıktı bir uçbirime değil\n"
+
+msgid "Vim: Warning: Input is not from a terminal\n"
+msgstr "Vim: Uyarı: Girdi bir uçbirimden değil\n"
+
+msgid "pre-vimrc command line"
+msgstr "vimrc uygulanma öncesi komut satırı"
+
+#, c-format
+msgid "E282: Cannot read from \"%s\""
+msgstr "E282: Şuradan okunamıyor: \"%s\""
+
+msgid ""
+"\n"
+"More info with: \"vim -h\"\n"
+msgstr ""
+"\n"
+"Daha fazla bilgi için: \"vim -h\"\n"
+
+msgid "[file ..] edit specified file(s)"
+msgstr "[dosya ..] belirlenen dosyaları düzenle"
+
+msgid "- read text from stdin"
+msgstr "- stdin'den metni oku"
+
+msgid "-t tag edit file where tag is defined"
+msgstr "-t etiket etiket tanımlanan dosyaları düzenle"
+
+msgid "-q [errorfile] edit file with first error"
+msgstr "-q [hatalıd.] hata içeren ilk dosyayı düzenle"
+
+msgid ""
+"\n"
+"\n"
+"Usage:"
+msgstr ""
+"\n"
+"\n"
+"Kullanım:"
+
+msgid " vim [arguments] "
+msgstr " vim [değişkenler] "
+
+msgid ""
+"\n"
+" or:"
+msgstr ""
+"\n"
+" veya:"
+
+msgid ""
+"\n"
+"Where case is ignored prepend / to make flag upper case"
+msgstr ""
+"\n"
+"BÜYÜK/küçük harfin yok sayıldığı yerde bayrağı BÜYÜK harfli yapmak için "
+"başına / koyun"
+
+msgid ""
+"\n"
+"\n"
+"Arguments:\n"
+msgstr ""
+"\n"
+"\n"
+"Değişkenler:\n"
+
+msgid "--\t\t\tOnly file names after this"
+msgstr "--\t\t\tBundan sonra yalnızca dosya adları"
+
+msgid "--literal\t\tDon't expand wildcards"
+msgstr "--literal\t\tJoker karakterleri genişletme!"
+
+msgid "-register\t\tRegister this gvim for OLE"
+msgstr "-register\t\tBu gvim'i OLE için kaydet"
+
+msgid "-unregister\t\tUnregister gvim for OLE"
+msgstr "-unregister\t\tgvim'in OLE kaydını sil"
+
+msgid "-g\t\t\tRun using GUI (like \"gvim\")"
+msgstr "-g\t\t\tGrafik arabirim kullanarak çalıştır (\"gvim\" gibi)"
+
+msgid "-f or --nofork\tForeground: Don't fork when starting GUI"
+msgstr "-f veya --nofork\tÖnalan: Grafik arabirim başlatılırken çatallama!"
+
+msgid "-v\t\t\tVi mode (like \"vi\")"
+msgstr "-v\t\t\tVi kipi (\"vi\" gibi)"
+
+msgid "-e\t\t\tEx mode (like \"ex\")"
+msgstr "-e\t\t\tEx kipi (\"ex\" gibi)"
+
+msgid "-E\t\t\tImproved Ex mode"
+msgstr "-E\t\t\tGeliştirilmiş Ex kipi"
+
+msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")"
+msgstr "-s\t\t\tSessiz (toplu iş) kipi (yalnızca \"ex\" için)"
+
+msgid "-d\t\t\tDiff mode (like \"vimdiff\")"
+msgstr "-d\t\t\tKarşılaştırma kipi (like \"vimdiff\")"
+
+msgid "-y\t\t\tEasy mode (like \"evim\", modeless)"
+msgstr "-y\t\t\tKolay kip (\"evim\" gibi, kipsiz)"
+
+msgid "-R\t\t\tReadonly mode (like \"view\")"
+msgstr "-R\t\t\tSaltokunur kip (\"view\" gibi)"
+
+msgid "-Z\t\t\tRestricted mode (like \"rvim\")"
+msgstr "-Z\t\t\tKısıtlanmış kip (\"rvim\" gibi)"
+
+msgid "-m\t\t\tModifications (writing files) not allowed"
+msgstr "-m\t\t\tDeğişikliklere (dosya yazma) izin verilmez"
+
+msgid "-M\t\t\tModifications in text not allowed"
+msgstr "-M\t\t\tMetinde değişikliklere izin verilmez"
+
+msgid "-b\t\t\tBinary mode"
+msgstr "-b\t\t\tİkili kip"
+
+msgid "-l\t\t\tLisp mode"
+msgstr "-l\t\t\tLisp kipi"
+
+msgid "-C\t\t\tCompatible with Vi: 'compatible'"
+msgstr "-C\t\t\tVi ile uyumlu: 'compatible'"
+
+msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'"
+msgstr "-N\t\t\tTümüyle Vi uyumlu değil: 'nocompatible'"
+
+msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"
+msgstr "-V[N][dosya]\t\tAyrıntılı bilgi ver [N düzeyi] [iletileri dosyaya yaz]"
+
+msgid "-D\t\t\tDebugging mode"
+msgstr "-D\t\t\tHata ayıklama kipi"
+
+msgid "-n\t\t\tNo swap file, use memory only"
+msgstr "-n\t\t\tTakas dosyası kullanma, yalnızca belleğe yaz"
+
+msgid "-r\t\t\tList swap files and exit"
+msgstr "-r\t\t\tTakas dosyalarını listele ve çık"
+
+msgid "-r (with file name)\tRecover crashed session"
+msgstr "-r (dosya adı ile)\tÇöken oturumu kurtar"
+
+msgid "-L\t\t\tSame as -r"
+msgstr "-L\t\t\t-r ile aynı"
+
+msgid "-f\t\t\tDon't use newcli to open window"
+msgstr "-f\t\t\tPencere açmak için yeni komut satırı arabirimi kullanma"
+
+msgid "-dev <device>\t\tUse <device> for I/O"
+msgstr "-dev <aygıt>\t\tGirdi/Çıktı için <aygıt>'ı kullan"
+
+msgid "-A\t\t\tStart in Arabic mode"
+msgstr "-A\t\t\tArapça kipinde başla"
+
+msgid "-H\t\t\tStart in Hebrew mode"
+msgstr "-H\t\t\tİbranca kipinde başla"
+
+msgid "-T <terminal>\tSet terminal type to <terminal>"
+msgstr "-T <uçbirim>\t\tUçbirim türünü <uçbirim>'e ayarla"
+
+msgid "--not-a-term\t\tSkip warning for input/output not being a terminal"
+msgstr "--not-a-term\t\tGirdi/Çıktının bir uçbirime olmadığı uyarısını atla"
+
+msgid "--ttyfail\t\tExit if input or output is not a terminal"
+msgstr "--ttyfail\t\tGirdi veya çıktı bir uçbirime değilse çık"
+
+msgid "-u <vimrc>\t\tUse <vimrc> instead of any .vimrc"
+msgstr "-u <vimrc>\t\tHerhangi bir .vimrc yerine <vimrc> kullan"
+
+msgid "-U <gvimrc>\t\tUse <gvimrc> instead of any .gvimrc"
+msgstr "-U <gvimrc>\t\tHerhangi bir .gvimrc yerine <gvimrc> kullan"
+
+msgid "--noplugin\t\tDon't load plugin scripts"
+msgstr "--noplugin\t\tEklenti betiklerini yükleme!"
+
+msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
+msgstr "-p[N]\t\tN sekme sayfası aç (öntanımlı: her dosya için bir sekme)"
+
+msgid "-o[N]\t\tOpen N windows (default: one for each file)"
+msgstr "-o[N]\t\tN pencere aç (öntanımlı: her dosya için bir pencere)"
+
+msgid "-O[N]\t\tLike -o but split vertically"
+msgstr "-O[N]\t\t-o gibi, yalnızca dikey bölerek"
+
+msgid "+\t\t\tStart at end of file"
+msgstr "+\t\t\tDosyanın sonunda başlat"
+
+msgid "+<lnum>\t\tStart at line <lnum>"
+msgstr "+<satırno>\t\t<satırno> numaralı satırda başlat"
+
+msgid "--cmd <command>\tExecute <command> before loading any vimrc file"
+msgstr "--cmd <komut>\tHerhangi bir vimrc dosyası yüklemeden <komut> çalıştır"
+
+msgid "-c <command>\t\tExecute <command> after loading the first file"
+msgstr "-c <komut>\t\tİlk dosyayı yükleyip <komut> komutunu çalıştır"
+
+msgid "-S <session>\t\tSource file <session> after loading the first file"
+msgstr "-S <oturum>\t\tİlk dosyayı yükleyip <oturum> dosyasını kaynak al"
+
+msgid "-s <scriptin>\tRead Normal mode commands from file <scriptin>"
+msgstr "-s <betikgir>\tNormal kip komutlarını <betikgir> dosyasından oku"
+
+msgid "-w <scriptout>\tAppend all typed commands to file <scriptout>"
+msgstr "-w <betikçık>\tGirilen tüm komutları <betikçık> dosyasına iliştir"
+
+msgid "-W <scriptout>\tWrite all typed commands to file <scriptout>"
+msgstr "-W <betikçık>\tGirilen tüm komutları <betikçık> dosyasına yaz"
+
+msgid "-x\t\t\tEdit encrypted files"
+msgstr "-x\t\t\tŞifrelenmiş dosyaları düzenle"
+
+msgid "-display <display>\tConnect Vim to this particular X-server"
+msgstr "-display <ekran>\tVim'i bu belirtilen X sunucusuna bağla"
+
+msgid "-X\t\t\tDo not connect to X server"
+msgstr "-X\t\t\tX sunucusuna bağlama"
+
+msgid "--remote <files>\tEdit <files> in a Vim server if possible"
+msgstr "--remote <dosya>\tOlanaklıysa bir Vim sunucusuda <dosya> düzenler"
+
+msgid "--remote-silent <files> Same, don't complain if there is no server"
+msgstr "--remote-silent <dosya> Aynısı, yalnızca sunucu yoksa şikayet etmez"
+
+msgid ""
+"--remote-wait <files> As --remote but wait for files to have been edited"
+msgstr ""
+"--remote-wait <dosya> ---remote gibi, yalnızca düzenlenme bitişini bekle"
+
+msgid ""
+"--remote-wait-silent <files> Same, don't complain if there is no server"
+msgstr ""
+"--remote-wait-silent <dosya> Aynısı, yalnızca sunucu yoksa şikayet etmez"
+
+msgid ""
+"--remote-tab[-wait][-silent] <files> As --remote but use tab page per file"
+msgstr ""
+"--remote-tab[-wait][-silent] <dosya> --remote, artı sekme sayfası kullanır"
+
+msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
+msgstr ""
+"--remote-send <anahtar>\tBir Vim sunucusuna <anahtar> gönderir ve çıkar"
+
+msgid "--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"
+msgstr ""
+"--remote-expr <ifade>\t<ifade>'leri bir Vim sunucusunda değerlendirir ve "
+"sonuçları yazdırır"
+
+msgid "--serverlist\t\tList available Vim server names and exit"
+msgstr "--serverlist\t\tMevcut Vim sunucu adlarını listeler ve çıkar"
+
+msgid "--servername <name>\tSend to/become the Vim server <name>"
+msgstr "--servername <ad>\t<ad> Vim sunucusuna gönder veya sunucu ol"
+
+msgid "--startuptime <file>\tWrite startup timing messages to <file>"
+msgstr "--startuptime <dsy>\tBaşlangıç zamanlama iletilerini <dsy>'ya yaz"
+
+msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
+msgstr "-i <viminfo>\t\t.viminfo yerine <viminfo> kullan"
+
+msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo"
+msgstr "--clean\t\t'nocompatible', Vim öntanımlıları, eklenti-viminfo yok"
+
+msgid "-h or --help\tPrint Help (this message) and exit"
+msgstr "-h veya --help\tYardımı (bu iletiyi) yazdırır ve çıkar"
+
+msgid "--version\t\tPrint version information and exit"
+msgstr "--version\t\tSürüm bilgisini yazdırır ve çıkar"
+
+msgid ""
+"\n"
+"Arguments recognised by gvim (Motif version):\n"
+msgstr ""
+"\n"
+"gvim tarafından tanınan değişkenler (Motif sürümü):\n"
+
+msgid ""
+"\n"
+"Arguments recognised by gvim (neXtaw version):\n"
+msgstr ""
+"\n"
+"gvim tarafından tanınan değişkenler (neXtaw sürümü):\n"
+
+msgid ""
+"\n"
+"Arguments recognised by gvim (Athena version):\n"
+msgstr ""
+"\n"
+"gvim tarafından tanınan değişkenler (Athena sürümü):\n"
+
+msgid "-display <display>\tRun Vim on <display>"
+msgstr "-display <ekran>\tVim'i <ekran>'da çalıştır"
+
+msgid "-iconic\t\tStart Vim iconified"
+msgstr "-iconic\t\tVim'i simge durumunda başlat"
+
+msgid "-background <color>\tUse <color> for the background (also: -bg)"
+msgstr "-background <renk>\tArdalanı <renk> yap (kısa: -bg)"
+
+msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
+msgstr "-foreground <renk>\tNormal metin için <renk> kullan (kısa: -fg)"
+
+msgid "-font <font>\t\tUse <font> for normal text (also: -fn)"
+msgstr "-font <font>\t\tNormal metin için <font> yazıtipini kullan (kısa: -fn)"
+
+msgid "-boldfont <font>\tUse <font> for bold text"
+msgstr "-boldfont <font>\tKalın metin için <font> yazıtipini kullan"
+
+msgid "-italicfont <font>\tUse <font> for italic text"
+msgstr "-italicfont <font>\tEğik metin için <font> yazıtipini kullan"
+
+msgid "-geometry <geom>\tUse <geom> for initial geometry (also: -geom)"
+msgstr "-geometry <geom>\tBaşlangıç boyutları için <geom> kullan (kısa -geom)"
+
+msgid "-borderwidth <width>\tUse a border width of <width> (also: -bw)"
+msgstr "-borderwidth <gnşlk>\t<gnşlk> kenar genişliği kullan (kısa: -bw)"
+
+msgid "-scrollbarwidth <width> Use a scrollbar width of <width> (also: -sw)"
+msgstr ""
+"-scrollbarwidth <gnşlk> Kaydırma çubuğu için <gnşlk> genişlik (kısa: -sw)"
+
+msgid "-menuheight <height>\tUse a menu bar height of <height> (also: -mh)"
+msgstr ""
+"-menuheight <yükseklik>\t<yükseklik> menü çubuğu yüksekliği (kısa: -mh)"
+
+msgid "-reverse\t\tUse reverse video (also: -rv)"
+msgstr "-reverse\t\tTersine dönmüş video kullan (kısa: -rv)"
+
+msgid "+reverse\t\tDon't use reverse video (also: +rv)"
+msgstr "+reverse\t\tTersine dönmüş video kullanma (kısa: +rv)"
+
+msgid "-xrm <resource>\tSet the specified resource"
+msgstr "-xrm <kaynak>\tBelirtilen kaynağı ayarla"
+
+msgid ""
+"\n"
+"Arguments recognised by gvim (GTK+ version):\n"
+msgstr ""
+"\n"
+"gvim tarafından tanınan değişkenler (GTK+ sürümü):\n"
+
+msgid "-display <display>\tRun Vim on <display> (also: --display)"
+msgstr "-display <ekran>\tVim'i <ekran>'da çalıştır (veya: --display)"
+
+msgid "--role <role>\tSet a unique role to identify the main window"
+msgstr "--role <rol>\tAna pencereyi tanımlamak için eşsiz bir rol ayarla"
+
+msgid "--socketid <xid>\tOpen Vim inside another GTK widget"
+msgstr "--socketid <xid>\tBaşka bir GTK parçacığında Vim'i aç"
+
+msgid "--echo-wid\t\tMake gvim echo the Window ID on stdout"
+msgstr "--echo-wid\t\tgvim'in pencere kimliğini stdout'ta echo yapmasını sağla"
+
+msgid "-P <parent title>\tOpen Vim inside parent application"
+msgstr "-P <üst başlık>\tVim'i üst uygulama içinde aç"
+
+msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
+msgstr "--windowid <HWND>\tVim'i başka bir win32 parçacığı içinde aç"
+
+#, c-format
+msgid "E224: global abbreviation already exists for %s"
+msgstr "E224: %s için global kısaltma hâlihazırda var"
+
+#, c-format
+msgid "E225: global mapping already exists for %s"
+msgstr "E225: %s için global eşlemleme hâlihazırda var "
+
+#, c-format
+msgid "E226: abbreviation already exists for %s"
+msgstr "E226: %s için kısaltma hâlihazırda var"
+
+#, c-format
+msgid "E227: mapping already exists for %s"
+msgstr "E227: %s için eşlemleme hâlihazırda var"
+
+msgid "No abbreviation found"
+msgstr "Kısaltma bulunamadı"
+
+msgid "No mapping found"
+msgstr "Eşlemleme bulunamadı"
+
+msgid "E228: makemap: Illegal mode"
+msgstr "E228: makemap: İzin verilmeyen kip"
+
+msgid "E460: entries missing in mapset() dict argument"
+msgstr "E460: mapset() sözlük değişkeninde eksik girdiler"
+
+#, c-format
+msgid "E357: 'langmap': Matching character missing for %s"
+msgstr "E357: 'langmap': %s için eşleşen karakter eksik"
+
+#, c-format
+msgid "E358: 'langmap': Extra characters after semicolon: %s"
+msgstr "E358: 'langmap': Noktalı virgülden sonra ek karakterler: %s"
+
+msgid "No marks set"
+msgstr "İm ayarlanmamış"
+
+#, c-format
+msgid "E283: No marks matching \"%s\""
+msgstr "E283: \"%s\" ile eşleşen im yok"
+
+msgid ""
+"\n"
+"mark line col file/text"
+msgstr ""
+"\n"
+"im satr stn dosya/metin"
+
+msgid ""
+"\n"
+" jump line col file/text"
+msgstr ""
+"\n"
+" atla satr stn dosya/metin"
+
+msgid ""
+"\n"
+"change line col text"
+msgstr ""
+"\n"
+"dğşklk satr stn metin"
+
+#, c-format
+msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E799: Geçersiz ID: %d (1'e eşit veya 1'den büyük olmalıdır)"
+
+#, c-format
+msgid "E801: ID already taken: %d"
+msgstr "E801: Kullanımda olan ID: %d"
+
+msgid "E290: List or number required"
+msgstr "E290: Liste veya numara gerekiyor"
+
+#, c-format
+msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E802: Geçersiz ID: %d (1'e eşit veya 1'den büyük olmalıdır)"
+
+#, c-format
+msgid "E803: ID not found: %d"
+msgstr "E803: ID bulunamadı: %d"
+
+#, c-format
+msgid "E798: ID is reserved for \":match\": %d"
+msgstr "E798: ID, \":match\" için ayrılmış: %d"
+
+msgid "E543: Not a valid codepage"
+msgstr "E543: Geçerli bir kod sayfası değil"
+
+msgid "E293: block was not locked"
+msgstr "E293: Blok kilitlenmemişti"
+
+msgid "E294: Seek error in swap file read"
+msgstr "E294: Takas dosyası okumasında arama hatası"
+
+msgid "E295: Read error in swap file"
+msgstr "E295: Takas dosyasında okuma hatası"
+
+msgid "E296: Seek error in swap file write"
+msgstr "E296: Takas dosyası yazmasında arama hatası"
+
+msgid "E297: Write error in swap file"
+msgstr "E297: Takas dosyasında yazma hatası"
+
+msgid "E300: Swap file already exists (symlink attack?)"
+msgstr "E300: Takas dosyası hâlihazırda var (sembol bağı saldırısı?)"
+
+msgid "E298: Didn't get block nr 0?"
+msgstr "E298: 0 numaralı blok alınmadı mı?"
+
+msgid "E298: Didn't get block nr 1?"
+msgstr "E298: 1 numaralı blok alınmadı mı?"
+
+msgid "E298: Didn't get block nr 2?"
+msgstr "E298: 2 numaralı blok alınmadı mı?"
+
+msgid "E843: Error while updating swap file crypt"
+msgstr "E843: Takas dosyası şifrelemesi güncellenirken hata"
+
+msgid "E301: Oops, lost the swap file!!!"
+msgstr "E301: Hay aksi, takas dosyasını kaybettik!"
+
+msgid "E302: Could not rename swap file"
+msgstr "E302: Takas dosyası adı değiştirilemedi"
+
+#, c-format
+msgid "E303: Unable to open swap file for \"%s\", recovery impossible"
+msgstr "E303: \"%s\" için takas dosyası açılamadı, artık kurtarma yapılamaz"
+
+msgid "E304: ml_upd_block0(): Didn't get block 0??"
+msgstr "E304: ml_upd_block(): 0 numaralı blok alınmadı mı?"
+
+#, c-format
+msgid "E305: No swap file found for %s"
+msgstr "E305: %s için takas dosyası bulunamadı"
+
+msgid "Enter number of swap file to use (0 to quit): "
+msgstr "Kullanılacak takas dosyasının numarasını girin (çıkmak için 0): "
+
+#, c-format
+msgid "E306: Cannot open %s"
+msgstr "E306: %s açılamıyor"
+
+msgid "Unable to read block 0 from "
+msgstr "Blok 0 şuradan okunamıyor: "
+
+msgid ""
+"\n"
+"Maybe no changes were made or Vim did not update the swap file."
+msgstr ""
+"\n"
+"Herhangi bir değişiklik yapılmadı veya Vim takas dosyasını güncellemedi"
+
+msgid " cannot be used with this version of Vim.\n"
+msgstr " Vim'in bu sürümüyle kullanılamaz.\n"
+
+msgid "Use Vim version 3.0.\n"
+msgstr "Vim 3.0 sürümünü kullanın.\n"
+
+#, c-format
+msgid "E307: %s does not look like a Vim swap file"
+msgstr "E307: %s Vim takas dosyasına pek benzemiyor"
+
+msgid " cannot be used on this computer.\n"
+msgstr " bu bilgisayarda kullanılamaz.\n"
+
+msgid "The file was created on "
+msgstr "Dosya şurada oluşturuldu "
+
+msgid ""
+",\n"
+"or the file has been damaged."
+msgstr ""
+",\n"
+"veya dosya zarar görmüş"
+
+#, c-format
+msgid ""
+"E833: %s is encrypted and this version of Vim does not support encryption"
+msgstr "E833: %s şifrelenmiş ve Vim'in bu sürümü şifrelemeyi desteklemiyor"
+
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " hasar görmüş (sayfa boyutu olabilecek en az değerden daha küçük).\n"
+
+#, c-format
+msgid "Using swap file \"%s\""
+msgstr "\"%s\" takas dosyası kullanılıyor"
+
+#, c-format
+msgid "Original file \"%s\""
+msgstr "Orijinal dosya \"%s\""
+
+msgid "E308: Warning: Original file may have been changed"
+msgstr "E308: Uyarı: Orijinal dosya değiştirilmiş olabilir"
+
+#, c-format
+msgid "Swap file is encrypted: \"%s\""
+msgstr "Takas dosyası şifrelenmiş: \"%s\""
+
+msgid ""
+"\n"
+"If you entered a new crypt key but did not write the text file,"
+msgstr ""
+"\n"
+"Yeni bir şifreleme anahtarı girmiş, fakat metin dosyasını yazmamışsanız,"
+
+msgid ""
+"\n"
+"enter the new crypt key."
+msgstr ""
+"\n"
+"yeni şifreleme anahtarını girin"
+
+msgid ""
+"\n"
+"If you wrote the text file after changing the crypt key press enter"
+msgstr ""
+"\n"
+"Metin dosyasını şifreleme anahtarını değiştirdikten sonra yazdıysanız "
+"Enter'a basın"
+
+msgid ""
+"\n"
+"to use the same key for text file and swap file"
+msgstr ""
+"\n"
+"metin dosyası ve takas dosyası için aynı anahtarı kullanmak için"
+
+#, c-format
+msgid "E309: Unable to read block 1 from %s"
+msgstr "E309: Blok 1 %s içinden okunamıyor"
+
+msgid "???MANY LINES MISSING"
+msgstr "???ÇOK FAZLA SATIR EKSİK"
+
+msgid "???LINE COUNT WRONG"
+msgstr "???SATIR SAYISI YANLIŞ"
+
+msgid "???EMPTY BLOCK"
+msgstr "???BOŞ BLOK"
+
+msgid "???LINES MISSING"
+msgstr "???SATIRLAR EKSİK"
+
+#, c-format
+msgid "E310: Block 1 ID wrong (%s not a .swp file?)"
+msgstr "E310: Blok 1 kimliği yanlış (%s bir .swp dosyası değil mi?)"
+
+msgid "???BLOCK MISSING"
+msgstr "???EKSİK BLOK"
+
+msgid "??? from here until ???END lines may be messed up"
+msgstr "??? konumundan ???SON konumuna kadar satırlar bozulmuş olabilir"
+
+msgid "??? from here until ???END lines may have been inserted/deleted"
+msgstr ""
+"??? konumundan ???SON konumuna kadar satırlar eklenmiş/silinmiş olabilir"
+
+msgid "???END"
+msgstr "???SON"
+
+msgid "E311: Recovery Interrupted"
+msgstr "E311: Kurtarma yarıda kesildi"
+
+msgid ""
+"E312: Errors detected while recovering; look for lines starting with ???"
+msgstr ""
+"E312: Kurtarma sırasında hatalar bulundu, ??? ile başlayan satırlara bakın"
+
+msgid "See \":help E312\" for more information."
+msgstr "Ek bilgi için \":help E312\" yazın."
+
+msgid "Recovery completed. You should check if everything is OK."
+msgstr "Kurtarma tamamlandı. Her şey yolunda mı diye lütfen bir bakın."
+
+msgid ""
+"\n"
+"(You might want to write out this file under another name\n"
+msgstr ""
+"\n"
+"(Bu dosyası başka bir adla kaydetmek isteyebilir ve orijinal\n"
+
+msgid "and run diff with the original file to check for changes)"
+msgstr "dosya ile (varsa) karşılaştırmasını yapmak isteyebilirsiniz)"
+
+msgid "Recovery completed. Buffer contents equals file contents."
+msgstr "Kurtarma tamamlandı. Arabellek içeriği dosya içeriğine eşit."
+
+msgid ""
+"\n"
+"You may want to delete the .swp file now."
+msgstr ""
+"\n"
+"Bu .swp dosyasını silmeniz iyi olur."
+
+msgid ""
+"\n"
+"Note: process STILL RUNNING: "
+msgstr ""
+"\n"
+"Not: İşlem HÂLÂ ÇALIŞIYOR: "
+
+msgid "Using crypt key from swap file for the text file.\n"
+msgstr ""
+"Metin dosyası için takas dosyasındaki şifreleme anahtarı kullanılıyor.\n"
+
+msgid "Swap files found:"
+msgstr "Takas dosyası bulundu:"
+
+msgid " In current directory:\n"
+msgstr " Şu anki dizinde:\n"
+
+msgid " Using specified name:\n"
+msgstr " Belirtilen şu adla:\n"
+
+msgid " In directory "
+msgstr " Şu dizinde: "
+
+msgid " -- none --\n"
+msgstr " -- hiçbiri --\n"
+
+msgid " owned by: "
+msgstr " sahibi: "
+
+msgid " dated: "
+msgstr " tarih: "
+
+msgid " dated: "
+msgstr " tarih: "
+
+msgid " [from Vim version 3.0]"
+msgstr " [Vim 3.0 sürümünden itibaren]"
+
+msgid " [does not look like a Vim swap file]"
+msgstr " [bir Vim takas dosyasına benzemiyor]"
+
+msgid " file name: "
+msgstr " dosya adı: "
+
+msgid ""
+"\n"
+" modified: "
+msgstr ""
+"\n"
+" değiştirilme: "
+
+msgid "YES"
+msgstr "EVET"
+
+msgid "no"
+msgstr "hayır"
+
+msgid ""
+"\n"
+" user name: "
+msgstr ""
+"\n"
+" kullanıcı adı: "
+
+msgid " host name: "
+msgstr " anamakine adı: "
+
+msgid ""
+"\n"
+" host name: "
+msgstr ""
+"\n"
+" anamakine adı: "
+
+msgid ""
+"\n"
+" process ID: "
+msgstr ""
+"\n"
+" işlem kimliği: "
+
+msgid " (STILL RUNNING)"
+msgstr " (HÅLÅ ÇALIŞIYOR)"
+
+msgid ""
+"\n"
+" [not usable with this version of Vim]"
+msgstr ""
+"\n"
+" [Vim'in bu sürümüyle kullanılamaz]"
+
+msgid ""
+"\n"
+" [not usable on this computer]"
+msgstr ""
+"\n"
+" [bu bilgisayarda kullanılabilir değil]"
+
+msgid " [cannot be read]"
+msgstr " [okunamıyor]"
+
+msgid " [cannot be opened]"
+msgstr " [açılamadı]"
+
+msgid "E313: Cannot preserve, there is no swap file"
+msgstr "E313: Korunamıyor, bir takas dosyası yok"
+
+msgid "File preserved"
+msgstr "Dosya korundu"
+
+msgid "E314: Preserve failed"
+msgstr "E314: Koruma başarısız oldu"
+
+#, c-format
+msgid "E315: ml_get: invalid lnum: %ld"
+msgstr "E315: ml_get: geçersiz satır numarası: %ld"
+
+#, c-format
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get: %ld. satır %d %s arabelleğinde bulunamıyor"
+
+msgid "E317: pointer block id wrong 3"
+msgstr "E317: Blok 3 gösterge kimliği yanlış"
+
+msgid "stack_idx should be 0"
+msgstr "stack_idx 0 olmalı"
+
+msgid "E318: Updated too many blocks?"
+msgstr "E318: Çok fazla blok mu güncellendi?"
+
+msgid "E317: pointer block id wrong 4"
+msgstr "E317: Blok 4 gösterge kimliği yanlış"
+
+msgid "deleted block 1?"
+msgstr "Blok 1 mi silindi?"
+
+#, c-format
+msgid "E320: Cannot find line %ld"
+msgstr "E320: %ld. satır bulunamıyor"
+
+msgid "E317: pointer block id wrong"
+msgstr "E317: Gösterge blok kimliği yanlış"
+
+msgid "pe_line_count is zero"
+msgstr "pe_line_count sıfır"
+
+#, c-format
+msgid "E322: line number out of range: %ld past the end"
+msgstr "E322: satır numarası erimin dışında: %ld en sonuncuyu geçmiş"
+
+#, c-format
+msgid "E323: line count wrong in block %ld"
+msgstr "E323: %ld. blokta satır sayısı yanlış"
+
+msgid "Stack size increases"
+msgstr "Yığın boyutu artıyor"
+
+msgid "E317: pointer block id wrong 2"
+msgstr "E317: Blok 2 gösterge kimliği yanlış"
+
+#, c-format
+msgid "E773: Symlink loop for \"%s\""
+msgstr "E773: \"%s\" için sembol bağı döngüsü"
+
+msgid "E325: ATTENTION"
+msgstr "E325: DİKKAT"
+
+msgid ""
+"\n"
+"Found a swap file by the name \""
+msgstr ""
+"\n"
+"Şu adla bir takas dosyası bulundu: \""
+
+msgid "While opening file \""
+msgstr "şu dosya açılırken: \""
+
+msgid " CANNOT BE FOUND"
+msgstr " BULUNAMADI"
+
+msgid " NEWER than swap file!\n"
+msgstr " takas dosyasından DAHA YENİ!\n"
+
+msgid ""
+"\n"
+"(1) Another program may be editing the same file. If this is the case,\n"
+" be careful not to end up with two different instances of the same\n"
+" file when making changes. Quit, or continue with caution.\n"
+msgstr ""
+"\n"
+"(1) Bu dosya başka bir programda da açık olabilir. Eğer öyleyse, aynı\n"
+" dosyanın iki ayrı örneğiyle karşılaşmamak için değişiklik yaparken\n"
+" lütfen dikkatli olun. Ya programdan çıkın ya da dikkatli ilerleyin.\n"
+
+msgid "(2) An edit session for this file crashed.\n"
+msgstr "(2) Bu dosya düzenleme oturumu çöktü.\n"
+
+msgid " If this is the case, use \":recover\" or \"vim -r "
+msgstr " Durum buysa, \":recover\" veya \"vim -r "
+
+msgid ""
+"\"\n"
+" to recover the changes (see \":help recovery\").\n"
+msgstr ""
+"\"\n"
+" yapıp değişiklikleri kurtarın (ek bilgi için \":help recovery\").\n"
+
+msgid " If you did this already, delete the swap file \""
+msgstr " Eğer bunu yaptıysanız, bu iletiyi bir daha görmemek için \""
+
+msgid ""
+"\"\n"
+" to avoid this message.\n"
+msgstr ""
+"\"\n"
+" takas dosyasını silin.\n"
+
+msgid "Found a swap file that is not useful, deleting it"
+msgstr "Bir işe yaramayan bir takas dosyası bulundu, siliniyor"
+
+msgid "Swap file \""
+msgstr "Swap dosyası \""
+
+msgid "\" already exists!"
+msgstr "\" zaten var!"
+
+msgid "VIM - ATTENTION"
+msgstr "VİM - DİKKAT"
+
+msgid "Swap file already exists!"
+msgstr "Takas dosyası hâlihazırda var!"
+
+msgid ""
+"&Open Read-Only\n"
+"&Edit anyway\n"
+"&Recover\n"
+"&Quit\n"
+"&Abort"
+msgstr ""
+"&Saltokunur aç\n"
+"&Düzenle\n"
+"Kur&tar\n"
+"Çı&k\n"
+"Du&rdur"
+
+msgid ""
+"&Open Read-Only\n"
+"&Edit anyway\n"
+"&Recover\n"
+"&Delete it\n"
+"&Quit\n"
+"&Abort"
+msgstr ""
+"&Saltokunur aç\n"
+"&Düzenle\n"
+"Kur&tar\n"
+"S&il\n"
+"Çı&k\n"
+"Du&rdur"
+
+msgid "E326: Too many swap files found"
+msgstr "E326: Çok fazla takas dosyası bulundu"
+
+msgid "E327: Part of menu-item path is not sub-menu"
+msgstr "E327: Menü öge yolunun bir kısmı alt menü değil"
+
+#, c-format
+msgid "E329: No menu \"%s\""
+msgstr "E329: Menü \"%s\" yok"
+
+msgid "E792: Empty menu name"
+msgstr "E792: Boş menü adı"
+
+msgid "E330: Menu path must not lead to a sub-menu"
+msgstr "E330: Menü yolu bir alt menüye çıkmamalı"
+
+msgid "E331: Must not add menu items directly to menu bar"
+msgstr "E331: Menü ögeleri doğrudan menü çubuğuna eklenmemeli"
+
+msgid "E332: Separator cannot be part of a menu path"
+msgstr "E332: Ayırıcı bir menü yolunun parçası olamaz"
+
+msgid ""
+"\n"
+"--- Menus ---"
+msgstr ""
+"\n"
+"--- Menüler ---"
+
+msgid "Tear off this menu"
+msgstr "Bu menüyü dışarıya al"
+
+#, c-format
+msgid "E335: Menu not defined for %s mode"
+msgstr "E335: Menü %s kipi için tanımlanmamış"
+
+msgid "E333: Menu path must lead to a menu item"
+msgstr "E333: Menü yolu bir menü ögesine çıkmalı"
+
+#, c-format
+msgid "E334: Menu not found: %s"
+msgstr "E334: Menü bulunamadı %s"
+
+msgid "E336: Menu path must lead to a sub-menu"
+msgstr "E336: Menü yolu bir alt menüye çıkmalı"
+
+msgid "E337: Menu not found - check menu names"
+msgstr "E337: Menü bulunamadı - menü adlarını denetle"
+
+#, c-format
+msgid "Error detected while compiling %s:"
+msgstr "%s derlenirken hata tespit edildi:"
+
+#, c-format
+msgid "Error detected while processing %s:"
+msgstr "%s işlenirken hata tespit edildi:"
+
+#, c-format
+msgid "line %4ld:"
+msgstr "satır %4ld:"
+
+#, c-format
+msgid "E354: Invalid register name: '%s'"
+msgstr "E354: Geçersiz yazmaç adı: '%s'"
+
+msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
+msgstr "Türkçeye çeviren: Emir SARI <bitigchi@me.com>"
+
+msgid "Interrupt: "
+msgstr "Yarıda kes: "
+
+msgid "Press ENTER or type command to continue"
+msgstr "Sürdürmek için ENTER'a basın veya komut girin"
+
+#, c-format
+msgid "%s line %ld"
+msgstr "%s %ld. satır"
+
+msgid "-- More --"
+msgstr "-- Daha fazla --"
+
+msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit "
+msgstr " BOŞLUK/d/j: ekran/sayfa/satır aşağı, b/u/k: yukarı, q: çık "
+
+msgid "Question"
+msgstr "Soru"
+
+msgid ""
+"&Yes\n"
+"&No"
+msgstr ""
+"&Evet\n"
+"&Hayır"
+
+msgid ""
+"&Yes\n"
+"&No\n"
+"Save &All\n"
+"&Discard All\n"
+"&Cancel"
+msgstr ""
+"&Evet\n"
+"&Hayır\n"
+"Hepsini &Kaydet\n"
+"&Tümünü At\n"
+"İ&ptal"
+
+msgid "E766: Insufficient arguments for printf()"
+msgstr "E766: printf() için yetersiz değişkenler"
+
+msgid "E807: Expected Float argument for printf()"
+msgstr "E807: printf() için kayan noktalı değer türünde değişken bekleniyordu"
+
+msgid "E767: Too many arguments to printf()"
+msgstr "E767: printf() için çok fazla değişken"
+
+msgid "Type number and <Enter> or click with the mouse (q or empty cancels): "
+msgstr ""
+"Sayı girip <Enter>'a veya fare düğmesine basın (q veya boş iptal eder): "
+
+msgid "Type number and <Enter> (q or empty cancels): "
+msgstr "Sayı girip <Enter>'a basın (q veya boş iptal eder): "
+
+#, c-format
+msgid "%ld more line"
+msgid_plural "%ld more lines"
+msgstr[0] "%ld daha fazla satır"
+msgstr[1] "%ld daha fazla satır"
+
+#, c-format
+msgid "%ld line less"
+msgid_plural "%ld fewer lines"
+msgstr[0] "%ld daha az satır"
+msgstr[1] "%ld daha az satır"
+
+msgid " (Interrupted)"
+msgstr " (Yarıda kesildi)"
+
+msgid "Beep!"
+msgstr "Bip!"
+
+msgid "E677: Error writing temp file"
+msgstr "E677: Geçici dosya yazılırken hata"
+
+msgid "ERROR: "
+msgstr "HATA: "
+
+#, c-format
+msgid ""
+"\n"
+"[bytes] total alloc-freed %lu-%lu, in use %lu, peak use %lu\n"
+msgstr ""
+"\n"
+"[bitler] toplam ayrılan/boşaltılan %lu-%lu, kullanımda %lu, doruk nokt. %lu\n"
+
+#, c-format
+msgid ""
+"[calls] total re/malloc()'s %lu, total free()'s %lu\n"
+"\n"
+msgstr ""
+"[çağrılar] toplam re/malloc()'lar %lu, toplam free()'ler %lu\n"
+"\n"
+
+msgid "E341: Internal error: lalloc(0, )"
+msgstr "E341: İç hata: lalloc(0, )"
+
+#, c-format
+msgid "E342: Out of memory! (allocating %lu bytes)"
+msgstr "E342: Yetersiz bellek! (%lu bit ayrılıyor)"
+
+#, c-format
+msgid "Calling shell to execute: \"%s\""
+msgstr "Çalıştırmak için çağrılan kabuk: \"%s\""
+
+msgid "E545: Missing colon"
+msgstr "E545: İki nokta eksik"
+
+msgid "E546: Illegal mode"
+msgstr "E546: İzin verilmeyen kip"
+
+msgid "E547: Illegal mouseshape"
+msgstr "E547: İzin verilmeyen fare imleci türü"
+
+msgid "E548: digit expected"
+msgstr "E548: Basamak bekleniyordu"
+
+msgid "E549: Illegal percentage"
+msgstr "E549: İzin verilmeyen yüzde"
+
+#, c-format
+msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
+msgstr ""
+"E668: NetBeans bağlantı bilgisi dosyası için yanlış erişim kipi: \"%s\""
+
+#, c-format
+msgid "E658: NetBeans connection lost for buffer %d"
+msgstr "E658: Arabellek %d için NetBeans bağlantısı koptu"
+
+msgid "E838: netbeans is not supported with this GUI"
+msgstr "E838: NetBeans bu grafik arabirimde desteklenmiyor"
+
+msgid "E511: netbeans already connected"
+msgstr "E511: NetBeans hâlihazırda bağlı"
+
+#, c-format
+msgid "E505: %s is read-only (add ! to override)"
+msgstr "E505: %s saltokunur (geçersiz kılmak için ! ekleyin)"
+
+msgid "E349: No identifier under cursor"
+msgstr "E349: İmleç altında bir tanımlayıcı yok"
+
+msgid "Warning: terminal cannot highlight"
+msgstr "Uyarı: Uçbirim vurgulama yapamıyor"
+
+msgid "E348: No string under cursor"
+msgstr "E348: İmleç altında bir dizi yok"
+
+msgid "E352: Cannot erase folds with current 'foldmethod'"
+msgstr "E352: Şu anki 'foldmethod' ile kıvırmalar silinemiyor"
+
+msgid "E664: changelist is empty"
+msgstr "E664: Değişiklik listesi boş"
+
+msgid "E662: At start of changelist"
+msgstr "E662: Değişiklik listesinin başında"
+
+msgid "E663: At end of changelist"
+msgstr "E663: Değişiklik listesinin sonunda"
+
+msgid "Type :qa! and press <Enter> to abandon all changes and exit Vim"
+msgstr ""
+"Değişikliklerden vazgeçip Vim'den çıkmak için :qa! yazıp <Enter>'a basın"
+
+msgid "Type :qa and press <Enter> to exit Vim"
+msgstr "Vim'den çıkmak için :qa yazıp <Enter>'a basın"
+
+#, c-format
+msgid "%ld line %sed %d time"
+msgid_plural "%ld line %sed %d times"
+msgstr[0] "%ld satır, %s %d kez"
+msgstr[1] "%ld satır, %s %d kez"
+
+#, c-format
+msgid "%ld lines %sed %d time"
+msgid_plural "%ld lines %sed %d times"
+msgstr[0] "%ld satır, %s %d kez"
+msgstr[1] "%ld satır, %s %d kez"
+
+msgid "cannot yank; delete anyway"
+msgstr "kopyalanamıyor, silindi"
+
+#, c-format
+msgid "%ld line changed"
+msgid_plural "%ld lines changed"
+msgstr[0] "%ld satır değiştirildi"
+msgstr[1] "%ld satır değiştirildi"
+
+#, c-format
+msgid "%d line changed"
+msgid_plural "%d lines changed"
+msgstr[0] "%d satır değiştirildi"
+msgstr[1] "%d satır değiştirildi"
+
+#, c-format
+msgid "%ld Cols; "
+msgstr "%ld Sütun; "
+
+#, c-format
+msgid "Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Bytes"
+msgstr "%s%ld/%ld satır; %lld/%lld sözcük; %lld/%lld bit seçildi"
+
+#, c-format
+msgid ""
+"Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Chars; %lld of "
+"%lld Bytes"
+msgstr ""
+"%s%ld/%ld satır; %lld/%lld sözcük; %lld/%lld karakter; %lld/%lld bit seçildi"
+
+#, c-format
+msgid "Col %s of %s; Line %ld of %ld; Word %lld of %lld; Byte %lld of %lld"
+msgstr "Sütun %s/%s; Satır %ld/%ld; Sözcük %lld/%lld; Bit %lld/%lld"
+
+#, c-format
+msgid ""
+"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte "
+"%lld of %lld"
+msgstr ""
+"Sütun %s/%s; Satır %ld/%ld; Sözcük %lld/%lld; Karakter %lld/%lld; Bit %lld/"
+"%lld"
+
+#, c-format
+msgid "(+%lld for BOM)"
+msgstr "(BOM için +%lld)"
+
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' boş"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: Eval özelliği mevcut değil"
+
+msgid "E518: Unknown option"
+msgstr "E518: Bilinmeyen seçenek"
+
+msgid "E519: Option not supported"
+msgstr "E519: Özellik desteklenmiyor"
+
+msgid "E520: Not allowed in a modeline"
+msgstr "E520: Bir kip satırında izin verilmiyor"
+
+msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
+msgstr "E992: 'modelineexpr' kapalıyken bir kip satırında izin verilmiyor"
+
+msgid "E846: Key code not set"
+msgstr "E846: Anahtar kodu ayarlanmamış"
+
+msgid "E521: Number required after ="
+msgstr "E521: = sonrası sayı gerekiyor"
+
+msgid "E522: Not found in termcap"
+msgstr "E522: termcap içinde bulunamadı"
+
+msgid "E946: Cannot make a terminal with running job modifiable"
+msgstr "E946: Uçbirim bir iş çalışırken değiştirilebilir yapılamaz"
+
+msgid "E590: A preview window already exists"
+msgstr "E590: Bir önizleme penceresi hâlihazırda mevcut"
+
+msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
+msgstr "W17: Arapça UTF-8 gerektirir, ':set encoding=utf-8' yapın"
+
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: 24 bit renkler bu ortamda desteklenmiyor"
+
+#, c-format
+msgid "E593: Need at least %d lines"
+msgstr "E593: En azından %d satır gerekli"
+
+#, c-format
+msgid "E594: Need at least %d columns"
+msgstr "E594: En azından %d sütun gerekli"
+
+#, c-format
+msgid "E355: Unknown option: %s"
+msgstr "E355: Bilinmeyen seçenek: %s"
+
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: Sayı gerekiyor: &%s = '%s'"
+
+msgid ""
+"\n"
+"--- Terminal codes ---"
+msgstr ""
+"\n"
+"--- Uçbirim kodları ---"
+
+msgid ""
+"\n"
+"--- Global option values ---"
+msgstr ""
+"\n"
+"--- Global seçenek değerleri ---"
+
+msgid ""
+"\n"
+"--- Local option values ---"
+msgstr ""
+"\n"
+"--- Yerel seçenek değerleri ---"
+
+msgid ""
+"\n"
+"--- Options ---"
+msgstr ""
+"\n"
+"--- Seçenekler ---"
+
+msgid "E356: get_varp ERROR"
+msgstr "E356: get_varp HATASI"
+
+#, c-format
+msgid "E539: Illegal character <%s>"
+msgstr "E539: İzin verilmeyen karakter <%s>"
+
+#, c-format
+msgid "For option %s"
+msgstr "%s seçeneği için"
+
+msgid "E540: Unclosed expression sequence"
+msgstr "E540: Kapatılmamış ifade sıralaması"
+
+msgid "E542: unbalanced groups"
+msgstr "E542: Dengelenmemiş gruplar"
+
+msgid "E529: Cannot set 'term' to empty string"
+msgstr "E529: Boş dizi için 'term' ayarlanamıyor"
+
+msgid "E530: Cannot change term in GUI"
+msgstr "E530: Grafik arabirimde uçbirim değiştirilemez"
+
+msgid "E531: Use \":gui\" to start the GUI"
+msgstr "E531: Grafik arabirimi başlatmak için \":gui\" yazın"
+
+msgid "E589: 'backupext' and 'patchmode' are equal"
+msgstr "E589: 'backupext' ve 'patchmode' birbirine eşit"
+
+msgid "E834: Conflicts with value of 'listchars'"
+msgstr "E834: 'listchars' değeriyle çakışmalar var"
+
+msgid "E835: Conflicts with value of 'fillchars'"
+msgstr "E835: 'fillchars' değeriyle çakışmalar var"
+
+msgid "E617: Cannot be changed in the GTK+ 2 GUI"
+msgstr "E617: GTK+ 2 grafik arabiriminde değiştirilemez"
+
+#, c-format
+msgid "E950: Cannot convert between %s and %s"
+msgstr "E950: %s ve %s arasında dönüştürme yapılamıyor"
+
+msgid "E524: Missing colon"
+msgstr "E524: İki nokta eksik"
+
+msgid "E525: Zero length string"
+msgstr "E525: Sıfır uzunlukta dizi"
+
+#, c-format
+msgid "E526: Missing number after <%s>"
+msgstr "E526: <%s> sonrasında sayı eksik"
+
+msgid "E527: Missing comma"
+msgstr "E527: Virgül eksik"
+
+msgid "E528: Must specify a ' value"
+msgstr "E528: Bir ' değeri belirtmeli"
+
+msgid "E595: 'showbreak' contains unprintable or wide character"
+msgstr "E595: 'showbreak' yazdırılamaz veya geniş karakter içeriyor"
+
+msgid "E596: Invalid font(s)"
+msgstr "E596: Geçersiz font(lar)"
+
+msgid "E597: can't select fontset"
+msgstr "E597: Yazıtipi seti seçilemiyor"
+
+msgid "E598: Invalid fontset"
+msgstr "E598: Geçersiz yazıtipi seti"
+
+msgid "E533: can't select wide font"
+msgstr "E533: Geniş yazıtipi seçilemiyor"
+
+msgid "E534: Invalid wide font"
+msgstr "E534: Geçersiz geniş yazıtipi"
+
+#, c-format
+msgid "E535: Illegal character after <%c>"
+msgstr "E535: <%c> sonrası izin verilmeyen karakter"
+
+msgid "E536: comma required"
+msgstr "E536: Virgül gerekiyor"
+
+#, c-format
+msgid "E537: 'commentstring' must be empty or contain %s"
+msgstr "E537: 'commentstring' boş olmalı veya %s içermeli"
+
+msgid "cannot open "
+msgstr "Açılamıyor: "
+
+msgid "VIM: Can't open window!\n"
+msgstr "VİM: Pencere açılamıyor!\n"
+
+msgid "Need Amigados version 2.04 or later\n"
+msgstr "AmigaDOS 2.04 sürümü veya sonrası gerekli\n"
+
+#, c-format
+msgid "Need %s version %ld\n"
+msgstr "%s %ld sürümü gerekli\n"
+
+msgid "Cannot open NIL:\n"
+msgstr "NIL açılamıyor:\n"
+
+msgid "Cannot create "
+msgstr "Oluşturulamıyor: "
+
+#, c-format
+msgid "Vim exiting with %d\n"
+msgstr "Vim %d ile çıkıyor\n"
+
+msgid "cannot change console mode ?!\n"
+msgstr "Konsol kipi değiştirilemiyor?!\n"
+
+msgid "mch_get_shellsize: not a console??\n"
+msgstr "mch_get_shellsize: Bir konsol değil??\n"
+
+msgid "E360: Cannot execute shell with -f option"
+msgstr "E360: Kabuk -f seçeneği ile çalıştırılamıyor"
+
+msgid "Cannot execute "
+msgstr "Çalıştırılamıyor: "
+
+msgid "shell "
+msgstr "kabuk "
+
+msgid " returned\n"
+msgstr " döndürüldü\n"
+
+msgid "ANCHOR_BUF_SIZE too small."
+msgstr "ANCHOR_BUF_SIZE çok küçük."
+
+msgid "I/O ERROR"
+msgstr "GİRDİ/ÇIKTI HATASI"
+
+msgid "Message"
+msgstr "İleti"
+
+msgid "E237: Printer selection failed"
+msgstr "E237: Yazıcı seçimi başarısız oldu"
+
+#, c-format
+msgid "to %s on %s"
+msgstr "%s, %s üzerinde"
+
+#, c-format
+msgid "E613: Unknown printer font: %s"
+msgstr "E613: Bilinmeyen yazıcı fontu: %s"
+
+#, c-format
+msgid "E238: Print error: %s"
+msgstr "E238: Yazdırma hatası: %s"
+
+#, c-format
+msgid "Printing '%s'"
+msgstr "'%s' yazdırılıyor"
+
+#, c-format
+msgid "E244: Illegal charset name \"%s\" in font name \"%s\""
+msgstr "E244: Geçersiz karakter adı \"%s\", bulunduğu yazıtipi: \"%s\""
+
+#, c-format
+msgid "E244: Illegal quality name \"%s\" in font name \"%s\""
+msgstr "E244: İzin verilmeyen nitelik adı: \"%s\", bulunduğu yazıtipi: \"%s\""
+
+#, c-format
+msgid "E245: Illegal char '%c' in font name \"%s\""
+msgstr ""
+"E245: İzin verilmeyen karakter '%c', bulunduğu yer: \"%s\" yazıtipi adı"
+
+#, c-format
+msgid "Opening the X display took %ld msec"
+msgstr "X ekranını açma %ld milisaniye sürdü"
+
+msgid ""
+"\n"
+"Vim: Got X error\n"
+msgstr ""
+"\n"
+"Vim: X hatası alındı\n"
+
+#, c-format
+msgid "restoring display %s"
+msgstr "%s ekranı geri getiriliyor"
+
+msgid "Testing the X display failed"
+msgstr "X ekran testi başarısız oldu"
+
+msgid "Opening the X display timed out"
+msgstr "X ekran açılması zaman aşımına uğradı"
+
+msgid ""
+"\n"
+"Could not get security context for "
+msgstr ""
+"\n"
+"Şunun için güvenlik bağlamı alınamadı: "
+
+msgid ""
+"\n"
+"Could not set security context for "
+msgstr ""
+"\n"
+"Şunun için güvenlik bağlamı alınamadı: "
+
+#, c-format
+msgid "Could not set security context %s for %s"
+msgstr "Güvenlik bağlamı %s %s için alınamadı"
+
+#, c-format
+msgid "Could not get security context %s for %s. Removing it!"
+msgstr "Güvenlik bağlamı %s %s için alınamadı. Kaldırılıyor!"
+
+msgid ""
+"\n"
+"Cannot execute shell sh\n"
+msgstr ""
+"\n"
+"sh kabuğu çalıştırılamıyor\n"
+
+msgid ""
+"\n"
+"shell returned "
+msgstr ""
+"\n"
+"Program çıktı: "
+
+msgid ""
+"\n"
+"Cannot create pipes\n"
+msgstr ""
+"\n"
+"Veri yolları oluşturulamıyor\n"
+
+msgid ""
+"\n"
+"Cannot fork\n"
+msgstr ""
+"\n"
+"Çatallanamıyor\n"
+
+msgid ""
+"\n"
+"Cannot execute shell "
+msgstr ""
+"\n"
+"Kabuk çalıştırılamıyor "
+
+msgid ""
+"\n"
+"Command terminated\n"
+msgstr ""
+"\n"
+"Komut sonlandırıldı\n"
+
+msgid "XSMP lost ICE connection"
+msgstr "XSMP, ICE bağlantısını kopardı"
+
+#, c-format
+msgid "dlerror = \"%s\""
+msgstr "dlerror = \"%s\""
+
+msgid "Opening the X display failed"
+msgstr "X ekran açılışı başarısız oldu"
+
+msgid "XSMP handling save-yourself request"
+msgstr "Kendini kurtarma isteği XSMP tarafından gerçekleştiriliyor"
+
+msgid "XSMP opening connection"
+msgstr "XSMP bağlantıyı açıyor"
+
+msgid "XSMP ICE connection watch failed"
+msgstr "XSMP ICE bağlantı izlemesi başarısız oldu"
+
+#, c-format
+msgid "XSMP SmcOpenConnection failed: %s"
+msgstr "XSMP SmcOpenConnection başarısız oldu: %s"
+
+msgid "At line"
+msgstr "Satırda"
+
+#, c-format
+msgid "Vim: Caught %s event\n"
+msgstr "Vim: %s olayı yakalandı\n"
+
+msgid "close"
+msgstr "kapat"
+
+msgid "logoff"
+msgstr "oturumu kapat"
+
+msgid "shutdown"
+msgstr "kapat"
+
+msgid "E371: Command not found"
+msgstr "E371: Komut bulunamadı"
+
+msgid ""
+"VIMRUN.EXE not found in your $PATH.\n"
+"External commands will not pause after completion.\n"
+"See :help win32-vimrun for more information."
+msgstr ""
+"VIMRUN.EXE $PATH üzerinde bulunamadı.\n"
+"Dış komutlar tamamlandıktan sonra duraklamayacak.\n"
+"Ek bilgi için :help win32-vimrun yazın."
+
+msgid "Vim Warning"
+msgstr "Vim - Uyarı"
+
+#, c-format
+msgid "shell returned %d"
+msgstr "Program %d numaralı kod ile çıktı"
+
+msgid "E861: Cannot open a second popup with a terminal"
+msgstr "E861: Bir uçbirimle ikinci bir açılır pencere açılamıyor"
+
+msgid "E450: buffer number, text or a list required"
+msgstr "E450: Arabellek numarası, metin veya liste gerekiyor"
+
+#, c-format
+msgid "E997: Tabpage not found: %d"
+msgstr "E997: Sekme bulunamadı: %d"
+
+#, c-format
+msgid "E993: window %d is not a popup window"
+msgstr "E993: %d penceresi bir açılır pencere değil"
+
+msgid "E994: Not allowed in a popup window"
+msgstr "E994: Açılır pencere içinde izin verilmiyor"
+
+msgid "E863: Not allowed for a terminal in a popup window"
+msgstr "E863: Açılır pencere içinde uçbirime izin verilmiyor"
+
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: İlk kullanım \":profile start {dosyaadı}\""
+
+msgid "E553: No more items"
+msgstr "E553: Öge yok"
+
+msgid "E925: Current quickfix list was changed"
+msgstr "E925: Geçerli hızlı düzelt listesi değiştirildi"
+
+msgid "E926: Current location list was changed"
+msgstr "E926: Geçerli konum listesi değiştirildi"
+
+#, c-format
+msgid "E372: Too many %%%c in format string"
+msgstr "E372: Biçim dizisinde çok fazla %%%c"
+
+#, c-format
+msgid "E373: Unexpected %%%c in format string"
+msgstr "E373: Biçimlendirme dizisinde beklenmeyen %%%c"
+
+msgid "E374: Missing ] in format string"
+msgstr "E374: Biçimlendirme dizisinde ] eksik"
+
+#, c-format
+msgid "E375: Unsupported %%%c in format string"
+msgstr "E375: Biçimlendirme dizisinde desteklenmeyen %%%c"
+
+#, c-format
+msgid "E376: Invalid %%%c in format string prefix"
+msgstr "E376: Biçimlendirme dizisi önekinde geçersiz %%%c"
+
+#, c-format
+msgid "E377: Invalid %%%c in format string"
+msgstr "E377: Biçimlendirme dizisinde geçersiz %%%c"
+
+msgid "E378: 'errorformat' contains no pattern"
+msgstr "E378: 'errorformat' bir dizgi içermiyor"
+
+msgid "E379: Missing or empty directory name"
+msgstr "E379: Eksik veya boş dizin adı"
+
+msgid "E924: Current window was closed"
+msgstr "E924: Geçerli pencere kapatıldı"
+
+#, c-format
+msgid "(%d of %d)%s%s: "
+msgstr "(%d/%d)%s%s: "
+
+msgid " (line deleted)"
+msgstr " (satır silindi)"
+
+#, c-format
+msgid "%serror list %d of %d; %d errors "
+msgstr "%shata listesi %d/%d; %d hata "
+
+msgid "E380: At bottom of quickfix stack"
+msgstr "E380: Hızlı düzelt yığınının en dibinde"
+
+msgid "E381: At top of quickfix stack"
+msgstr "E381: Hızlı düzelt yığınının en tepesinde"
+
+msgid "No entries"
+msgstr "Girdi yok"
+
+msgid "Error file"
+msgstr "Hata dosyası"
+
+msgid "E683: File name missing or invalid pattern"
+msgstr "E683: Dosya adı eksik veya geçersiz dizgi"
+
+#, c-format
+msgid "Cannot open file \"%s\""
+msgstr "\"%s\" dosyası açılamıyor"
+
+msgid "cannot have both a list and a \"what\" argument"
+msgstr "ya birinci ya da son değişken belirtilmelidir"
+
+msgid "E681: Buffer is not loaded"
+msgstr "E681: Arabellek yüklenemedi"
+
+msgid "E777: String or List expected"
+msgstr "E777: Dizi veya liste bekleniyordu"
+
+#, c-format
+msgid "E927: Invalid action: '%s'"
+msgstr "E927: Geçersiz eylem: '%s'"
+
+#, c-format
+msgid "E369: invalid item in %s%%[]"
+msgstr "E369: %s%%[] içinde geçersiz öge"
+
+#, c-format
+msgid "E769: Missing ] after %s["
+msgstr "E769: %s[ sonrasında ] eksik"
+
+msgid "E944: Reverse range in character class"
+msgstr "E944: Karakter sınıfında geriye dönük erim"
+
+msgid "E945: Range too large in character class"
+msgstr "E945: Karakter sınıfında erim çok büyük"
+
+#, c-format
+msgid "E53: Unmatched %s%%("
+msgstr "E53: Eşleşmemiş %s%%("
+
+#, c-format
+msgid "E54: Unmatched %s("
+msgstr "E54: Eşleşmemiş %s("
+
+#, c-format
+msgid "E55: Unmatched %s)"
+msgstr "E55: Eşleşmemiş %s)"
+
+msgid "E66: \\z( not allowed here"
+msgstr "E66: \\z('ye burada izin verilmiyor"
+
+msgid "E67: \\z1 - \\z9 not allowed here"
+msgstr "E67: \\z1 - \\z9'a burada izin verilmiyor"
+
+#, c-format
+msgid "E69: Missing ] after %s%%["
+msgstr "E69: %s%%[ sonrasında ] eksik"
+
+#, c-format
+msgid "E70: Empty %s%%[]"
+msgstr "E70: Boş %s%%[]"
+
+msgid "E956: Cannot use pattern recursively"
+msgstr "E956: Dizgi özyineli olarak kullanılamaz"
+
+#, c-format
+msgid "E654: missing delimiter after search pattern: %s"
+msgstr "E654: Arama dizgisi sonrasında eksik sınırlandırıcı: %s"
+
+#, c-format
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: %s{...} içinde sözdizimi hatası"
+
+#, c-format
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA regexp) %s tekrar edemiyor"
+
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: \\%#= sonrasında yalnızca 0, 1, veya 2 gelebilir. Otomatik motor "
+"kullanılacak "
+
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Şu dizgi için düzenli ifade iz sürme motoruna geçiliyor: "
+
+msgid "E65: Illegal back reference"
+msgstr "E65: Geçersiz dönüş başvurusu"
+
+msgid "E63: invalid use of \\_"
+msgstr "E63: Geçersiz kullanım: \\_"
+
+#, c-format
+msgid "E64: %s%c follows nothing"
+msgstr "E64: %s%c tek başına kullanılıyor"
+
+msgid "E68: Invalid character after \\z"
+msgstr "E68: \\z sonrası geçersiz karakter"
+
+#, c-format
+msgid "E678: Invalid character after %s%%[dxouU]"
+msgstr "E678: %s%%[dxouU] sonrası geçersiz karakter"
+
+#, c-format
+msgid "E71: Invalid character after %s%%"
+msgstr "E71: %s%% sonrası geçersiz karakter"
+
+#, c-format
+msgid "E59: invalid character after %s@"
+msgstr "E59: %s@ sonrası geçersiz karakter"
+
+#, c-format
+msgid "E60: Too many complex %s{...}s"
+msgstr "E60: Çok fazla karmaşık %s{...}(lar)"
+
+#, c-format
+msgid "E61: Nested %s*"
+msgstr "E61: İç içe geçmiş %s*"
+
+#, c-format
+msgid "E62: Nested %s%c"
+msgstr "E62: İç içe geçmiş %s%c"
+
+msgid "E50: Too many \\z("
+msgstr "E50: Çok fazla \\z("
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: Çok fazla %s("
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: Eşleşmemiş \\z("
+
+msgid "E339: Pattern too long"
+msgstr "E339: Dizgi çok uzun"
+
+msgid "External submatches:\n"
+msgstr "Dış alteşleşmeler:\n"
+
+msgid "E865: (NFA) Regexp end encountered prematurely"
+msgstr "E865: (BSO) Düzenli ifade sonu çok erken geldi"
+
+#, c-format
+msgid "E866: (NFA regexp) Misplaced %c"
+msgstr "E866: (BSO düzenli ifadesi) Yanlış yere koyulmuş %c"
+
+#, c-format
+msgid "E877: (NFA regexp) Invalid character class: %d"
+msgstr "E877: (BSO düzenli ifadesi) Geçersiz karakter sınıfı: %d"
+
+msgid "E951: \\% value too large"
+msgstr "E951: \\% çok büyük bir değer"
+
+#, c-format
+msgid "E867: (NFA) Unknown operator '\\z%c'"
+msgstr "E867: (BSO) Bilinmeyen işleç '\\z%c'"
+
+#, c-format
+msgid "E867: (NFA) Unknown operator '\\%%%c'"
+msgstr "E867: (BSO) Bilinmeyen işleç '\\%%%c'"
+
+msgid "E868: Error building NFA with equivalence class!"
+msgstr "E868: Eşdeğerli sınıf ile BSO inşa ederken hata!"
+
+#, c-format
+msgid "E869: (NFA) Unknown operator '\\@%c'"
+msgstr "E869: (BSO) Bilinmeyen işleç '\\@%c'"
+
+msgid "E870: (NFA regexp) Error reading repetition limits"
+msgstr "E870: (BSO düzenli ifadesi) Yineleme sınırlarımı okurken hata"
+
+msgid "E871: (NFA regexp) Can't have a multi follow a multi"
+msgstr "E871: (BSO düzenli ifadesi) Bir çoklunun ardından çoklu gelemez"
+
+msgid "E872: (NFA regexp) Too many '('"
+msgstr "E872: (BSO düzenli ifadesi) Çok fazla '('"
+
+msgid "E879: (NFA regexp) Too many \\z("
+msgstr "E879: (BSO düzenli ifadesi) Çok fazla \\z("
+
+msgid "E873: (NFA regexp) proper termination error"
+msgstr "E873: (BSO düzenli ifadesi) Düzgün sonlandırma hatası"
+
+msgid "Could not open temporary log file for writing, displaying on stderr... "
+msgstr ""
+"Geçici günlük dosyası yazma için açılamıyor, stderr'de görüntüleniyor..."
+
+msgid "E874: (NFA) Could not pop the stack!"
+msgstr "E874: (BSO) Yığın çıkartılamadı!"
+
+msgid ""
+"E875: (NFA regexp) (While converting from postfix to NFA), too many states "
+"left on stack"
+msgstr ""
+"E875: (BSO düzenli ifadesi) (Art takı'dan BSO'ya çevirirken), yığında çok "
+"fazla durum bırakıldı"
+
+msgid "E876: (NFA regexp) Not enough space to store the whole NFA "
+msgstr ""
+"E876: (BSO düzenli ifadesi) Tüm BSO'yu depolamak için yeterli alan yok "
+
+msgid "E878: (NFA) Could not allocate memory for branch traversal!"
+msgstr "E878: (BSO) Dal gezinmesi için bellek ayrılamadı!"
+
+msgid "E748: No previously used register"
+msgstr "E748: Daha önce kullanılan bir yazmaç yok"
+
+#, c-format
+msgid "freeing %ld lines"
+msgstr "%ld satırlık yer açılıyor"
+
+#, c-format
+msgid " into \"%c"
+msgstr " \"%c"
+
+#, c-format
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "%ld satırlık blok şuraya kopyalandı:%s"
+msgstr[1] "%ld satırlık blok şuraya kopyalandı:%s"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld satır şuraya kopyalandı:%s"
+msgstr[1] "%ld satır şuraya kopyalandı:%s"
+
+#, c-format
+msgid "E353: Nothing in register %s"
+msgstr "E353: Yazmaç %s boş"
+
+msgid ""
+"\n"
+"Type Name Content"
+msgstr ""
+"\n"
+"Tür Ad İçerik"
+
+msgid ""
+"E883: search pattern and expression register may not contain two or more "
+"lines"
+msgstr ""
+"E883: Arama dizgisi ve ifade yazmacı iki veya daha fazla satır içeremez"
+
+msgid " VREPLACE"
+msgstr " SANAL DEĞİŞTİR"
+
+msgid " REPLACE"
+msgstr " DEĞİŞTİR"
+
+msgid " REVERSE"
+msgstr " GERİ AL"
+
+msgid " INSERT"
+msgstr " EKLE"
+
+msgid " (insert)"
+msgstr " (ekle)"
+
+msgid " (replace)"
+msgstr " (değiştir)"
+
+msgid " (vreplace)"
+msgstr " (sanal değiştir)"
+
+msgid " Hebrew"
+msgstr " İbranca"
+
+msgid " Arabic"
+msgstr " Arapça"
+
+msgid " (paste)"
+msgstr " (yapıştır)"
+
+msgid " VISUAL"
+msgstr " GÖRSEL"
+
+msgid " VISUAL LINE"
+msgstr " GÖRSEL SATIR"
+
+msgid " VISUAL BLOCK"
+msgstr " GÖRSEL BLOK"
+
+msgid " SELECT"
+msgstr " SEÇ"
+
+msgid " SELECT LINE"
+msgstr " SATIR SEÇ"
+
+msgid " SELECT BLOCK"
+msgstr " BLOK SEÇ"
+
+msgid "recording"
+msgstr "kaydediliyor"
+
+#, c-format
+msgid "Searching for \"%s\" in \"%s\""
+msgstr "\"%s\", \"%s\" içinde aranıyor"
+
+#, c-format
+msgid "Searching for \"%s\""
+msgstr "\"%s\" aranıyor"
+
+#, c-format
+msgid "not found in '%s': \"%s\""
+msgstr "'%s' içinde bulunamadı: \"%s\""
+
+msgid "Source Vim script"
+msgstr "Vim betiği kaynak al"
+
+#, c-format
+msgid "Cannot source a directory: \"%s\""
+msgstr "Dizin kaynak alınamıyor: \"%s\""
+
+#, c-format
+msgid "could not source \"%s\""
+msgstr "\"%s\" kaynak alınamadı"
+
+#, c-format
+msgid "line %ld: could not source \"%s\""
+msgstr "%ld. satır: \"%s\" kaynak alınamadı"
+
+#, c-format
+msgid "sourcing \"%s\""
+msgstr "\"%s\" kaynak alınıyor"
+
+#, c-format
+msgid "line %ld: sourcing \"%s\""
+msgstr "%ld. satır: \"%s\" kaynak alınıyor"
+
+#, c-format
+msgid "finished sourcing %s"
+msgstr "%s kaynak alınması bitti"
+
+#, c-format
+msgid "continuing in %s"
+msgstr "%s içinde sürdürülüyor"
+
+msgid "modeline"
+msgstr "kip satırı"
+
+msgid "--cmd argument"
+msgstr "--cmd değişkeni"
+
+msgid "-c argument"
+msgstr "-c değişkeni"
+
+msgid "environment variable"
+msgstr "ortam değişkeni"
+
+msgid "error handler"
+msgstr "hata işleyicisi"
+
+msgid "W15: Warning: Wrong line separator, ^M may be missing"
+msgstr "W15: Uyarı: Yanlış satır ayırıcısı, ^M eksik olabilir"
+
+msgid "E167: :scriptencoding used outside of a sourced file"
+msgstr "E167: :scriptencoding kaynak alınmış bir dosyanın dışında kullanıldı"
+
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion kaynak alınmış bir dosyanın dışında kullanıldı"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: desteklenmeyen scriptversion: %d"
+
+msgid "E168: :finish used outside of a sourced file"
+msgstr "E168: :finish kaynak alınmış bir dosyanın dışında kullanıldı"
+
+#, c-format
+msgid "E383: Invalid search string: %s"
+msgstr "E383: Geçersiz arama dizisi: %s"
+
+#, c-format
+msgid "E384: search hit TOP without match for: %s"
+msgstr "E384: Arama dosyanın BAŞINA vardı, %s bulunamadı"
+
+#, c-format
+msgid "E385: search hit BOTTOM without match for: %s"
+msgstr "E385: Arama dosyanın SONUNA vardı, %s bulunamadı"
+
+msgid "E386: Expected '?' or '/' after ';'"
+msgstr "E386: ';' sonrasında '?' veya '/' bekleniyordu"
+
+msgid " (includes previously listed match)"
+msgstr " (daha önce listelenen eşleşmeyi içerir)"
+
+msgid "--- Included files "
+msgstr "--- İçerilen dosyalar "
+
+msgid "not found "
+msgstr "bulunamadı "
+
+msgid "in path ---\n"
+msgstr "yolda ---\n"
+
+msgid " (Already listed)"
+msgstr " (Hâlihazırda listelenmiş)"
+
+msgid " NOT FOUND"
+msgstr " BULUNAMADI"
+
+#, c-format
+msgid "Scanning included file: %s"
+msgstr "İçerilen dosya taranıyor: %s"
+
+#, c-format
+msgid "Searching included file %s"
+msgstr "İçerilen dosya %s aranıyor"
+
+msgid "E387: Match is on current line"
+msgstr "E387: Eşleşme şu anda bulunulan satırda"
+
+msgid "All included files were found"
+msgstr "Tüm içerilen dosyalar bulundu"
+
+msgid "No included files"
+msgstr "İçerilen dosya yok"
+
+msgid "E388: Couldn't find definition"
+msgstr "E388: Tanım bulunamadı"
+
+msgid "E389: Couldn't find pattern"
+msgstr "E389: Dizgi bulunamadı"
+
+msgid "Save View"
+msgstr "Görünümü Kaydet"
+
+msgid "Save Session"
+msgstr "Oturumu Kaydet"
+
+msgid "Save Setup"
+msgstr "Kurulumu Kaydet"
+
+msgid "[Deleted]"
+msgstr "[Silindi]"
+
+msgid ""
+"\n"
+"--- Signs ---"
+msgstr ""
+"\n"
+"--- İşaretler ---"
+
+#, c-format
+msgid "Signs for %s:"
+msgstr "%s için işaretler:"
+
+#, c-format
+msgid " group=%s"
+msgstr " grup=%s"
+
+#, c-format
+msgid " line=%ld id=%d%s name=%s priority=%d"
+msgstr " satır=%ld id=%d%s ad=%s öncelik=%d"
+
+msgid "E612: Too many signs defined"
+msgstr "E612: Çok fazla işaret tanımlanmış"
+
+#, c-format
+msgid "E239: Invalid sign text: %s"
+msgstr "E239: Geçersiz işaret metni: %s"
+
+#, c-format
+msgid "E155: Unknown sign: %s"
+msgstr "E155: Bilinmeyen işaret: %s"
+
+#, c-format
+msgid "E885: Not possible to change sign %s"
+msgstr "E885: %s işaretini değiştirmek olanaklı değil"
+
+msgid "E159: Missing sign number"
+msgstr "E159: İşaret numarası eksik"
+
+#, c-format
+msgid "E157: Invalid sign ID: %d"
+msgstr "E157: Geçersiz işaret kimliği: %d"
+
+msgid "E934: Cannot jump to a buffer that does not have a name"
+msgstr "E934: Adı olmayan bir arabelleğe atlamak olanaklı değil"
+
+#, c-format
+msgid "E160: Unknown sign command: %s"
+msgstr "E160: Bilinmeyen işaret komutu: %s"
+
+msgid "E156: Missing sign name"
+msgstr "E156: İşaret adı eksik"
+
+msgid " (NOT FOUND)"
+msgstr " (BULUNAMADI)"
+
+msgid " (not supported)"
+msgstr " (desteklenmiyor)"
+
+#, c-format
+msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""
+msgstr "Uyarı: Sözcük listesi \"%s_%s.spl\" veya \"%s_ascii.spl\" bulunamıyor"
+
+#, c-format
+msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
+msgstr "Uyarı: Sözcük listesi \"%s.%s.spl\" veya \"%s.ascii.spl\" bulunamıyor"
+
+msgid "E797: SpellFileMissing autocommand deleted buffer"
+msgstr "E797: SpellFileMissing otokomutu arabelleği sildi"
+
+#, c-format
+msgid "Warning: region %s not supported"
+msgstr "Uyarı: %s bölgesi desteklenmiyor"
+
+msgid "E752: No previous spell replacement"
+msgstr "E752: Öncesinde düzeltilmiş bir yazım yok"
+
+#, c-format
+msgid "E753: Not found: %s"
+msgstr "E753: Bulunamadı: %s"
+
+msgid "E758: Truncated spell file"
+msgstr "E758: Kırpılmış yazım dosyası"
+
+#, c-format
+msgid "Trailing text in %s line %d: %s"
+msgstr "%s içinde %d. satır ucunda fazladan metin: %s"
+
+#, c-format
+msgid "Affix name too long in %s line %d: %s"
+msgstr "%s içinde %d. satırda ek adı çok uzun: %s"
+
+msgid "E761: Format error in affix file FOL, LOW or UPP"
+msgstr "E761: Ekler dosyası FOL, LOW veya UPP içinde biçimlendirme hatası"
+
+msgid "E762: Character in FOL, LOW or UPP is out of range"
+msgstr "E762: FOL, LOW veya UPP içindeki karakterler erimin dışında"
+
+msgid "Compressing word tree..."
+msgstr "Sözcük soyağacı sıkıştırılıyor..."
+
+#, c-format
+msgid "Reading spell file \"%s\""
+msgstr "Yazım dosyası \"%s\" okunuyor"
+
+msgid "E757: This does not look like a spell file"
+msgstr "E757: Bu bir yazım dosyasına benzemiyor"
+
+msgid "E771: Old spell file, needs to be updated"
+msgstr "E771: Eski yazım dosyası, güncellenmesi gerekiyor"
+
+msgid "E772: Spell file is for newer version of Vim"
+msgstr "E772: Yazım dosyası Vim'in daha yeni bir sürümü için"
+
+msgid "E770: Unsupported section in spell file"
+msgstr "E770: Yazım dosyasında desteklenmeyen bölüm"
+
+#, c-format
+msgid "E778: This does not look like a .sug file: %s"
+msgstr "E778: Bu bir .sug dosyasına benzemiyor: %s"
+
+#, c-format
+msgid "E779: Old .sug file, needs to be updated: %s"
+msgstr "E779: Eski .sug dosyası, güncellenmesi gerekiyor: %s"
+
+#, c-format
+msgid "E780: .sug file is for newer version of Vim: %s"
+msgstr "E780: Bu .sug dosyası Vim'in daha yeni bir sürümü için: %s"
+
+#, c-format
+msgid "E781: .sug file doesn't match .spl file: %s"
+msgstr "E781: .sug dosyası .spl dosyasına eşleşmiyor: %s"
+
+#, c-format
+msgid "E782: error while reading .sug file: %s"
+msgstr "E782: .sug dosyasını okurken hata: %s"
+
+#, c-format
+msgid "Reading affix file %s..."
+msgstr "%s ekler dosyası okunuyor..."
+
+#, c-format
+msgid "Conversion failure for word in %s line %d: %s"
+msgstr "%s içinde %d. satırda sözcük için dönüştürme hatası: %s"
+
+#, c-format
+msgid "Conversion in %s not supported: from %s to %s"
+msgstr "%s içinde dönüştürme desteklenmiyor: %s konumundan %s konumuna"
+
+#, c-format
+msgid "Invalid value for FLAG in %s line %d: %s"
+msgstr "%s içinde %d. satırda BAYRAKTA geçersiz değer: %s"
+
+#, c-format
+msgid "FLAG after using flags in %s line %d: %s"
+msgstr "%s içinde %d. satırda bayraklardan sonra BAYRAK: %s"
+
+#, c-format
+msgid ""
+"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
+"%d"
+msgstr ""
+"%s içinde %d. satırda PFX ögesinden sonra COMPOUNDFORBIDFLAG tanımlamak "
+"hatalı sonuçlar verebilir"
+
+#, c-format
+msgid ""
+"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
+"%d"
+msgstr ""
+"%s içinde %d. satırda PFX ögesinden sonra COMPOUNDPERMITFLAG tanımlamak "
+"hatalı sonuçlar verebilir"
+
+#, c-format
+msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
+msgstr "%s içinde %d. satırda yanlış COMPOUNDRULES değeri: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
+msgstr "%s içinde %d. satırda yanlış COMPOUNDWORDMAX değeri: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDMIN value in %s line %d: %s"
+msgstr "%s içinde %d. satırda yanlış COMPOUNDMIN değeri: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s"
+msgstr "%s içinde %d. satırda yanlış COMPOUNDSYLMAX değeri: %s"
+
+#, c-format
+msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"
+msgstr "%s içinde %d. satırda yanlış CHECKCOMPOUNDPATTERN değeri: %s"
+
+#, c-format
+msgid "Different combining flag in continued affix block in %s line %d: %s"
+msgstr ""
+"%s içinde %d. satırdaki sürdürülen ek bloğunda farklı birleştirici bayrak: %s"
+
+#, c-format
+msgid "Duplicate affix in %s line %d: %s"
+msgstr "%s içinde %d. satırda yinelenen ek: %s"
+
+#, c-format
+msgid ""
+"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
+"line %d: %s"
+msgstr ""
+"Ek aynı zamanda %s içinde %d. satırda BAD/RARE/KEEPCASE/NEEDAFFIX/"
+"NEEDCOMPOUND/NOSUGGEST için de kullanılmış: %s"
+
+#, c-format
+msgid "Expected Y or N in %s line %d: %s"
+msgstr "%s içinde %d. satırda Y veya N bekleniyordu: %s"
+
+#, c-format
+msgid "Broken condition in %s line %d: %s"
+msgstr "%s içinde %d. satırda yerine getirilmeyen koşul: %s"
+
+#, c-format
+msgid "Expected REP(SAL) count in %s line %d"
+msgstr "%s içinde %d. satırda REP(SAL) toplam sayısı bekleniyordu"
+
+#, c-format
+msgid "Expected MAP count in %s line %d"
+msgstr "%s içinde %d. satırda MAP toplam sayısı bekleniyordu"
+
+#, c-format
+msgid "Duplicate character in MAP in %s line %d"
+msgstr "%s içinde %d. satırda MAP içinde yinelenen karakter"
+
+#, c-format
+msgid "Unrecognized or duplicate item in %s line %d: %s"
+msgstr "%s içinde %d. satırda yinelenen veya tanınmayan öge: %s"
+
+#, c-format
+msgid "Missing FOL/LOW/UPP line in %s"
+msgstr "%s içinde FOL/LOW/UPP satırı eksik"
+
+msgid "COMPOUNDSYLMAX used without SYLLABLE"
+msgstr "COMPOUNDSYLMAX, SYLLABLE olmadan kullanılmış"
+
+msgid "Too many postponed prefixes"
+msgstr "Çok fazla ertelenen önek"
+
+msgid "Too many compound flags"
+msgstr "Çok fazla bileşik bayrak"
+
+msgid "Too many postponed prefixes and/or compound flags"
+msgstr "Çok fazla ertelenen önek ve/veya bileşik bayrak"
+
+#, c-format
+msgid "Missing SOFO%s line in %s"
+msgstr "%s içinde SOFO%s satırı eksik"
+
+#, c-format
+msgid "Both SAL and SOFO lines in %s"
+msgstr "%s içinde hem SAL hem SOFO satırı"
+
+#, c-format
+msgid "Flag is not a number in %s line %d: %s"
+msgstr "%s içinde %d. satırda bayrak bir sayı değil: %s"
+
+#, c-format
+msgid "Illegal flag in %s line %d: %s"
+msgstr "%s içinde %d. satırda izin verilmeyen bayrak: %s"
+
+#, c-format
+msgid "%s value differs from what is used in another .aff file"
+msgstr "%s değeri diğer bir .aff dosyasında kullanılan değerden farklı"
+
+#, c-format
+msgid "Reading dictionary file %s..."
+msgstr "Sözlük dosyası %s okunuyor..."
+
+#, c-format
+msgid "E760: No word count in %s"
+msgstr "E760: %s içinde sözcük sayımı yok"
+
+#, c-format
+msgid "line %6d, word %6ld - %s"
+msgstr "satır %6d, sözcük %6ld - %s"
+
+#, c-format
+msgid "Duplicate word in %s line %d: %s"
+msgstr "%s içinde %d. satırda yinelenen sözcük: %s"
+
+#, c-format
+msgid "First duplicate word in %s line %d: %s"
+msgstr "%s içinde %d. satırdaki ilk yinelenen sözcük: %s"
+
+#, c-format
+msgid "%d duplicate word(s) in %s"
+msgstr "%d yinelenen sözcük, %s içinde"
+
+#, c-format
+msgid "Ignored %d word(s) with non-ASCII characters in %s"
+msgstr "%d sözcük %s içinde ASCII olmayan karakterler içerdiğinden yok sayıldı"
+
+#, c-format
+msgid "Reading word file %s..."
+msgstr "Sözcük dosyası %s okunuyor..."
+
+#, c-format
+msgid "Conversion failure for word in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda sözcük için dönüştürme hatası: %s"
+
+#, c-format
+msgid "Duplicate /encoding= line ignored in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda yinelenen /encoding= satırı yok sayıldı: %s"
+
+#, c-format
+msgid "/encoding= line after word ignored in %s line %ld: %s"
+msgstr ""
+"%s içinde %ld. satırda sözcükten sonra gelen /encoding= yok sayıldı: %s"
+
+#, c-format
+msgid "Duplicate /regions= line ignored in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda yinelenen /regions= satırı yok sayıldı: %s"
+
+#, c-format
+msgid "Too many regions in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda çok fazla bölge: %s"
+
+#, c-format
+msgid "/ line ignored in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda / satırı yok sayılıyor: %s"
+
+#, c-format
+msgid "Invalid region nr in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda geçersiz bölge numarası: %s"
+
+#, c-format
+msgid "Unrecognized flags in %s line %ld: %s"
+msgstr "%s içinde %ld. satırda tanınmayan bayraklar: %s"
+
+#, c-format
+msgid "Ignored %d words with non-ASCII characters"
+msgstr "ASCII olmayan karakter içeren %d sözcük yok sayıldı"
+
+msgid "E845: Insufficient memory, word list will be incomplete"
+msgstr "E845: Yetersiz bellek, sözcük listesi tam olmayacak"
+
+#, c-format
+msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining"
+msgstr "%s sıkıştırılıyor: %ld/%ld uç sıkıştırıldı; %ld (%%%ld) kalan"
+
+msgid "Reading back spell file..."
+msgstr "Yazım dosyası yeniden okunuyor..."
+
+msgid "Performing soundfolding..."
+msgstr "Sesler evriştiriliyor..."
+
+#, c-format
+msgid "Number of words after soundfolding: %ld"
+msgstr "Ses evriştirme sonrası sözcük sayısı: %ld"
+
+#, c-format
+msgid "Total number of words: %d"
+msgstr "Toplam sözcük sayısı: %d"
+
+#, c-format
+msgid "Writing suggestion file %s..."
+msgstr "Öneriler dosyası %s yazılıyor..."
+
+#, c-format
+msgid "Estimated runtime memory use: %d bytes"
+msgstr "Tahmini çalıştırılan bellek kullanımı: %d bit"
+
+msgid "E751: Output file name must not have region name"
+msgstr "E751: Çıktı dosyası bir bölge adı içermemelidir"
+
+#, c-format
+msgid "E754: Only up to %d regions supported"
+msgstr "E754: En çok %d bölgeye kadar desteklenmektedir"
+
+#, c-format
+msgid "E755: Invalid region in %s"
+msgstr "E755: %s içinde geçersiz bölge"
+
+msgid "Warning: both compounding and NOBREAK specified"
+msgstr "Uyarı: Hem bileştirme hem NOBREAK belirtilmiş"
+
+#, c-format
+msgid "Writing spell file %s..."
+msgstr "Yazım dosyası %s yazılıyor..."
+
+msgid "Done!"
+msgstr "Yapıldı!"
+
+#, c-format
+msgid "E765: 'spellfile' does not have %d entries"
+msgstr "E765: 'spellfile' içinde %d adet girdi yok"
+
+#, c-format
+msgid "Word '%.*s' removed from %s"
+msgstr "'%.*s' sözcüğü %s içinden çıkartıldı"
+
+#, c-format
+msgid "Word '%.*s' added to %s"
+msgstr "'%.*s' sözcüğü %s dosyasına eklendi"
+
+msgid "E763: Word characters differ between spell files"
+msgstr "E763: Sözcük karakterleri yazım dosyaları arasında ayrım gösteriyor"
+
+msgid "E783: duplicate char in MAP entry"
+msgstr "E783: MAP girdisinde yinelenen karakter"
+
+msgid "Sorry, no suggestions"
+msgstr "Üzgünüm, şu an için bir önerim yok"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "Üzgünüm, yalnızca %ld öneri"
+
+#, c-format
+msgid "Change \"%.*s\" to:"
+msgstr "\"%.*s\" şuna değiştirilecek:"
+
+#, c-format
+msgid " < \"%.*s\""
+msgstr " < \"%.*s\""
+
+#, c-format
+msgid "E390: Illegal argument: %s"
+msgstr "E390: İzin verilmeyen değişken: %s"
+
+msgid "No Syntax items defined for this buffer"
+msgstr "Bu arabellek için sözdizim ögeleri tanımlanmamış"
+
+msgid "'redrawtime' exceeded, syntax highlighting disabled"
+msgstr "'redrawtime' aşıldı, sözdizim vurgulaması kapatıldı"
+
+msgid "syntax conceal on"
+msgstr "sözdizim gizlemesi açık"
+
+msgid "syntax conceal off"
+msgstr "sözdizim gizlemesi kapalı"
+
+msgid "syntax case ignore"
+msgstr "sözdizim BÜYÜK/küçük harf yok say"
+
+msgid "syntax case match"
+msgstr "sözdizim BÜYÜK/küçük harfe duyarlı"
+
+msgid "syntax foldlevel start"
+msgstr "sözdizim kıvırma düzeyi başlangıcı"
+
+msgid "syntax foldlevel minimum"
+msgstr "sözdizim kıvırma düzeyi an az"
+
+msgid "syntax spell toplevel"
+msgstr "bir sözdizim içinde olmayan metinde yazım denetimi yap"
+
+msgid "syntax spell notoplevel"
+msgstr "bir sözdizim içinde olmayan metinde yazım denetimi yapma"
+
+msgid "syntax spell default"
+msgstr "@Spell kümesi varsa yazım denetimi yapma (öntanımlı)"
+
+msgid "syntax iskeyword "
+msgstr "sözdizim anahtar sözcük"
+
+msgid "syntax iskeyword not set"
+msgstr "sözdizim anahtar sözcük ayarlanmamış"
+
+#, c-format
+msgid "E391: No such syntax cluster: %s"
+msgstr "E391: Böyle bir sözdizim kümesi yok: %s"
+
+msgid "syncing on C-style comments"
+msgstr "C biçemli komutlar eşitleniyor"
+
+msgid "no syncing"
+msgstr "eşitleme yok"
+
+msgid "syncing starts at the first line"
+msgstr "eşitleme ilk satırda başlar"
+
+msgid "syncing starts "
+msgstr "eşitleme başlangıcı "
+
+msgid " lines before top line"
+msgstr " satır, en üst satır öncesi"
+
+msgid ""
+"\n"
+"--- Syntax sync items ---"
+msgstr ""
+"\n"
+"--- Sözdizim eşitleme ögeleri ---"
+
+msgid ""
+"\n"
+"syncing on items"
+msgstr ""
+"\n"
+"ögeler eşitleniyor"
+
+msgid ""
+"\n"
+"--- Syntax items ---"
+msgstr ""
+"\n"
+"--- Sözdizim ögeleri ---"
+
+#, c-format
+msgid "E392: No such syntax cluster: %s"
+msgstr "E392: Böyle bir sözdizim kümesi yok: %s"
+
+msgid "from the first line"
+msgstr "ilk satırdan"
+
+msgid "minimal "
+msgstr "en az biçimde "
+
+msgid "maximal "
+msgstr "en çok biçimde "
+
+msgid "; match "
+msgstr "; eşleşme "
+
+msgid " line breaks"
+msgstr " satır sonu"
+
+msgid "E395: contains argument not accepted here"
+msgstr "E395: Burada kabul edilmeyen bir değişken içeriyor"
+
+msgid "E844: invalid cchar value"
+msgstr "E844: Geçersiz cchar değeri"
+
+msgid "E393: group[t]here not accepted here"
+msgstr "E393: group[t]here burada kabul edilmez"
+
+#, c-format
+msgid "E394: Didn't find region item for %s"
+msgstr "E394: %s için bölge ögesi bulunamadı"
+
+msgid "E397: Filename required"
+msgstr "E397: Dosya adı gerekiyor"
+
+msgid "E847: Too many syntax includes"
+msgstr "E847: Çok fazla sözdizim kuralı"
+
+#, c-format
+msgid "E789: Missing ']': %s"
+msgstr "E789: ']' eksik: %s"
+
+#, c-format
+msgid "E890: trailing char after ']': %s]%s"
+msgstr "E890: ']' sonrası fazladan karakter: %s]%s"
+
+#, c-format
+msgid "E398: Missing '=': %s"
+msgstr "E398: '=' eksik: %s"
+
+#, c-format
+msgid "E399: Not enough arguments: syntax region %s"
+msgstr "E399: Yetersiz değişken: %s sözdizim bölgesi"
+
+msgid "E848: Too many syntax clusters"
+msgstr "E848: Çok fazla sözdizim kümesi"
+
+msgid "E400: No cluster specified"
+msgstr "E400: Belirli bir küme yok"
+
+#, c-format
+msgid "E401: Pattern delimiter not found: %s"
+msgstr "E401: Dizgi sınırlandırıcısı bulunamadı: %s"
+
+#, c-format
+msgid "E402: Garbage after pattern: %s"
+msgstr "E402: Dizgiden sonra anlamsız veri: %s"
+
+msgid "E403: syntax sync: line continuations pattern specified twice"
+msgstr "E403: Sözdizim eşitlemesi: Satır devamları dizgisi iki kez tanımlanmış"
+
+#, c-format
+msgid "E404: Illegal arguments: %s"
+msgstr "E404: İzin verilmeyen değişkenler: %s"
+
+#, c-format
+msgid "E405: Missing equal sign: %s"
+msgstr "E405: Eşittir imi eksik: %s"
+
+#, c-format
+msgid "E406: Empty argument: %s"
+msgstr "E406: Boş değişken: %s"
+
+#, c-format
+msgid "E407: %s not allowed here"
+msgstr "E407: %s burada kullanılamaz"
+
+#, c-format
+msgid "E408: %s must be first in contains list"
+msgstr "E408: %s öncelikle içerenler listesinde olmalı"
+
+#, c-format
+msgid "E409: Unknown group name: %s"
+msgstr "E409: Bilinmeyen grup adı: %s"
+
+#, c-format
+msgid "E410: Invalid :syntax subcommand: %s"
+msgstr "E410: Geçersiz :syntax altkomutu: %s"
+
+msgid ""
+" TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN"
+msgstr ""
+" TOPLAM SAYI EŞ EN YAVAŞ ORTALAMA AD DİZGİ"
+
+msgid "E555: at bottom of tag stack"
+msgstr "E555: Etiket yığınının en dibinde"
+
+msgid "E556: at top of tag stack"
+msgstr "E556: Etiket yığınının en tepesinde"
+
+msgid "E986: cannot modify the tag stack within tagfunc"
+msgstr "E986: Etiket yığını tagfunc dahilinde değiştirilemiyor"
+
+msgid "E987: invalid return value from tagfunc"
+msgstr "E987: Etiket işlevinden geçersiz dönüş değeri"
+
+msgid "E425: Cannot go before first matching tag"
+msgstr "E425: İlk eşleşen etiketten önceye gidilemiyor"
+
+#, c-format
+msgid "E426: tag not found: %s"
+msgstr "E426: Etiket bulunamadı: %s"
+
+msgid "E427: There is only one matching tag"
+msgstr "E427: Eşleşen yalnızca bir etiket var"
+
+msgid "E428: Cannot go beyond last matching tag"
+msgstr "E428: Son eşleşen etiketten öteye gidilemiyor"
+
+#, c-format
+msgid "File \"%s\" does not exist"
+msgstr "Dosya \"%s\" mevcut değil"
+
+#, c-format
+msgid "tag %d of %d%s"
+msgstr "etiket %d/%d%s"
+
+msgid " or more"
+msgstr " veya daha fazla"
+
+msgid " Using tag with different case!"
+msgstr " Etiket değişik bir durumla kullanılıyor!"
+
+#, c-format
+msgid "E429: File \"%s\" does not exist"
+msgstr "E429: Dosya \"%s\" mevcut değil"
+
+msgid " # pri kind tag"
+msgstr " # ön tür etiket"
+
+msgid "file\n"
+msgstr "dosya\n"
+
+msgid ""
+"\n"
+" # TO tag FROM line in file/text"
+msgstr ""
+"\n"
+" # ETİKETE SATIRDAN dosya/metin içinde"
+
+#, c-format
+msgid "Searching tags file %s"
+msgstr "Etiket dosyası %s aranıyor"
+
+#, c-format
+msgid "E430: Tag file path truncated for %s\n"
+msgstr "E430: %s için etiket dosyası yolu kırpıldı\n"
+
+#, c-format
+msgid "E431: Format error in tags file \"%s\""
+msgstr "E431: Etiket dosyası \"%s\" içinde biçim hatası"
+
+#, c-format
+msgid "Before byte %ld"
+msgstr "%ld bitinden önce"
+
+#, c-format
+msgid "E432: Tags file not sorted: %s"
+msgstr "E432: Etiket dosyası sıralanmadı: %s"
+
+msgid "E433: No tags file"
+msgstr "E433: Etiket dosyası yok"
+
+msgid "Ignoring long line in tags file"
+msgstr "Etiket dosyasındaki uzun satır yok sayılıyor"
+
+msgid "E434: Can't find tag pattern"
+msgstr "E434: Etiket dizgisi bulunamıyor"
+
+msgid "E435: Couldn't find tag, just guessing!"
+msgstr "E435: Etiket bulunamadı, tahmin ediliyor!"
+
+#, c-format
+msgid "Duplicate field name: %s"
+msgstr "Yinelenen alan adı: %s"
+
+msgid "' not known. Available builtin terminals are:"
+msgstr "' bilinmiyor. Kullanılabilir uçbirimler şunlar:"
+
+msgid "defaulting to '"
+msgstr "öntanımlı olarak '"
+
+msgid "E557: Cannot open termcap file"
+msgstr "E557: termcap dosyası açılamıyor"
+
+msgid "E558: Terminal entry not found in terminfo"
+msgstr "E558: terminfo içinde uçbirim girdisi bulunamadı"
+
+msgid "E559: Terminal entry not found in termcap"
+msgstr "E559: termcap içinde uçbirim bilgisi bulunamadı"
+
+#, c-format
+msgid "E436: No \"%s\" entry in termcap"
+msgstr "E436: termcap içinde \"%s\" girdisi yok"
+
+msgid "E437: terminal capability \"cm\" required"
+msgstr "E437: \"cm\" uçbirim kabiliyeti gerekiyor"
+
+msgid ""
+"\n"
+"--- Terminal keys ---"
+msgstr ""
+"\n"
+"--- Uçbirim düğmeleri ---"
+
+msgid "Cannot open $VIMRUNTIME/rgb.txt"
+msgstr "$VIMRUNTIME/rgb.txt açılamıyor"
+
+#, c-format
+msgid "E181: Invalid attribute: %s"
+msgstr "E181: Geçersiz öznitelik: %s"
+
+msgid "E279: Sorry, ++shell is not supported on this system"
+msgstr "E279: Üzgünüm, ++shell bu sistemde desteklenmiyor"
+
+#, c-format
+msgid "Kill job in \"%s\"?"
+msgstr "\"%s\" içindeki iş sonlandırılsın mı?"
+
+msgid "Terminal"
+msgstr "Uçbirim"
+
+msgid "Terminal-finished"
+msgstr "Uçbirim-bitti"
+
+msgid "active"
+msgstr "etkin"
+
+msgid "running"
+msgstr "çalışıyor"
+
+msgid "finished"
+msgstr "bitti"
+
+msgid "E958: Job already finished"
+msgstr "E958: İş bitti bile"
+
+#, c-format
+msgid "E953: File exists: %s"
+msgstr "E953: Dosya mevcut: %s"
+
+msgid "E955: Not a terminal buffer"
+msgstr "E955: Bir uçbirim arabelleği değil"
+
+msgid "E982: ConPTY is not available"
+msgstr "E982: ConPTY mevcut değil"
+
+#, c-format
+msgid "E971: Property type %s does not exist"
+msgstr "E971: Özellik türü %s mevcut değil"
+
+#, c-format
+msgid "E964: Invalid column number: %ld"
+msgstr "E964: Geçersiz sütun numarası: %ld"
+
+#, c-format
+msgid "E966: Invalid line number: %ld"
+msgstr "E966: Geçersiz satır numarası: %ld"
+
+msgid "E965: missing property type name"
+msgstr "E965: Özellik tür adı eksik"
+
+msgid "E275: Cannot add text property to unloaded buffer"
+msgstr "E275: Bellekten kaldırılmış arabelleğe metin özelliği eklenemiyor"
+
+msgid "E967: text property info corrupted"
+msgstr "E967: Metin özellik bilgisi hasarlı"
+
+msgid "E968: Need at least one of 'id' or 'type'"
+msgstr "E968: En azından bir 'id' veya 'type' gerekli"
+
+msgid "E860: Need 'id' and 'type' with 'both'"
+msgstr "E860: 'both' ile 'id' ve 'type' gerekli"
+
+#, c-format
+msgid "E969: Property type %s already defined"
+msgstr "E969: Özellik türü %s hâlihazırda tanımlanmış"
+
+#, c-format
+msgid "E970: Unknown highlight group name: '%s'"
+msgstr "E970: Bilinmeyen vurgulama grup adı: '%s'"
+
+msgid "(Invalid)"
+msgstr "(Geçersiz)"
+
+msgid "%a %b %d %H:%M:%S %Y"
+msgstr "%a %b %d %H:%M:%S %Y"
+
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "%ld saniye önce"
+msgstr[1] "%ld saniye önce"
+
+msgid "E805: Using a Float as a Number"
+msgstr "E805: Bir Kayan Noktalı Değer, Sayı yerine kullanılıyor"
+
+msgid "E703: Using a Funcref as a Number"
+msgstr "E703: Bir Funcref, Sayı yerine kullanılıyor"
+
+msgid "E745: Using a List as a Number"
+msgstr "E745: Bir Liste, Sayı yerine kullanılıyor"
+
+msgid "E728: Using a Dictionary as a Number"
+msgstr "E728: Bir Sözlük, Sayı yerine kullanılıyor"
+
+msgid "E611: Using a Special as a Number"
+msgstr "E611: Bir Özel, Sayı yerine kullanılıyor"
+
+msgid "E910: Using a Job as a Number"
+msgstr "E910: Bir İş, Sayı yerine kullanılıyor"
+
+msgid "E913: Using a Channel as a Number"
+msgstr "E913: Bir Kanal, Sayı yerine kullanılıyor"
+
+msgid "E974: Using a Blob as a Number"
+msgstr "E974: Bir İkili Geniş Nesne, Sayı yerine kullanılıyor"
+
+msgid "E891: Using a Funcref as a Float"
+msgstr "E891: Bir Funcref, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E892: Using a String as a Float"
+msgstr "E892: Bir Dizi, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E893: Using a List as a Float"
+msgstr "E893: Bir Liste, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E894: Using a Dictionary as a Float"
+msgstr "E894: Bir Sözlük, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E362: Using a boolean value as a Float"
+msgstr "E362: Bir Boole Değeri, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E907: Using a special value as a Float"
+msgstr "E907: Bir Özel Değer, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E911: Using a Job as a Float"
+msgstr "E911: Bir İş, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E914: Using a Channel as a Float"
+msgstr "E914: Bir Kanal, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E975: Using a Blob as a Float"
+msgstr "E975: Bir İkili Geniş Nesne, Kayan Noktalı Değer yerine kullanılıyor"
+
+msgid "E729: using Funcref as a String"
+msgstr "E729: Funcref bir Dizi yerine kullanılıyor"
+
+msgid "E730: using List as a String"
+msgstr "E730: Liste bir Dizi yerine kullanılıyor"
+
+msgid "E731: using Dictionary as a String"
+msgstr "E731: Sözlük bir Dizi yerine kullanılıyor"
+
+msgid "E976: using Blob as a String"
+msgstr "E976: İkili Geniş Nesne bir Dizi yerine kullanılıyor"
+
+msgid "E977: Can only compare Blob with Blob"
+msgstr ""
+"E977: Bir ikili geniş öğe yalnızca kendinden bir başkası ile "
+"karşılaştırılabilir"
+
+msgid "E691: Can only compare List with List"
+msgstr "E691: Bir liste yalnızca başka bir liste ile karşılaştırılabilir"
+
+msgid "E692: Invalid operation for List"
+msgstr "E692: Geçersiz liste işlemi"
+
+msgid "E735: Can only compare Dictionary with Dictionary"
+msgstr "E735: Bir sözlük yalnızca başka bir sözlük ile karşılaştırılabilir"
+
+msgid "E736: Invalid operation for Dictionary"
+msgstr "E736: Geçersiz sözlük işlemi"
+
+msgid "E694: Invalid operation for Funcrefs"
+msgstr "E694: Geçersiz Funcref işlemi"
+
+#, c-format
+msgid "E112: Option name missing: %s"
+msgstr "E112: Seçenek adı eksik: %s"
+
+msgid "E973: Blob literal should have an even number of hex characters"
+msgstr ""
+"E973: İkili geniş nesne hazır bilgisi çift onalt. karakterlere iye olmalıdır"
+
+#, c-format
+msgid "E114: Missing quote: %s"
+msgstr "E114: Tırnak imi eksik: %s"
+
+#, c-format
+msgid "E115: Missing quote: %s"
+msgstr "E115: Tırnak imi eksik: %s"
+
+msgid "new shell started\n"
+msgstr "yeni kabuk başlatıldı\n"
+
+msgid "Vim: Error reading input, exiting...\n"
+msgstr "Vim: Girdi okunurken hata, çıkılıyor...\n"
+
+msgid "E881: Line count changed unexpectedly"
+msgstr "E881: Satır sayısı beklenmeyen bir biçimde değişti"
+
+msgid "No undo possible; continue anyway"
+msgstr "Geri alma olanaklı değil; bekleme yapma"
+
+#, c-format
+msgid "E828: Cannot open undo file for writing: %s"
+msgstr "E828: Geri al dosyası yazma için açılamıyor: %s"
+
+#, c-format
+msgid "E825: Corrupted undo file (%s): %s"
+msgstr "E825: Hasarlı geri al dosyası (%s): %s"
+
+msgid "Cannot write undo file in any directory in 'undodir'"
+msgstr "Geri al dosyası 'undodir' içindeki herhangi bir dizine yazılamıyor"
+
+#, c-format
+msgid "Will not overwrite with undo file, cannot read: %s"
+msgstr "Geri al dosyası üzerine yazmayacak, bu okunamıyor: %s"
+
+#, c-format
+msgid "Will not overwrite, this is not an undo file: %s"
+msgstr "Üzerine yazılmayacak, bu bir geri al dosyası değil: %s"
+
+msgid "Skipping undo file write, nothing to undo"
+msgstr "Geri al yazması atlanıyor, geri alınacak bir şey yok"
+
+#, c-format
+msgid "Writing undo file: %s"
+msgstr "Geri al dosyası yazılıyor: %s"
+
+#, c-format
+msgid "E829: write error in undo file: %s"
+msgstr "E829: Geri al dosyasında yazma hatası: %s"
+
+#, c-format
+msgid "Not reading undo file, owner differs: %s"
+msgstr "Geri al dosyası okunmayacak, sahibi farklı: %s"
+
+#, c-format
+msgid "Reading undo file: %s"
+msgstr "Geri al dosyası okunuyor: %s"
+
+#, c-format
+msgid "E822: Cannot open undo file for reading: %s"
+msgstr "E822: Geri al dosyası okuma için açılamıyor: %s"
+
+#, c-format
+msgid "E823: Not an undo file: %s"
+msgstr "E823: Bir geri al dosyası değil: %s"
+
+#, c-format
+msgid "E832: Non-encrypted file has encrypted undo file: %s"
+msgstr "E832: Şifrelenmemiş dosyanın şifrelenmiş bir geri al dosyası var: %s"
+
+#, c-format
+msgid "E826: Undo file decryption failed: %s"
+msgstr "E826: Geri al dosyası şifre çözümü başarısız oldu: %s"
+
+#, c-format
+msgid "E827: Undo file is encrypted: %s"
+msgstr "E827: Geri al dosyası şifrelenmiş: %s"
+
+#, c-format
+msgid "E824: Incompatible undo file: %s"
+msgstr "E824: Uyumsuz geri al dosyası: %s"
+
+msgid "File contents changed, cannot use undo info"
+msgstr "Dosya içeriği değişmiş, geri alma bilgisi kullanılamaz"
+
+#, c-format
+msgid "Finished reading undo file %s"
+msgstr "%s geri al dosyasının okunması bitti"
+
+msgid "Already at oldest change"
+msgstr "Hâlihazırda en eski değişiklik üzerinde"
+
+msgid "Already at newest change"
+msgstr "Hâlihazırda en yeni değişiklik üzerinde"
+
+#, c-format
+msgid "E830: Undo number %ld not found"
+msgstr "E830: %ld numaralı geri alma bulunamadı"
+
+msgid "E438: u_undo: line numbers wrong"
+msgstr "E438: u_undo: Satır numaraları yanlış"
+
+msgid "more line"
+msgstr "ek satır"
+
+msgid "more lines"
+msgstr "ek satır"
+
+msgid "line less"
+msgstr "daha az satır"
+
+msgid "fewer lines"
+msgstr "daha az satır"
+
+msgid "change"
+msgstr "değişiklik"
+
+msgid "changes"
+msgstr "değişiklik"
+
+#, c-format
+msgid "%ld %s; %s #%ld %s"
+msgstr "%ld %s; %s #%ld %s"
+
+msgid "before"
+msgstr "şundan önce:"
+
+msgid "after"
+msgstr "şundan sonra:"
+
+msgid "Nothing to undo"
+msgstr "Geri alınacak bir şey yok"
+
+msgid "number changes when saved"
+msgstr "kaydedildiğinde numara değişir"
+
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: Geri al sonrasında geri almalar birleştirilemez"
+
+msgid "E439: undo list corrupt"
+msgstr "E439: Geri al listesi hasarlı"
+
+msgid "E440: undo line missing"
+msgstr "E440: Geri al satırı eksik"
+
+msgid ""
+"\n"
+" Name Args Address Complete Definition"
+msgstr ""
+"\n"
+" Ad Dğkl Adres Tam Tanım"
+
+msgid "No user-defined commands found"
+msgstr "Kullanıcı tanımlı bir komut bulunamadı"
+
+#, c-format
+msgid "E180: Invalid address type value: %s"
+msgstr "E180: Geçersiz adres türü değeri: %s"
+
+#, c-format
+msgid "E180: Invalid complete value: %s"
+msgstr "E180: Geçersiz tam değer: %s"
+
+msgid "E468: Completion argument only allowed for custom completion"
+msgstr "E468: Tamamlama değişkenine yalnızca özel tamamlamalarda izin verilir"
+
+msgid "E467: Custom completion requires a function argument"
+msgstr "E467: Özel tamamlama bir işlev değişkeni gerektirir"
+
+msgid "E175: No attribute specified"
+msgstr "E175: Bir öznitelik belirtilmemiş"
+
+msgid "E176: Invalid number of arguments"
+msgstr "E176: Geçersiz değişken sayısı"
+
+msgid "E177: Count cannot be specified twice"
+msgstr "E177: Sayım iki defa belirtilemez"
+
+msgid "E178: Invalid default value for count"
+msgstr "E178: Sayım için geçersiz öntanımlı değer"
+
+msgid "E179: argument required for -complete"
+msgstr "E179: -complete için değişken gerekiyor"
+
+msgid "E179: argument required for -addr"
+msgstr "E179: -addr için değişken gerekiyor"
+
+#, c-format
+msgid "E174: Command already exists: add ! to replace it: %s"
+msgstr "E174: Komut zaten mevcut: değiştirmek için ! ekleyin: %s"
+
+msgid "E182: Invalid command name"
+msgstr "E182: Geçersiz komut adı"
+
+msgid "E183: User defined commands must start with an uppercase letter"
+msgstr "E183: Kullanıcı tanımlı komutlar BÜYÜK harfle başlamalıdır"
+
+msgid "E841: Reserved name, cannot be used for user defined command"
+msgstr "E841: Ayrılmış ad, kullanıcı tanımlı komut için kullanılamaz"
+
+#, c-format
+msgid "E184: No such user-defined command: %s"
+msgstr "E184: Böyle bir kullanıcı tanımlı komut yok: %s"
+
+#, c-format
+msgid "E122: Function %s already exists, add ! to replace it"
+msgstr "E122: %s işlevi hâlihazırda mevcut, değiştirmek için ! ekleyin"
+
+msgid "E717: Dictionary entry already exists"
+msgstr "E717: Sözlük girdisi hâlihazırda mevcut"
+
+msgid "E718: Funcref required"
+msgstr "E718: Funcref gerekiyor"
+
+#, c-format
+msgid "E130: Unknown function: %s"
+msgstr "E130: Bilinmeyen işlev: %s"
+
+#, c-format
+msgid "E125: Illegal argument: %s"
+msgstr "E125: İzin verilmeyen değişken: %s"
+
+#, c-format
+msgid "E853: Duplicate argument name: %s"
+msgstr "E853: Yinelenen değişken adı: %s"
+
+msgid "E989: Non-default argument follows default argument"
+msgstr "E989: Öntanımlı olmayan değişken öntanımlı değişkenden sonra"
+
+#, c-format
+msgid "E451: Expected }: %s"
+msgstr "E451: } bekleniyordu: %s"
+
+#, c-format
+msgid "E740: Too many arguments for function %s"
+msgstr "E740: %s işlevi için çok fazla değişken"
+
+#, c-format
+msgid "E116: Invalid arguments for function %s"
+msgstr "E116: %s işlevi için geçersiz değişkenler"
+
+msgid "E132: Function call depth is higher than 'maxfuncdepth'"
+msgstr "E132: İşlevin çağırdığı derinlik 'maxfuncdepth'ten daha yüksek"
+
+#, c-format
+msgid "calling %s"
+msgstr "%s çağrılıyor"
+
+#, c-format
+msgid "%s aborted"
+msgstr "%s durduruldu"
+
+#, c-format
+msgid "%s returning #%ld"
+msgstr "%s, #%ld döndürüyor"
+
+#, c-format
+msgid "%s returning %s"
+msgstr "%s, %s döndürüyor"
+
+msgid "E699: Too many arguments"
+msgstr "E699: Çok fazla değişken"
+
+#, c-format
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: İşlev bir yöntem olarak kullanılamaz: %s"
+
+#, c-format
+msgid "E120: Using <SID> not in a script context: %s"
+msgstr "E120: <SID> bir betik bağlamında kullanılmıyor: %s"
+
+#, c-format
+msgid "E725: Calling dict function without Dictionary: %s"
+msgstr "E725: dic işlevi bir sözlük olmadan çağrılıyor: %s"
+
+msgid "E129: Function name required"
+msgstr "E129: İşlev adı gerekiyor"
+
+#, c-format
+msgid "E128: Function name must start with a capital or \"s:\": %s"
+msgstr "E128: İşlev adı bir BÜYÜK harfle veya \"s:\" ile başlamalı: %s"
+
+#, c-format
+msgid "E884: Function name cannot contain a colon: %s"
+msgstr "E884: İşlev adı iki nokta içeremez: %s"
+
+msgid "E454: function list was modified"
+msgstr "E454: İşlev listesi değiştirilmiş"
+
+#, c-format
+msgid "E123: Undefined function: %s"
+msgstr "E123: Tanımlanmamış işlev: %s"
+
+#, c-format
+msgid "E124: Missing '(': %s"
+msgstr "E124: '(' eksik: %s"
+
+msgid "E862: Cannot use g: here"
+msgstr "E862: g: burada kullanılamaz"
+
+#, c-format
+msgid "E932: Closure function should not be at top level: %s"
+msgstr "E932: Kapatma işlevi en üst düzeyde olmamalıdır: %s"
+
+msgid "E126: Missing :endfunction"
+msgstr "E126: :endfunction eksik"
+
+#, c-format
+msgid "W1001: Text found after :enddef: %s"
+msgstr "W1001: :enddef sonrası metin bulundu: %s"
+
+#, c-format
+msgid "W22: Text found after :endfunction: %s"
+msgstr "W22: :endfunction sonrası metin bulundu: %s"
+
+#, c-format
+msgid "E707: Function name conflicts with variable: %s"
+msgstr "E707: İşlev adı şu değişken ile çakışıyor: %s"
+
+#, c-format
+msgid "E127: Cannot redefine function %s: It is in use"
+msgstr "E127: %s işlevi yeniden tanımlanamıyor: Şu an kullanımda"
+
+#, c-format
+msgid "E746: Function name does not match script file name: %s"
+msgstr "E746: İşlev adı betik dosyası adına eşleşmiyor: %s"
+
+#, c-format
+msgid "E131: Cannot delete function %s: It is in use"
+msgstr "E131: %s işlevi silinemiyor: Şu an kullanımda"
+
+msgid "E133: :return not inside a function"
+msgstr "E133: :return bir işlev içinde değil"
+
+#, c-format
+msgid "%s (%s, compiled %s)"
+msgstr "%s (%s, %s tarihinde derlendi)"
+
+msgid ""
+"\n"
+"MS-Windows 64-bit GUI/console version"
+msgstr ""
+"\n"
+"MS-Windows 64-bit grafik arabirim/konsol sürümü"
+
+msgid ""
+"\n"
+"MS-Windows 32-bit GUI/console version"
+msgstr ""
+"\n"
+"MS-Windows 32-bit grafik arabirim/konsol sürümü"
+
+msgid ""
+"\n"
+"MS-Windows 64-bit GUI version"
+msgstr ""
+"\n"
+"MS-Windows 64-bit grafik arabirim sürümü"
+
+msgid ""
+"\n"
+"MS-Windows 32-bit GUI version"
+msgstr ""
+"\n"
+"MS-Windows 32-bit grafik arabirim sürümü"
+
+msgid " with OLE support"
+msgstr ", OLE desteği ile"
+
+msgid ""
+"\n"
+"MS-Windows 64-bit console version"
+msgstr ""
+"\n"
+"MS-Windows 64-bit konsol sürümü"
+
+msgid ""
+"\n"
+"MS-Windows 32-bit console version"
+msgstr ""
+"\n"
+"MS-Windows 32-bit konsol sürümü"
+
+msgid ""
+"\n"
+"macOS version"
+msgstr ""
+"\n"
+"macOS sürümü"
+
+msgid ""
+"\n"
+"macOS version w/o darwin feat."
+msgstr ""
+"\n"
+"Darwin özellikleri olmayan macOS sürümü"
+
+msgid ""
+"\n"
+"OpenVMS version"
+msgstr ""
+"\n"
+"OpenVMS sürümü"
+
+msgid ""
+"\n"
+"Included patches: "
+msgstr ""
+"\n"
+"İçerilen yamalar: "
+
+msgid ""
+"\n"
+"Extra patches: "
+msgstr ""
+"\n"
+"Ek yamalar: "
+
+msgid "Modified by "
+msgstr "Değiştirme: "
+
+msgid ""
+"\n"
+"Compiled "
+msgstr ""
+"\n"
+"Derleyen:"
+
+msgid "by "
+msgstr " "
+
+msgid ""
+"\n"
+"Huge version "
+msgstr ""
+"\n"
+"Dev sürüm "
+
+msgid ""
+"\n"
+"Big version "
+msgstr ""
+"\n"
+"Büyük sürüm "
+
+msgid ""
+"\n"
+"Normal version "
+msgstr ""
+"\n"
+"Orta boy sürüm "
+
+msgid ""
+"\n"
+"Small version "
+msgstr ""
+"\n"
+"Küçük sürüm "
+
+msgid ""
+"\n"
+"Tiny version "
+msgstr ""
+"\n"
+"Ufak sürüm "
+
+msgid "without GUI."
+msgstr "(grafik arabirim içermez)."
+
+msgid "with GTK3 GUI."
+msgstr "(GTK3 grafik arabirim ile)."
+
+msgid "with GTK2-GNOME GUI."
+msgstr "(GTK2-GNOME grafik arabirim ile)."
+
+msgid "with GTK2 GUI."
+msgstr "(GTK2 grafik arabirim ile)."
+
+msgid "with X11-Motif GUI."
+msgstr "(X11-Motif grafik arabirim ile)."
+
+msgid "with X11-neXtaw GUI."
+msgstr "(X11-neXtaw grafik arabirim ile)."
+
+msgid "with X11-Athena GUI."
+msgstr "(X11-Athena grafik arabirim ile)."
+
+msgid "with Haiku GUI."
+msgstr "(Haiku grafik arabirimi ile)."
+
+msgid "with Photon GUI."
+msgstr "(Photon grafik arabirim ile)."
+
+msgid "with GUI."
+msgstr "(grafik arabirim ile)."
+
+msgid " Features included (+) or not (-):\n"
+msgstr " İçerilen özellikler (+), içerilmeyenler (-) ile gösterilir:\n"
+
+msgid " system vimrc file: \""
+msgstr " sistem vimrc dosyası: \""
+
+msgid " user vimrc file: \""
+msgstr " kullanıcı vimrc dosyası: \""
+
+msgid " 2nd user vimrc file: \""
+msgstr " kullanıcı 2. vimrc dosyası: \""
+
+msgid " 3rd user vimrc file: \""
+msgstr " kullanıcı 3. vimrc dosyası: \""
+
+msgid " user exrc file: \""
+msgstr " kullanıcı exrc dosyası: \""
+
+msgid " 2nd user exrc file: \""
+msgstr " kullanıcı 2. exrc dosyası: \""
+
+msgid " system gvimrc file: \""
+msgstr " sistem gvimrc dosyası: \""
+
+msgid " user gvimrc file: \""
+msgstr " kullanıcı gvimrc dosyası: \""
+
+msgid "2nd user gvimrc file: \""
+msgstr " kullanıcı 2. gvimrc dosyası: \""
+
+msgid "3rd user gvimrc file: \""
+msgstr " kullanıcı 3. gvimrc dosyası: \""
+
+msgid " defaults file: \""
+msgstr " öntanımlılar dosyası: \""
+
+msgid " system menu file: \""
+msgstr " sistem menü dosyaları: \""
+
+msgid " fall-back for $VIM: \""
+msgstr " $VIM öntanımlı konumu: \""
+
+msgid " f-b for $VIMRUNTIME: \""
+msgstr "$VIMRUNTIME öntanımlı konumu: \""
+
+msgid "Compilation: "
+msgstr "Derleme: "
+
+msgid "Compiler: "
+msgstr "Derleyici: "
+
+msgid "Linking: "
+msgstr "Bağlama: "
+
+msgid " DEBUG BUILD"
+msgstr " HATA AYIKLAMA AMAÇLI SÜRÜM"
+
+msgid "VIM - Vi IMproved"
+msgstr "VİM - Vi IMproved"
+
+msgid "version "
+msgstr "sürüm: "
+
+msgid "by Bram Moolenaar et al."
+msgstr "geliştirme: Bram Moolenaar ve diğerleri"
+
+msgid "Vim is open source and freely distributable"
+msgstr "Vim açık kaynaklıdır ve özgürce dağıtılabilir"
+
+msgid "Help poor children in Uganda!"
+msgstr "Uganda'daki yoksul çocuklara yardım edin!"
+
+msgid "type :help iccf<Enter> for information "
+msgstr "ek bilgi için :help iccf<Enter> "
+
+msgid "type :q<Enter> to exit "
+msgstr "çıkmak için :q<Enter> "
+
+msgid "type :help<Enter> or <F1> for on-line help"
+msgstr "yardım belgeleri için :help<Enter> veya <F1> "
+
+msgid "type :help version8<Enter> for version info"
+msgstr "sürüm bilgisi için :help version8<Enter> "
+
+msgid "Running in Vi compatible mode"
+msgstr "Vi uyumlu kipte çalışıyor"
+
+msgid "type :set nocp<Enter> for Vim defaults"
+msgstr "öntanımlı ayarlar için :set nocp<Enter> "
+
+msgid "type :help cp-default<Enter> for info on this"
+msgstr "ek bilgi için :help cp-default<Enter>"
+
+msgid "menu Help->Orphans for information "
+msgstr "bilgi için menü -> Yardım -> Yetimler"
+
+msgid "Running modeless, typed text is inserted"
+msgstr "Kipsiz çalışıyor, girilen metin doğrudan eklenir"
+
+msgid "menu Edit->Global Settings->Toggle Insert Mode "
+msgstr "menü -> Düzen -> Genel Ayarlar -> Ekleme Kipine Geç"
+
+msgid " for two modes "
+msgstr " iki kip için "
+
+msgid "menu Edit->Global Settings->Toggle Vi Compatible"
+msgstr "menü -> Düzen -> Genel Ayarlar -> Vi Uyumlu Kipi Aç/Kapat"
+
+msgid " for Vim defaults "
+msgstr " Vim öntanımlıları için "
+
+msgid "Sponsor Vim development!"
+msgstr "Vim'in geliştirilmesine sponsor olun!"
+
+msgid "Become a registered Vim user!"
+msgstr "Kayıtlı bir Vim kullanıcısı olun!"
+
+msgid "type :help sponsor<Enter> for information "
+msgstr "bilgi için :help sponsor<Enter> "
+
+msgid "type :help register<Enter> for information "
+msgstr "bilgi için :help register<Enter> "
+
+msgid "menu Help->Sponsor/Register for information "
+msgstr "bilgi için Yardım -> Sponsorluk/Kayıt"
+
+msgid "[end of lines]"
+msgstr "[satırların sonu]"
+
+msgid "global"
+msgstr "global"
+
+msgid "buffer"
+msgstr "arabellek"
+
+msgid "window"
+msgstr "pencere"
+
+msgid "tab"
+msgstr "sekme"
+
+msgid ""
+"\n"
+"# Buffer list:\n"
+msgstr ""
+"\n"
+"# Arabellek listesi:\n"
+
+#, c-format
+msgid ""
+"\n"
+"# %s History (newest to oldest):\n"
+msgstr ""
+"\n"
+"# %s Geçmişi (yeniden eskiye):\n"
+
+msgid "Command Line"
+msgstr "Komut Satırı"
+
+msgid "Search String"
+msgstr "Arama Dizisi"
+
+msgid "Expression"
+msgstr "İfade"
+
+msgid "Input Line"
+msgstr "Girdi Satırı"
+
+msgid "Debug Line"
+msgstr "Hata Ayıklama Satırı"
+
+msgid ""
+"\n"
+"# Bar lines, copied verbatim:\n"
+msgstr ""
+"\n"
+"# Tam sureti kopyalanan | satırları:\n"
+
+#, c-format
+msgid "%sviminfo: %s in line: "
+msgstr "%sviminfo: satırdaki %s: "
+
+msgid "E136: viminfo: Too many errors, skipping rest of file"
+msgstr "E136: viminfo: Çok fazla hata, dosyanın geri kalanı atlanıyor"
+
+msgid ""
+"\n"
+"# global variables:\n"
+msgstr ""
+"\n"
+"# global değişkenler:\n"
+
+msgid ""
+"\n"
+"# Last Substitute String:\n"
+"$"
+msgstr ""
+"\n"
+"# Son Değiştirilen Dizi:\n"
+"$"
+
+#, c-format
+msgid ""
+"\n"
+"# Last %sSearch Pattern:\n"
+"~"
+msgstr ""
+"\n"
+"# Son %sArama Dizgileri:\n"
+"~"
+
+msgid "Substitute "
+msgstr "Şunu değiştir: "
+
+msgid "Illegal register name"
+msgstr "İzin verilmeyen yazmaç adı"
+
+msgid ""
+"\n"
+"# Registers:\n"
+msgstr ""
+"\n"
+"# Yazmaçlar:\n"
+
+#, c-format
+msgid "E574: Unknown register type %d"
+msgstr "E574: Bilinmeyen yazmaç türü %d"
+
+msgid ""
+"\n"
+"# History of marks within files (newest to oldest):\n"
+msgstr ""
+"\n"
+"# Dosyalardaki imlerin geçmişi (yeniden eskiye):\n"
+
+msgid ""
+"\n"
+"# File marks:\n"
+msgstr ""
+"\n"
+"# Dosya imleri:\n"
+
+msgid ""
+"\n"
+"# Jumplist (newest first):\n"
+msgstr ""
+"\n"
+"# Atlama listesi (önce en yeniler):\n"
+
+msgid "Missing '>'"
+msgstr "'>' eksik"
+
+msgid "Illegal starting char"
+msgstr "İzin verilmeyen başlangıç karakteri"
+
+#, c-format
+msgid "# This viminfo file was generated by Vim %s.\n"
+msgstr "# Bu viminfo dosyası Vim %s tarafından oluşturulmuştur.\n"
+
+msgid ""
+"# You may edit it if you're careful!\n"
+"\n"
+msgstr ""
+"# Yapabileceğinizi düşünüyorsanız bu dosyayı düzenleyebilirsiniz!\n"
+"\n"
+
+msgid "# Value of 'encoding' when this file was written\n"
+msgstr "# Bu dosya yazıldığı sırada mevcut 'encoding'in değeri\n"
+
+#, c-format
+msgid "Reading viminfo file \"%s\"%s%s%s%s"
+msgstr "\"%s\" viminfo dosyası okunuyor...%s%s%s%s"
+
+msgid " info"
+msgstr " bilgiler-"
+
+msgid " marks"
+msgstr " imler-"
+
+msgid " oldfiles"
+msgstr " düzenleme geçmişi"
+
+msgid " FAILED"
+msgstr " BAŞARISIZ"
+
+#, c-format
+msgid "E137: Viminfo file is not writable: %s"
+msgstr "E137: Viminfo dosyası yazılabilir değil: %s"
+
+#, c-format
+msgid "E929: Too many viminfo temp files, like %s!"
+msgstr "E929: Çok fazla viminfo geçici dosyası, örneğin %s!"
+
+#, c-format
+msgid "E138: Can't write viminfo file %s!"
+msgstr "E138: viminfo dosyası %s yazılamıyor!"
+
+#, c-format
+msgid "Writing viminfo file \"%s\""
+msgstr "viminfo dosyası \"%s\" yazılıyor"
+
+#, c-format
+msgid "E886: Can't rename viminfo file to %s!"
+msgstr "E886: viminfo dosyasının adı %s olarak değiştirilemiyor!"
+
+msgid "E195: Cannot open viminfo file for reading"
+msgstr "E195: viminfo dosyası okuma için açılamıyor"
+
+msgid "Already only one window"
+msgstr "Zaten tek pencere"
+
+#, c-format
+msgid "E92: Buffer %ld not found"
+msgstr "E92: Arabellek %ld bulunamadı"
+
+msgid "E441: There is no preview window"
+msgstr "E441: Önizleme penceresi yok"
+
+msgid "E242: Can't split a window while closing another"
+msgstr "E242: Bir başka pencere kapatılırken pencere bölünemez"
+
+msgid "E442: Can't split topleft and botright at the same time"
+msgstr "E442: Üst sol ve alt sağ pencereler aynı anda bölünemez"
+
+msgid "E443: Cannot rotate when another window is split"
+msgstr "E443: Başka bir pencere bölünmüşken döndürme yapılamaz"
+
+msgid "E444: Cannot close last window"
+msgstr "E444: Son pencere kapatılamıyor"
+
+msgid "E814: Cannot close window, only autocmd window would remain"
+msgstr "E814: Pencere kapatılamıyor, yalnızca otokomut penceresi açık kalır"
+
+msgid "E445: Other window contains changes"
+msgstr "E445: Diğer pencerede değişiklikler var"
+
+msgid "E366: Not allowed to enter a popup window"
+msgstr "E366: Bir açılır pencereye girişe izin verilmiyor"
+
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: %s kitaplığı yüklenemedi"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr "Üzgünüm, bu komut etkin değil: Perl kitaplığı yüklenemedi."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: Güvenli modül olmadan kum havuzu içinde Perl değerlendirmesine izin "
+"verilmiyor"
+
+msgid "Edit with &multiple Vims"
+msgstr "Birden &fazla Vim ile düzenle"
+
+msgid "Edit with single &Vim"
+msgstr "Tek bir &Vim ile düzenle"
+
+msgid "Diff with Vim"
+msgstr "Vim kullanarak karşılaştır"
+
+msgid "Edit with &Vim"
+msgstr "&Vim ile düzenle"
+
+msgid "Edit with existing Vim"
+msgstr "Mevcut Vim ile düzenle"
+
+msgid "Edit with existing Vim - "
+msgstr "Mevcut Vim ile düzenle - "
+
+msgid "Edits the selected file(s) with Vim"
+msgstr "Seçili dosyaları Vim ile düzenler"
+
+msgid "Error creating process: Check if gvim is in your path!"
+msgstr "İşlem oluşturulurken hata: gvim'in yol üzerinde olduğundan emin olun!"
+
+msgid "gvimext.dll error"
+msgstr "gvimext.dll hatası"
+
+msgid "Path length too long!"
+msgstr "Yol çok uzun!"
+
+#, c-format
+msgid "E121: Undefined variable: %s"
+msgstr "E121: Tanımlanmamış değişken: %s"
+
+#, c-format
+msgid "E121: Undefined variable: %c:%s"
+msgstr "E121: Tanımlanmamış değişken: %c:%s"
+
+msgid "E476: Invalid command"
+msgstr "E476: Geçersiz komut"
+
+#, c-format
+msgid "E476: Invalid command: %s"
+msgstr "E476: Geçersiz komut: %s"
+
+msgid "E710: List value has more items than targets"
+msgstr "E710: Liste değeri hedeften daha fazla ögeye sahip"
+
+msgid "E711: List value does not have enough items"
+msgstr "E711: Liste değeri yeterli ögeye sahip değil"
+
+msgid "E719: Cannot slice a Dictionary"
+msgstr "E719: Bir Sözlük dilimlenemiyor"
+
+msgid ""
+"E856: \"assert_fails()\" second argument must be a string or a list with one "
+"or two strings"
+msgstr ""
+"E856: \"assert_fails()\" ikinci değişkeni bir dizi veya bir veya iki dizili "
+"bir liste olmalıdır"
+
+msgid "E909: Cannot index a special variable"
+msgstr "E909: Özel bir değişken dizinlenemiyor"
+
+#, c-format
+msgid "E1100: Missing :var: %s"
+msgstr "E1100: :var eksik: %s"
+
+#, c-format
+msgid "E1001: Variable not found: %s"
+msgstr "E1001: Değişken bulunamadı: %s"
+
+#, c-format
+msgid "E1002: Syntax error at %s"
+msgstr "E1002: %s konumunda sözdizim hatası"
+
+msgid "E1003: Missing return value"
+msgstr "E1003: Dönüş değeri eksik"
+
+#, c-format
+msgid "E1004: White space required before and after '%s'"
+msgstr "E1004: '%s' öncesinde ve sonrasında boşluk gerekiyor"
+
+msgid "E1005: Too many argument types"
+msgstr "E1005: Çok fazla değişken türü"
+
+#, c-format
+msgid "E1006: %s is used as an argument"
+msgstr "E1006: %s bir değişken olarak kullanılıyor"
+
+msgid "E1007: Mandatory argument after optional argument"
+msgstr "E1007: İsteğe bağlı değişken sonrasında zorunlu değişken"
+
+msgid "E1008: Missing <type>"
+msgstr "E1008: <tür> eksik"
+
+msgid "E1009: Missing > after type"
+msgstr "E1009: Tür sonrasında > eksik"
+
+#, c-format
+msgid "E1010: Type not recognized: %s"
+msgstr "E1010: Tür tanımlanamadı: %s"
+
+#, c-format
+msgid "E1011: Name too long: %s"
+msgstr "E1011: Ad çok uzun: %s"
+
+#, c-format
+msgid "E1012: Type mismatch; expected %s but got %s"
+msgstr "E1012: Tür uyumsuzluğu, %s bekleniyordu, ancak %s alındı"
+
+#, c-format
+msgid "E1013: Argument %d: type mismatch, expected %s but got %s"
+msgstr "E1013: %d değişkeni: Tür uyumsuzluğu, %s bekleniyordu, ancak %s alındı"
+
+#, c-format
+msgid "E1014: Invalid key: %s"
+msgstr "E1014: Geçersiz anahtar: %s"
+
+#, c-format
+msgid "E1015: Name expected: %s"
+msgstr "E1015: Ad bekleniyordu: %s"
+
+#, c-format
+msgid "E1016: Cannot declare a %s variable: %s"
+msgstr "E1016: Bir %s değişkeni tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1016: Cannot declare an environment variable: %s"
+msgstr "E1016: Bir ortam değişkeni tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1017: Variable already declared: %s"
+msgstr "E1017: Değişken halihazırda tanımlanmış: %s"
+
+#, c-format
+msgid "E1018: Cannot assign to a constant: %s"
+msgstr "E1018: Bir sabite atanamıyor: %s"
+
+msgid "E1019: Can only concatenate to string"
+msgstr "E1019: Yalnızca bir diziye birleştirilebilir"
+
+#, c-format
+msgid "E1020: Cannot use an operator on a new variable: %s"
+msgstr "E1020: Yeni bir değişken üzerinde bir işleç kullanılamaz: %s"
+
+msgid "E1021: Const requires a value"
+msgstr "E1021: Sabit, bir değer gerektirir"
+
+msgid "E1022: Type or initialization required"
+msgstr "E1022: Tür veya ilklendirme gerekiyor"
+
+#, c-format
+msgid "E1023: Using a Number as a Bool: %d"
+msgstr "E1023: Bir Sayı, bir Bool yerine kullanılıyor: %d"
+
+msgid "E1024: Using a Number as a String"
+msgstr "E1024: Bir Sayı, bir Dizi yerine kullanılıyor"
+
+msgid "E1025: Using } outside of a block scope"
+msgstr "E1025: } bir blok kapsamı dışında kullanılıyor"
+
+msgid "E1026: Missing }"
+msgstr "E1026: } eksik"
+
+msgid "E1027: Missing return statement"
+msgstr "E1027: Dönüş ifadesi eksik"
+
+msgid "E1028: Compiling :def function failed"
+msgstr "E1028: :def işlevi derleme başarısız"
+
+#, c-format
+msgid "E1029: Expected %s but got %s"
+msgstr "E1029: %s bekleniyordu ancak %s alındı"
+
+#, c-format
+msgid "E1030: Using a String as a Number: \"%s\""
+msgstr "E1030: Bir Dizi, bir Sayı yerine kullanılıyor: \"%s\""
+
+msgid "E1031: Cannot use void value"
+msgstr "E1031: Boş değer kullanılamaz"
+
+msgid "E1032: Missing :catch or :finally"
+msgstr "E1032: :catch veya :finally eksik"
+
+msgid "E1033: Catch unreachable after catch-all"
+msgstr "E1033: catch-all sonrası catch ulaşılamıyor"
+
+#, c-format
+msgid "E1034: Cannot use reserved name %s"
+msgstr "E1034: Ayrılmış ad %s kullanılamaz"
+
+msgid "E1035: % requires number arguments"
+msgstr "E1035: %, sayı değişkenler gerektirir"
+
+#, c-format
+msgid "E1036: %c requires number or float arguments"
+msgstr "E1036: %c, sayı veya kayan noktalı değer değişkenler gerektirir"
+
+#, c-format
+msgid "E1037: Cannot use \"%s\" with %s"
+msgstr "E1037: \"%s\", %s ile birlikte kullanılamaz"
+
+msgid "E1038: \"vim9script\" can only be used in a script"
+msgstr "E1038: \"vim9script\" yalnızca bir betikte kullanılabilir"
+
+msgid "E1039: \"vim9script\" must be the first command in a script"
+msgstr "E1039: \"vim9script\" bir betikteki ilk komut olmalıdır"
+
+msgid "E1040: Cannot use :scriptversion after :vim9script"
+msgstr "E1040: :vim9script sonrası :scriptversion kullanılamaz"
+
+#, c-format
+msgid "E1041: Redefining script item %s"
+msgstr "E1041: Betik ögesi %s yeniden tanımlanıyor"
+
+msgid "E1042: Export can only be used in vim9script"
+msgstr "E1042: Dışa aktarım yalnızca vim9script içinde kullanılabilir"
+
+msgid "E1043: Invalid command after :export"
+msgstr "E1043: :export sonrası geçersiz komut"
+
+msgid "E1044: Export with invalid argument"
+msgstr "E1044: Geçersiz değişkenle dışa aktarım"
+
+msgid "E1045: Missing \"as\" after *"
+msgstr "E1045: * sonrası \"as\" eksik"
+
+msgid "E1046: Missing comma in import"
+msgstr "E1046: İçe aktarımda virgül eksik"
+
+msgid "E1047: Syntax error in import"
+msgstr "E1047: İçe aktarımda sözdizim hatası"
+
+#, c-format
+msgid "E1048: Item not found in script: %s"
+msgstr "E1048: Betikte öge bulunamadı: %s"
+
+#, c-format
+msgid "E1049: Item not exported in script: %s"
+msgstr "E1049: Betikte öge dışa aktarılmadı: %s"
+
+msgid "E1050: Colon required before a range"
+msgstr "E1050: Bir erim öncesi iki nokta gerekiyor"
+
+msgid "E1051: Wrong argument type for +"
+msgstr "E1051: + için hatalı değişken türü"
+
+#, c-format
+msgid "E1052: Cannot declare an option: %s"
+msgstr "E1052: Bir seçenek tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1053: Could not import \"%s\""
+msgstr "E1053: \"%s\" içe aktarılamadı"
+
+#, c-format
+msgid "E1054: Variable already declared in the script: %s"
+msgstr "E1054: Betikte değişken halihazırda tanımlanmış: %s"
+
+msgid "E1055: Missing name after ..."
+msgstr "E1055: ... sonraki ad eksik"
+
+#, c-format
+msgid "E1056: Expected a type: %s"
+msgstr "E1056: Bir tür bekleniyordu: %s"
+
+msgid "E1057: Missing :enddef"
+msgstr "E1057: :enddef eksik"
+
+msgid "E1058: Function nesting too deep"
+msgstr "E1058: İşlev çok iç içe geçmiş"
+
+#, c-format
+msgid "E1059: No white space allowed before colon: %s"
+msgstr "E1059: İki nokta öncesinde boşluğa izin verilmiyor: %s"
+
+#, c-format
+msgid "E1060: Expected dot after name: %s"
+msgstr "E1060: Ad sonrası nokta bekleniyordu: %s"
+
+#, c-format
+msgid "E1061: Cannot find function %s"
+msgstr "E1061: %s işlevi bulunamıyor"
+
+msgid "E1062: Cannot index a Number"
+msgstr "E1062: Bir Sayı dizinlenemiyor"
+
+msgid "E1063: Type mismatch for v: variable"
+msgstr "E1063: v: değişkeni için tür uyumsuzluğu"
+
+#, c-format
+msgid "E1066: Cannot declare a register: %s"
+msgstr "E1066: Bir yazmaç tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1067: Separator mismatch: %s"
+msgstr "E1067: Ayırıcı uyumsuzluğu: %s"
+
+#, c-format
+msgid "E1068: No white space allowed before '%s'"
+msgstr "E1068: '%s' önce boşluğa izin verilmiyor"
+
+#, c-format
+msgid "E1069: White space required after '%s'"
+msgstr "E1069: '%s' sonrası boşluk gerekiyor"
+
+msgid "E1070: Missing \"from\""
+msgstr "E1070: \"from\" eksik"
+
+msgid "E1071: Invalid string after \"from\""
+msgstr "E1071: \"from\" sonrası geçersiz dizi"
+
+#, c-format
+msgid "E1072: Cannot compare %s with %s"
+msgstr "E1072: %s, %s ile karşılaştırılamıyor"
+
+#, c-format
+msgid "E1073: Name already defined: %s"
+msgstr "E1073: Ad halihazırda tanımlanmış: %s"
+
+msgid "E1074: No white space allowed after dot"
+msgstr "E1074: Nokta sonrası boşluğa izin verilmiyor"
+
+#, c-format
+msgid "E1075: Namespace not supported: %s"
+msgstr "E1075: Ad alanı desteklenmiyor: %s"
+
+msgid "E1076: This Vim is not compiled with float support"
+msgstr "E1076: Bu Vim kayan noktalı değer desteği ile derlenmemiş"
+
+#, c-format
+msgid "E1077: Missing argument type for %s"
+msgstr "E1077: %s için değişken türü eksik"
+
+#, c-format
+msgid "E1081: Cannot unlet %s"
+msgstr "E1081: %s sabitten değişkene çevrilemiyor"
+
+#, c-format
+msgid "E1082: Cannot use a namespaced variable: %s"
+msgstr "E1082: Ad alanına alınmış bir değişken kullanılamaz: %s"
+
+msgid "E1083: Missing backtick"
+msgstr "E1083: Ters eğik kesme imi eksik"
+
+#, c-format
+msgid "E1084: Cannot delete Vim9 script function %s"
+msgstr "E1084: Vim9 betik işlevi %s silinemiyor"
+
+#, c-format
+msgid "E1085: Not a callable type: %s"
+msgstr "E1085: Çağrılabilir bir tür değil: %s"
+
+msgid "E1086: Cannot use :function inside :def"
+msgstr "E1086: :def içinde :function kullanılamaz"
+
+msgid "E1087: Cannot use an index when declaring a variable"
+msgstr "E1087: Bir değişken tanımlarken indeks kullanılamaz"
+
+#, c-format
+msgid "E1089: Unknown variable: %s"
+msgstr "E1089: Bilinmeyen değişken: %s"
+
+#, c-format
+msgid "E1090: Cannot assign to argument %s"
+msgstr "E1090: %s değişkenine atanamıyor"
+
+#, c-format
+msgid "E1091: Function is not compiled: %s"
+msgstr "E1091: İşlev derlenmemiş: %s"
+
+msgid "E1092: Cannot use a list for a declaration"
+msgstr "E1092: Tanımlama için bir liste kullanılamaz"
+
+#, c-format
+msgid "E1093: Expected %d items but got %d"
+msgstr "E1093: %d öge bekleniyordu, ancak %d alındı"
+
+msgid "E1094: Import can only be used in a script"
+msgstr "E1094: İçe aktarım yalnızca bir betikte kullanılabilir"
+
+msgid "E1095: Unreachable code after :return"
+msgstr "E1095: :return sonrası ulaşılamayan kod"
+
+msgid "E1096: Returning a value in a function without a return type"
+msgstr "E1096: Dönüş türü olmayan bir işlevde bir değer döndürülüyor"
+
+msgid "E1097: Line incomplete"
+msgstr "E1097: Satır tamamlanmamış"
+
+#, c-format
+msgid "E1099: Unknown error while executing %s"
+msgstr "E1099: %s çalıştırılırken bilinmeyen hata"
+
+#, c-format
+msgid "E1101: Cannot declare a script variable in a function: %s"
+msgstr "E1101: Bir işlevde bir betik değişkeni tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1102: Lambda function not found: %s"
+msgstr "E1102: Lambda işlevi bulunamadı: %s"
+
+msgid "E1103: Dictionary not set"
+msgstr "E1103: Sözlük ayarlanmamış"
+
+msgid "E1104: Missing >"
+msgstr "E1104: > eksik"
+
+#, c-format
+msgid "E1105: Cannot convert %s to string"
+msgstr "E1105: %s bir diziye dönüştürülemiyor"
+
+msgid "E1106: One argument too many"
+msgstr "E1106: Bir değişken fazladan"
+
+#, c-format
+msgid "E1106: %d arguments too many"
+msgstr "E1106: %d değişken fazladan"
+
+msgid "E1107: String, List, Dict or Blob required"
+msgstr "E1107: Dizi, Liste, Sözlük veya İkili Nesne gerekiyor"
+
+#, c-format
+msgid "E1108: Item not found: %s"
+msgstr "E1108: Öge bulunamadı: %s"
+
+#, c-format
+msgid "E1109: List item %d is not a List"
+msgstr "E1109: Liste ögesi %d bir Liste değil"
+
+#, c-format
+msgid "E1110: List item %d does not contain 3 numbers"
+msgstr "E1110: Liste ögesi %d 3 sayı içermiyor"
+
+#, c-format
+msgid "E1111: List item %d range invalid"
+msgstr "E1111: Liste ögesi %d erimi geçersiz"
+
+#, c-format
+msgid "E1112: List item %d cell width invalid"
+msgstr "E1112: Liste ögesi %d hücre genişliği geçersiz"
+
+#, c-format
+msgid "E1113: Overlapping ranges for 0x%lx"
+msgstr "E1113: 0x%lx için üst üste binen erimler"
+
+msgid "E1114: Only values of 0x100 and higher supported"
+msgstr "E1114: Yalnızca 0x100 ve daha yüksek değerler destekleniyor"
+
+msgid "E1115: \"assert_fails()\" fourth argument must be a number"
+msgstr "E1115: \"assert_fails()\" dördüncü değişkeni bir sayı olmalıdır"
+
+msgid "E1116: \"assert_fails()\" fifth argument must be a string"
+msgstr "E1116: \"assert_fails()\" beşinci değişkeni bir dizi olmalıdır"
+
+msgid "E1117: Cannot use ! with nested :def"
+msgstr "E1117: !, iç içe geçmiş :def ile kullanılamaz"
+
+msgid "E1118: Cannot change list"
+msgstr "E1118: Liste değiştirilemez"
+
+msgid "E1119: Cannot change list item"
+msgstr "E1119: Liste ögesi değiştirilemez"
+
+msgid "E1120: Cannot change dict"
+msgstr "E1120: Sözlük değiştirilemez"
+
+msgid "E1121: Cannot change dict item"
+msgstr "E1121: Sözlük ögesi değiştirilemez"
+
+#, c-format
+msgid "E1122: Variable is locked: %s"
+msgstr "E1122: Değişken kilitli: %s"
+
+#, c-format
+msgid "E1123: Missing comma before argument: %s"
+msgstr "E1123: Değişken öncesi virgül eksik: %s"
+
+#, c-format
+msgid "E1124: \"%s\" cannot be used in legacy Vim script"
+msgstr "E1124: \"%s\" yalnızca eski Vim betiklerinde kullanılabilir"
+
+msgid "E1125: Final requires a value"
+msgstr "E1125: Final, bir değer gerektirir"
+
+msgid "E1126: Cannot use :let in Vim9 script"
+msgstr "E1126: :let, Vim9 betiğinde kullanılamaz"
+
+msgid "E1127: Missing name after dot"
+msgstr "E1127: Nokta sonrası ad eksik"
+
+msgid "E1128: } without {"
+msgstr "E1128: { olmadan }"
+
+msgid "E1129: Throw with empty string"
+msgstr "E1129: Boş dizi ile \"Throw\""
+
+msgid "E1130: Cannot add to null list"
+msgstr "E1130: Null listesine bir öge eklenemez"
+
+msgid "E1131: Cannot add to null blob"
+msgstr "E1131: Null ikili geniş nesnesine ekleme yapılamaz"
+
+msgid "E1132: Missing function argument"
+msgstr "E1132: İşlev değişkeni eksik"
+
+msgid "E1133: Cannot extend a null dict"
+msgstr "E1133: Bir null sözlük genişletilemez"
+
+msgid "E1134: Cannot extend a null list"
+msgstr "E1134: Bir null listesi genişletilemez"
+
+#, c-format
+msgid "E1135: Using a String as a Bool: \"%s\""
+msgstr "E1135: Bir Dizi, bir Boole yerine kullanılıyor: \"%s\""
+
+msgid "E1135: <Cmd> mapping must end with <CR>"
+msgstr "E1135: <Cmd> eşlemlemesi <CR> ile bitmelidir"
+
+msgid "E1136: <Cmd> mapping must end with <CR> before second <Cmd>"
+msgstr "E1136: <Cmd> eşlemlemesi ikinci <Cmd>'den önce <CR> ile bitmelidir"
+
+#, c-format
+msgid "E1137: <Cmd> mapping must not include %s key"
+msgstr "E1137: <Cmd> eşlemlemesi %s anahtarını içermemelidir"
+
+msgid "E1138: Using a Bool as a Number"
+msgstr "E1138: Bir Boole, Sayı yerine kullanılıyor"
+
+msgid "E1139: Missing matching bracket after dict key"
+msgstr "E1139: Sözlük anahtarı sonrası eşleşen ayraç eksik"
+
+msgid "E1140: For argument must be a sequence of lists"
+msgstr "E1140: For değişkeni listelerin bir sıralaması olmalıdır"
+
+msgid "E1141: Indexable type required"
+msgstr "E1141: İndekslenebilir tür gerekiyor"
+
+msgid "--No lines in buffer--"
+msgstr "--Arabellek içinde satır yok--"
+
+msgid "E470: Command aborted"
+msgstr "E470: Komut durduruldu"
+
+msgid "E471: Argument required"
+msgstr "E471: Değişken gerekiyor"
+
+msgid "E10: \\ should be followed by /, ? or &"
+msgstr "E10: \\ sonrasında /, ? veya & gelmeli"
+
+msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits"
+msgstr "E11: Komut satırı penceresinde geçersiz; <CR> çalıştırır, CTRL-C çıkar"
+
+msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search"
+msgstr ""
+"E12: Geçerli dizin veya etiket aramasında exrc veya vimrc'den komutlara izin "
+"verilmiyor"
+
+msgid "E171: Missing :endif"
+msgstr "E171: :endif eksik"
+
+msgid "E603: :catch without :try"
+msgstr "E603: :try olmadan :catch"
+
+msgid "E606: :finally without :try"
+msgstr "E606: :try olmadan :finally"
+
+msgid "E607: multiple :finally"
+msgstr "E607: Birden fazla :finally"
+
+msgid "E600: Missing :endtry"
+msgstr "E600: :endtry eksik"
+
+msgid "E602: :endtry without :try"
+msgstr "E602: :try olmadan :endtry"
+
+msgid "E170: Missing :endwhile"
+msgstr "E170: :endwhile eksik"
+
+msgid "E170: Missing :endfor"
+msgstr "E170: :endfor eksik"
+
+msgid "E588: :endwhile without :while"
+msgstr "E588: :while olmadan :endwhile"
+
+msgid "E588: :endfor without :for"
+msgstr "E588: :for olmadan :endfor"
+
+msgid "E13: File exists (add ! to override)"
+msgstr "E13: Dosya mevcut (geçersiz kılmak için ! ekleyin)"
+
+msgid "E472: Command failed"
+msgstr "E472: Komut başarısız oldu"
+
+#, c-format
+msgid "E234: Unknown fontset: %s"
+msgstr "E234: Bilinmeyen yazıtipi seti: %s"
+
+#, c-format
+msgid "E235: Unknown font: %s"
+msgstr "E235: Bilinmeyen yazıtipi: %s"
+
+#, c-format
+msgid "E236: Font \"%s\" is not fixed-width"
+msgstr "E236: \"%s\" yazıtipi sabit genişlikli değil"
+
+msgid "E473: Internal error"
+msgstr "E473: İç hata"
+
+#, c-format
+msgid "E685: Internal error: %s"
+msgstr "E685: İç hata: %s"
+
+msgid "Interrupted"
+msgstr "Yarıda kesildi"
+
+msgid "E474: Invalid argument"
+msgstr "E474: Geçersiz değişken"
+
+#, c-format
+msgid "E475: Invalid argument: %s"
+msgstr "E475: Geçersiz değişken: %s"
+
+#, c-format
+msgid "E983: Duplicate argument: %s"
+msgstr "E983: Yinelenen değişken: %s"
+
+#, c-format
+msgid "E475: Invalid value for argument %s"
+msgstr "E475: %s değişkeni için geçersiz değer"
+
+#, c-format
+msgid "E475: Invalid value for argument %s: %s"
+msgstr "E475: %s değişkeni için geçersiz değer: %s"
+
+#, c-format
+msgid "E15: Invalid expression: %s"
+msgstr "E15: Geçersiz ifade: %s"
+
+msgid "E16: Invalid range"
+msgstr "E16: Geçersiz erim"
+
+#, c-format
+msgid "E17: \"%s\" is a directory"
+msgstr "E17: \"%s\" bir dizin"
+
+msgid "E756: Spell checking is not possible"
+msgstr "E756: Yazım denetimi olanaklı değil"
+
+#, c-format
+msgid "E364: Library call failed for \"%s()\""
+msgstr "E364: \"%s()\" için kitaplık çağrısı başarısız oldu"
+
+msgid "E667: Fsync failed"
+msgstr "E667: Fsync başarısız oldu"
+
+#, c-format
+msgid "E448: Could not load library function %s"
+msgstr "E448: %s kitaplık işlevi yüklenemedi"
+
+msgid "E19: Mark has invalid line number"
+msgstr "E19: İm satır numarası geçersiz"
+
+msgid "E20: Mark not set"
+msgstr "E20: İm ayarlanmamış"
+
+msgid "E21: Cannot make changes, 'modifiable' is off"
+msgstr "E21: Değişiklik yapılamıyor, 'modifiable' kapalı"
+
+msgid "E22: Scripts nested too deep"
+msgstr "E22: Betikler çok iç içe geçmiş"
+
+msgid "E23: No alternate file"
+msgstr "E23: Başka bir dosya yok"
+
+msgid "E24: No such abbreviation"
+msgstr "E24: Böyle bir kısaltma yok"
+
+msgid "E477: No ! allowed"
+msgstr "E477: ! imine izin verilmiyor"
+
+msgid "E25: GUI cannot be used: Not enabled at compile time"
+msgstr "E25: Grafik arabirim kullanılamaz: Derlenirken etkinleştirilmemiş"
+
+msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
+msgstr "E26: İbranca kullanılamaz: Derlenirken etkinleştirilmemiş\n"
+
+msgid "E27: Farsi support has been removed\n"
+msgstr "E27: Farsça desteği kaldırıldı\n"
+
+msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
+msgstr "E800: Arapça kullanılamaz: Derlenirken etkinleştirilmemiş\n"
+
+#, c-format
+msgid "E28: No such highlight group name: %s"
+msgstr "E28: Böyle bir vurgulama grup adı yok: %s"
+
+msgid "E29: No inserted text yet"
+msgstr "E29: Henüz bir metin eklenmedi"
+
+msgid "E30: No previous command line"
+msgstr "E30: Öncesinde komut satırı yok"
+
+msgid "E31: No such mapping"
+msgstr "E31: Böyle bir eşlem yok"
+
+msgid "E479: No match"
+msgstr "E479: Eşleşme yok"
+
+#, c-format
+msgid "E480: No match: %s"
+msgstr "E480: Eşleşme yok: %s"
+
+msgid "E32: No file name"
+msgstr "E32: Dosya adı yok"
+
+msgid "E33: No previous substitute regular expression"
+msgstr "E33: Öncesinde yerine geçen bir düzenli ifade yok"
+
+msgid "E34: No previous command"
+msgstr "E34: Öncesinde komut yok"
+
+msgid "E35: No previous regular expression"
+msgstr "E35: Öncesinde düzenli ifade yok"
+
+msgid "E481: No range allowed"
+msgstr "E481: Erime izin verilmiyor"
+
+msgid "E36: Not enough room"
+msgstr "E36: Yeterli alan yok"
+
+#, c-format
+msgid "E247: no registered server named \"%s\""
+msgstr "E247: \"%s\" adlı kayıtlı bir sunucu yok"
+
+#, c-format
+msgid "E482: Can't create file %s"
+msgstr "E482: %s dosyası oluşturulamıyor"
+
+msgid "E483: Can't get temp file name"
+msgstr "E483: Geçici dosya adı alınamıyor"
+
+#, c-format
+msgid "E484: Can't open file %s"
+msgstr "E484: %s dosyası açılamıyor"
+
+#, c-format
+msgid "E485: Can't read file %s"
+msgstr "E485: %s dosyası okunamıyor"
+
+msgid "E38: Null argument"
+msgstr "E38: Anlamsız değişken"
+
+msgid "E39: Number expected"
+msgstr "E39: Sayı bekleniyordu"
+
+#, c-format
+msgid "E40: Can't open errorfile %s"
+msgstr "E40: Hata dosyası %s açılamıyor"
+
+msgid "E233: cannot open display"
+msgstr "E233: Görüntü açılamıyor"
+
+msgid "E41: Out of memory!"
+msgstr "E41: Bellek yetersiz!"
+
+msgid "Pattern not found"
+msgstr "Dizgi bulunamadı"
+
+#, c-format
+msgid "E486: Pattern not found: %s"
+msgstr "E486: Dizgi bulunamadı: %s"
+
+msgid "E487: Argument must be positive"
+msgstr "E487: Değişken pozitif olmalı"
+
+msgid "E459: Cannot go back to previous directory"
+msgstr "E459: Bir önceki dizine gidilemiyor"
+
+msgid "E42: No Errors"
+msgstr "E42: Hata yok"
+
+msgid "E776: No location list"
+msgstr "E776: Konum listesi yok"
+
+msgid "E43: Damaged match string"
+msgstr "E43: Hasarlı eşleşme dizisi"
+
+msgid "E44: Corrupted regexp program"
+msgstr "E44: Bozulmuş regexp programı"
+
+msgid "E45: 'readonly' option is set (add ! to override)"
+msgstr "E45: 'readonly' seçeneği ayarlanmış (geçersiz kılmak için ! ekleyin)"
+
+#, c-format
+msgid "E734: Wrong variable type for %s="
+msgstr "E734: %s= için yanlış değişken türü"
+
+#, c-format
+msgid "E461: Illegal variable name: %s"
+msgstr "E461: İzin verilmeyen değişken adı: %s"
+
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: Mevcut değişken değiştirilemiyor"
+
+#, c-format
+msgid "E46: Cannot change read-only variable \"%s\""
+msgstr "E46: Salt okunur değişken \"%s\" değiştirilemiyor"
+
+#, c-format
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: Değişken kum havuzunda ayarlanamıyor: \"%s\""
+
+msgid "E928: String required"
+msgstr "E928: Dizi gerekiyor"
+
+msgid "E713: Cannot use empty key for Dictionary"
+msgstr "E713: Sözlük için boş anahtar kullanılamaz"
+
+msgid "E715: Dictionary required"
+msgstr "E715: Sözlük gerekiyor"
+
+#, c-format
+msgid "E684: list index out of range: %ld"
+msgstr "E684: Liste sırası erimin dışında: %ld"
+
+#, c-format
+msgid "E979: Blob index out of range: %ld"
+msgstr "E979: İkili geniş nesne sırası erimin dışında: %ld"
+
+msgid "E978: Invalid operation for Blob"
+msgstr "E978: İkili geniş nesne için geçersiz işlem"
+
+#, c-format
+msgid "E118: Too many arguments for function: %s"
+msgstr "E118: İşlev için çok fazla değişken: %s"
+
+#, c-format
+msgid "E119: Not enough arguments for function: %s"
+msgstr "E119: Şu işlev için yetersiz sayıda değişken: %s"
+
+#, c-format
+msgid "E933: Function was deleted: %s"
+msgstr "E933: İşlev silinmiş: %s"
+
+#, c-format
+msgid "E716: Key not present in Dictionary: \"%s\""
+msgstr "E716: Anahtar sözlükte mevcut değil: \"%s\""
+
+msgid "E714: List required"
+msgstr "E714: Liste gerekiyor"
+
+msgid "E897: List or Blob required"
+msgstr "E897: Liste veya ikili geniş nesne gerekiyor"
+
+#, c-format
+msgid "E697: Missing end of List ']': %s"
+msgstr "E697: Liste sonunda ']' eksik: %s"
+
+#, c-format
+msgid "E712: Argument of %s must be a List or Dictionary"
+msgstr "E712: %s ögesinin değişkeni bir liste veya sözlük olmalıdır"
+
+#, c-format
+msgid "E896: Argument of %s must be a List, Dictionary or Blob"
+msgstr "E896: %s değişkeni bir liste, sözlük veya ikili geniş nesne olmalıdır"
+
+msgid "E804: Cannot use '%' with Float"
+msgstr "E804: Bir kayan noktalı değer ile '%' kullanılamaz"
+
+msgid "E908: using an invalid value as a String"
+msgstr "E908: Geçersiz bir değer bir Dizi yerine kullanılıyor"
+
+msgid "E996: Cannot lock an option"
+msgstr "E996: Seçenek kilitlenemiyor"
+
+#, c-format
+msgid "E113: Unknown option: %s"
+msgstr "E113: Bilinmeyen seçenek: %s"
+
+msgid "E18: Unexpected characters in :let"
+msgstr "E18: :let içinde beklenmeyen karakter"
+
+#, c-format
+msgid "E998: Reduce of an empty %s with no initial value"
+msgstr "E998: Başlangıç değeri olmayan boş bir %s için reduce() yapılamıyor"
+
+#, c-format
+msgid "E857: Dictionary key \"%s\" required"
+msgstr "E857: Sözlük anahtarı \"%s\" gerekiyor"
+
+msgid "E47: Error while reading errorfile"
+msgstr "E47: Hata dosyası okunurken hata"
+
+msgid "E48: Not allowed in sandbox"
+msgstr "E48: Kum havuzunda izin verilmiyor"
+
+msgid "E523: Not allowed here"
+msgstr "E523: Burada izin verilmiyor"
+
+msgid "E578: Not allowed to change text here"
+msgstr "E578: Burada metin değişikliğine izin verilmiyor"
+
+msgid "E565: Not allowed to change text or change window"
+msgstr "E565: Pencere veya metin değişikliğine izin verilmiyor"
+
+msgid "E359: Screen mode setting not supported"
+msgstr "E359: Ekran kipi ayarı desteklenmiyor"
+
+msgid "E49: Invalid scroll size"
+msgstr "E49: Geçersiz kaydırma boyutu"
+
+msgid "E91: 'shell' option is empty"
+msgstr "E91: 'shell' seçeneği boş"
+
+msgid "E255: Couldn't read in sign data!"
+msgstr "E255: İşaret verisi okunamadı!"
+
+msgid "E72: Close error on swap file"
+msgstr "E72: Takas dosyasında kapama hatası"
+
+msgid "E73: tag stack empty"
+msgstr "E73: Etiket yığını boş"
+
+msgid "E74: Command too complex"
+msgstr "E74: Komut çok karmaşık"
+
+msgid "E75: Name too long"
+msgstr "E75: Ad çok uzun"
+
+msgid "E76: Too many ["
+msgstr "E76: Çok fazla ["
+
+msgid "E77: Too many file names"
+msgstr "E77: Çok fazla dosya adı"
+
+msgid "E488: Trailing characters"
+msgstr "E488: Sonda fazladan karakterler"
+
+#, c-format
+msgid "E488: Trailing characters: %s"
+msgstr "E488: Sonda fazladan karakterler: %s"
+
+msgid "E78: Unknown mark"
+msgstr "E78: Bilinmeyen im"
+
+msgid "E79: Cannot expand wildcards"
+msgstr "E79: Joker karakterleri genişletilemiyor"
+
+msgid "E591: 'winheight' cannot be smaller than 'winminheight'"
+msgstr "E591: 'winheight' değeri 'winminheight' değerinden küçük olamaz"
+
+msgid "E592: 'winwidth' cannot be smaller than 'winminwidth'"
+msgstr "E592: 'winwidth' değeri 'winminwidth' değerinden küçük olamaz"
+
+msgid "E80: Error while writing"
+msgstr "E80: Yazma sırasında hata"
+
+msgid "E939: Positive count required"
+msgstr "E939: Pozitif sayım gerekiyor"
+
+msgid "E81: Using <SID> not in a script context"
+msgstr "E81: <SID> bir betik bağlamında kullanılmıyor"
+
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: Ayraç eksik: %s"
+
+msgid "E110: Missing ')'"
+msgstr "E110: ')' eksik"
+
+#, c-format
+msgid "E720: Missing colon in Dictionary: %s"
+msgstr "E720: Sözlükte iki nokta eksik: %s"
+
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: Sözlükte yinelenmiş anahtar: \"%s\""
+
+#, c-format
+msgid "E722: Missing comma in Dictionary: %s"
+msgstr "E722: Sözlükte virgül eksik: %s"
+
+#, c-format
+msgid "E723: Missing end of Dictionary '}': %s"
+msgstr "E723: Sözlük sonu '}' eksik: %s"
+
+msgid "E449: Invalid expression received"
+msgstr "E449: Geçersiz ifade alındı"
+
+msgid "E463: Region is guarded, cannot modify"
+msgstr "E463: Bölge korunuyor, değiştirilemez"
+
+msgid "E744: NetBeans does not allow changes in read-only files"
+msgstr "E744: NetBeans salt okunur dosyalarda değişikliklere izin vermiyor"
+
+msgid "E363: pattern uses more memory than 'maxmempattern'"
+msgstr "E363: Dizgi 'maxmempattern' ögesinden daha fazla bellek kullanıyor"
+
+msgid "E749: empty buffer"
+msgstr "E749: Boş arabellek"
+
+#, c-format
+msgid "E86: Buffer %ld does not exist"
+msgstr "E86: Arabellek %ld mevcut değil"
+
+msgid "E682: Invalid search pattern or delimiter"
+msgstr "E682: Geçersiz arama dizgisi veya sınırlandırıcısı"
+
+msgid "E139: File is loaded in another buffer"
+msgstr "E139: Dosya başka bir arabellekte yüklü"
+
+#, c-format
+msgid "E764: Option '%s' is not set"
+msgstr "E764: '%s' seçeneği ayarlanmamış"
+
+msgid "E850: Invalid register name"
+msgstr "E850: Geçersiz yazmaç adı"
+
+msgid "E806: using Float as a String"
+msgstr "E806: Kayan Noktalı Değer, bir Dizi yerine kullanılıyor"
+
+#, c-format
+msgid "E919: Directory not found in '%s': \"%s\""
+msgstr "E919: '%s' içinde dizin bulunamadı: \"%s\""
+
+msgid "E952: Autocommand caused recursive behavior"
+msgstr "E952: Otokomut özyineli davranışa neden oldu"
+
+msgid "E813: Cannot close autocmd or popup window"
+msgstr "E813: Otokomut veya açılır pencere kapatılamıyor"
+
+msgid "E328: Menu only exists in another mode"
+msgstr "E328: Menü yalnızca başka bir kipte mevcut"
+
+msgid "E957: Invalid window number"
+msgstr "E957: Geçersiz pencere numarası"
+
+#, c-format
+msgid "E686: Argument of %s must be a List"
+msgstr "E686: %s değişkeni bir liste olmalı"
+
+msgid "E109: Missing ':' after '?'"
+msgstr "E109: '?' sonrası ':' eksik"
+
+msgid "E690: Missing \"in\" after :for"
+msgstr "E690: :for sonrası \"in\" eksik"
+
+#, c-format
+msgid "E117: Unknown function: %s"
+msgstr "E117: Bilinmeyen işlev: %s"
+
+msgid "E111: Missing ']'"
+msgstr "E111: ']' eksik"
+
+msgid "E581: :else without :if"
+msgstr "E581: :if olmadan :else"
+
+msgid "E582: :elseif without :if"
+msgstr "E582: :if olmadan :elseif"
+
+msgid "E580: :endif without :if"
+msgstr "E580: :if olmadan :endif"
+
+msgid "E586: :continue without :while or :for"
+msgstr "E586: :while veya :for olmadan :continue"
+
+msgid "E587: :break without :while or :for"
+msgstr "E587: :while veya :for olmadan :break"
+
+msgid "E274: No white space allowed before parenthesis"
+msgstr "E274: Ayraçtan önce boşluğa izin verilmiyor"
+
+#, c-format
+msgid "E940: Cannot lock or unlock variable %s"
+msgstr "E940: Değişken %s kilitlenemiyor veya açılamıyor"
+
+#, c-format
+msgid "E254: Cannot allocate color %s"
+msgstr "E254: %s rengi ayrılamıyor"
+
+msgid "search hit TOP, continuing at BOTTOM"
+msgstr "Arama dosyanın BAŞINI geçti, dosyanın SONUNDAN sürüyor"
+
+msgid "search hit BOTTOM, continuing at TOP"
+msgstr "Arama dosyanın SONUNU geçti, dosyanın BAŞINDAN sürüyor"
+
+msgid " line "
+msgstr " satır "
+
+#, c-format
+msgid "Need encryption key for \"%s\""
+msgstr "\"%s\" için şifreleme anahtarı gerekli"
+
+msgid "empty keys are not allowed"
+msgstr "boş anahtarlara izin verilmiyor"
+
+msgid "dictionary is locked"
+msgstr "sözlük kilitli"
+
+msgid "list is locked"
+msgstr "liste kilitli"
+
+#, c-format
+msgid "failed to add key '%s' to dictionary"
+msgstr "'%s' anahtarı sözlüğe eklenemedi"
+
+#, c-format
+msgid "index must be int or slice, not %s"
+msgstr "dizin bir tamsayı veya dilim olmalıdır, %s olamaz"
+
+#, c-format
+msgid "expected str() or unicode() instance, but got %s"
+msgstr "str() veya unicode() örneği bekleniyordu, %s geldi"
+
+#, c-format
+msgid "expected bytes() or str() instance, but got %s"
+msgstr "bytes() veya str() örneği bekleniyordu, %s geldi"
+
+#, c-format
+msgid ""
+"expected int(), long() or something supporting coercing to long(), but got %s"
+msgstr ""
+"int(), long() veya long()'a baskıyı destekleyen bir şey bekleniyordu, %s "
+"geldi"
+
+#, c-format
+msgid "expected int() or something supporting coercing to int(), but got %s"
+msgstr "int() veya int()'e baskıyı destekleyen bir şey bekleniyordu, %s geldi"
+
+msgid "value is too large to fit into C int type"
+msgstr "değer C tamsayı türüne sığmak için çok büyük"
+
+msgid "value is too small to fit into C int type"
+msgstr "değer C tamsayı türüne sığmak için çok küçük"
+
+msgid "number must be greater than zero"
+msgstr "sayı sıfırdan büyük olmalı"
+
+msgid "number must be greater or equal to zero"
+msgstr "sayı sıfıra eşit veya sıfırdan büyük olmalı"
+
+msgid "can't delete OutputObject attributes"
+msgstr "OutputObject öznitelikleri silinemiyor"
+
+#, c-format
+msgid "invalid attribute: %s"
+msgstr "geçersiz öznitelik: %s"
+
+msgid "E264: Python: Error initialising I/O objects"
+msgstr "E264: Python: Girdi/Çıktı nesneleri başlatılırken hata"
+
+msgid "failed to change directory"
+msgstr "dizin değiştirilemedi"
+
+#, c-format
+msgid "expected 3-tuple as imp.find_module() result, but got %s"
+msgstr "imp.find_module() sonucu olarak 3 çoklu öge bekleniyordu, %s geldi"
+
+#, c-format
+msgid "expected 3-tuple as imp.find_module() result, but got tuple of size %d"
+msgstr ""
+"imp.find_module() sonucu olarak 3 tuple bekleniyordu, %d boyutlu çok öge "
+"geldi"
+
+msgid "internal error: imp.find_module returned tuple with NULL"
+msgstr "iç hata: imp.find_module BOŞ bir çoklu öge döndürdü"
+
+msgid "cannot delete vim.Dictionary attributes"
+msgstr "vim.Dictionary öznitelikleri silinemiyor"
+
+msgid "cannot modify fixed dictionary"
+msgstr "sabit sözlük değiştirilemiyor"
+
+#, c-format
+msgid "cannot set attribute %s"
+msgstr "%s özniteliği ayarlanamıyor"
+
+msgid "hashtab changed during iteration"
+msgstr "Sağlama tablosu dürüm sırasında değişti"
+
+#, c-format
+msgid "expected sequence element of size 2, but got sequence of size %d"
+msgstr "2 boyut bir sıralama bekleniyordu, ancak %d boyut bir sıralama geldi"
+
+msgid "list constructor does not accept keyword arguments"
+msgstr "liste yapıcısı anahtar sözcük değişkenleri kabul etmez"
+
+msgid "list index out of range"
+msgstr "liste dizini erimin dışında"
+
+#, c-format
+msgid "internal error: failed to get Vim list item %d"
+msgstr "iç hata: %d vim liste ögesi alınamadı"
+
+msgid "slice step cannot be zero"
+msgstr "dilim adımı sıfır olamaz"
+
+#, c-format
+msgid "attempt to assign sequence of size greater than %d to extended slice"
+msgstr "genişletilmiş dilime %d boyuttan büyük bir sıralamayı atama denemesi"
+
+#, c-format
+msgid "internal error: no Vim list item %d"
+msgstr "iç hata: %d vim liste ögesi yok"
+
+msgid "internal error: not enough list items"
+msgstr "iç hata: yeterli liste ögesi yok"
+
+msgid "internal error: failed to add item to list"
+msgstr "iç hata: öge listeye eklenemedi"
+
+#, c-format
+msgid "attempt to assign sequence of size %d to extended slice of size %d"
+msgstr "%d boyut sıralamayı %d boyut genişletilmiş dizine atama denemesi"
+
+msgid "failed to add item to list"
+msgstr "öge listeye eklenemedi"
+
+msgid "cannot delete vim.List attributes"
+msgstr "vim.List öznitelikleri silinemiyor"
+
+msgid "cannot modify fixed list"
+msgstr "sabit liste değiştirilemiyor"
+
+#, c-format
+msgid "unnamed function %s does not exist"
+msgstr "adsız %s işlevi mevcut değil"
+
+#, c-format
+msgid "function %s does not exist"
+msgstr "%s işlevi mevcut değil"
+
+#, c-format
+msgid "failed to run function %s"
+msgstr "%s işlevi çalıştırılamadı"
+
+msgid "unable to get option value"
+msgstr "seçenek değeri alınamadı"
+
+msgid "internal error: unknown option type"
+msgstr "iç hata: bilinmeyen seçenek türü"
+
+msgid "problem while switching windows"
+msgstr "pencereler arasında gezinirken hata"
+
+#, c-format
+msgid "unable to unset global option %s"
+msgstr "%s global seçenek ayarı kapatılamıyor"
+
+#, c-format
+msgid "unable to unset option %s which does not have global value"
+msgstr "global değeri olmayan %s seçenek ayarı kapatılamıyor"
+
+msgid "attempt to refer to deleted tab page"
+msgstr "silinmiş sekme sayfasına başvurma denemesi"
+
+msgid "no such tab page"
+msgstr "böyle bir sekme sayfası yok"
+
+msgid "attempt to refer to deleted window"
+msgstr "silinmiş pencereye başvurma denemesi"
+
+msgid "readonly attribute: buffer"
+msgstr "saltokunur öznitelik: arabellek"
+
+msgid "cursor position outside buffer"
+msgstr "imleç konumu arabelleğin dışında"
+
+msgid "no such window"
+msgstr "böyle bir pencere yok"
+
+msgid "attempt to refer to deleted buffer"
+msgstr "silinmiş arabelleğe başvurma denemesi"
+
+msgid "failed to rename buffer"
+msgstr "arabellek adı değiştirilemedi"
+
+msgid "mark name must be a single character"
+msgstr "im adı tek bir karakterden olmalıdır"
+
+#, c-format
+msgid "expected vim.Buffer object, but got %s"
+msgstr "vim.Buffer nesnesi bekleniyordu, %s geldi"
+
+#, c-format
+msgid "failed to switch to buffer %d"
+msgstr "%d arabelleğine geçilemedi"
+
+#, c-format
+msgid "expected vim.Window object, but got %s"
+msgstr "vim.Window nesnesi bekleniyordu, %s geldi"
+
+msgid "failed to find window in the current tab page"
+msgstr "mevcut sekme sayfasında pencere bulunamadı"
+
+msgid "did not switch to the specified window"
+msgstr "belirtilen pencereye geçilemedi"
+
+#, c-format
+msgid "expected vim.TabPage object, but got %s"
+msgstr "vim.TabPage nesnesi bekleniyordu, %s geldi"
+
+msgid "did not switch to the specified tab page"
+msgstr "belirtilen sekme sayfasına geçilemedi"
+
+msgid "failed to run the code"
+msgstr "kod çalıştırılamadı"
+
+msgid "E858: Eval did not return a valid python object"
+msgstr "E858: Eval geçerli bir python nesnesi döndürmedi"
+
+msgid "E859: Failed to convert returned python object to a Vim value"
+msgstr "E859: Döndürülen python nesnesi vim değerine dönüştürülemedi"
+
+#, c-format
+msgid "unable to convert %s to a Vim dictionary"
+msgstr "%s vim sözlüğüne dönüştürülemedi"
+
+#, c-format
+msgid "unable to convert %s to a Vim list"
+msgstr "%s vim listesine dönüştürülemedi"
+
+#, c-format
+msgid "unable to convert %s to a Vim structure"
+msgstr "%s vim yapısına dönüştürülemedi"
+
+msgid "internal error: NULL reference passed"
+msgstr "iç hata: BOŞ başvuru geçirildi"
+
+msgid "internal error: invalid value type"
+msgstr "iç hata: geçersiz değer türü"
+
+msgid ""
+"Failed to set path hook: sys.path_hooks is not a list\n"
+"You should now do the following:\n"
+"- append vim.path_hook to sys.path_hooks\n"
+"- append vim.VIM_SPECIAL_PATH to sys.path\n"
+msgstr ""
+"Yol kancası ayarlanamadı: sys.path_hooks bir liste değil\n"
+"Şimdi şunları yapmanız gerekiyor:\n"
+"- vim.path_hook'u sys.path_hooks'a iliştirmek\n"
+"- vim.VIM_SPECIAL_PATH'i sys.path'e iliştirmek\n"
+
+msgid ""
+"Failed to set path: sys.path is not a list\n"
+"You should now append vim.VIM_SPECIAL_PATH to sys.path"
+msgstr ""
+"Yol ayarlanamadı: sys.path bir liste değil\n"
+"Şimdi vim.VIM_SPECIAL_PATH'i sys.path'e iliştirmelisiniz"
+
+msgid ""
+"Vim macro files (*.vim)\t*.vim\n"
+"All Files (*.*)\t*.*\n"
+msgstr ""
+"Vim makro dosyaları (*.vim)\t*.vim\n"
+"Tüm Dosyalar (*.*)\t*.*\n"
+
+msgid "All Files (*.*)\t*.*\n"
+msgstr "Tüm Dosyalar (*.*)\t*.*\n"
+
+msgid ""
+"All Files (*.*)\t*.*\n"
+"C source (*.c, *.h)\t*.c;*.h\n"
+"C++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
+"VB code (*.bas, *.frm)\t*.bas;*.frm\n"
+"Vim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
+msgstr ""
+"Tüm Dosyalar (*.*)\t*.*\n"
+"C kaynak dosyaları (*.c, *.h)\t*.c;*.h\n"
+"C++ kaynak dosyaları (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
+"VB kodu (*.bas, *.frm)\t*.bas;*.frm\n"
+"Vim dosyaları (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
+
+msgid ""
+"Vim macro files (*.vim)\t*.vim\n"
+"All Files (*)\t*\n"
+msgstr ""
+"Vim makro dosyaları (*.vim)\t*.vim\n"
+"Tüm Dosyalar (*)\t*\n"
+
+msgid "All Files (*)\t*\n"
+msgstr "Tüm Dosyalar (*)\t*\n"
+
+msgid ""
+"All Files (*)\t*\n"
+"C source (*.c, *.h)\t*.c;*.h\n"
+"C++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
+"Vim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
+msgstr ""
+"Tüm Dosyalar (*)\t*\n"
+"C kaynak dosyaları (*.c, *.h)\t*.c;*.h\n"
+"C++ kaynak dosyaları (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
+"Vim dosyaları (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
+
+msgid "GVim"
+msgstr "GVim"
+
+msgid "Text Editor"
+msgstr "Metin Düzenleyici"
+
+msgid "Edit text files"
+msgstr "Metin dosyaları düzenleyin"
+
+msgid "Text;editor;"
+msgstr "Metin;düzenleyici;"
+
+msgid "Vim"
+msgstr "Vim"
+
+msgid "(local to window)"
+msgstr "(pencereye yerel)"
+
+msgid "(local to buffer)"
+msgstr "(arabelleğe yerel)"
+
+msgid "(global or local to buffer)"
+msgstr "(arabelleğe global veya yerel)"
+
+msgid ""
+"\" Each \"set\" line shows the current value of an option (on the left)."
+msgstr "\" Her \"set\" satırı bir seçeneğin geçerli değerini gösterir (solda)."
+
+msgid "\" Hit <Enter> on a \"set\" line to execute it."
+msgstr "\" Değiştirmek için bir \"set\" satırında <Enter>'a basın."
+
+msgid "\" A boolean option will be toggled."
+msgstr "\" Bir Boole değeri işletilecektir."
+
+msgid ""
+"\" For other options you can edit the value before hitting "
+"<Enter>."
+msgstr ""
+"\" Diğer seçenekler için <Enter>'a basmadan önce değeri "
+"düzenleyebilirsiniz."
+
+msgid "\" Hit <Enter> on a help line to open a help window on this option."
+msgstr ""
+"\" Yardım penceresini açmak için seçenek adı üzerinde <Enter>'a basın."
+
+msgid "\" Hit <Enter> on an index line to jump there."
+msgstr ""
+"\" Bir seçeneğe atlamak için indeks satırının üzerinde <Enter>'a basın."
+
+msgid "\" Hit <Space> on a \"set\" line to refresh it."
+msgstr ""
+"\" Bir seçeneği yenilemek için bir \"set\" satırının üzerinde <Boşluk>'a "
+"basın."
+
+msgid "important"
+msgstr "önemli"
+
+msgid "behave very Vi compatible (not advisable)"
+msgstr "olabildiğince Vi uyumlu biçimde davran (önerilmez)"
+
+msgid "list of flags to specify Vi compatibility"
+msgstr "Vi uyumluluğu bayrakları listesi"
+
+msgid "use Insert mode as the default mode"
+msgstr "Ekleme kipini öntanımlı kip olarak kullan"
+
+msgid "paste mode, insert typed text literally"
+msgstr "yapıştır kipi, girilen metni doğrudan ekle"
+
+msgid "key sequence to toggle paste mode"
+msgstr "yapıştır kipini açıp/kapatmak için düğme sıralaması"
+
+msgid "list of directories used for runtime files and plugins"
+msgstr "çalışma zamanı dosyaları ve eklentileri için kullanılan dizinler"
+
+msgid "list of directories used for plugin packages"
+msgstr "eklenti paketleri için kullanılan dizinlerin listesi"
+
+msgid "name of the main help file"
+msgstr "ana yardım dosyasının adı"
+
+msgid "moving around, searching and patterns"
+msgstr "dolaşma, arama ve dizgeler"
+
+msgid "list of flags specifying which commands wrap to another line"
+msgstr "hangi komutların diğer satıra kaydırıldığını belirleyen bayraklar\n"
+"listesi"
+
+msgid ""
+"many jump commands move the cursor to the first non-blank\n"
+"character of a line"
+msgstr ""
+"çoğu atlama komutu, imleci satırın boş olmayan ilk\n"
+"karakterine taşır"
+
+msgid "nroff macro names that separate paragraphs"
+msgstr "paragrafları ayıran nroff makro adları"
+
+msgid "nroff macro names that separate sections"
+msgstr "bölümleri ayıran nroff makro adları"
+
+msgid "list of directory names used for file searching"
+msgstr "dosya arama için kullanılan dizin adları listesi"
+
+msgid "list of directory names used for :cd"
+msgstr ":cd için kullanılan dizin adları listesi"
+
+msgid "change to directory of file in buffer"
+msgstr "arabellekteki dosyanın olduğu dizine değiştir"
+
+msgid "search commands wrap around the end of the buffer"
+msgstr "arama komutları, arabelleğin sonunda kaydırılır"
+
+msgid "show match for partly typed search command"
+msgstr "bir kısmı yazılmış arama komutu ile eşleşeni göster"
+
+msgid "change the way backslashes are used in search patterns"
+msgstr "arama dizgilerinde ters eğik çizginin kullanımını değiştir"
+
+msgid "select the default regexp engine used"
+msgstr "öntanımlı kullanılan düzenli ifade motorunu seç"
+
+msgid "ignore case when using a search pattern"
+msgstr "bir arama dizgisinde BÜYÜK/küçük harf ayrımını yok say"
+
+msgid "override 'ignorecase' when pattern has upper case characters"
+msgstr "dizgide BÜYÜK harf varsa 'ignorecase'i geçersiz kıl"
+
+msgid "what method to use for changing case of letters"
+msgstr "BÜYÜK/küçük harf değiştirirken hangi yöntemin kullanılacağı"
+
+msgid "maximum amount of memory in Kbyte used for pattern matching"
+msgstr "dizgi eşleşme için kullanılabilecek en çok bellek miktarı (KiB)"
+
+msgid "pattern for a macro definition line"
+msgstr "bir makro tanım satırı için dizgi"
+
+msgid "pattern for an include-file line"
+msgstr "bir 'include-file' satırı için dizgi"
+
+msgid "expression used to transform an include line to a file name"
+msgstr "bir 'include' satırını dosya adına dönüştürmede kullanılan ifade"
+
+msgid "tags"
+msgstr "etiketler"
+
+msgid "use binary searching in tags files"
+msgstr "etiketler dosyasında ikili arama kullan"
+
+msgid "number of significant characters in a tag name or zero"
+msgstr "bir etiket adındaki belirgin karakterlerin sayısı veya sıfır"
+
+msgid "list of file names to search for tags"
+msgstr "etiketlerin aranacağı dosyaların listesi"
+
+msgid ""
+"how to handle case when searching in tags files:\n"
+"\"followic\" to follow 'ignorecase', \"ignore\" or \"match\""
+msgstr ""
+"etiket dosyalarında arama yaparken BÜYÜK/küçük harf kullanımı:\n"
+"'ignorecase', \"ignore\" veya \"match\"den sonra \"followic\" gelir"
+
+msgid "file names in a tags file are relative to the tags file"
+msgstr "bir etiket dosyasındaki dosya adları etiket dosyasına görelidir"
+
+msgid "a :tag command will use the tagstack"
+msgstr "bir :tag komutu etiket yığınını kullanır"
+
+msgid "when completing tags in Insert mode show more info"
+msgstr "Ekleme kipinde etiketleri tamamlarken daha çok bilgi göster"
+
+msgid "a function to be used to perform tag searches"
+msgstr "etiket aramaları gerçekleştirmek için bir işlev kullanılır"
+
+msgid "command for executing cscope"
+msgstr "cscope çalıştırmak için kullanılacak komut"
+
+msgid "use cscope for tag commands"
+msgstr "etiket komutları için cscope kullan"
+
+msgid "0 or 1; the order in which \":cstag\" performs a search"
+msgstr "0 veya 1; \":cstag\"in arama yaparken kullanacağı sıra"
+
+msgid "give messages when adding a cscope database"
+msgstr "bir cscope veritabanı eklerken iletiler göster"
+
+msgid "how many components of the path to show"
+msgstr "yolun kaç tane bileşeninin gösterileceği"
+
+msgid "when to open a quickfix window for cscope"
+msgstr "cscope için ne zaman bir hızlı düzelt penceresinin açılacağı"
+
+msgid "file names in a cscope file are relative to that file"
+msgstr "bir cscope dosyasındaki o dosyaya göreli olan dosya adları"
+
+msgid "displaying text"
+msgstr "metin görüntüleme"
+
+msgid "number of lines to scroll for CTRL-U and CTRL-D"
+msgstr "CTRL-U ve CTRL-D için kaydırılacak satır sayısı"
+
+msgid "number of screen lines to show around the cursor"
+msgstr "imleç etrafında gösterilecek ekran satırları sayısı"
+
+msgid "long lines wrap"
+msgstr "uzun satırları kaydır"
+
+msgid "wrap long lines at a character in 'breakat'"
+msgstr "'breakat' içindeki bir karakterde uzun satırları kaydır"
+
+msgid "preserve indentation in wrapped text"
+msgstr "kaydırılmış metindeki girintilemeyi koru"
+
+msgid "adjust breakindent behaviour"
+msgstr "'breakindent' davranışını ayarla"
+
+msgid "which characters might cause a line break"
+msgstr "hangi karakterler bir satır sonuna neden olabilir"
+
+msgid "string to put before wrapped screen lines"
+msgstr "kaydırılmış ekran satırlarından önce konumlanacak dizi"
+
+msgid "minimal number of columns to scroll horizontally"
+msgstr "en az yatay kaydırma sütunu sayısı"
+
+msgid "minimal number of columns to keep left and right of the cursor"
+msgstr "imlecin sağında ve solunda bırakılacak en az sütun sayısı"
+
+msgid ""
+"include \"lastline\" to show the last line even if it doesn't fit\n"
+"include \"uhex\" to show unprintable characters as a hex number"
+msgstr ""
+"eğer sığmasa bile son satırı göstermek için \"lastline\"ı içer\n"
+"yazdırılamayan karakterleri onaltılık olarak göstermek için\n"
+"\"uhex\" içer"
+
+msgid "characters to use for the status line, folds and filler lines"
+msgstr "durum satırı, kıvırma ve doldurucular için kullanılan karakterler"
+
+msgid "number of lines used for the command-line"
+msgstr "komut satırı için kullanılan satırların sayısı"
+
+msgid "width of the display"
+msgstr "ekranın genişliği"
+
+msgid "number of lines in the display"
+msgstr "ekrandaki satırların sayısı"
+
+msgid "number of lines to scroll for CTRL-F and CTRL-B"
+msgstr "CTRL-F ve CTRL-B için kaydırılacak satır sayısı"
+
+msgid "don't redraw while executing macros"
+msgstr "makroları çalıştırırken yenileme yapma"
+
+msgid "timeout for 'hlsearch' and :match highlighting in msec"
+msgstr "'hlsearch' ve : match vurgulaması için zaman aşımı (milisaniye)"
+
+msgid ""
+"delay in msec for each char written to the display\n"
+"(for debugging)"
+msgstr ""
+"ekrana yazılan her karakter için gecikme süresi (milisaniye)\n"
+"(hata ayıklama için)"
+
+msgid "show <Tab> as ^I and end-of-line as $"
+msgstr "<Tab>'ı ^I ve satır sonunu $ olarak göster"
+
+msgid "list of strings used for list mode"
+msgstr "liste kipi için kullanılan diziler listesi"
+
+msgid "show the line number for each line"
+msgstr "her satır için satır numarasını göster"
+
+msgid "show the relative line number for each line"
+msgstr "her satır için göreli satır numarasını göster"
+
+msgid "number of columns to use for the line number"
+msgstr "satır numarası için kullanılacak sütün sayısı"
+
+msgid "controls whether concealable text is hidden"
+msgstr "gizlenebilir metnin saklı olup olmadığını denetler"
+
+msgid "modes in which text in the cursor line can be concealed"
+msgstr "imleç satırındaki metnin gizlenebileceği kipler"
+
+msgid "syntax, highlighting and spelling"
+msgstr "sözdizim, vurgulama ve yazım denetimi"
+
+msgid "\"dark\" or \"light\"; the background color brightness"
+msgstr "\"dark\" veya \"light\"; arka plan renk parlaklığı"
+
+msgid "type of file; triggers the FileType event when set"
+msgstr "dosya türü; ayarlandığında FileType olayını tetikler"
+
+msgid "name of syntax highlighting used"
+msgstr "kullanılan sözdizim vurgulamanın adı"
+
+msgid "maximum column to look for syntax items"
+msgstr "sözdizim ögeleri için bakılacak en çok sütun sayısı"
+
+msgid "which highlighting to use for various occasions"
+msgstr "çeşitli durumlarda hangi vurgulamanın kullanılacağı"
+
+msgid "highlight all matches for the last used search pattern"
+msgstr "son kullanılan arama dizgisi için tüm eşleşmeleri vurgula"
+
+msgid "highlight group to use for the window"
+msgstr "pencere için kullanılacak vurgulama grubu"
+
+msgid "use GUI colors for the terminal"
+msgstr "uçbirim için grafik arabirim renklerini kullan"
+
+msgid "highlight the screen column of the cursor"
+msgstr "imlecin ekrandaki sütununu vurgula"
+
+msgid "highlight the screen line of the cursor"
+msgstr "imlecin ekrandaki satırını vurgula"
+
+msgid "specifies which area 'cursorline' highlights"
+msgstr "'cursorline'ın hangi alanı vurgulayacağı"
+
+msgid "columns to highlight"
+msgstr "vurgulanacak sütunlar"
+
+msgid "highlight spelling mistakes"
+msgstr "yazım yanlışlarını vurgula"
+
+msgid "list of accepted languages"
+msgstr "kabul edilen dillerin listesi"
+
+msgid "file that \"zg\" adds good words to"
+msgstr "\"zg\" komutunun düzgün sözcükleri ekleyeceği dosya"
+
+msgid "pattern to locate the end of a sentence"
+msgstr "bir tümcenin sonunu bulmak için kullanılan dizgi"
+
+msgid "flags to change how spell checking works"
+msgstr "yazım denetiminin nice çalıştığını değiştirmek için bayraklar"
+
+msgid "methods used to suggest corrections"
+msgstr "düzeltmeleri önermek için yöntemler"
+
+msgid "amount of memory used by :mkspell before compressing"
+msgstr "sıkıştırma öncesi :mkspell tarafından kullanılan bellek"
+
+msgid "multiple windows"
+msgstr "çoklu pencereler"
+
+msgid "0, 1 or 2; when to use a status line for the last window"
+msgstr "0, 1 veya 2; son pencere için ne zaman bir durum satırı\n"
+"kullanılacağı"
+
+msgid "alternate format to be used for a status line"
+msgstr "durum satırı için kullanılabilecek alternatif biçim"
+
+msgid "make all windows the same size when adding/removing windows"
+msgstr "pencere eklerken/kaldırırken tüm pencereleri aynı boyuta getir"
+
+msgid "in which direction 'equalalways' works: \"ver\", \"hor\" or \"both\""
+msgstr "'equalalways'in hangi yönde çalıştığı: \"ver\", \"hor\" veya \"both\""
+
+msgid "minimal number of lines used for the current window"
+msgstr "geçerli pencere için kullanılan en az satır sayısı"
+
+msgid "minimal number of lines used for any window"
+msgstr "herhangi bir pencere için kullanılan en az satır sayısı"
+
+msgid "keep the height of the window"
+msgstr "pencerenin yüksekliğini tut"
+
+msgid "keep the width of the window"
+msgstr "pencerenin genişliğini tut"
+
+msgid "minimal number of columns used for the current window"
+msgstr "geçerli pencere için kullanılan en az sütun sayısı"
+
+msgid "minimal number of columns used for any window"
+msgstr "herhangi bir pencere için kullanılan en az sütun sayısı"
+
+msgid "initial height of the help window"
+msgstr "yardım penceresinin başlangıç yüksekliği"
+
+msgid "use a popup window for preview"
+msgstr "önizleme için bir açılır pencere kullan"
+
+msgid "default height for the preview window"
+msgstr "önizleme penceresi için öntanımlı yükseklik"
+
+msgid "identifies the preview window"
+msgstr "önizleme penceresini tanımlar"
+
+msgid "don't unload a buffer when no longer shown in a window"
+msgstr "arabellek artık pencerede görüntülenmiyorsa bellekten kaldırma"
+
+msgid ""
+"\"useopen\" and/or \"split\"; which window to use when jumping\n"
+"to a buffer"
+msgstr ""
+"\"useopen\" ve/veya \"split\"; bir belleğe atlarken hangi\n"
+"pencerenin kullanılacağı"
+
+msgid "a new window is put below the current one"
+msgstr "geçerli pencerenin altına yeni bir pencere koyulur"
+
+msgid "a new window is put right of the current one"
+msgstr "yeni bir pencere geçerli pencerenin sağına koyulur"
+
+msgid "this window scrolls together with other bound windows"
+msgstr "bu pencere, bağlı diğer pencerelerle birlikte kayar"
+
+msgid "\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'"
+msgstr "\"ver\", \"hor\" ve/veya \"jump\"; 'scrollbind' için seçenekler listesi"
+
+msgid "this window's cursor moves together with other bound windows"
+msgstr "bu pencerenin imleci bağlı diğer pencerelerle birlikte kayar"
+
+msgid "size of a terminal window"
+msgstr "bir uçbirim penceresinin boyutu"
+
+msgid "key that precedes Vim commands in a terminal window"
+msgstr "bir uçbirim penceresinde Vim komutlarından önce gelen düğme"
+
+msgid "max number of lines to keep for scrollback in a terminal window"
+msgstr "bir uçbirim penceresinde geri kaydırma için kullanılacak\n"
+"en çok satır sayısı"
+
+msgid "type of pty to use for a terminal window"
+msgstr "bir uçbirim penceresi için kullanılacak pty türü"
+
+msgid "name of the winpty dynamic library"
+msgstr "winpty devingen kitaplığının adı"
+
+msgid "multiple tab pages"
+msgstr "çoklu sekme sayfaları"
+
+msgid "0, 1 or 2; when to use a tab pages line"
+msgstr "0, 1 veya 2; ne zaman bir sekme sayfası satırının kullanılacağı"
+
+msgid "maximum number of tab pages to open for -p and \"tab all\""
+msgstr "-p ve \"tab all\"un açacağı en çok sekme sayfası sayısı"
+
+msgid "custom tab pages line"
+msgstr "özelleştirilmiş sekme sayfası satırı"
+
+msgid "custom tab page label for the GUI"
+msgstr "grafik arabirim için özelleştirilmiş sekme sayfası etiketi"
+
+msgid "custom tab page tooltip for the GUI"
+msgstr "grafik arabirim için özelleştirilmiş sekme sayfası bilgi kutusu"
+
+msgid "terminal"
+msgstr "uçbirim"
+
+msgid "name of the used terminal"
+msgstr "kullanılan uçbirimin adı"
+
+msgid "alias for 'term'"
+msgstr "'term' için arma"
+
+msgid "check built-in termcaps first"
+msgstr "önce iç termcaps'i denetle"
+
+msgid "terminal connection is fast"
+msgstr "uçbirim bağlantısı hızlı"
+
+msgid "terminal that requires extra redrawing"
+msgstr "ek yenileme gerektiren uçbirim"
+
+msgid "recognize keys that start with <Esc> in Insert mode"
+msgstr "Ekleme kipinde <Esc> ile başlayan düğmeleri tanı"
+
+msgid "minimal number of lines to scroll at a time"
+msgstr "herhangi bir zamanda kaydırılacak en az satır sayısı"
+
+msgid "maximum number of lines to use scrolling instead of redrawing"
+msgstr "yenileme yerine kaydırma kullanacak en çok satır sayısı"
+
+msgid "specifies what the cursor looks like in different modes"
+msgstr "imlecin farklı kiplerde nice göründüğünü belirler"
+
+msgid "show info in the window title"
+msgstr "pencere başlığında bilgi görüntüle"
+
+msgid "percentage of 'columns' used for the window title"
+msgstr "pencere başlığı için kullanılacak 'columns' yüzdesi"
+
+msgid "when not empty, string to be used for the window title"
+msgstr "boş değilken, pencere başlığı yerine kullanılacak dizi"
+
+msgid "string to restore the title to when exiting Vim"
+msgstr "Vim'den çıkarken başlığın döndürüleceği dizi"
+
+msgid "set the text of the icon for this window"
+msgstr "bu pencere için simgenin metnini ayarla"
+
+msgid "when not empty, text for the icon of this window"
+msgstr "boş değilken, bu pencerenin simgesi için metin"
+
+msgid "restore the screen contents when exiting Vim"
+msgstr "Vim'den çıkarken ekran içeriğini eski haline getir"
+
+msgid "using the mouse"
+msgstr "fare kullanımı"
+
+msgid "list of flags for using the mouse"
+msgstr "fare kullanımı için bayraklar listesi"
+
+msgid "the window with the mouse pointer becomes the current one"
+msgstr "fare imlecinin olduğu pencere geçerli pencere olur"
+
+msgid "the window with the mouse pointer scrolls with the mouse wheel"
+msgstr "fare imlecinin olduğu pencere fare tekerleği ile kaydırılabilir"
+
+msgid "hide the mouse pointer while typing"
+msgstr "yazı yazarken fare imlecini gizle"
+
+msgid ""
+"\"extend\", \"popup\" or \"popup_setpos\"; what the right\n"
+"mouse button is used for"
+msgstr ""
+"\"extend\", \"popup\" veya \"popup_setpos\"; sağ fare düğmesinin\"\n"
+"ne için kullanıldığı"
+
+msgid "maximum time in msec to recognize a double-click"
+msgstr "bir çif tıklamayı tanımak için en çok süre (milisaniye)"
+
+msgid "\"xterm\", \"xterm2\", \"sgr\", etc.; type of mouse"
+msgstr "\"xterm\", \"xterm2\", \"sgr\" vb.; fare türü"
+
+msgid "what the mouse pointer looks like in different modes"
+msgstr "farklı kiplerde fare imlecinin nice göründüğü"
+
+msgid "GUI"
+msgstr "grafik arabirim"
+
+msgid "list of font names to be used in the GUI"
+msgstr "grafik arabirimde kullanılacak yazıtiplerinin listesi"
+
+msgid "pair of fonts to be used, for multibyte editing"
+msgstr "çoklu bayt düzenlemede kullanılacak yazıtipi eşleşmeleri"
+
+msgid "list of font names to be used for double-wide characters"
+msgstr "çift genişlikli karakterler için kullanılacak yazıtiplerinin listesi"
+
+msgid "use smooth, antialiased fonts"
+msgstr "düzletilmiş yazıtipleri kullan"
+
+msgid "list of flags that specify how the GUI works"
+msgstr "grafik arabirimin nice çalıştığını belirleyen bayraklar listesi"
+
+msgid "\"icons\", \"text\" and/or \"tooltips\"; how to show the toolbar"
+msgstr ""
+"\"icons\", \"text\" ve/veya \"tooltips\"; araç çubuğu kipleri "
+
+msgid "size of toolbar icons"
+msgstr "araç çubuğu simgelerinin boyutu"
+
+msgid "room (in pixels) left above/below the window"
+msgstr "pencerenin altında/üstünde bırakılan alan (piksel)"
+
+msgid "options for text rendering"
+msgstr "metin dokuması için seçenekler"
+
+msgid "use a pseudo-tty for I/O to external commands"
+msgstr "dış komutlara, girdi çıktı için yalancı-tty kullan"
+
+msgid ""
+"\"last\", \"buffer\" or \"current\": which directory used for the file "
+"browser"
+msgstr ""
+"\"last\", \"buffer\" veya \"current\"; dosya tarayıcısı için hangi dizinin "
+"kullanıldığı"
+
+msgid "language to be used for the menus"
+msgstr "menüler için kullanılan dil"
+
+msgid "maximum number of items in one menu"
+msgstr "bir menüdeki en çok öge sayısı"
+
+msgid "\"no\", \"yes\" or \"menu\"; how to use the ALT key"
+msgstr "\"no\", \"yes\" veya \"menu\"; ALT düğmesinin nice kullanılacağı"
+
+msgid "number of pixel lines to use between characters"
+msgstr "karakterler arasında kullanılacak piksel satırları sayısı"
+
+msgid "delay in milliseconds before a balloon may pop up"
+msgstr "bir balonun patlamadan önceki gecikme (milisaniye)"
+
+msgid "use balloon evaluation in the GUI"
+msgstr "grafik arabirimde balon değerlendirme kullan"
+
+msgid "use balloon evaluation in the terminal"
+msgstr "uçbirimde balon değerlendirme kullan"
+
+msgid "expression to show in balloon eval"
+msgstr "balon değerlendirmesinde gösterilecek ifade"
+
+msgid "printing"
+msgstr "yazdırma"
+
+msgid "list of items that control the format of :hardcopy output"
+msgstr ":hardcopy çıktısının biçimini denetleyen ögelerin listesi"
+
+msgid "name of the printer to be used for :hardcopy"
+msgstr ":hardcopy için kullanılan yazıcının adı"
+
+msgid "expression used to print the PostScript file for :hardcopy"
+msgstr ":hardcopy için PostScript dosyasını yazdırmada kullanılan ifade"
+
+msgid "name of the font to be used for :hardcopy"
+msgstr ":hardcopy için kullanılan yazıtipinin adı"
+
+msgid "format of the header used for :hardcopy"
+msgstr ":hardcopy için kullanılan üstbilginin biçimi"
+
+msgid "encoding used to print the PostScript file for :hardcopy"
+msgstr ":hardcopy için Postscript dosyasını yazdırmada kullanılan kodlama"
+
+msgid "the CJK character set to be used for CJK output from :hardcopy"
+msgstr ":hardcopy'deki ÇJK çıktısında kullanılan ÇJK karakter seti"
+
+msgid "list of font names to be used for CJK output from :hardcopy"
+msgstr ":hardcopy'deki ÇJK çıktısında kullanılan ÇJK yazıtipi"
+
+msgid "messages and info"
+msgstr "iletiler ve bilgi"
+
+msgid "add 's' flag in 'shortmess' (don't show search message)"
+msgstr "'shortness'daki 's' bayrağını ekle (arama iletisini gösterme)"
+
+msgid "list of flags to make messages shorter"
+msgstr "iletileri kısalaştırmak için kullanılan bayraklar listesi"
+
+msgid "show (partial) command keys in the status line"
+msgstr "durum satırında (kısmi) komut düğmelerini göster"
+
+msgid "display the current mode in the status line"
+msgstr "durum satırında geçerli kipi görüntüle"
+
+msgid "show cursor position below each window"
+msgstr "her pencerenin altında imleç konumunu göster"
+
+msgid "alternate format to be used for the ruler"
+msgstr "cetvel için kullanılan alternatif biçim"
+
+msgid "threshold for reporting number of changed lines"
+msgstr "değiştirilmiş satırların sayısını raporlama eşiği"
+
+msgid "the higher the more messages are given"
+msgstr "ne kadar yüksek olursa o kadar çok ileti olur"
+
+msgid "file to write messages in"
+msgstr "iletilerin içine yazılacağı dosya"
+
+msgid "pause listings when the screen is full"
+msgstr "ekran doluyken listelemeleri duraklat"
+
+msgid "start a dialog when a command fails"
+msgstr "bir komut başarısız olursa iletişim kutusu göster"
+
+msgid "ring the bell for error messages"
+msgstr "hata iletilerinde zili çal"
+
+msgid "use a visual bell instead of beeping"
+msgstr "bipleme yerine görsel zil kullan"
+
+msgid "do not ring the bell for these reasons"
+msgstr "bu nedenlerle zili çalma"
+
+msgid "list of preferred languages for finding help"
+msgstr "yardım için yeğlenen diller listesi"
+
+msgid "selecting text"
+msgstr "metin seçme"
+
+msgid "\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves"
+msgstr "\"old\", \"inclusive\" veya \"exclusive\"; metin seçim davranışı"
+
+msgid ""
+"\"mouse\", \"key\" and/or \"cmd\"; when to start Select mode\n"
+"instead of Visual mode"
+msgstr ""
+"\"mouse\", \"key\", ve/veya \"cmd\"; Görsel kip yerine Seçim\n"
+"kipinin başlatılacağı zaman"
+
+msgid ""
+"\"unnamed\" to use the * register like unnamed register\n"
+"\"autoselect\" to always put selected text on the clipboard"
+msgstr ""
+"\"unnamed\": * yazmacını adsız yazmaç gibi kullan\n"
+"\"autoselect\": seçili metni her zaman panoya koy"
+
+msgid "\"startsel\" and/or \"stopsel\"; what special keys can do"
+msgstr "\"startsel\" ve/veya \"stopsel\"; özel düğmelerin işlevleri"
+
+msgid "editing text"
+msgstr "metin düzenleme"
+
+msgid "maximum number of changes that can be undone"
+msgstr "geri alınabilecek en çok değişiklik sayısı"
+
+msgid "automatically save and restore undo history"
+msgstr "geri al geçmişini kendiliğinden kaydet ve eski haline getir"
+
+msgid "list of directories for undo files"
+msgstr "geri al dosyaları için dizinler listesi"
+
+msgid "maximum number lines to save for undo on a buffer reload"
+msgstr "arabellek yeniden yüklemesinde geri al için kaydedilecek\n"
+"en çok satır sayısı"
+
+msgid "changes have been made and not written to a file"
+msgstr "yapılan; ancak bir dosyaya yazılmayan değişiklikler"
+
+msgid "buffer is not to be written"
+msgstr "arabellek, yazım için değil"
+
+msgid "changes to the text are possible"
+msgstr "metne değişiklik yapımı olanaklı"
+
+msgid "line length above which to break a line"
+msgstr "sonrasında yeni satır yapılacak satır uzunluğu"
+
+msgid "margin from the right in which to break a line"
+msgstr "sonrasında yeni satır yapılacak sağ kenar boşluğu"
+
+msgid "specifies what <BS>, CTRL-W, etc. can do in Insert mode"
+msgstr "<BS>, CTRL-W, vb. Ekleme kipinde ne yapabileceğini belirtir"
+
+msgid "definition of what comment lines look like"
+msgstr "yorum satırlarının nice görüneceğinin tanımı"
+
+msgid "list of flags that tell how automatic formatting works"
+msgstr "kendiliğinden biçimlendirmenin nice çalıştığını anlatan\n"
+"bayraklar listesi"
+
+msgid "pattern to recognize a numbered list"
+msgstr "numaralandırılmış bir listeyi tanımak için dizgi"
+
+msgid "expression used for \"gq\" to format lines"
+msgstr "satırları biçimlendirmek için \"gq\" için kullanılan ifade"
+
+msgid "specifies how Insert mode completion works for CTRL-N and CTRL-P"
+msgstr "Ekleme kipi tamamlamasının CTRL-N ve CTRL-P için nice çalıştığını\n"
+"belirler"
+
+msgid "whether to use a popup menu for Insert mode completion"
+msgstr "Ekleme kipi tamamlaması için açılır menü kullanımı"
+
+msgid "options for the Insert mode completion info popup"
+msgstr "Ekleme kipi tamamlama açılır penceresi için seçenekler"
+
+msgid "maximum height of the popup menu"
+msgstr "açılır menünün en çok yüksekliği"
+
+msgid "minimum width of the popup menu"
+msgstr "açılır menünün en çok genişliği"
+
+msgid "user defined function for Insert mode completion"
+msgstr "Ekleme kipi tamamlaması için kullanıcı tanımlı işlev"
+
+msgid "function for filetype-specific Insert mode completion"
+msgstr "dosya türüne özel Ekleme kipi tamamlaması için işlev"
+
+msgid "list of dictionary files for keyword completion"
+msgstr "anahtar sözcük tamamlaması için sözlük dosyaları listesi"
+
+msgid "list of thesaurus files for keyword completion"
+msgstr "anahtar sözcük tamamlaması için eşanlamlılar sözlüğü dosyaları\n"
+"listesi"
+
+msgid "adjust case of a keyword completion match"
+msgstr "anahtar sözcük tamamlama eşleşmesinin BÜYÜK/küçük harfini ayarla"
+
+msgid "enable entering digraphs with c1 <BS> c2"
+msgstr "c1 <BS> c2 ile ikili harflerin girilmesini etkinleştir"
+
+msgid "the \"~\" command behaves like an operator"
+msgstr "\"~\" komutu bir işleç gibi davranır"
+
+msgid "function called for the \"g@\" operator"
+msgstr "\"g@\" işleci için çağrılan işlev"
+
+msgid "when inserting a bracket, briefly jump to its match"
+msgstr "bir ayraç eklendiğinde hemen eşine atla"
+
+msgid "tenth of a second to show a match for 'showmatch'"
+msgstr "bir 'showmatch' eşleşmesini göstermek için saniyenin onda biri"
+
+msgid "list of pairs that match for the \"%\" command"
+msgstr "\"%\" komutu için eşleşen eşleşmelerin listesi"
+
+msgid "use two spaces after '.' when joining a line"
+msgstr "bir satırı birleştirirken '.' sonrası iki boşluk kullan"
+
+msgid ""
+"\"alpha\", \"octal\", \"hex\", \"bin\" and/or \"unsigned\"; number formats\n"
+"recognized for CTRL-A and CTRL-X commands"
+msgstr ""
+"\"alpha\", \"octal\", \"hex\", \"bin\" ve/veya \"unsigned\"; CTRL-A ve\n"
+"CTRL-X komutları için tanınan sayı biçimleri"
+
+msgid "tabs and indenting"
+msgstr "sekmeler ve girintileme"
+
+msgid "number of spaces a <Tab> in the text stands for"
+msgstr "metinde bir <Tab>'ın denk olduğu boşluk sayısı"
+
+msgid "number of spaces used for each step of (auto)indent"
+msgstr "her bir kendiliğinden girintileme için kullanılan boşluk sayısı"
+
+msgid "list of number of spaces a tab counts for"
+msgstr "bir sekmenin denk olduğu boşlukların sayısının listesi"
+
+msgid "list of number of spaces a soft tabsstop counts for"
+msgstr "bir yumuşak sekmedurağının denk olduğu boşlukların sayısı listesi"
+
+msgid "a <Tab> in an indent inserts 'shiftwidth' spaces"
+msgstr "bir girintideki <Tab>, 'shiftwidth' kadar boşluk ekler"
+
+msgid "if non-zero, number of spaces to insert for a <Tab>"
+msgstr "eğer sıfırdan farklıysa, bir <Tab> için eklenecek boşluk sayısı"
+
+msgid "round to 'shiftwidth' for \"<<\" and \">>\""
+msgstr "\"<<\" ve \">>\" için 'shiftwidth'e yuvarla"
+
+msgid "expand <Tab> to spaces in Insert mode"
+msgstr "Ekleme kipinde <Tab>'ı boşluklara genişlet"
+
+msgid "automatically set the indent of a new line"
+msgstr "yeni bir satırın girintisini kendiliğinden ayarla"
+
+msgid "do clever autoindenting"
+msgstr "akıllı kendiliğinden girintileme yap"
+
+msgid "enable specific indenting for C code"
+msgstr "C kodu için özel girintilemeyi etkinleştir"
+
+msgid "options for C-indenting"
+msgstr "C girintilemesi için seçenekler"
+
+msgid "keys that trigger C-indenting in Insert mode"
+msgstr "Ekleme kipinde C girintilemesini tetikleyen düğmeler"
+
+msgid "list of words that cause more C-indent"
+msgstr "daha çok C girintilemesine neden olan sözcüklerin listesi"
+
+msgid "expression used to obtain the indent of a line"
+msgstr "bir satırın girintisini elde etmek için kullanılan ifade"
+
+msgid "keys that trigger indenting with 'indentexpr' in Insert mode"
+msgstr "Ekleme kipinde 'indentexpr' ile girintilemeyi tetikleyen düğmeler"
+
+msgid "copy whitespace for indenting from previous line"
+msgstr "bir önceki satırdan girintileme için boşlukları kopyala"
+
+msgid "preserve kind of whitespace when changing indent"
+msgstr "girintilemeyi değiştirirken boşluk türünü koru"
+
+msgid "enable lisp mode"
+msgstr "lisp kipini etkinleştir"
+
+msgid "words that change how lisp indenting works"
+msgstr "lisp girintilemesinin nice çalıştığını değiştiren sözcükler"
+
+msgid "folding"
+msgstr "kıvırma"
+
+msgid "unset to display all folds open"
+msgstr "tüm kıvırmaları açık görüntülemek için ayarı kaldır"
+
+msgid "folds with a level higher than this number will be closed"
+msgstr "bu sayıdan daha yüksek düzeyli kıvırmalar kapatılacak"
+
+msgid "value for 'foldlevel' when starting to edit a file"
+msgstr "bir dosyayı düzenlemeye başlarkenki 'foldlevel' değeri"
+
+msgid "width of the column used to indicate folds"
+msgstr "kıvırmaları belirtmek için kullanılan sütunun genişliği"
+
+msgid "expression used to display the text of a closed fold"
+msgstr "kapalı bir kıvırmanın metnini görüntülemek için kullanılan ifade"
+
+msgid "set to \"all\" to close a fold when the cursor leaves it"
+msgstr "imleç ayrıldığında kıvırmayı kapatmak için \"all\" olarak ayarlayın"
+
+msgid "specifies for which commands a fold will be opened"
+msgstr "hangi komutlarda bir kıvırmanın açılacağını belirler"
+
+msgid "minimum number of screen lines for a fold to be closed"
+msgstr "bir kıvırmanın kapatılması için en az ekran satırı sayısı"
+
+msgid "template for comments; used to put the marker in"
+msgstr "yorumlar için şablon; imleyiciyi içine koymak için kullanılır"
+
+msgid ""
+"folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n"
+"\"syntax\" or \"diff\""
+msgstr ""
+"kıvırma türü: \"manual\", \"indent\", \"expr\", \"marker\",\n"
+"\"syntax\" veya \"diff\""
+
+msgid "expression used when 'foldmethod' is \"expr\""
+msgstr "'foldmethod' \"expr\" olduğundan kullanılacak ifade"
+
+msgid "used to ignore lines when 'foldmethod' is \"indent\""
+msgstr "'foldmethod' \"indent\" olduğunda satırları yok saymada kullanılır"
+
+msgid "markers used when 'foldmethod' is \"marker\""
+msgstr "'foldmethod' \"marker\" olduğunda kullanılan imleyiciler"
+
+msgid "maximum fold depth for when 'foldmethod' is \"indent\" or \"syntax\""
+msgstr "'foldmethod' \"indent\" veya \"syntax\" olduğunda kullanılan en çok\n"
+"kıvırma derinliği"
+
+msgid "diff mode"
+msgstr "diff kipi"
+
+msgid "use diff mode for the current window"
+msgstr "geçerli pencere için diff kipi kullan"
+
+msgid "options for using diff mode"
+msgstr "diff kipi kullanımı için seçenekler"
+
+msgid "expression used to obtain a diff file"
+msgstr "bir diff dosyası elde etmek için kullanılan ifade"
+
+msgid "expression used to patch a file"
+msgstr "bir dosyayı yamalamak için kullanılan ifade"
+
+msgid "mapping"
+msgstr "eşlemleme"
+
+msgid "maximum depth of mapping"
+msgstr "en çok eşlemleme derinliği"
+
+msgid "recognize mappings in mapped keys"
+msgstr "eşlemlenmiş düğmelerdeki eşlemlemeleri tanımla"
+
+msgid "allow timing out halfway into a mapping"
+msgstr "bir eşlemlemenin yarısında zaman aşımına izin ver"
+
+msgid "allow timing out halfway into a key code"
+msgstr "bir düğme kodunun yarısında zaman aşımına izin ver"
+
+msgid "time in msec for 'timeout'"
+msgstr "'timeout' için süre (milisaniye)"
+
+msgid "time in msec for 'ttimeout'"
+msgstr "'ttimeout' için süre (milisaniye)"
+
+msgid "reading and writing files"
+msgstr "dosyaları okuma ve yazma"
+
+msgid "enable using settings from modelines when reading a file"
+msgstr "dosya okurken ayarları kip satırından kullanımı etkinleştir"
+
+msgid "allow setting expression options from a modeline"
+msgstr "ifade seçeneklerini bir kip satırından ayarlamaya izin ver"
+
+msgid "number of lines to check for modelines"
+msgstr "kip satırlarını denetlemede kullanılacak satırların sayısı"
+
+msgid "binary file editing"
+msgstr "ikili dosya düzenleme"
+
+msgid "last line in the file has an end-of-line"
+msgstr "dosyanın son satırında bir satırsonu var"
+
+msgid "fixes missing end-of-line at end of text file"
+msgstr "bir metin dosyasının sonundaki eksik satırsonlarını onarır"
+
+msgid "prepend a Byte Order Mark to the file"
+msgstr "dosyanın önüne bir Bayt Sıralama İmi ekle"
+
+msgid "end-of-line format: \"dos\", \"unix\" or \"mac\""
+msgstr "satırsonu biçimi: \"dos\", \"unix\" veya \"mac\""
+
+msgid "list of file formats to look for when editing a file"
+msgstr "bir dosyayı düzenlerken bakılacak dosya biçimler listesi"
+
+msgid "obsolete, use 'fileformat'"
+msgstr "eskimiş, yerine 'fileformat' kullanın"
+
+msgid "obsolete, use 'fileformats'"
+msgstr "eskimiş, yerine 'fileformats' kullanın"
+
+msgid "writing files is allowed"
+msgstr "dosya yazımına izin verilir"
+
+msgid "write a backup file before overwriting a file"
+msgstr "bir dosyanın üzerine yazmadan önce bir yedek dosyası yaz"
+
+msgid "keep a backup after overwriting a file"
+msgstr "bir dosyanın üzerine yazdıktan sonra bir yedek tut"
+
+msgid "patterns that specify for which files a backup is not made"
+msgstr "bir yedeği yapılmayan dosyaları belirleyen dizgi"
+
+msgid "whether to make the backup as a copy or rename the existing file"
+msgstr "yedeğin kopya olarak mı yoksa ad değişikliği ile mi yapılacağı"
+
+msgid "list of directories to put backup files in"
+msgstr "yedek dosyalarının koyulacağı dizinlerin listesi"
+
+msgid "file name extension for the backup file"
+msgstr "yedek dosyası için dosya adı uzantısı"
+
+msgid "automatically write a file when leaving a modified buffer"
+msgstr "değiştirilmiş arabellekten çıkarken dosyayı kendiliğinden yaz"
+
+msgid "as 'autowrite', but works with more commands"
+msgstr "'autowrite' gibi, ancak daha çok komutla çalışır"
+
+msgid "always write without asking for confirmation"
+msgstr "onay beklemeden her zaman yaz"
+
+msgid "automatically read a file when it was modified outside of Vim"
+msgstr "Vim dışında değiştirildiğinde dosyayı kendiliğinden oku"
+
+msgid "keep oldest version of a file; specifies file name extension"
+msgstr "bir dosyanın en eski sürümünü tut; dosya adı uzantısı belirler"
+
+msgid "forcibly sync the file to disk after writing it"
+msgstr "yazımdan sonra dosyayı zorla diske eşitle"
+
+msgid "use 8.3 file names"
+msgstr "8.3 dosya adlarını kullan"
+
+msgid "encryption method for file writing: zip, blowfish or blowfish2"
+msgstr "dosya yazımı için şifreleme yöntemi: zip, blowfish veya blowfish2"
+
+msgid "the swap file"
+msgstr "takas dosyası"
+
+msgid "list of directories for the swap file"
+msgstr "takas dosyası için dizinler listesi"
+
+msgid "use a swap file for this buffer"
+msgstr "bu arabellek için bir takas dosyası kullan"
+
+msgid "\"sync\", \"fsync\" or empty; how to flush a swap file to disk"
+msgstr "\"sync\", \"fsync\", veya boş; bir takas dosyasının diske\n"
+"nice floşlanacağı"
+
+msgid "number of characters typed to cause a swap file update"
+msgstr "takas dosyası güncellemesi için yazılması gereken karakter sayısı"
+
+msgid "time in msec after which the swap file will be updated"
+msgstr "takas dosyasının güncelleneceği süre dilimi (milisaniye)"
+
+msgid "maximum amount of memory in Kbyte used for one buffer"
+msgstr "bir arabellek için kullanılacak en çok bellek miktarı (KiB)"
+
+msgid "maximum amount of memory in Kbyte used for all buffers"
+msgstr "tüm arabellekler için kullanılacak en çok bellek miktarı (KiB)"
+
+msgid "command line editing"
+msgstr "komut satırı düzenleme"
+
+msgid "how many command lines are remembered"
+msgstr "kaç tane komut satırının hatırlandığı"
+
+msgid "key that triggers command-line expansion"
+msgstr "komut satırı ifadesi tetikleyen düğme"
+
+msgid "like 'wildchar' but can also be used in a mapping"
+msgstr "'wildchar' gibi; ancak bir eşlemleme içinde kullanılabilir"
+
+msgid "specifies how command line completion works"
+msgstr "komut satırı tamamlamasının nasıl çalıştığını belirtir"
+
+msgid "empty or \"tagfile\" to list file name of matching tags"
+msgstr "eşleşen etiketlerin dosya adını listelemek için boş veya \"tagfile\""
+
+msgid "list of file name extensions that have a lower priority"
+msgstr "düşük öncelikli dosya adı uzantılarının listesi"
+
+msgid "list of file name extensions added when searching for a file"
+msgstr "bir dosya ararken eklenen dosya adı uzantılarının listesi"
+
+msgid "list of patterns to ignore files for file name completion"
+msgstr "dosya adı tamamlaması için yok sayılacak dizgelerin listesi"
+
+msgid "ignore case when using file names"
+msgstr "dosya adları kullanırken BÜYÜK/küçük harf yok say"
+
+msgid "ignore case when completing file names"
+msgstr "dosya adları tamamlarken BÜYÜK/küçük harf yok say"
+
+msgid "command-line completion shows a list of matches"
+msgstr "komut satırı tamamlaması, eşleşmelerin bir listesini gösterir"
+
+msgid "key used to open the command-line window"
+msgstr "komut satırı penceresini açmak için kullanılan düğme"
+
+msgid "height of the command-line window"
+msgstr "komut satırı penceresinin yüksekliği"
+
+msgid "executing external commands"
+msgstr "dış komutları çalıştırma"
+
+msgid "name of the shell program used for external commands"
+msgstr "dış komutlar için kullanılan kabuk programının adı"
+
+msgid "when to use the shell or directly execute a command"
+msgstr "ne zaman kabuğu kullanmalı veya doğrudan bir komut çalıştırmalı"
+
+msgid "character(s) to enclose a shell command in"
+msgstr "bir kabuk komutunu çevreleyen karakter(ler)"
+
+msgid "like 'shellquote' but include the redirection"
+msgstr "'shellquote' gibi; ancak yeniden yönlendirmeyi içer"
+
+msgid "characters to escape when 'shellxquote' is ("
+msgstr "'shellxquote' ( iken kaçırılacak karakterler"
+
+msgid "argument for 'shell' to execute a command"
+msgstr "bir komut çalıştırmak için 'shell' için değişken"
+
+msgid "used to redirect command output to a file"
+msgstr "komut çıktısını bir dosyaya yeniden yönlendirmek için kullanılır"
+
+msgid "use a temp file for shell commands instead of using a pipe"
+msgstr "bir veri yolu kullanımı yerine kabuk komutları için geçici\n"
+"bir dosya kullan"
+
+msgid "program used for \"=\" command"
+msgstr "\"=\" komutu için kullanılan program"
+
+msgid "program used to format lines with \"gq\" command"
+msgstr "\"gq\" komutu ile satır biçimlemek için kullanılan program"
+
+msgid "program used for the \"K\" command"
+msgstr "\"K\" komutu için kullanılan program"
+
+msgid "warn when using a shell command and a buffer has changes"
+msgstr "bir kabuk komutu kullanılıyorsa ve arabellekte değişiklikler\n"
+"varsa uyar"
+
+msgid "running make and jumping to errors (quickfix)"
+msgstr "make çalıştırma ve hatalara atlama (hızlı düzelt)"
+
+msgid "name of the file that contains error messages"
+msgstr "hata iletileri içeren dosyanın adı"
+
+msgid "list of formats for error messages"
+msgstr "hata iletileri için biçim listesi"
+
+msgid "program used for the \":make\" command"
+msgstr "\":make\" komutu için kullanılan program"
+
+msgid "string used to put the output of \":make\" in the error file"
+msgstr "\":make\" komutunun çıktısını hata dosyasına koymak için\n"
+"kullanılan dizi"
+
+msgid "name of the errorfile for the 'makeprg' command"
+msgstr "'makeprg' komutu için hata dosyası adı"
+
+msgid "program used for the \":grep\" command"
+msgstr "\":grep\" komutu için kullanılan program"
+
+msgid "list of formats for output of 'grepprg'"
+msgstr "'grepprg' çıktısı için kullanılan biçimlerin listesi"
+
+msgid "encoding of the \":make\" and \":grep\" output"
+msgstr "\":make\" ve \":grep\" çıktılarının kodlaması"
+
+msgid "function to display text in the quickfix window"
+msgstr "hızlı düzelt içinde metin düzenlemek için işlev"
+
+msgid "system specific"
+msgstr "sisteme özel"
+
+msgid "use forward slashes in file names; for Unix-like shells"
+msgstr "dosya adlarında eğik çizgi kullan; Unix tarzı kabuklar için"
+
+msgid "specifies slash/backslash used for completion"
+msgstr "tamamlama için kullanılan eğik/ters eğik çizgiyi belirler"
+
+msgid "language specific"
+msgstr "dile özel ayarlar"
+
+msgid "specifies the characters in a file name"
+msgstr "bir dosya adındaki karakterleri belirtir"
+
+msgid "specifies the characters in an identifier"
+msgstr "bir tanımlayıcıdaki karakterleri belirler"
+
+msgid "specifies the characters in a keyword"
+msgstr "bir anahtar sözcükteki karakterleri belirler"
+
+msgid "specifies printable characters"
+msgstr "yazdırılabilir karakterleri belirler"
+
+msgid "specifies escape characters in a string"
+msgstr "bir dizideki kaçış karakterlerini belirler"
+
+msgid "display the buffer right-to-left"
+msgstr "arabelleği sağdan sola görüntüle"
+
+msgid "when to edit the command-line right-to-left"
+msgstr "komut satırının ne zaman sağdan sola düzenleneceği"
+
+msgid "insert characters backwards"
+msgstr "karakterleri geriye doğru ekle"
+
+msgid "allow CTRL-_ in Insert and Command-line mode to toggle 'revins'"
+msgstr "'revins' açıp kapatmak için Ekleme ve Komut Satırı kipinde\n"
+"CTRL-_ izin ver"
+
+msgid "the ASCII code for the first letter of the Hebrew alphabet"
+msgstr "İbran abecesinin ilk harfinin ASCII kodu"
+
+msgid "use Hebrew keyboard mapping"
+msgstr "İbranca klavye eşlemlemesini kullan"
+
+msgid "use phonetic Hebrew keyboard mapping"
+msgstr "fonetik İbranca klavye eşlemlemesini kullan"
+
+msgid "prepare for editing Arabic text"
+msgstr "Arapça metni düzenleme için hazırlan"
+
+msgid "perform shaping of Arabic characters"
+msgstr "Arapça karakterlerin şekillendirmesini gerçekleştir"
+
+msgid "terminal will perform bidi handling"
+msgstr "sağdan sola yazımı uçbirim gerçekleştirecek"
+
+msgid "name of a keyboard mapping"
+msgstr "bir klavye eşlemlemesinin adı"
+
+msgid "list of characters that are translated in Normal mode"
+msgstr "Normal kipte çevrilen karakterlerin listesi"
+
+msgid "apply 'langmap' to mapped characters"
+msgstr "eşlemlenen karakterlere 'langmap' uygula"
+
+msgid "when set never use IM; overrules following IM options"
+msgstr "ayarlandığında hiçbir zaman IM kullanma; aşağıdaki IM seçeneklerini "
+"geçersiz kılar"
+
+msgid "in Insert mode: 1: use :lmap; 2: use IM; 0: neither"
+msgstr "Ekleme kipinde: 1: :lmap kullan; 2; IM kullan; 0: hiçbiri"
+
+msgid "input method style, 0: on-the-spot, 1: over-the-spot"
+msgstr "girdi yöntemi stili, 0: on-the-spot, 1: over-the-spot"
+
+msgid "entering a search pattern: 1: use :lmap; 2: use IM; 0: neither"
+msgstr "bir arama dizgisi gir: 1: :lmap kullan; 2: IM kullan; 0: hiçbiri"
+
+msgid "when set always use IM when starting to edit a command line"
+msgstr ""
+"ayarlandığında, bir komut satırı düzenlemeye başlarken her zaman IM kullan"
+
+msgid "function to obtain IME status"
+msgstr "IME durumunu elde etmek için işlev"
+
+msgid "function to enable/disable IME"
+msgstr "IME'yi etkinleştirmek/devre dışı bırakmak için işlev"
+
+msgid "multi-byte characters"
+msgstr "çoklu bayt karakterler"
+
+msgid ""
+"character encoding used in Vim: \"latin1\", \"utf-8\",\n"
+"\"euc-jp\", \"big5\", etc."
+msgstr ""
+"Vim'de kullanılan karakter kodlamaları: \"latin1\", \"utf-8\",\n"
+"\"euc-jp\", \"big5\" gibi"
+
+msgid "character encoding for the current file"
+msgstr "geçerli dosya için karakter kodlaması"
+
+msgid "automatically detected character encodings"
+msgstr "karakter kodlamasını kendiliğinden algıla"
+
+msgid "character encoding used by the terminal"
+msgstr "uçbirim tarafından kullanılan karakter kodlaması"
+
+msgid "expression used for character encoding conversion"
+msgstr "karakter kodlaması dönüşümü için kullanılan ifade"
+
+msgid "delete combining (composing) characters on their own"
+msgstr "birleştiren (oluşturucu) karakterleri kendi başına kullan"
+
+msgid "maximum number of combining (composing) characters displayed"
+msgstr "en çok görüntülenen birleştiren (oluşturucu) karakterlerin sayısı"
+
+msgid "key that activates the X input method"
+msgstr "X girdi yöntemini etkinleştiren düğme"
+
+msgid "width of ambiguous width characters"
+msgstr "belirsiz genişlikli karakterlerin genişliği"
+
+msgid "emoji characters are full width"
+msgstr "emoji karakterleri tam genişliklidir"
+
+msgid "various"
+msgstr "çeşitli"
+
+msgid ""
+"when to use virtual editing: \"block\", \"insert\", \"all\"\n"
+"and/or \"onemore\""
+msgstr ""
+"ne zaman sanal düzenleme kullanmalı: \"block\", \"insert\",\n"
+"\"all\" ve/veya \"onemore\""
+
+msgid "list of autocommand events which are to be ignored"
+msgstr "yok sayılacak otokomut olayları"
+
+msgid "load plugin scripts when starting up"
+msgstr "başlarken eklenti betiklerini yükle"
+
+msgid "enable reading .vimrc/.exrc/.gvimrc in the current directory"
+msgstr "geçerli dizinde .vimrc/.exrc/.gvimrc okumayı etkinleştir"
+
+msgid "safer working with script files in the current directory"
+msgstr "geçerli dizinde betik dosyalarıyla daha güvenli çalışma"
+
+msgid "use the 'g' flag for \":substitute\""
+msgstr "\":substitute\" için 'g' bayrağını kullan"
+
+msgid "'g' and 'c' flags of \":substitute\" toggle"
+msgstr "\":substitute\" açma/kapama düğmesinin 'g' ve 'c' bayrakları"
+
+msgid "allow reading/writing devices"
+msgstr "aygıtları okumaya/yazmaya izin ver"
+
+msgid "maximum depth of function calls"
+msgstr "işlev çağrılarının en çok derinliği"
+
+msgid "list of words that specifies what to put in a session file"
+msgstr "bir oturum dosyasına ne koyulacağını belirleyen sözcükler listesi"
+
+msgid "list of words that specifies what to save for :mkview"
+msgstr ":mkview için neyin kaydedileceğini belirleyen sözcükler listesi"
+
+msgid "directory where to store files with :mkview"
+msgstr ":mkview ile dosyaların depolanacağı dizin"
+
+msgid "list that specifies what to write in the viminfo file"
+msgstr "viminfo dosyasına nelerin yazılacağını belirleyen liste"
+
+msgid "file name used for the viminfo file"
+msgstr "viminfo dosyası için kullanılan dosya adı"
+
+msgid "what happens with a buffer when it's no longer in a window"
+msgstr "bir arabellek artık bir pencerede değilken ne olacağı"
+
+msgid "empty, \"nofile\", \"nowrite\", \"quickfix\", etc.: type of buffer"
+msgstr "boş, \"nofile\", \"nowrite\", \"quickfix\" vb.: arabellek türü"
+
+msgid "whether the buffer shows up in the buffer list"
+msgstr "arabelleğin, arabellek listesinde görünüp görünmeyeceği"
+
+msgid "set to \"msg\" to see all error messages"
+msgstr "tüm hata iletilerini görmek için \"msg\" olarak ayarlayın"
+
+msgid "whether to show the signcolumn"
+msgstr "işaret sütununun görünüp görünmeyeceği"
+
+msgid "interval in milliseconds between polls for MzScheme threads"
+msgstr "MzScheme iş parçacıkları için anketler arasındaki süre (milisaniye)"
+
+msgid "name of the Lua dynamic library"
+msgstr "Lua devingen kitaplığının adı"
+
+msgid "name of the Perl dynamic library"
+msgstr "Perl devingen kitaplığının adı"
+
+msgid "whether to use Python 2 or 3"
+msgstr "Python 2 veya 3 mü kullanılacağı"
+
+msgid "name of the Python 2 dynamic library"
+msgstr "Python 2 devingen kitaplığının adı"
+
+msgid "name of the Python 2 home directory"
+msgstr "Python 2 ev dizininin adı"
+
+msgid "name of the Python 3 dynamic library"
+msgstr "Python 3 devingen kitaplığının adı"
+
+msgid "name of the Python 3 home directory"
+msgstr "Python 3 ev dizininin adı"
+
+msgid "name of the Ruby dynamic library"
+msgstr "Ruby devingen kitaplığının adı"
+
+msgid "name of the Tcl dynamic library"
+msgstr "Tcl devingen kitaplığının adı"
+
+msgid "name of the MzScheme dynamic library"
+msgstr "MzScheme devingen kitaplığının adı"
+
+msgid "name of the MzScheme GC dynamic library"
+msgstr "MzScheme GC devingen kitaplığının adı"
diff --git a/src/nvim/testdir/test_eval_stuff.vim b/src/nvim/testdir/test_eval_stuff.vim
index 73b57f302e..4870b9a60a 100644
--- a/src/nvim/testdir/test_eval_stuff.vim
+++ b/src/nvim/testdir/test_eval_stuff.vim
@@ -120,6 +120,15 @@ func Test_skip_after_throw()
endtry
endfunc
+func Test_number_max_min_size()
+ " This will fail on systems without 64 bit number support or when not
+ " configured correctly.
+ call assert_equal(64, v:numbersize)
+
+ call assert_true(v:numbermin < -9999999)
+ call assert_true(v:numbermax > 9999999)
+endfunc
+
func Test_curly_assignment()
let s:svar = 'svar'
let g:gvar = 'gvar'
diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim
index 3cfc964f0a..6b1e484c3a 100644
--- a/src/nvim/testdir/test_filetype.vim
+++ b/src/nvim/testdir/test_filetype.vim
@@ -45,7 +45,7 @@ endfunc
" Filetypes detected just from matching the file name.
let s:filename_checks = {
\ '8th': ['file.8th'],
- \ 'a2ps': ['/etc/a2ps.cfg', '/etc/a2ps/file.cfg', 'a2psrc', '.a2psrc'],
+ \ 'a2ps': ['/etc/a2ps.cfg', '/etc/a2ps/file.cfg', 'a2psrc', '.a2psrc', 'any/etc/a2ps.cfg', 'any/etc/a2ps/file.cfg'],
\ 'a65': ['file.a65'],
\ 'aap': ['file.aap'],
\ 'abap': ['file.abap'],
@@ -55,23 +55,24 @@ let s:filename_checks = {
\ 'ada': ['file.adb', 'file.ads', 'file.ada', 'file.gpr'],
\ 'ahdl': ['file.tdf'],
\ 'aidl': ['file.aidl'],
- \ 'alsaconf': ['.asoundrc', '/usr/share/alsa/alsa.conf', '/etc/asound.conf'],
+ \ 'alsaconf': ['.asoundrc', '/usr/share/alsa/alsa.conf', '/etc/asound.conf', 'any/etc/asound.conf', 'any/usr/share/alsa/alsa.conf'],
\ 'aml': ['file.aml'],
\ 'ampl': ['file.run'],
\ 'ant': ['build.xml'],
- \ 'apache': ['.htaccess', '/etc/httpd/file.conf', '/etc/apache2/sites-2/file.com', '/etc/apache2/some.config', '/etc/apache2/conf.file/conf', '/etc/apache2/mods-some/file', '/etc/apache2/sites-some/file', '/etc/httpd/conf.d/file.config'],
- \ 'apachestyle': ['/etc/proftpd/file.config,/etc/proftpd/conf.file/file'],
+ \ 'apache': ['.htaccess', '/etc/httpd/file.conf', '/etc/apache2/sites-2/file.com', '/etc/apache2/some.config', '/etc/apache2/conf.file/conf', '/etc/apache2/mods-some/file', '/etc/apache2/sites-some/file', '/etc/httpd/conf.d/file.config', '/etc/apache2/conf.file/file', '/etc/apache2/file.conf', '/etc/apache2/file.conf-file', '/etc/apache2/mods-file/file', '/etc/apache2/sites-file/file', '/etc/apache2/sites-file/file.com', '/etc/httpd/conf.d/file.conf', '/etc/httpd/conf.d/file.conf-file', 'access.conf', 'access.conf-file', 'any/etc/apache2/conf.file/file', 'any/etc/apache2/file.conf', 'any/etc/apache2/file.conf-file', 'any/etc/apache2/mods-file/file', 'any/etc/apache2/sites-file/file', 'any/etc/apache2/sites-file/file.com', 'any/etc/httpd/conf.d/file.conf', 'any/etc/httpd/conf.d/file.conf-file', 'any/etc/httpd/file.conf', 'apache.conf', 'apache.conf-file', 'apache2.conf', 'apache2.conf-file', 'httpd.conf', 'httpd.conf-file', 'srm.conf', 'srm.conf-file'],
+ \ 'apachestyle': ['/etc/proftpd/file.config,/etc/proftpd/conf.file/file', '/etc/proftpd/conf.file/file', '/etc/proftpd/file.conf', '/etc/proftpd/file.conf-file', 'any/etc/proftpd/conf.file/file', 'any/etc/proftpd/file.conf', 'any/etc/proftpd/file.conf-file', 'proftpd.conf', 'proftpd.conf-file'],
\ 'applescript': ['file.scpt'],
- \ 'aptconf': ['apt.conf', '/.aptitude/config'],
- \ 'arch': ['.arch-inventory'],
+ \ 'aptconf': ['apt.conf', '/.aptitude/config', 'any/.aptitude/config'],
+ \ 'arch': ['.arch-inventory', '=tagging-method'],
\ 'arduino': ['file.ino', 'file.pde'],
\ 'art': ['file.art'],
\ 'asciidoc': ['file.asciidoc', 'file.adoc'],
\ 'asn': ['file.asn', 'file.asn1'],
+ \ 'asterisk': ['asterisk/file.conf', 'asterisk/file.conf-file', 'some-asterisk/file.conf', 'some-asterisk/file.conf-file'],
\ 'atlas': ['file.atl', 'file.as'],
\ 'autohotkey': ['file.ahk'],
\ 'autoit': ['file.au3'],
- \ 'automake': ['GNUmakefile.am'],
+ \ 'automake': ['GNUmakefile.am', 'makefile.am', 'Makefile.am'],
\ 'ave': ['file.ave'],
\ 'awk': ['file.awk', 'file.gawk'],
\ 'b': ['file.mch', 'file.ref', 'file.imp'],
@@ -80,23 +81,23 @@ let s:filename_checks = {
\ 'bdf': ['file.bdf'],
\ 'bib': ['file.bib'],
\ 'beancount': ['file.beancount'],
- \ 'bindzone': ['named.root'],
+ \ 'bindzone': ['named.root', '/bind/db.file', '/named/db.file', 'any/bind/db.file', 'any/named/db.file'],
\ 'blank': ['file.bl'],
- \ 'bsdl': ['file.bsd', 'file.bsdl'],
+ \ 'bsdl': ['file.bsd', 'file.bsdl', 'bsd', 'some-bsd'],
\ 'bst': ['file.bst'],
- \ 'bzr': ['bzr_log.any'],
- \ 'c': ['enlightenment/file.cfg', 'file.qc', 'file.c'],
+ \ 'bzr': ['bzr_log.any', 'bzr_log.file'],
+ \ 'c': ['enlightenment/file.cfg', 'file.qc', 'file.c', 'some-enlightenment/file.cfg'],
\ 'cabal': ['file.cabal'],
\ 'cabalconfig': ['cabal.config'],
\ 'cabalproject': ['cabal.project', 'cabal.project.local'],
- \ 'calendar': ['calendar'],
- \ 'catalog': ['catalog', 'sgml.catalogfile'],
+ \ 'calendar': ['calendar', '/.calendar/file', '/share/calendar/any/calendar.file', '/share/calendar/calendar.file', 'any/share/calendar/any/calendar.file', 'any/share/calendar/calendar.file'],
+ \ 'catalog': ['catalog', 'sgml.catalogfile', 'sgml.catalog', 'sgml.catalog-file'],
\ 'cdl': ['file.cdl'],
- \ 'cdrdaoconf': ['/etc/cdrdao.conf', '/etc/defaults/cdrdao', '/etc/default/cdrdao', '.cdrdao'],
+ \ 'cdrdaoconf': ['/etc/cdrdao.conf', '/etc/defaults/cdrdao', '/etc/default/cdrdao', '.cdrdao', 'any/etc/cdrdao.conf', 'any/etc/default/cdrdao', 'any/etc/defaults/cdrdao'],
\ 'cdrtoc': ['file.toc'],
\ 'cf': ['file.cfm', 'file.cfi', 'file.cfc'],
\ 'cfengine': ['cfengine.conf'],
- \ 'cfg': ['file.cfg', 'file.hgrc', 'filehgrc'],
+ \ 'cfg': ['file.cfg', 'file.hgrc', 'filehgrc', 'hgrc', 'some-hgrc'],
\ 'ch': ['file.chf'],
\ 'chaiscript': ['file.chai'],
\ 'chaskell': ['file.chs'],
@@ -106,15 +107,16 @@ let s:filename_checks = {
\ 'clean': ['file.dcl', 'file.icl'],
\ 'clojure': ['file.clj', 'file.cljs', 'file.cljx', 'file.cljc'],
\ 'cmake': ['CMakeLists.txt', 'file.cmake', 'file.cmake.in'],
- \ 'cmusrc': ['any/.cmus/autosave', 'any/.cmus/rc', 'any/.cmus/command-history', 'any/.cmus/file.theme', 'any/cmus/rc', 'any/cmus/file.theme'],
+ \ 'cmusrc': ['any/.cmus/autosave', 'any/.cmus/rc', 'any/.cmus/command-history', 'any/.cmus/file.theme', 'any/cmus/rc', 'any/cmus/file.theme', '/.cmus/autosave', '/.cmus/command-history', '/.cmus/file.theme', '/.cmus/rc', '/cmus/file.theme', '/cmus/rc'],
\ 'cobol': ['file.cbl', 'file.cob', 'file.lib'],
\ 'coco': ['file.atg'],
\ 'conaryrecipe': ['file.recipe'],
\ 'conf': ['auto.master'],
- \ 'config': ['configure.in', 'configure.ac', 'Pipfile'],
+ \ 'config': ['configure.in', 'configure.ac', 'Pipfile', '/etc/hostname.file'],
\ 'context': ['tex/context/any/file.tex', 'file.mkii', 'file.mkiv', 'file.mkvi', 'file.mkxl', 'file.mklx'],
\ 'cpp': ['file.cxx', 'file.c++', 'file.hh', 'file.hxx', 'file.hpp', 'file.ipp', 'file.moc', 'file.tcc', 'file.inl', 'file.tlh'],
\ 'crm': ['file.crm'],
+ \ 'crontab': ['crontab', 'crontab.file', '/etc/cron.d/file', 'any/etc/cron.d/file'],
\ 'cs': ['file.cs'],
\ 'csc': ['file.csc'],
\ 'csdl': ['file.csdl'],
@@ -122,7 +124,7 @@ let s:filename_checks = {
\ 'css': ['file.css'],
\ 'cterm': ['file.con'],
\ 'cucumber': ['file.feature'],
- \ 'cuda': ['file.cu'],
+ \ 'cuda': ['file.cu', 'file.cuh'],
\ 'cupl': ['file.pld'],
\ 'cuplsim': ['file.si'],
\ 'cvs': ['cvs123'],
@@ -132,8 +134,9 @@ let s:filename_checks = {
\ 'datascript': ['file.ds'],
\ 'dcd': ['file.dcd'],
\ 'debchangelog': ['changelog.Debian', 'changelog.dch', 'NEWS.Debian', 'NEWS.dch', '/debian/changelog'],
- \ 'debcontrol': ['/debian/control'],
- \ 'debsources': ['/etc/apt/sources.list', '/etc/apt/sources.list.d/file.list'],
+ \ 'debcontrol': ['/debian/control', 'any/debian/control'],
+ \ 'debcopyright': ['/debian/copyright', 'any/debian/copyright'],
+ \ 'debsources': ['/etc/apt/sources.list', '/etc/apt/sources.list.d/file.list', 'any/etc/apt/sources.list', 'any/etc/apt/sources.list.d/file.list'],
\ 'def': ['file.def'],
\ 'denyhosts': ['denyhosts.conf'],
\ 'desc': ['file.desc'],
@@ -141,13 +144,13 @@ let s:filename_checks = {
\ 'dictconf': ['dict.conf', '.dictrc'],
\ 'dictdconf': ['dictd.conf'],
\ 'diff': ['file.diff', 'file.rej'],
- \ 'dircolors': ['.dir_colors', '.dircolors', '/etc/DIR_COLORS'],
- \ 'dnsmasq': ['/etc/dnsmasq.conf'],
- \ 'dockerfile': ['Dockerfile', 'file.Dockerfile'],
+ \ 'dircolors': ['.dir_colors', '.dircolors', '/etc/DIR_COLORS', 'any/etc/DIR_COLORS'],
+ \ 'dnsmasq': ['/etc/dnsmasq.conf', '/etc/dnsmasq.d/file', 'any/etc/dnsmasq.conf', 'any/etc/dnsmasq.d/file'],
+ \ 'dockerfile': ['Containerfile', 'Dockerfile', 'file.Dockerfile'],
\ 'dosbatch': ['file.bat', 'file.sys'],
- \ 'dosini': ['.editorconfig', '/etc/pacman.conf', '/etc/yum.conf', 'file.ini', 'npmrc', '.npmrc', 'php.ini', 'php.ini-5'],
+ \ 'dosini': ['.editorconfig', '/etc/pacman.conf', '/etc/yum.conf', 'file.ini', 'npmrc', '.npmrc', 'php.ini', 'php.ini-5', 'php.ini-file', '/etc/yum.repos.d/file', 'any/etc/pacman.conf', 'any/etc/yum.conf', 'any/etc/yum.repos.d/file'],
\ 'dot': ['file.dot', 'file.gv'],
- \ 'dracula': ['file.drac', 'file.drc', 'filelvs', 'filelpe'],
+ \ 'dracula': ['file.drac', 'file.drc', 'filelvs', 'filelpe', 'drac.file', 'lpe', 'lvs', 'some-lpe', 'some-lvs'],
\ 'dsl': ['file.dsl'],
\ 'dtd': ['file.dtd'],
\ 'dts': ['file.dts', 'file.dtsi'],
@@ -163,10 +166,10 @@ let s:filename_checks = {
\ 'epuppet': ['file.epp'],
\ 'erlang': ['file.erl', 'file.hrl', 'file.yaws'],
\ 'eruby': ['file.erb', 'file.rhtml'],
- \ 'esmtprc': ['anyesmtprc'],
+ \ 'esmtprc': ['anyesmtprc', 'esmtprc', 'some-esmtprc'],
\ 'esqlc': ['file.ec', 'file.EC'],
\ 'esterel': ['file.strl'],
- \ 'eterm': ['anyEterm/file.cfg'],
+ \ 'eterm': ['anyEterm/file.cfg', 'Eterm/file.cfg', 'some-Eterm/file.cfg'],
\ 'exim': ['exim.conf'],
\ 'expect': ['file.exp'],
\ 'exports': ['exports'],
@@ -179,16 +182,18 @@ let s:filename_checks = {
\ 'focexec': ['file.fex', 'file.focexec'],
\ 'forth': ['file.fs', 'file.ft', 'file.fth'],
\ 'fortran': ['file.f', 'file.for', 'file.fortran', 'file.fpp', 'file.ftn', 'file.f77', 'file.f90', 'file.f95', 'file.f03', 'file.f08'],
+ \ 'fpcmake': ['file.fpc'],
\ 'framescript': ['file.fsl'],
\ 'freebasic': ['file.fb', 'file.bi'],
\ 'fstab': ['fstab', 'mtab'],
+ \ 'fvwm': ['/.fvwm/file', 'any/.fvwm/file'],
\ 'gdb': ['.gdbinit'],
\ 'gdmo': ['file.mo', 'file.gdmo'],
- \ 'gedcom': ['file.ged', 'lltxxxxx.txt'],
+ \ 'gedcom': ['file.ged', 'lltxxxxx.txt', '/tmp/lltmp', '/tmp/lltmp-file', 'any/tmp/lltmp', 'any/tmp/lltmp-file'],
\ 'gift': ['file.gift'],
\ 'gitcommit': ['COMMIT_EDITMSG', 'MERGE_MSG', 'TAG_EDITMSG'],
- \ 'gitconfig': ['file.git/config', '.gitconfig', '.gitmodules', 'file.git/modules//config', '/.config/git/config', '/etc/gitconfig'],
- \ 'gitolite': ['gitolite.conf'],
+ \ 'gitconfig': ['file.git/config', '.gitconfig', '.gitmodules', 'file.git/modules//config', '/.config/git/config', '/etc/gitconfig', '/etc/gitconfig.d/file', '/.gitconfig.d/file', 'any/.config/git/config', 'any/.gitconfig.d/file', 'some.git/config', 'some.git/modules/any/config'],
+ \ 'gitolite': ['gitolite.conf', '/gitolite-admin/conf/file', 'any/gitolite-admin/conf/file'],
\ 'gitrebase': ['git-rebase-todo'],
\ 'gitsendemail': ['.gitsendemail.msg.xxxxxx'],
\ 'gkrellmrc': ['gkrellmrc', 'gkrellmrc_x'],
@@ -196,14 +201,14 @@ let s:filename_checks = {
\ 'gnuplot': ['file.gpi'],
\ 'go': ['file.go'],
\ 'gp': ['file.gp', '.gprc'],
- \ 'gpg': ['/.gnupg/options', '/.gnupg/gpg.conf', '/usr/any/gnupg/options.skel'],
+ \ 'gpg': ['/.gnupg/options', '/.gnupg/gpg.conf', '/usr/any/gnupg/options.skel', 'any/.gnupg/gpg.conf', 'any/.gnupg/options', 'any/usr/any/gnupg/options.skel'],
\ 'grads': ['file.gs'],
\ 'gretl': ['file.gretl'],
\ 'groovy': ['file.gradle', 'file.groovy'],
- \ 'group': ['any/etc/group', 'any/etc/group-', 'any/etc/group.edit', 'any/etc/gshadow', 'any/etc/gshadow-', 'any/etc/gshadow.edit', 'any/var/backups/group.bak', 'any/var/backups/gshadow.bak'],
- \ 'grub': ['/boot/grub/menu.lst', '/boot/grub/grub.conf', '/etc/grub.conf'],
+ \ 'group': ['any/etc/group', 'any/etc/group-', 'any/etc/group.edit', 'any/etc/gshadow', 'any/etc/gshadow-', 'any/etc/gshadow.edit', 'any/var/backups/group.bak', 'any/var/backups/gshadow.bak', '/etc/group', '/etc/group-', '/etc/group.edit', '/etc/gshadow', '/etc/gshadow-', '/etc/gshadow.edit', '/var/backups/group.bak', '/var/backups/gshadow.bak'],
+ \ 'grub': ['/boot/grub/menu.lst', '/boot/grub/grub.conf', '/etc/grub.conf', 'any/boot/grub/grub.conf', 'any/boot/grub/menu.lst', 'any/etc/grub.conf'],
\ 'gsp': ['file.gsp'],
- \ 'gtkrc': ['.gtkrc', 'gtkrc'],
+ \ 'gtkrc': ['.gtkrc', 'gtkrc', '.gtkrc-file', 'gtkrc-file'],
\ 'haml': ['file.haml'],
\ 'hamster': ['file.hsm'],
\ 'haskell': ['file.hs', 'file.hsc', 'file.hs-boot'],
@@ -215,24 +220,35 @@ let s:filename_checks = {
\ 'hgcommit': ['hg-editor-file.txt'],
\ 'hog': ['file.hog', 'snort.conf', 'vision.conf'],
\ 'hollywood': ['file.hws'],
- \ 'hostconf': ['/etc/host.conf'],
- \ 'hostsaccess': ['/etc/hosts.allow', '/etc/hosts.deny'],
+ \ 'hostconf': ['/etc/host.conf', 'any/etc/host.conf'],
+ \ 'hostsaccess': ['/etc/hosts.allow', '/etc/hosts.deny', 'any/etc/hosts.allow', 'any/etc/hosts.deny'],
+ \ 'logcheck': ['/etc/logcheck/file.d-some/file', '/etc/logcheck/file.d/file', 'any/etc/logcheck/file.d-some/file', 'any/etc/logcheck/file.d/file'],
+ \ 'modula3': ['file.m3', 'file.mg', 'file.i3', 'file.ig'],
+ \ 'natural': ['file.NSA', 'file.NSC', 'file.NSG', 'file.NSL', 'file.NSM', 'file.NSN', 'file.NSP', 'file.NSS'],
+ \ 'neomuttrc': ['Neomuttrc', '.neomuttrc', '.neomuttrc-file', '/.neomutt/neomuttrc', '/.neomutt/neomuttrc-file', 'Neomuttrc', 'Neomuttrc-file', 'any/.neomutt/neomuttrc', 'any/.neomutt/neomuttrc-file', 'neomuttrc', 'neomuttrc-file'],
+ \ 'opl': ['file.OPL', 'file.OPl', 'file.OpL', 'file.Opl', 'file.oPL', 'file.oPl', 'file.opL', 'file.opl'],
+ \ 'pcmk': ['file.pcmk'],
+ \ 'r': ['file.r'],
+ \ 'rhelp': ['file.rd'],
+ \ 'rmd': ['file.rmd', 'file.smd'],
+ \ 'rnoweb': ['file.rnw', 'file.snw'],
+ \ 'rrst': ['file.rrst', 'file.srst'],
\ 'template': ['file.tmpl'],
\ 'htmlm4': ['file.html.m4'],
\ 'httest': ['file.htt', 'file.htb'],
\ 'ibasic': ['file.iba', 'file.ibi'],
- \ 'icemenu': ['/.icewm/menu'],
+ \ 'icemenu': ['/.icewm/menu', 'any/.icewm/menu'],
\ 'icon': ['file.icn'],
\ 'indent': ['.indent.pro', 'indentrc'],
\ 'inform': ['file.inf', 'file.INF'],
- \ 'initng': ['/etc/initng/any/file.i', 'file.ii'],
+ \ 'initng': ['/etc/initng/any/file.i', 'file.ii', 'any/etc/initng/any/file.i'],
\ 'inittab': ['inittab'],
\ 'ipfilter': ['ipf.conf', 'ipf6.conf', 'ipf.rules'],
\ 'iss': ['file.iss'],
\ 'ist': ['file.ist', 'file.mst'],
\ 'j': ['file.ijs'],
\ 'jal': ['file.jal', 'file.JAL'],
- \ 'jam': ['file.jpl', 'file.jpr'],
+ \ 'jam': ['file.jpl', 'file.jpr', 'JAM-file.file', 'JAM.file', 'Prl-file.file', 'Prl.file'],
\ 'java': ['file.java', 'file.jav'],
\ 'javacc': ['file.jj', 'file.jjt'],
\ 'javascript': ['file.js', 'file.javascript', 'file.es', 'file.mjs', 'file.cjs'],
@@ -240,10 +256,10 @@ let s:filename_checks = {
\ 'jess': ['file.clp'],
\ 'jgraph': ['file.jgr'],
\ 'jovial': ['file.jov', 'file.j73', 'file.jovial'],
- \ 'jproperties': ['file.properties', 'file.properties_xx', 'file.properties_xx_xx'],
+ \ 'jproperties': ['file.properties', 'file.properties_xx', 'file.properties_xx_xx', 'some.properties_xx_xx_file'],
\ 'json': ['file.json', 'file.jsonp', 'file.webmanifest', 'Pipfile.lock'],
\ 'jsp': ['file.jsp'],
- \ 'kconfig': ['Kconfig', 'Kconfig.debug'],
+ \ 'kconfig': ['Kconfig', 'Kconfig.debug', 'Kconfig.file'],
\ 'kivy': ['file.kv'],
\ 'kix': ['file.kix'],
\ 'kotlin': ['file.kt', 'file.ktm', 'file.kts'],
@@ -255,18 +271,18 @@ let s:filename_checks = {
\ 'ldif': ['file.ldif'],
\ 'less': ['file.less'],
\ 'lex': ['file.lex', 'file.l', 'file.lxx', 'file.l++'],
- \ 'lftp': ['lftp.conf', '.lftprc', 'anylftp/rc'],
+ \ 'lftp': ['lftp.conf', '.lftprc', 'anylftp/rc', 'lftp/rc', 'some-lftp/rc'],
\ 'lhaskell': ['file.lhs'],
- \ 'libao': ['/etc/libao.conf', '/.libao'],
+ \ 'libao': ['/etc/libao.conf', '/.libao', 'any/.libao', 'any/etc/libao.conf'],
\ 'lifelines': ['file.ll'],
- \ 'lilo': ['lilo.conf'],
- \ 'limits': ['/etc/limits', '/etc/anylimits.conf', '/etc/anylimits.d/file.conf'],
+ \ 'lilo': ['lilo.conf', 'lilo.conf-file'],
+ \ 'limits': ['/etc/limits', '/etc/anylimits.conf', '/etc/anylimits.d/file.conf', '/etc/limits.conf', '/etc/limits.d/file.conf', '/etc/some-limits.conf', '/etc/some-limits.d/file.conf', 'any/etc/limits', 'any/etc/limits.conf', 'any/etc/limits.d/file.conf', 'any/etc/some-limits.conf', 'any/etc/some-limits.d/file.conf'],
\ 'liquid': ['file.liquid'],
\ 'lisp': ['file.lsp', 'file.lisp', 'file.el', 'file.cl', '.emacs', '.sawfishrc', 'sbclrc', '.sbclrc'],
\ 'lite': ['file.lite', 'file.lt'],
- \ 'litestep': ['/LiteStep/any/file.rc'],
- \ 'loginaccess': ['/etc/login.access'],
- \ 'logindefs': ['/etc/login.defs'],
+ \ 'litestep': ['/LiteStep/any/file.rc', 'any/LiteStep/any/file.rc'],
+ \ 'loginaccess': ['/etc/login.access', 'any/etc/login.access'],
+ \ 'logindefs': ['/etc/login.defs', 'any/etc/login.defs'],
\ 'logtalk': ['file.lgt'],
\ 'lotos': ['file.lot', 'file.lotos'],
\ 'lout': ['file.lou', 'file.lout'],
@@ -278,12 +294,12 @@ let s:filename_checks = {
\ 'm3build': ['m3makefile', 'm3overrides'],
\ 'm3quake': ['file.quake', 'cm3.cfg'],
\ 'm4': ['file.at'],
- \ 'mail': ['snd.123', '.letter', '.letter.123', '.followup', '.article', '.article.123', 'pico.123', 'mutt-xx-xxx', 'muttng-xx-xxx', 'ae123.txt', 'file.eml'],
- \ 'mailaliases': ['/etc/mail/aliases', '/etc/aliases'],
+ \ 'mail': ['snd.123', '.letter', '.letter.123', '.followup', '.article', '.article.123', 'pico.123', 'mutt-xx-xxx', 'muttng-xx-xxx', 'ae123.txt', 'file.eml', 'reportbug-file'],
+ \ 'mailaliases': ['/etc/mail/aliases', '/etc/aliases', 'any/etc/aliases', 'any/etc/mail/aliases'],
\ 'mailcap': ['.mailcap', 'mailcap'],
- \ 'make': ['file.mk', 'file.mak', 'file.dsp'],
+ \ 'make': ['file.mk', 'file.mak', 'file.dsp', 'makefile', 'Makefile', 'makefile-file', 'Makefile-file', 'some-makefile', 'some-Makefile'],
\ 'mallard': ['file.page'],
- \ 'manconf': ['/etc/man.conf', 'man.config'],
+ \ 'manconf': ['/etc/man.conf', 'man.config', 'any/etc/man.conf'],
\ 'map': ['file.map'],
\ 'maple': ['file.mv', 'file.mpl', 'file.mws'],
\ 'markdown': ['file.markdown', 'file.mdown', 'file.mkd', 'file.mkdn', 'file.mdwn', 'file.md'],
@@ -305,27 +321,27 @@ let s:filename_checks = {
\ 'mix': ['file.mix', 'file.mixal'],
\ 'mma': ['file.nb'],
\ 'mmp': ['file.mmp'],
- \ 'modconf': ['/etc/modules.conf', '/etc/modules', '/etc/conf.modules'],
+ \ 'modconf': ['/etc/modules.conf', '/etc/modules', '/etc/conf.modules', '/etc/modprobe.file', 'any/etc/conf.modules', 'any/etc/modprobe.file', 'any/etc/modules', 'any/etc/modules.conf'],
\ 'modula2': ['file.m2', 'file.mi'],
\ 'monk': ['file.isc', 'file.monk', 'file.ssc', 'file.tsc'],
\ 'moo': ['file.moo'],
\ 'mp': ['file.mp'],
- \ 'mplayerconf': ['mplayer.conf', '/.mplayer/config'],
+ \ 'mplayerconf': ['mplayer.conf', '/.mplayer/config', 'any/.mplayer/config'],
\ 'mrxvtrc': ['mrxvtrc', '.mrxvtrc'],
\ 'msidl': ['file.odl', 'file.mof'],
\ 'msql': ['file.msql'],
\ 'mupad': ['file.mu'],
\ 'mush': ['file.mush'],
- \ 'muttrc': ['Muttngrc', 'Muttrc'],
+ \ 'muttrc': ['Muttngrc', 'Muttrc', '.muttngrc', '.muttngrc-file', '.muttrc', '.muttrc-file', '/.mutt/muttngrc', '/.mutt/muttngrc-file', '/.mutt/muttrc', '/.mutt/muttrc-file', '/.muttng/muttngrc', '/.muttng/muttngrc-file', '/.muttng/muttrc', '/.muttng/muttrc-file', '/etc/Muttrc.d/file', 'Muttngrc-file', 'Muttrc-file', 'any/.mutt/muttngrc', 'any/.mutt/muttngrc-file', 'any/.mutt/muttrc', 'any/.mutt/muttrc-file', 'any/.muttng/muttngrc', 'any/.muttng/muttngrc-file', 'any/.muttng/muttrc', 'any/.muttng/muttrc-file', 'any/etc/Muttrc.d/file', 'muttngrc', 'muttngrc-file', 'muttrc', 'muttrc-file'],
\ 'mysql': ['file.mysql'],
\ 'n1ql': ['file.n1ql', 'file.nql'],
- \ 'named': ['namedfile.conf', 'rndcfile.conf'],
- \ 'nanorc': ['/etc/nanorc', 'file.nanorc'],
+ \ 'named': ['namedfile.conf', 'rndcfile.conf', 'named-file.conf', 'named.conf', 'rndc-file.conf', 'rndc-file.key', 'rndc.conf', 'rndc.key'],
+ \ 'nanorc': ['/etc/nanorc', 'file.nanorc', 'any/etc/nanorc'],
\ 'ncf': ['file.ncf'],
\ 'netrc': ['.netrc'],
\ 'ninja': ['file.ninja'],
\ 'nqc': ['file.nqc'],
- \ 'nroff': ['file.tr', 'file.nr', 'file.roff', 'file.tmac', 'file.mom'],
+ \ 'nroff': ['file.tr', 'file.nr', 'file.roff', 'file.tmac', 'file.mom', 'tmac.file'],
\ 'nsis': ['file.nsi', 'file.nsh'],
\ 'obj': ['file.obj'],
\ 'ocaml': ['file.ml', 'file.mli', 'file.mll', 'file.mly', '.ocamlinit', 'file.mlt', 'file.mlp', 'file.mlip', 'file.mli.cppo', 'file.ml.cppo'],
@@ -334,16 +350,15 @@ let s:filename_checks = {
\ 'opam': ['opam', 'file.opam', 'file.opam.template'],
\ 'openroad': ['file.or'],
\ 'ora': ['file.ora'],
- \ 'pamconf': ['/etc/pam.conf'],
- \ 'pamenv': ['/etc/security/pam_env.conf', '/home/user/.pam_environment'],
+ \ 'pamconf': ['/etc/pam.conf', '/etc/pam.d/file', 'any/etc/pam.conf', 'any/etc/pam.d/file'],
+ \ 'pamenv': ['/etc/security/pam_env.conf', '/home/user/.pam_environment', '.pam_environment', 'pam_env.conf'],
\ 'papp': ['file.papp', 'file.pxml', 'file.pxsl'],
\ 'pascal': ['file.pas', 'file.dpr', 'file.lpr'],
- \ 'passwd': ['any/etc/passwd', 'any/etc/passwd-', 'any/etc/passwd.edit', 'any/etc/shadow', 'any/etc/shadow-', 'any/etc/shadow.edit', 'any/var/backups/passwd.bak', 'any/var/backups/shadow.bak'],
+ \ 'passwd': ['any/etc/passwd', 'any/etc/passwd-', 'any/etc/passwd.edit', 'any/etc/shadow', 'any/etc/shadow-', 'any/etc/shadow.edit', 'any/var/backups/passwd.bak', 'any/var/backups/shadow.bak', '/etc/passwd', '/etc/passwd-', '/etc/passwd.edit', '/etc/shadow', '/etc/shadow-', '/etc/shadow.edit', '/var/backups/passwd.bak', '/var/backups/shadow.bak'],
\ 'pbtxt': ['file.pbtxt'],
\ 'pccts': ['file.g'],
\ 'pdf': ['file.pdf'],
\ 'perl': ['file.plx', 'file.al', 'file.psgi', 'gitolite.rc', '.gitolite.rc', 'example.gitolite.rc'],
- \ 'perl6': ['file.p6', 'file.pm6', 'file.pl6', 'file.raku', 'file.rakumod'],
\ 'pf': ['pf.conf'],
\ 'pfmain': ['main.cf'],
\ 'php': ['file.php', 'file.php9', 'file.phtml', 'file.ctp'],
@@ -352,14 +367,13 @@ let s:filename_checks = {
\ 'cmod': ['file.cmod'],
\ 'pilrc': ['file.rcp'],
\ 'pine': ['.pinerc', 'pinerc', '.pinercex', 'pinercex'],
- \ 'pinfo': ['/etc/pinforc', '/.pinforc'],
+ \ 'pinfo': ['/etc/pinforc', '/.pinforc', 'any/.pinforc', 'any/etc/pinforc'],
\ 'pli': ['file.pli', 'file.pl1'],
\ 'plm': ['file.plm', 'file.p36', 'file.pac'],
\ 'plp': ['file.plp'],
\ 'plsql': ['file.pls', 'file.plsql'],
\ 'po': ['file.po', 'file.pot'],
\ 'pod': ['file.pod'],
- \ 'pod6': ['file.pod6'],
\ 'poke': ['file.pk'],
\ 'postscr': ['file.ps', 'file.pfa', 'file.afm', 'file.eps', 'file.epsf', 'file.epsi', 'file.ai'],
\ 'pov': ['file.pov'],
@@ -372,7 +386,7 @@ let s:filename_checks = {
\ 'prolog': ['file.pdb'],
\ 'promela': ['file.pml'],
\ 'proto': ['file.proto'],
- \ 'protocols': ['/etc/protocols'],
+ \ 'protocols': ['/etc/protocols', 'any/etc/protocols'],
\ 'ps1': ['file.ps1', 'file.psd1', 'file.psm1', 'file.pssc'],
\ 'ps1xml': ['file.ps1xml'],
\ 'psf': ['file.psf'],
@@ -380,14 +394,15 @@ let s:filename_checks = {
\ 'puppet': ['file.pp'],
\ 'pyrex': ['file.pyx', 'file.pxd'],
\ 'python': ['file.py', 'file.pyw', '.pythonstartup', '.pythonrc', 'file.ptl', 'file.pyi', 'SConstruct'],
- \ 'quake': ['anybaseq2/file.cfg', 'anyid1/file.cfg', 'quake3/file.cfg'],
+ \ 'quake': ['anybaseq2/file.cfg', 'anyid1/file.cfg', 'quake3/file.cfg', 'baseq2/file.cfg', 'id1/file.cfg', 'quake1/file.cfg', 'some-baseq2/file.cfg', 'some-id1/file.cfg', 'some-quake1/file.cfg'],
\ 'radiance': ['file.rad', 'file.mat'],
+ \ 'raku': ['file.pm6', 'file.p6', 'file.t6', 'file.pod6', 'file.raku', 'file.rakumod', 'file.rakudoc', 'file.rakutest'],
\ 'ratpoison': ['.ratpoisonrc', 'ratpoisonrc'],
\ 'rbs': ['file.rbs'],
\ 'rc': ['file.rc', 'file.rch'],
\ 'rcs': ['file,v'],
\ 'readline': ['.inputrc', 'inputrc'],
- \ 'remind': ['.reminders', 'file.remind', 'file.rem'],
+ \ 'remind': ['.reminders', 'file.remind', 'file.rem', '.reminders-file'],
\ 'rego': ['file.rego'],
\ 'resolv': ['resolv.conf'],
\ 'reva': ['file.frt'],
@@ -417,9 +432,9 @@ let s:filename_checks = {
\ 'sdc': ['file.sdc'],
\ 'sdl': ['file.sdl', 'file.pr'],
\ 'sed': ['file.sed'],
- \ 'sensors': ['/etc/sensors.conf', '/etc/sensors3.conf'],
- \ 'services': ['/etc/services'],
- \ 'setserial': ['/etc/serial.conf'],
+ \ 'sensors': ['/etc/sensors.conf', '/etc/sensors3.conf', 'any/etc/sensors.conf', 'any/etc/sensors3.conf'],
+ \ 'services': ['/etc/services', 'any/etc/services'],
+ \ 'setserial': ['/etc/serial.conf', 'any/etc/serial.conf'],
\ 'sh': ['.bashrc', 'file.bash', '/usr/share/doc/bash-completion/filter.sh','/etc/udev/cdsymlinks.conf', 'any/etc/udev/cdsymlinks.conf'],
\ 'sieve': ['file.siv', 'file.sieve'],
\ 'simula': ['file.sim'],
@@ -428,9 +443,9 @@ let s:filename_checks = {
\ 'skill': ['file.il', 'file.ils', 'file.cdf'],
\ 'slang': ['file.sl'],
\ 'slice': ['file.ice'],
- \ 'slpconf': ['/etc/slp.conf'],
- \ 'slpreg': ['/etc/slp.reg'],
- \ 'slpspi': ['/etc/slp.spi'],
+ \ 'slpconf': ['/etc/slp.conf', 'any/etc/slp.conf'],
+ \ 'slpreg': ['/etc/slp.reg', 'any/etc/slp.reg'],
+ \ 'slpspi': ['/etc/slp.spi', 'any/etc/slp.spi'],
\ 'slrnrc': ['.slrnrc'],
\ 'slrnsc': ['file.score'],
\ 'sm': ['sendmail.cf'],
@@ -450,19 +465,19 @@ let s:filename_checks = {
\ 'sqr': ['file.sqr', 'file.sqi'],
\ 'squid': ['squid.conf'],
\ 'srec': ['file.s19', 'file.s28', 'file.s37', 'file.mot', 'file.srec'],
- \ 'sshconfig': ['ssh_config', '/.ssh/config', '/etc/ssh/ssh_config.d/file.conf', 'any/etc/ssh/ssh_config.d/file.conf'],
+ \ 'sshconfig': ['ssh_config', '/.ssh/config', '/etc/ssh/ssh_config.d/file.conf', 'any/etc/ssh/ssh_config.d/file.conf', 'any/.ssh/config'],
\ 'sshdconfig': ['sshd_config', '/etc/ssh/sshd_config.d/file.conf', 'any/etc/ssh/sshd_config.d/file.conf'],
\ 'st': ['file.st'],
\ 'stata': ['file.ado', 'file.do', 'file.imata', 'file.mata'],
\ 'stp': ['file.stp'],
- \ 'sudoers': ['any/etc/sudoers', 'sudoers.tmp'],
+ \ 'sudoers': ['any/etc/sudoers', 'sudoers.tmp', '/etc/sudoers'],
\ 'svg': ['file.svg'],
- \ 'svn': ['svn-commitfile.tmp'],
+ \ 'svn': ['svn-commitfile.tmp', 'svn-commit-file.tmp', 'svn-commit.tmp'],
\ 'swift': ['file.swift'],
\ 'swiftgyb': ['file.swift.gyb'],
\ 'sil': ['file.sil'],
- \ 'sysctl': ['/etc/sysctl.conf', '/etc/sysctl.d/file.conf'],
- \ 'systemd': ['any/systemd/file.automount', 'any/systemd/file.dnssd', 'any/systemd/file.link', 'any/systemd/file.mount', 'any/systemd/file.netdev', 'any/systemd/file.network', 'any/systemd/file.nspawn', 'any/systemd/file.path', 'any/systemd/file.service', 'any/systemd/file.slice', 'any/systemd/file.socket', 'any/systemd/file.swap', 'any/systemd/file.target', 'any/systemd/file.timer', '/etc/systemd/some.conf.d/file.conf', '/etc/systemd/system/some.d/file.conf', '/etc/systemd/system/some.d/.#file', '/etc/systemd/system/.#otherfile', '/home/user/.config/systemd/user/some.d/mine.conf', '/home/user/.config/systemd/user/some.d/.#file', '/home/user/.config/systemd/user/.#otherfile'],
+ \ 'sysctl': ['/etc/sysctl.conf', '/etc/sysctl.d/file.conf', 'any/etc/sysctl.conf', 'any/etc/sysctl.d/file.conf'],
+ \ 'systemd': ['any/systemd/file.automount', 'any/systemd/file.dnssd', 'any/systemd/file.link', 'any/systemd/file.mount', 'any/systemd/file.netdev', 'any/systemd/file.network', 'any/systemd/file.nspawn', 'any/systemd/file.path', 'any/systemd/file.service', 'any/systemd/file.slice', 'any/systemd/file.socket', 'any/systemd/file.swap', 'any/systemd/file.target', 'any/systemd/file.timer', '/etc/systemd/some.conf.d/file.conf', '/etc/systemd/system/some.d/file.conf', '/etc/systemd/system/some.d/.#file', '/etc/systemd/system/.#otherfile', '/home/user/.config/systemd/user/some.d/mine.conf', '/home/user/.config/systemd/user/some.d/.#file', '/home/user/.config/systemd/user/.#otherfile', '/.config/systemd/user/.#', '/.config/systemd/user/.#-file', '/.config/systemd/user/file.d/.#', '/.config/systemd/user/file.d/.#-file', '/.config/systemd/user/file.d/file.conf', '/etc/systemd/file.conf.d/file.conf', '/etc/systemd/system/.#', '/etc/systemd/system/.#-file', '/etc/systemd/system/file.d/.#', '/etc/systemd/system/file.d/.#-file', '/etc/systemd/system/file.d/file.conf', '/systemd/file.automount', '/systemd/file.dnssd', '/systemd/file.link', '/systemd/file.mount', '/systemd/file.netdev', '/systemd/file.network', '/systemd/file.nspawn', '/systemd/file.path', '/systemd/file.service', '/systemd/file.slice', '/systemd/file.socket', '/systemd/file.swap', '/systemd/file.target', '/systemd/file.timer', 'any/.config/systemd/user/.#', 'any/.config/systemd/user/.#-file', 'any/.config/systemd/user/file.d/.#', 'any/.config/systemd/user/file.d/.#-file', 'any/.config/systemd/user/file.d/file.conf', 'any/etc/systemd/file.conf.d/file.conf', 'any/etc/systemd/system/.#', 'any/etc/systemd/system/.#-file', 'any/etc/systemd/system/file.d/.#', 'any/etc/systemd/system/file.d/.#-file', 'any/etc/systemd/system/file.d/file.conf'],
\ 'systemverilog': ['file.sv', 'file.svh'],
\ 'tags': ['tags'],
\ 'tak': ['file.tak'],
@@ -479,7 +494,7 @@ let s:filename_checks = {
\ 'tidy': ['.tidyrc', 'tidyrc', 'tidy.conf'],
\ 'tilde': ['file.t.html'],
\ 'tli': ['file.tli'],
- \ 'tmux': ['tmuxfile.conf', '.tmuxfile.conf'],
+ \ 'tmux': ['tmuxfile.conf', '.tmuxfile.conf', '.tmux-file.conf', '.tmux.conf', 'tmux-file.conf', 'tmux.conf'],
\ 'toml': ['file.toml'],
\ 'tpp': ['file.tpp'],
\ 'treetop': ['file.treetop'],
@@ -491,12 +506,12 @@ let s:filename_checks = {
\ 'twig': ['file.twig'],
\ 'typescriptreact': ['file.tsx'],
\ 'uc': ['file.uc'],
- \ 'udevconf': ['/etc/udev/udev.conf'],
- \ 'udevperm': ['/etc/udev/permissions.d/file.permissions'],
+ \ 'udevconf': ['/etc/udev/udev.conf', 'any/etc/udev/udev.conf'],
+ \ 'udevperm': ['/etc/udev/permissions.d/file.permissions', 'any/etc/udev/permissions.d/file.permissions'],
\ 'udevrules': ['/etc/udev/rules.d/file.rules', '/usr/lib/udev/rules.d/file.rules', '/lib/udev/rules.d/file.rules'],
\ 'uil': ['file.uit', 'file.uil'],
- \ 'updatedb': ['/etc/updatedb.conf'],
- \ 'upstart': ['/usr/share/upstart/file.conf', '/usr/share/upstart/file.override', '/etc/init/file.conf', '/etc/init/file.override', '/.init/file.conf', '/.init/file.override', '/.config/upstart/file.conf', '/.config/upstart/file.override'],
+ \ 'updatedb': ['/etc/updatedb.conf', 'any/etc/updatedb.conf'],
+ \ 'upstart': ['/usr/share/upstart/file.conf', '/usr/share/upstart/file.override', '/etc/init/file.conf', '/etc/init/file.override', '/.init/file.conf', '/.init/file.override', '/.config/upstart/file.conf', '/.config/upstart/file.override', 'any/.config/upstart/file.conf', 'any/.config/upstart/file.override', 'any/.init/file.conf', 'any/.init/file.override', 'any/etc/init/file.conf', 'any/etc/init/file.override', 'any/usr/share/upstart/file.conf', 'any/usr/share/upstart/file.override'],
\ 'upstreamdat': ['upstream.dat', 'UPSTREAM.DAT', 'upstream.file.dat', 'UPSTREAM.FILE.DAT', 'file.upstream.dat', 'FILE.UPSTREAM.DAT'],
\ 'upstreaminstalllog': ['upstreaminstall.log', 'UPSTREAMINSTALL.LOG', 'upstreaminstall.file.log', 'UPSTREAMINSTALL.FILE.LOG', 'file.upstreaminstall.log', 'FILE.UPSTREAMINSTALL.LOG'],
\ 'upstreamlog': ['fdrupstream.log', 'upstream.log', 'UPSTREAM.LOG', 'upstream.file.log', 'UPSTREAM.FILE.LOG', 'file.upstream.log', 'FILE.UPSTREAM.LOG', 'UPSTREAM-file.log', 'UPSTREAM-FILE.LOG'],
@@ -507,8 +522,8 @@ let s:filename_checks = {
\ 'verilog': ['file.v'],
\ 'verilogams': ['file.va', 'file.vams'],
\ 'vgrindefs': ['vgrindefs'],
- \ 'vhdl': ['file.hdl', 'file.vhd', 'file.vhdl', 'file.vbe', 'file.vst', 'file.vhdl_123', 'file.vho'],
- \ 'vim': ['file.vim', 'file.vba', '.exrc', '_exrc'],
+ \ 'vhdl': ['file.hdl', 'file.vhd', 'file.vhdl', 'file.vbe', 'file.vst', 'file.vhdl_123', 'file.vho', 'some.vhdl_1', 'some.vhdl_1-file'],
+ \ 'vim': ['file.vim', 'file.vba', '.exrc', '_exrc', 'some-vimrc', 'some-vimrc-file', 'vimrc', 'vimrc-file'],
\ 'viminfo': ['.viminfo', '_viminfo'],
\ 'vmasm': ['file.mar'],
\ 'voscm': ['file.cm'],
@@ -520,14 +535,15 @@ let s:filename_checks = {
\ 'wget': ['.wgetrc', 'wgetrc'],
\ 'winbatch': ['file.wbt'],
\ 'wml': ['file.wml'],
+ \ 'wsh': ['file.wsf', 'file.wsc'],
\ 'wsml': ['file.wsml'],
\ 'wvdial': ['wvdial.conf', '.wvdialrc'],
- \ 'xdefaults': ['.Xdefaults', '.Xpdefaults', '.Xresources', 'xdm-config', 'file.ad'],
+ \ 'xdefaults': ['.Xdefaults', '.Xpdefaults', '.Xresources', 'xdm-config', 'file.ad', '/Xresources/file', '/app-defaults/file', 'Xresources', 'Xresources-file', 'any/Xresources/file', 'any/app-defaults/file'],
\ 'xhtml': ['file.xhtml', 'file.xht'],
- \ 'xinetd': ['/etc/xinetd.conf'],
+ \ 'xinetd': ['/etc/xinetd.conf', '/etc/xinetd.d/file', 'any/etc/xinetd.conf', 'any/etc/xinetd.d/file'],
\ 'xmath': ['file.msc', 'file.msf'],
- \ 'xml': ['/etc/blkid.tab', '/etc/blkid.tab.old', 'file.xmi', 'file.csproj', 'file.csproj.user', 'file.ui', 'file.tpm', '/etc/xdg/menus/file.menu', 'fglrxrc', 'file.xlf', 'file.xliff', 'file.xul', 'file.wsdl', 'file.wpl', 'any/etc/blkid.tab', 'any/etc/blkid.tab.old', 'any/etc/xdg/menus/file.menu', 'file.atom', 'file.rss', 'file.cdxml', 'file.psc1'],
- \ 'xmodmap': ['anyXmodmap'],
+ \ 'xml': ['/etc/blkid.tab', '/etc/blkid.tab.old', 'file.xmi', 'file.csproj', 'file.csproj.user', 'file.ui', 'file.tpm', '/etc/xdg/menus/file.menu', 'fglrxrc', 'file.xlf', 'file.xliff', 'file.xul', 'file.wsdl', 'file.wpl', 'any/etc/blkid.tab', 'any/etc/blkid.tab.old', 'any/etc/xdg/menus/file.menu'],
+ \ 'xmodmap': ['anyXmodmap', 'Xmodmap', 'some-Xmodmap', 'some-xmodmap', 'some-xmodmap-file', 'xmodmap', 'xmodmap-file'],
\ 'xf86conf': ['xorg.conf', 'xorg.conf-4'],
\ 'xpm2': ['file.xpm2'],
\ 'xquery': ['file.xq', 'file.xql', 'file.xqm', 'file.xquery', 'file.xqy'],
@@ -540,7 +556,7 @@ let s:filename_checks = {
\ 'z8a': ['file.z8a'],
\ 'zimbu': ['file.zu'],
\ 'zimbutempl': ['file.zut'],
- \ 'zsh': ['.zprofile', '/etc/zprofile', '.zfbfmarks', 'file.zsh'],
+ \ 'zsh': ['.zprofile', '/etc/zprofile', '.zfbfmarks', 'file.zsh', '.zcompdump', '.zlogin', '.zlogout', '.zshenv', '.zshrc', '.zcompdump-file', '.zlog', '.zlog-file', '.zsh', '.zsh-file', 'any/etc/zprofile', 'zlog', 'zlog-file', 'zsh', 'zsh-file'],
\
\ 'help': [$VIMRUNTIME . '/doc/help.txt'],
\ 'xpm': ['file.xpm'],
@@ -607,7 +623,7 @@ let s:script_checks = {
\ ['#!/path/pike0'],
\ ['#!/path/pike9']],
\ 'lua': [['#!/path/lua']],
- \ 'perl6': [['#!/path/perl6']],
+ \ 'raku': [['#!/path/raku']],
\ 'perl': [['#!/path/perl']],
\ 'php': [['#!/path/php']],
\ 'python': [['#!/path/python'],
diff --git a/src/nvim/testdir/test_increment.vim b/src/nvim/testdir/test_increment.vim
index f81f8edbde..6d08cd40a8 100644
--- a/src/nvim/testdir/test_increment.vim
+++ b/src/nvim/testdir/test_increment.vim
@@ -1,4 +1,4 @@
-" Tests for using Ctrl-A/Ctrl-X on visual selections
+" Tests for using Ctrl-A/Ctrl-X
func SetUp()
new dummy
@@ -779,6 +779,50 @@ func Test_increment_empty_line()
bwipe!
endfunc
+" Try incrementing/decrementing a number when nrformats contains unsigned
+func Test_increment_unsigned()
+ set nrformats+=unsigned
+
+ call setline(1, '0')
+ exec "norm! gg0\<C-X>"
+ call assert_equal('0', getline(1))
+
+ call setline(1, '3')
+ exec "norm! gg010\<C-X>"
+ call assert_equal('0', getline(1))
+
+ call setline(1, '-0')
+ exec "norm! gg0\<C-X>"
+ call assert_equal("-0", getline(1))
+
+ call setline(1, '-11')
+ exec "norm! gg08\<C-X>"
+ call assert_equal('-3', getline(1))
+
+ " NOTE: 18446744073709551615 == 2^64 - 1
+ call setline(1, '18446744073709551615')
+ exec "norm! gg0\<C-A>"
+ call assert_equal('18446744073709551615', getline(1))
+
+ call setline(1, '-18446744073709551615')
+ exec "norm! gg0\<C-A>"
+ call assert_equal('-18446744073709551615', getline(1))
+
+ call setline(1, '-18446744073709551614')
+ exec "norm! gg08\<C-A>"
+ call assert_equal('-18446744073709551615', getline(1))
+
+ call setline(1, '-1')
+ exec "norm! gg0\<C-A>"
+ call assert_equal('-2', getline(1))
+
+ call setline(1, '-3')
+ exec "norm! gg08\<C-A>"
+ call assert_equal('-11', getline(1))
+
+ set nrformats-=unsigned
+endfunc
+
func Test_normal_increment_with_virtualedit()
set virtualedit=all
diff --git a/test/functional/plugin/health_spec.lua b/test/functional/plugin/health_spec.lua
index a78ed07876..85c67be8f9 100644
--- a/test/functional/plugin/health_spec.lua
+++ b/test/functional/plugin/health_spec.lua
@@ -118,7 +118,7 @@ describe('health.vim', function()
Error = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
Heading = { bold=true, foreground=Screen.colors.Magenta },
Heading2 = { foreground = Screen.colors.SlateBlue },
- Bar = { foreground=Screen.colors.Purple },
+ Bar = { foreground = 0x6a0dad },
Bullet = { bold=true, foreground=Screen.colors.Brown },
})
command("checkhealth foo success1")